-
Notifications
You must be signed in to change notification settings - Fork 0
/
.todo
426 lines (426 loc) · 19.7 KB
/
.todo
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
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
<?xml version="1.0"?>
<todo version="0.1.20">
<note priority="verylow" time="1546320808">
List::MoreUtils has a binary search implementation... could it replace ours (that is used for randoms)? Check someday
</note>
<note priority="verylow" time="1530643335">
Maybe multiple don't-use statuses? Might be useful to know whether it was a duplicate, part of a dropped podcast, and episode you didn't care about, etc.
</note>
<note priority="verylow" time="1519759157">
Per-feed priority (make episodes of FeedA more likely to go in the playlist than FeedB) in addition to current weighting (e.g., number unplayed)
</note>
<note priority="verylow" time="1518732981" done="1546330430">
List more stuff with feeds, like limit
<comment>
New option --long/-l
</comment>
</note>
<note priority="verylow" time="1436920611">
Parallel download (grab from multiple servers at once)
</note>
<note priority="verylow" time="1433650768" done="1546328641">
Specify all feed options when adding a feed. Missing a lot that are db-only now.
<comment>
Added a way to edit them after adding the feed, close enough for now.
</comment>
</note>
<note priority="verylow" time="1433315290">
"Play something" for when you're on the computer and want a podcast. Need to figure how that should interact with playlisted, but not yet played, podcasts.
<note priority="verylow" time="1535223458">
Might be possible to work with the feed output, since can just re-output feed w/o it.
</note>
</note>
<note priority="verylow" time="1433315222">
Web interface
</note>
<note priority="low" time="1544749830">
Weight by ln(unplayed) so more-unplayed feeds get more plays, but not overwhelmingly.
</note>
<note priority="low" time="1530643281" done="1547479328">
Combined add+fetch to make it easy to do a temporary limit override for new podcasts
<comment>
With add now spitting out the feed number, easy enough to do both.
</comment>
</note>
<note priority="low" time="1530643237" done="1544749670">
Easy way to disable a podcast and optionally dont-use all its remaining episodes
<comment>
Duplicate of 25 (drop podcasts), but 25 is better specified.
</comment>
</note>
<note priority="low" time="1530244001" done="1548218685">
Support podcasts before the Unix epoch (such as BBC Reith Lectures). Let *_when be negative.
<comment>
Moved to GitLab issue #5
</comment>
</note>
<note priority="low" time="1519746182" done="1548218747">
Store article text, etc. from original feed so can re-add them to the generated feed
<comment>
Moved to GitLab issue #6
</comment>
</note>
<note priority="low" time="1518250138" done="1535223350">
Speech output is truncated. Seems to be from asking it for a given frequency (sample rate). Debian bug #890018. (Could work around by using sox to resample).
<comment>
Debian bug is fixed.
</comment>
</note>
<note priority="low" time="1518161823">
Proper exceptions for Storage.pm instead of die/croak all over the place (e.g., exception objects). Much better user experience to have Podist catch and report non-programmer errors.
</note>
<note priority="low" time="1518161348">
Would benefit from an ORM, like DBIC. Podist::Database is getting more and more pseudo-ORM-like. And to the extent it isn't, things are working around it...
<note priority="verylow" time="1518161711">
This would probably also greatly reduce the weird coupling between the two...
</note>
<note priority="verylow" time="1518161478">
example avoided: we pass an enclosure_no to Storage (which we got from the DB), which then calls back to the DB to get more details about it. Instead of just passing an Enclosure object.
</note>
<note priority="low" time="1518161562">
example: get_*_storage returning a list of values (and all the code duplication there)
</note>
</note>
<note priority="low" time="1516807704" done="1530250399">
Status: add sub-item to already playlisted for unarchived
<comment>
Added to summary.
</comment>
</note>
<note priority="low" time="1434066868" done="1445791741">
Add oldest unplaylisted to status
</note>
<note priority="low" time="1433315474">
Support for multiple shorts in a row (e.g., target x minutes). Mainly thinking of Composers Datebook.
</note>
<note priority="low" time="1433315103" done="1516807617">
Atom output (to feed into Android podcast players)
<comment>
Finished a while ago.
</comment>
</note>
<note priority="low" time="1222403916" done="1433255150">
Implement "status" command
</note>
<note priority="medium" time="1546194878">
Implement all the TODO features
<note priority="medium" time="1546195033">
archival / speech = 0
</note>
<note priority="medium" time="1546194906">
archive / processed = 1
</note>
<note priority="medium" time="1546158756">
feed / include / speech is not yet implemented; marked as TODO in Podist
</note>
</note>
<note priority="medium" time="1530643199" done="1548218924">
Way to grab first X items when limit is exceeded (instead of rolling back and grabbing none). Good for long podcasts where maybe you want to sample the newest episodes.
<comment>
Moved to GitLab issue #7
</comment>
<note priority="medium" time="1535223324" done="1548219009">
... or the oldest.
<comment>
(also moved to GitLab issue #7)
</comment>
</note>
</note>
<note priority="medium" time="1517772631" done="1547349304">
fsck improvements
<note priority="medium" time="1517773306" done="1547349298">
enclosure_store that makes no sense (e.g., pending + playlisted)
</note>
<note priority="medium" time="1517772649" done="1546446965">
Check for playlisted + enclosure_use=0
<comment>
Fixing might be non-trivial (since might require moving the file back & updating enclosure_store) but at least this will find it.
</comment>
</note>
</note>
<note priority="medium" time="1445791807">
Make everything care about article_use.
<note priority="low" time="1535223290">
status seems to ignore it
</note>
<note priority="medium" time="1445792498">
cleanup: should it clean up enclosures where all of the articles referencing them are _use=0? (If so, what if we get another article that uses the enclosure...)
</note>
</note>
<note priority="medium" time="1433314505">
Audio processing
<note priority="verylow" time="1519715526">
Split podcast into chapters (but it turns out no podcasts seem to actually have chapter markers; try: ffprobe -loglevel error -hide_banner -of json -show_chapters FILE)
</note>
<note priority="verylow" time="1519527878">
Random items should use same processing code as podcasts instead of a separate program
</note>
<note priority="verylow" time="1518244365">
Should speech really go in processed? Its not actually processed from other audio, and e.g., a newer version of Festival could make it sound really different. Might want to archive it. Or feed it through (some) audio processing, I suppose.
</note>
<note priority="low" time="1519721929" done="1572281843">
Multi-threaded to use all cores
</note>
<note priority="low" time="1519714321">
ffmpeg encode to opus does not seem to support cover art; need to find a way to copy it over into METADATA_BLOCK_PICTURE vorbis comments
</note>
<note priority="low" time="1433314988">
Segment detection & splitting (e.g., would be nice to find Science or Fiction in SGU, split it to its own file)
</note>
<note priority="low" time="1433314857">
Intro/ending trimming
</note>
<note priority="medium" time="1519720079" done="1572304592">
FIXME: once processing can change length, fix the length being passed to DB::add_processed in process()
</note>
<note priority="medium" time="1433315165">
Noise removal
</note>
<note priority="medium" time="1433315153">
Silence removal
</note>
<note priority="medium" time="1433314592">
Compander
</note>
<note priority="high" time="1530243941" done="1535223140">
Add formats other than Opus. Opus is causing my phone to lag badly whenever starting BeyondPod, or switching back to it, etc. Maybe on download too.
<comment>
actually finished for 0.4
</comment>
</note>
<note priority="high" time="1433314559" done="1535223175">
ReplayGain
<comment>
Have volume leveling via re-encode instead (due to player apps not caring about replaygain)
</comment>
</note>
</note>
<note priority="medium" time="1433255210" done="1433313421">
Filter (Rebroadcast) and [Rebroadcast]. Implement as global filter regex.
<comment>
done
</comment>
</note>
<note priority="high" time="1546064277" done="1548218474">
Work around text2wav truncations on Stretch (Debian bug #890018)
<comment>
Moved to GitLab issue #4
</comment>
</note>
<note priority="high" time="1545387721" done="1548218309">
BUG: Crashes if there are no random items. Ideally should just turn off random items, but at least shouldn't die with a division by zero.
<comment>
Moved to GitLab issue #3
</comment>
</note>
<note priority="high" time="1535223623" done="1547335989">
Add an easy way to drop podcasts. Need to consider how they should be marked in the DB (article_use is obvious, but some places ignore). Right now manually marking enclosures as enclosure_use=0, but that does have the issue of if a different podcast links to the same enclosure (if that ever happens in the real world)
<comment>
Podist drop -f FEEDNO now exists
</comment>
<note priority="low" time="1535223872" done="0">
Current: update enclosures set enclosure_use = 0 where enclosure_no in (select e.enclosure_no from articles a left join articles_enclosures ae on (a.article_no = ae.article_no) left join enclosures e on (ae.enclosure_no = e.enclosure_no) where a.feed_no = 93 and e.playlist_no is null);
</note>
</note>
<note priority="high" time="1531202714" done="1535223656">
Cross-filesystem moves (for example, since unusable is now on S3QL)
<comment>
At least it works for unusable now.
</comment>
</note>
<note priority="high" time="1521164914">
Has enclosure/processed been split for little reason? Seems it probably has...
</note>
<note priority="high" time="1433372716" done="1433480610">
Use/don't use flag for articles
<note priority="medium" time="1433372737" done="1433480606">
Re-work ignore to set don't use.
</note>
</note>
<note priority="high" time="1433372696" done="1436126582">
Per-feed, per-day since last fetch maximum articles to add
<note priority="medium" time="1434085588" done="1434086353">
Set fetch status when download fails or when parse fails (currently leave as null)
</note>
<note priority="medium" time="1433650928" done="1436125290">
Option to ignore limit temporarily.
</note>
<note priority="medium" time="1433650903" done="1436125298">
Option to limit fetch operation to a single feed.
</note>
</note>
<note priority="high" time="1222403940" done="1433255148">
Implement RandomMedia.
</note>
<note priority="veryhigh" time="1433480122">
Desperately need basic test suite. (Do the database migrations work? Who knows...)
<note priority="verylow" time="1546046938" done="1546124543">
Config error: invalid ignore regex (fail to compile regex)
<comment>
config.t now tests this
</comment>
</note>
<note priority="verylow" time="1546046911" done="1546163941">
Playlist durations specified in seconds, minutes, and hours in config.
<comment>
Actually done a few commits back, with the Config.pm tests.
</comment>
</note>
<note priority="verylow" time="1546046769">
Test getting terminal size when running on a terminal (e.g., pty)
</note>
<note priority="verylow" time="1546046697">
COLUMNS and LINES both set and unset in env
</note>
<note priority="verylow" time="1546046574" done="1546058864">
Test --man
</note>
<note priority="verylow" time="1546046567" done="1546058866">
Test --help
</note>
<note priority="verylow" time="1546046047">
Test random item distribution is as configured
</note>
<note priority="verylow" time="1546045966" done="1546163883">
Test config variants: announce end
</note>
<note priority="verylow" time="1546045957" done="1546163886">
Test config variants: leadout length = 0
</note>
<note priority="verylow" time="1546045947" done="1546163890">
Test config variants: announce leadout
</note>
<note priority="verylow" time="1546045930">
Test config variants: reset consecutive
</note>
<note priority="verylow" time="1546045842" done="1546163896">
Test config variants: no begin announcement
</note>
<note priority="verylow" time="1546045528">
Test silly HTTP servers: date in Content-type
</note>
<note priority="verylow" time="1546045357">
Test silly feeds: blank guid
</note>
<note priority="verylow" time="1546045280">
Test silly feeds: Weird spacing around dates (KLUGE marked in Podist)
</note>
<note priority="verylow" time="1546044826">
Test silly feeds: weird MIME types
</note>
<note priority="low" time="1546046846" done="1546274859">
Test complicated (custom) logging config; probably also useful to get the color coding out of the TAP logs
</note>
<note priority="low" time="1546046108" done="1546441859">
Test invalid speech config (unknown engine, bad voice syntax, unknown audio format, etc.)
<comment>
I think we're testing all that's really worth testing.
</comment>
</note>
<note priority="low" time="1546046030">
Test with more than one random item
</note>
<note priority="low" time="1546045868">
Test config variants: various choice methods
</note>
<note priority="low" time="1546045810" done="1546441929">
Test config variants: speech to MP3
</note>
<note priority="low" time="1546045692" done="1546444723">
Test fsck with problems
</note>
<note priority="low" time="1546045603">
Test silly HTTP servers: serving audio as text/plain
</note>
<note priority="low" time="1546045566">
Test server-suggested name w/o suffix
</note>
<note priority="low" time="1546045422">
Test article ignore by title
</note>
<note priority="low" time="1546045343">
Test silly feeds: spacing around uid (XML normalization)
</note>
<note priority="low" time="1546045062">
Test byte-order-mark workaround (Debian bug #661551)
</note>
<note priority="low" time="1546044867">
Test silly feeds: All items with no date
</note>
<note priority="low" time="1546044857">
Test silly feeds: Some items with no date (both ascending and descending feed order)
</note>
<note priority="low" time="1546044758">
Test HTTP error codes on feed fetch
</note>
<note priority="low" time="1530249915">
Can actually test hours/day and other stats to maybe someday be confident they're right.
</note>
<note priority="medium" time="1546046426" done="1546161052">
Test config variants: leadout in feed
</note>
<note priority="medium" time="1546046418" done="1546161060">
Test config variants: intermissions NOT in feed
</note>
<note priority="medium" time="1546046122" done="1546058715">
Test (or just get rid of) all_playlists
<comment>
Got rid of it. Wasn't even documented.
</comment>
</note>
<note priority="medium" time="1546045915" done="1546166033">
Test randoms from feed
</note>
<note priority="medium" time="1546045899">
Test playlist constraint failures (feed length, items, too many of given podcast on feed, etc.)
</note>
<note priority="medium" time="1546045755">
Test duplicate (by hash) enclosures
</note>
<note priority="medium" time="1546045496">
Test download fail (HTTP error)
</note>
<note priority="medium" time="1546045482">
Test download fail (truncated)
</note>
<note priority="medium" time="1546045461">
Test limits (exceeding, overriding, etc.)
</note>
<note priority="medium" time="1546045405">
Make sure duplicate article detection works (both by guid and by title/date)
</note>
<note priority="medium" time="1546045297">
Test silly feeds: Items w/o enclosures
</note>
<note priority="medium" time="1546044887">
Test silly feeds: No guid
</note>
<note priority="high" time="1546046453" done="1546158769">
Test config variants: generated feed date fudging
</note>
<note priority="high" time="1546046399" done="1546158773">
Test config variants: speech in feed
</note>
<note priority="high" time="1546046231" done="1546194565">
Test config variants: Do not archive speech
</note>
<note priority="high" time="1546046220" done="1546194568">
Test config variants: Archive processed
</note>
<note priority="high" time="1546045787">
Test handling Ogg Vorbis podcasts
</note>
<note priority="high" time="1546045659" done="1546058487">
Test listing randoms (Podist list -r)
</note>
<note priority="high" time="1518160516" done="1546044724">
Probably can use git-worktree to check out old versions to test migration between each DB version.
</note>
<note priority="veryhigh" time="1546193954" done="1546270596">
Add some way to force the processing into minimal mode, to save time in system tests. Processing has its own testing anyway.
</note>
<note priority="veryhigh" time="1546045707">
Test upgrades with enclosures, playlists, archived playlists
</note>
</note>
</todo>