2023-05-25 09:37:27 +00:00
|
|
|
from datetime import datetime, timedelta
|
2023-05-24 15:20:21 +00:00
|
|
|
from typing import List
|
|
|
|
|
|
|
|
from pydantic import BaseModel
|
|
|
|
|
|
|
|
|
|
|
|
class Tweet(BaseModel):
|
|
|
|
content: str
|
|
|
|
url: str
|
|
|
|
time: datetime
|
|
|
|
images: List[str]
|
|
|
|
|
|
|
|
@property
|
|
|
|
def id(self) -> int:
|
|
|
|
return int(self.url.split("/")[-1])
|
|
|
|
|
|
|
|
@property
|
|
|
|
def time_str(self) -> str:
|
2023-05-25 09:37:27 +00:00
|
|
|
utc_8_time = self.time + timedelta(hours=8)
|
|
|
|
return utc_8_time.strftime("%Y-%m-%d %H:%M:%S")
|
2023-05-24 15:20:21 +00:00
|
|
|
|
|
|
|
|
|
|
|
class User(BaseModel):
|
|
|
|
username: str
|
|
|
|
name: str
|
|
|
|
tweets: List[Tweet]
|
|
|
|
|
|
|
|
@property
|
|
|
|
def link(self) -> str:
|
|
|
|
return f"https://twitter.com/{self.username}"
|
|
|
|
|
|
|
|
@property
|
|
|
|
def format(self) -> str:
|
|
|
|
return f'<a href="{self.link}">{self.name}</a>'
|