Files
parser/parsers/base.py
Игорь Бандурист 25f2c09064
All checks were successful
continuous-integration/drone/push Build is passing
сделал ревью системы
2026-04-28 22:13:47 +10:00

48 lines
1.4 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"""
Базовый класс парсера
"""
from abc import ABC, abstractmethod
from typing import List
import work_parser as wp
class BaseParser(ABC):
"""
Базовый класс для всех парсеров
"""
def __init__(self, source_name: str):
self.source_name = source_name
self.task_id = None
def start_task(self, source_url: str) -> int:
"""
Создаёт задачу парсинга и возвращает её ID
"""
self.task_id = wp.insert_task(status='queued', source_url=source_url)
print(f"Создана задача с id: {self.task_id}")
return self.task_id
def complete_task(self) -> None:
"""
Завершает задачу парсинга
"""
if self.task_id:
from datetime import datetime
wp.update_task(self.task_id, status='completed', finished_at=datetime.utcnow())
def fail_task(self) -> None:
"""
Отмечает задачу как неудачную
"""
if self.task_id:
from datetime import datetime
wp.update_task(self.task_id, status='failed', finished_at=datetime.utcnow())
@abstractmethod
def parse(self) -> None:
"""
Основной метод парсинга - должен быть реализован в наследниках
"""
pass