- 848 43 37 01
- cp.paderborn@educacion.navarra.es
- L - J: 9:00 a 12:50 y 14:50 a 16:30. V: 9:00 a 13:00
External Sources: - ThePirateBay API - 1337x RSS - RARBG public endpoint - Any additional public torrent index (configurable)
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 | | ** josephine jackson torrent
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) | +-----------------+ +-----------------+ +-----------------+ External Sources: - ThePirateBay API - 1337x RSS
/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' | | Key Value | • Quick identification