# .[d]. ircd.chat/6697 #tcpdirect ``` MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMh+MMMMMMMMMMMMMMhsMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMm/ oMMMMMMMMMMMMMMm +NMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMy` yMMMMMMMMMMMMMMM- -mMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMs+dMMMMMMMMMM+ sMMMMMMMMMMMMMMM- `dMMMMMMMMMMms/NMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMM+ .omMMMMMM: -MMMMMMMMMMMMMMo `yMMMMMMMy: `dMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMM- /dMMM+ sMMMMMMMMMMMMh `hMMMNo` sMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMd :dm `mMMMMMMMMMMN. .NNo` .MMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMM: - :MMMMMMMMMMs :` sMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMs ymNMMMMMNm. NMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMy `-/-` .MMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMo .NMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMNh+. :sdMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMhso+:. `-/+syMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMM- dMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMM` `.:+/. `/s+:. sMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMNo -oms. .//-` `:/:` `+md+` .hMMMMMMMMMMMMMMM MMMMMMMMMMMMMNs` .odNdo. .ohmd+` :dMMMMMMMMMMMMM MMMMMMMMMMMNo` .. .- :hMMMMMMMMMMM MMMMMMMMMd+` -sNMMMMMMMM MMMMMMNs- `.. `/-. `+dMMMMMM MMMNy: ./sdNMMMh: `sNMMMNds/. .odMMM MM+ :ymMMMMMMMMMMh. +NMMMMMMMMMMmo- /NM MMMh: .sNMMMMMMMMMMMMMMN- `hMMMMMMMMMMMMMMMm+` :hMMM MMMMMd:` ``-:+shmMMMMMMMMMMMMMMMMMMN. hMMMMMMMMMMMMMMMMMMMmhs+/-..``````./dMMMMM MMMMMMMMMNNNNNNMMMMMMMMMMMMMMMMMMMMMMMMMMMo .MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMy .MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMN. /MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMN+` `+NMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNs. -hMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMdyymMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM ``` ## summary ``` dp3 v2.1 - parallel music ripping batch processing automation utility ``` ## changelog - v2.1 - fixed the way some pip modules were checked ## changelog - v2.0 - fixed some automation bugs - added an auto-redownload feature for missed files, REDOWNLOAD_LIMIT variable is at top of code ## changelog - v1.8 - updated progress indicators to reflect differences in webm/youtube, aiff/bandcamp, wav/soundcloud ## changelog - v1.7 - added a sense of progess indication to the site indexing, helpful if you are ripping channels - updated the dp3 tagging tool, mishandled unicode splitting and would omit downloaded files - altered some ui elements, examples, indications and color coding - updated the tmux layout, it wasn't tiling in fractions between perfect vertical/horizontal splits - updated the way file progress is realized so window panes close accordingly - changed some flags to youtube-dl so that stale downloads were not hanging large batches ## changelog - v1.6 - added MULTI-LINE mode - rather than feeding arguments as parameters you can paste a bunch on boot - added mixed processing - can MULTI-LINE playlists from soundcloud/youtube/bandcamp intermingled - sets/playlists/channels - these now all operate no differently than a single media link - stepped up parallelism - increased thread count - variable set at top of dp3.sh - added archive prefix - variable set at top of dp3.sh - added soundcloud - added bandcamp - changed archive method to include original playlist url into the process log - changed archive method to also include the coverart into the archive as well as encoded into id3tag - updated progress/download windows ## screenshots --- ``` MULTI-LINE mode ``` --- ![screenshots](screenshots/ssa.jpg) ![screenshots](screenshots/ssb.jpg) ![screenshots](screenshots/ssc.jpg) ![screenshots](screenshots/sse.jpg) --- ``` command line mode ``` --- ![screenshots](screenshots/ss1.jpg) ![screenshots](screenshots/ss2.jpg) ![screenshots](screenshots/ss3.jpg) ![screenshots](screenshots/ss4.jpg) ![screenshots](screenshots/ss5.jpg) ![screenshots](screenshots/ss6.jpg) ## overview ``` you supply this script a playlist from either bandcamp, soundcloud or youtube and it will mass download all of that media content in parallel. the files will then be renamed to a different naming method, the information like coverart, name, artist, url, notes and other text are encoded into the mp3s as well as the urls as to where the content came from. a playlist is created and then the content is archived. [ batch / rip / encode / rename / art / tag / playlist ] ``` ## prerequisites - `python3` - `python3-pip` - `tmux` - `parallel` - `jq` - `elinks` - `youtube-dl` - `ffmpeg` ## content - dp3.sh - *main file* ## usage ``` command line mode ``` - syntax: `bash dp3.sh name_of_playlist genre_of_playlist url_to_playlist` - example: `bash dp3.sh dr1pp1ng techno https://www.youtube.com/playlist?list=PLrdcKN79B4UG1xoQ8-L3eiaI1cYzFCiW` ``` MULTI-LINE mode ``` - syntax: `bash dp3.sh` - *without arguments* - when the script loads it will be accepting MULTI-LINE input - example: MULTI-LINE paste.. first line - playlist name, 2nd line - genre, rest of the lines can be intermingled ``` `bash dp3.sh` [ ENTER MULTI-LINE PLAYLISTS, PRESS CTRL+D WHEN YOU'RE DONE OR CTRL+C TO ABORT ] dr1pr3kt_dp3_t3st mixed https://www.youtube.com/playlist?list=PLrdcKN79B4UEatA0qrCJkxQrWGoIP4h3T https://www.youtube.com/playlist?list=PLrdcKN79B4UEUJWovJJpG6nGpy9eVpP9T https://www.youtube.com/channel/UCT__fJTyOLsXxzyfeJllGJA https://soundcloud.com/whiteeyes https://www.youtube.com/c/eliozie https://the--hacker.bandcamp.com/ https://saralandry.bandcamp.com/ https://schwefelgelb.bandcamp.com/ https://www.youtube.com/channel/UClaFw_6RjEF-LVFMe_3V2KQ https://soundcloud.com/phosgore https://snts.bandcamp.com/album/the-unfinished-fight-against-humanity-lp https://soundcloud.com/vanta_sec https://soundcloud.com/daxj https://blackdresses.bandcamp.com/album/forget-your-own-face?from=hp https://bspliveseries.bandcamp.com/album/bsp-live-series-2021-09-04-kharkiv?from=hp https://ohmresistance.bandcamp.com/album/heroes-of-snake-island-i?from=hp https://youwillloveeachother.bandcamp.com/album/disco4-part-ii?from=hp https://svaj.bandcamp.com/album/rewind-ep?from=hp https://gregpuciato.bandcamp.com/album/mirrorcell?from=hp https://jkflesh.bandcamp.com/album/new-religions-old-rules?from=hp https://shilparay.bandcamp.com/album/portrait-of-a-lady?from=hp ^D ``` ## setting up environment - `git clone --recursive https://git.tcp.direct/decoded/dp3.git` ## notes - playlist/genre names dont matter but the url must be valid otherwise there is nothing to download - if a window seems hung leave it alone, some files probably still encoding - if it does indeed crash it's probably because the playlist is private, it needs to be public or unlisted