50 lines
1.4 KiB
Python
50 lines
1.4 KiB
Python
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))
|