Torrent - Josephine Jackson

The purpose of the feature is – it aggregates publicly‑available torrent‑metadata (titles, seed/peer counts, upload dates, file‑type, size, and source URL) so that researchers, copyright‑holders, or journalists can track the circulation of works that reference “Josephine Jackson” and take appropriate legal or investigative actions.

External Sources: - ThePirateBay API - 1337x RSS - RARBG public endpoint - Any additional public torrent index (configurable) josephine jackson torrent

components: schemas: Torrent: type: object properties: title: type: string info_hash: type: string magnet: type: string, nullable: true size_bytes: type: integer seeds: type: integer peers: type: integer upload_date: type: string, format: date-time tracker_urls: type: array, items: type: string TorrentPage: type: object properties: total: type: integer page: type: integer page_size: type: integer items: type: array, items: $ref: '#/components/schemas/Torrent' | Component | Description | |-----------|-------------| | Header | Logo + “Josephine Jackson Torrent Dashboard” + user avatar with role dropdown | | ** The purpose of the feature is – it

The design explicitly ; all links are displayed as “magnet‑/torrent‑URL placeholders” that can be disabled or filtered according to the host organization’s policy. 1. High‑Level Overview | Aspect | Description | |--------|-------------| | Feature Name | Josephine Jackson Torrent‑Tracker Dashboard (JTD) | | Target Users | • Copyright owners / rights‑management teams • Media researchers & journalists • Law‑enforcement analysts • Academic users studying the diffusion of media | | Primary Goal | Provide a real‑time, searchable, visual summary of all public torrents that contain the keyword “Josephine Jackson” (or any configurable query) while remaining fully compliant with DMCA, GDPR, and other relevant regulations . | | Key Value | • Quick identification of potentially infringing files • Historical trend analysis (spikes, geo‑distribution) • Exportable reports for legal or compliance teams | | Non‑Goal | • Hosting or serving torrent files • Providing direct download capabilities for copyrighted material • Bypassing any site’s terms of service | 2. Core User Stories | # | As a… | I want to… | So that… | |---|-------|------------|----------| | US‑1 | Rights‑holder | Enter “Josephine Jackson” (or any query) into a search box | I can see all torrents that match the term. | | US‑2 | Researcher | Apply date, size, and seed/peer filters | I can focus on the most relevant or recent uploads. | | US‑3 | Compliance officer | Export a CSV/JSON report of the results | I can attach the data to a takedown notice or internal audit. | | US‑4 | Analyst | View a timeline chart of upload counts per day/week | I can spot trends or spikes that may need further investigation. | | US‑5 | System admin | Configure which public torrent indexes are scraped (e.g., ThePirateBay, 1337x, RARBG) | I can respect regional legal restrictions and limit exposure. | | US‑6 | Legal counsel | Mask or hide any magnet links | I can present the dashboard in court without providing direct download pathways. | | US‑7 | User with GDPR responsibilities | Delete any personal‑identifying data (IP, uploader usernames) from stored logs on request | I stay compliant with privacy regulations. | 3. Functional Requirements | ID | Requirement | Detail | |----|-------------|--------| | FR‑1 | Search Engine | • Accept a free‑text query (default “Josephine Jackson”). • Support Boolean operators ( AND , OR , NOT ). | | FR‑2 | Data Sources | • Connect to a configurable list of public torrent‑index APIs or RSS feeds (e.g., https://apibay.org , https://1337x.to/api ). • Use rate‑limited, read‑only HTTP GET requests. | | FR‑3 | Metadata Extraction | For each torrent entry capture: • Title • Torrent hash (info‑hash) • Magnet URL (store only as a string) • Tracker URLs • Size (bytes) • Number of seeds & peers • Upload date • Category / tags (if provided) | | FR‑4 | Result Storage | • PostgreSQL table torrent_meta with indexes on query_term , upload_date , and seed_count . • Retain data for 90 days by default (configurable). | | FR‑5 | Result Presentation | • Paginated table (default 25 rows). • Sortable columns (size, seeds, date). • Inline “view details” modal showing full metadata. | | FR‑6 | Visualization | • Line chart: Uploads per day (last 30 days). • Bar chart: Top 5 trackers by torrent count. | | FR‑7 | Filtering UI | • Date range picker • Slider for size (MB‑GB) • Numeric filter for minimum seeds | | FR‑8 | Export | • CSV (all columns) • JSON (array of objects) • Optional “redacted” mode that strips magnet URLs and uploader usernames | | FR‑9 | Access Control | • Role‑based permissions (Admin, Analyst, Viewer). • Viewer role hides magnet links; Analyst can see them; Admin can edit source list. | | FR‑10 | Audit Log | • Record every search query, user ID, and timestamp. | | FR‑11 | Compliance Switch | • Global toggle “Block magnet URLs” – when on, magnet fields are displayed as --- and omitted from exports. | | FR‑12 | Error Handling | • Graceful degradation when a source API is unreachable (display a warning banner, continue with remaining sources). | | FR‑13 | Rate Limiting & Caching | • Cache results per query for 5 minutes to avoid hammering external APIs. | | FR‑14 | GDPR De‑identification | • Provide a bulk “purge personal data” endpoint that deletes any stored usernames or IP logs older than X days. | 4. Non‑Functional Requirements | ID | Requirement | Detail | |----|-------------|--------| | NFR‑1 | Performance | Search response ≤ 2 seconds for ≤ 10 k results (cached). | | NFR‑2 | Scalability | Horizontal scaling of the scraper workers (Docker/K8s). | | NFR‑3 | Security | • All internal traffic HTTPS. • API keys for external torrent‑index services stored in Vault/Secrets Manager. | | NFR‑4 | Compliance | • No storage of actual file content. • Ability to disable any source that is deemed illegal in a jurisdiction. | | NFR‑5 | Reliability | Scraper runs on a cron/queue system with automatic retries (exponential back‑off). | | NFR‑6 | Maintainability | Code in Python 3.11 (or Node.js 20) with clear modular separation: scraper , API , frontend . | | NFR‑7 | Documentation | Swagger/OpenAPI spec for the backend; UI guide for end‑users. | | NFR‑8 | Internationalisation | UI strings externalised; ready for English + optional secondary language. | 5. System Architecture Diagram (textual) +-------------------+ +-------------------+ +-------------------+ | Front‑end SPA | <--> | API Gateway | <--> | Scraper Workers | | (React/Vue/TS) | | (FastAPI / Express) | | (Python asyncio) | +-------------------+ +-------------------+ +-------------------+ ^ ^ ^ | | | | | | | | | v v v +-----------------+ +-----------------+ +-----------------+ | PostgreSQL DB | | Redis Cache | | Secrets Vault | | (torrent_meta) | | (query cache) | | (API keys) | +-----------------+ +-----------------+ +-----------------+ | | US‑2 | Researcher | Apply date,

/api/v1/torrents/export: get: summary: Export current result set parameters: - $ref: '#/paths/~1api~1v1~1torrents/get/parameters/0' # term - name: format in: query required: true schema: type: string, enum: [csv,json] - name: redacted in: query schema: type: boolean, default: true responses: '200': description: File stream content: text/csv: schema: type: string format: binary application/json: schema: type: array items: $ref: '#/components/schemas/Torrent'