Initial commit: Thread Ripper containerized application

This commit is contained in:
airent106 committed 2026-10-06 17:55:41 -06:00
commit a648a59c0f
16 files changed
+2213

No files matched your search

+52
View File
@@ -0,0 +1,52 @@
from typing import List, Optional, Dict, Any
from pydantic import BaseModel, Field
from datetime import datetime
class MediaItem(BaseModel):
type: str = "image"
url: str
alt_text: Optional[str] = None
class PostSegment(BaseModel):
index: int
author_handle: str
author_name: Optional[str] = None
author_avatar: Optional[str] = None
timestamp: Optional[str] = None
url: Optional[str] = None
text: str
is_author: bool = True
images: List[MediaItem] = Field(default_factory=list)
stats: Dict[str, str] = Field(default_factory=dict)
class RippedThread(BaseModel):
id: str
original_url: str
canonical_url: str
author_handle: str
author_name: str
author_avatar: Optional[str] = None
created_at: str
title: str
segments: List[PostSegment]
stitched_markdown: str
stitched_text: str
stitched_html: str
segment_count: int
total_words: int
saved_at: datetime = Field(default_factory=datetime.utcnow)
class RipRequest(BaseModel):
url: str
mode: str = "author_only" # 'author_only' or 'all_replies'
max_scrolls: int = 6
class HistorySummary(BaseModel):
id: str
title: str
author_handle: str
author_name: str
segment_count: int
total_words: int
saved_at: str
original_url: str