import requests from bs4 import BeautifulSoup from sqlalchemy import Column, DateTime, Integer, String from sqlalchemy.dialects.mysql import BIT from .base import Base, BaseMixin, BaseVideoMixin class MediaFile(Base, BaseMixin, BaseVideoMixin): __tablename__ = 'media_file' def __repr__(self): return f'MediaFile({self.id} {self.title} {self.title})' def __str__(self): return f'{self.title}({self.id})' def update_title(self): print(f"update title for {self.url}") try: r = requests.get(self.url) soup = BeautifulSoup(r.content, "html.parser") title = soup.title.string self.title = title self.review = 0 except: self.title = None self.review = 1 def download_file(self, download_dir: str): print(f"download file for {self.url}") class MediaArticle(Base, BaseMixin): __tablename__ = 'media_article' review = Column(BIT(1)) title = Column(String(255)) url = Column(String(255), unique=True) class MediaVideo(Base, BaseMixin): __tablename__ = 'media_video' cloud_link = Column(String(255)) file_name = Column(String(255)) path = Column(String(255)) review = Column(BIT(1)) title = Column(String(255)) url = Column(String(255), unique=True) should_download = Column(BIT(1))