« get me outta code hell

todo.txt - http-music - Command-line music player + utils (not a server!)
about summary refs log tree commit diff
path: root/todo.txt
blob: 4d84775248932d1f111112561f78759f13e3223d (plain)
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
TODO: Get `avconv` working. Oftentimes `play` won't be able to play
      some tracks due to an unsupported format; we'll need to use
      `avconv` to convert them (to WAV).
      (Done!)

TODO: Get `play` working.
      (Done!)

TODO: Get play-next working; probably just act like a shuffle. Will
      need to keep an eye out for the `play` process finishing.
      (Done!)

TODO: Preemptively download and process the next track, while the
      current one is playing, to eliminate the silent time between
      tracks.
      (Done!)

TODO: Delete old tracks! Since we aren't overwriting files, we
      need to manually delete files once we're done with them.
      (Done!)

TODO: Get library filter path from stdin.
      (Done!)

TODO: Show library tree. Do this AFTER filtering, so that people
      can e.g. see all albums by a specific artist.
      (Done!)

TODO: Ignore .DS_Store.
      (Done!)

TODO: Have a download timeout, somehow.

TODO: Fix the actual group format. Often times we get single-letter
      files being downloaded (which don't exist); I'm guessing that's
      related to folder names (which are just strings, not title-href
      arrays) still being in the group array. (Update: that's defin-
      itely true; 'Saucey Sounds'[0] === 'S', and 'Unofficial'[0]
      === 'U', which are the two "files" it crashes on while playing
      -g 'Jake Chudnow'.)
      (Done!)

TODO: A way to exclude a specific group path.
      (Done!)

TODO: Better argv handling.
      (Done!)

TODO: Option to include a specific path from the source playlist.
      (Done!)

TODO: Make a playlist generator that parses http://billwurtz.com
      instrumentals.html.
      (Done!)

TODO: Make crawl-itunes.js a bit more general, more command-line
      friendly (i.e. don't require editing the script itself), and
      make it use the getHTMLLinks function defined in the new
      crawl-links.js script.
      (Done!)

TODO: Play-in-order track picker.
      (Done!)

TODO: Volume controls. Who knows how to do this? It might have to be an
      argument passed to `play`. Being able to change the volume while it's
      playing would be nice, but I'm not sure if that's really possible.
      (Done! - To the greatest current ability.)

TODO: Tempfiles, maybe?
      (Done!)

TODO: Use NOT the internet as its source, so that it's a bit more general
      purpose. This would only take adding a new downloader.
      (Done!)

TODO: Recursive local file playlist crawler.
      (Done!)

TODO: *Requiring* a literal `playlist.json` file doesn't seem quite right,
      especially since there's the `--open` option.
      (Done!)

TODO: Make local downlaoder sort more natural - that is, 10 comes immediately
      after 9, not 1. (1, 5, 9, 10, 12; not 1, 10, 12, 5, 9.)
      (Done!)

TODO: Make a way to skip tracks while playing. Currently the only way is to
      kill and restart the http-music process; this is bad for numerous
      reasons, particularly because it gets rid of the pre-downloaded track and
      forces the user to wait for another one to be downloaded.
      (Done!)

TODO: Make a --help/-h/-? option that directs helpless users to the man page.
      (Done!)

TODO: Make a way to write the current playlist to a file. I think just renaming
      the debug-playlist-log option could work, since you could pipe that to a
      file through your shell.

TODO: Figure out a less "hacky" way to kill the process. Ideally we shouldn't
      have to handle ^C and ^D ourselves; for instance right now ^Z is actually
      broken, since we aren't using the shell's normal way of handling any
      keyboard controls such as those!

TODO: Separate the code in loop-play.js to be a bit nicer.
      (Done!)

TODO: Cleaning up http-music.js would be nice as well!

TODO: A way to kill the up-next song.
      (Done!)

TODO: A way to see information about the currently playing song, as well as
      the up-next song.

TODO: A way to see the previously played songs, and to skip back (or forwards).

TODO: Exit on loop-play end. (Since it listens to stdin for input right now,
      it won't automatically stop.)

TODO: Figure out how to attempt to avoid being forced to convert every file..
      converting a 10MB MP3 into an 80MB WAV is never good, even if we're
      storing it as a tempfile!
      (Done!)

TODO: Let playlist filter match things lowercase. '72 Minutes Of Fame' should
      be matched if '72 Minutes of Fame' can't be! (However, it would also be
      best to prioritize a case-sensitive match before a non-case-sensitive
      one. Given the input 'FoObAR', prioritize 'FoObAR' over 'Foobar'.)
      (Done!)

TODO: Figure out why written track files (when using HTTP downloader) are
      URL-encoded. It's probably writing a file based on the href-file name,
      rather than the title. That's alright, but maybe we should URL-decode
      and then sanitize the href-file name, so that we get 'Foo Bar.mp3'
      instead of 'Foo%20Bar.mp3'.
      (Done!)

TODO: Make max download attempts variable by the user (without requiring
      source editing, obviously).
      (Done!)

TODO: Update HTTP crawl man page to include new options, and maybe update
      the HTTP crawler itself to reveal more options to the command line.

TODO: Fix the bug in loop-play.js where wasDestroyed doesn't exist!
      (Done!)

TODO: Use `mpv` instead of `play`!!!!!!!!! This would fix every problem ever.