-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathROADMAP
184 lines (169 loc) · 6.08 KB
/
ROADMAP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
---------------------------
0.3: "Sharing is Caring"
---------------------------
Focused on seeding, sharing, private trackers
Features TBD
---------------------------
0.4: "Conan the Librarian"
---------------------------
Focused on better library management
Features TBD
---------------------------
0.5: "Social Butterfly"
---------------------------
Focused on remote shares and searching
Features TBD
---------------------------
Feature List
---------------------------
New architecture split - independent modules w/ event bus
1. Core
- Application launcher
- Event bus
- Data store w/ module-specific
- User management
- Agent registry
- Configuration
- Alerts / requires action
- Module loading
2. Transfers module
3. Download agents
4. Feed module
5. Library module
- Metadata providers
6. Search module
7. Sharing module
8. Client interfaces
9. Third-party plugins (XBMC remote, etc)
General:
- Flow state machine
- Database cleanup
- Revisit unicode support in Twisted (upgrade to 13?)
- Language translations
Transfers Module:
- Rework transfer workflow
- Standard download workflow:
- Loading (fetch metadata)
- Downloading (download agent is fetching)
- Copying (fetching from download agent to work dir)
- Importing (importing into media library)
- Blocked (import / media detection failed, requires user interaction)
- Seeding (torrents only)
- Completed (imported, safe to delete)
- Additional download states:
- Stopped (download manually paused)
- Failed
- Standard upload/seeding workflow:
- Initializing (creating ad-hoc torrent)
- Uploading (HTTP download)
- Completed (HTTP download complete)
- Seeding (torrents only)
- Failed -> fixed at last progress
- Additional upload states:
- Stopped (upload manually paused)
- Failed
- Additional download attributes
- Priority
- Bandwidth limit
- Seed ratio
- Enforce which actions are allowed for each state to avoid "action in
progress" conflicts
- Fix seeding / upload ratio
- Create separate seed queue / filter seeds out of default download view
- Show current peer downloads (from Sharing Module) in seed view
- Add time-based bandwidth limits
- Magnet links for torrents
- Verify torrent traffic encryption
- HTTP folder downloads - single download record with multiple individual
downloads inside, show a single progress is overview
- FTP downloads
Download Agents:
- Independent download managers that handle bit-moving for
core transfer manager
- Receives URL or metadata from core transfer manager
- A download agent can have acceptance restrictions, such as only
handling torrents for a whitelist of trackers
- Global settings:
- Default download bandwidth limit
- Max download bandwidth limit
- Default upload bandwidth limit
- Max upload bandwidth limit
- Default connection limit
- Max connection limit
- Default seed ratio
- Max seed ratio
- Default time to live
- Max time to live
- Default public/private
- Force public/private
- API calls:
- Get downloads & status
- Add download
- Download action (start, pause, resume, queue)
- Update download settings (throttling, seeding, ttl,
public/private, etc.)
- Copy download to local directory
- Remove download (and stop seeding)
- Downloads are stopped in one of the following conditions:
- It is complete, and reaches the target seeding ratio or TTL
- It is cancelled by the requestor
- Downloads are removed from disk when they are removed
by the requestor
Torrent Download Client:
- Fix alert handling
- Rethink workflows for adding magnet vs. .torrent downloads
HTTP Download Client:
- Folder downloads (ZIP) get unpacked on completion
- Metadata mimetypes (torrent, etc) should re-inject into transfer
module after setting content as download metadata
Library Module:
- Better automatic media type guessing - use thetvdb.com / themoviedb.com?
- New "Series" section configuration separately from feeds
- Move series pruning into library module, based on file scan, not
feed records
- Skip video samples on import (prefer largest video file)
- Provide searchable index for remote shares
- Improve library browser UI - hard to match "X" with media item
- Store metadata on all library files
- Allow arbitrary media types (instead of 6 standard types)
- Rename / reassign / move / delete media files
- Media transcoding on import
Feed Module:
- Requires library, transfers module
- Allow RSS feeds to get show name from the feed for multi-show feeds
- Parse <description> field for metadata hints
- Better filtering of duplicates
- Resolution preference (HD/SD)
- Automatically prefer/replace with REPACK/PROPER
- Release group / keyword preference
- Keyword blacklist (TS, CAM, LINE, etc)
- Watch a local directory for torrents to auto-download
- Link to a series in the library, default to auto-detect/auto-create
Search Module:
- Pluggable search providers
- Add a watchlist for notification of new releases
Sharing Module:
- Requires library module
- Max bandwidth settings
- Periodically refresh search indexes from remote peers
- Search provider that uses peer indexes to find media
- Ad-hoc torrent creation in addition to HTTP downloads for load sharing
- Queue an entire remote folder for download
- Add peer uploads to central active uploads queue for monitoring
Web UI:
- Mobile/desktop responsive design
- Pluggable homepage widgets
- Active downloads (+ X queued) -> link to download queue detail
- Recently completed + available for seeding -> link to history
- Search watchlist -> link to watchlist
- Active uploads (+ X queued) -> link to upload queue detail
- System/agent status
- Per-download settings (seeding, throttling, etc)
- Allow changing download settings inline in overview (media type, etc)
- UI hooks for modules
- REST interface for managing downloads
Client Interfaces:
- Android torrent handler
- Windows torrent handler
- Mobile web interface
- Chrome magnet:// protocol handler