Files
twitter-cli-cookiefile/twitter_cli/models.py
Tao BAI 66115a4837 feat: detect subscriber-only tweets via tweetInterstitial (#33)
Extract visibility metadata from TweetWithVisibilityResults wrapper
before unwrapping. Adds is_subscriber_only field to Tweet model,
with full serialization roundtrip and test coverage.

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-17 18:09:15 +08:00

79 lines
1.5 KiB
Python

"""Data models for twitter-cli.
Defines Tweet, Author, Metrics, and TweetMedia as simple dataclasses.
"""
from __future__ import annotations
from dataclasses import dataclass, field
from typing import List, Optional
@dataclass
class Author:
id: str
name: str
screen_name: str
profile_image_url: str = ""
verified: bool = False
@dataclass
class Metrics:
likes: int = 0
retweets: int = 0
replies: int = 0
quotes: int = 0
views: int = 0
bookmarks: int = 0
@dataclass
class TweetMedia:
type: str # "photo" | "video" | "animated_gif"
url: str
width: Optional[int] = None
height: Optional[int] = None
@dataclass
class Tweet:
id: str
text: str
author: Author
metrics: Metrics
created_at: str
media: List[TweetMedia] = field(default_factory=list)
urls: List[str] = field(default_factory=list)
is_retweet: bool = False
lang: str = ""
retweeted_by: Optional[str] = None
quoted_tweet: Optional[Tweet] = None
score: Optional[float] = None
article_title: Optional[str] = None
article_text: Optional[str] = None
is_subscriber_only: bool = False
@dataclass
class BookmarkFolder:
id: str
name: str
@dataclass
class UserProfile:
id: str
name: str
screen_name: str
bio: str = ""
location: str = ""
url: str = ""
followers_count: int = 0
following_count: int = 0
tweets_count: int = 0
likes_count: int = 0
verified: bool = False
profile_image_url: str = ""
created_at: str = ""