audio ripping automation doing rip/tag/format/playlist
Go to file
2022-03-01 07:27:40 -06:00
screenshots info 2022-03-01 07:27:40 -06:00
dp3.sh v1.4 2022-02-28 21:53:35 -06:00
README.md v1.4 2022-02-28 21:53:35 -06:00

.[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

parallel music ripping batch processing automation utility - [rip/encode/rename/art/tag/playlist]

update - v1.4

  • 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

screenshots screenshots screenshots screenshots screenshots screenshots

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.

prerequisites

  • python3
  • python3-pip
  • tmux
  • parallel
  • jq
  • elinks
  • youtube-dl
  • ffmpeg

content

  • dp3.sh - main file

usage

  • 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

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

the info below is kind of an overview of what the script above simplifies and expands upon.


       #####################################################################################################
         D E C O D E D E C O D E D E C O D E D E C O D E D E C O D E D E C O D E D E C O D E D E C O D E D
         D E C O D E D E C O D E D E C O D E D E C O D E D E C O D E D E C O D E D E C O D E D E C O D E D
         D E C O D E D E C O D E D E C O D E D E C O D E D E C O D E D E C O D E D E C O D E D E C O D E D
         D E C O D E D E C O D E D E C O D E D E C O D E D E C O D E D E C O D E D E C O D E D E C O D E D
         D E C O D E D E C O D E D E C O D E D E C O D E D E C O D E D E C O D E D E C O D E D E C O D E D
       #####################################################################################################
                                                 ````````         ````````
                                             ````   `-/+syhdmmmdhys+/-`   ````
                                         ```    -+ymMMMMMMMMMMMMMMMMMMMmy+-    ```
                                      ```   .+hNMMMMMMMMMMMMMMMMMMMMMMMMMMMNh+.   ``
                                    ```  `+dMMMMMMMMMMMmdysooooyMMMMMMMMMMMMMMMd+.   ``
                                  ``   :yNMMMMMMMmyo+/::/+oooss:/mMMMMMMMMMMMMMMMNy:   ``
                                ``   /dMMMMMMdso+sdNMmssssssssss+.sMMMMMMMMMMMMMMMMMd/   ``
                               `   /dMMMMMNsshNMMMMMMMNyssssssssso:-dMMMMMMMMMMMMMMMMMm/   `
                             ``  -hMmhsssy/yMMMMMMMMNmds/:::::::::/-`+mMMMMMMMMMMMMMMMMMh-  ``
                            .  `sNy/+ho::-+MMMNds+:.``                ``:mMMMMMMMMMMMMMMMNs`  `
                          ``  -dMs+NMMMNNmNho-`         ``.``````        `hMMMMMMMMMMMMMMMMm-  ``
                         ``  +NMMm.NMMMMh/`     `-/+shdmNNNNmdhysoo+/--`   oMMMMMMMMMMMMMMMMN+  ``
                        `  `yMMMMM.yMNo.     -ohNNMMMMMMMMMMMMMMNmysssooo+/--:+shdmmmmmmNNNMMMy`  `
                       .  `hMMMMMM/+o`    .+dNMMMMMMMMMMMMMMMMMMMMMNysssssssoo+////:::::::::::+-`  ````
                      .  `dMMMMMMM+     -yNMMMMMMMMMMMMMMMMMMMMMMMMMNsssssssssssooo++++///:::----..`````..`
                     `  `dMMMMMMMd`   -yNMMMMMMMMMMMMMMMMMMMMMMMMMMMNssso+/:-.`````            -+s`  `
                    `` `hMMMMMMMMN` :hNMMMMMMMMMMMMMMMMMMMMMMMMMMMMdo/:---                 .:sdNNMh`  `
                   ``  yNNNNNNNNNo-yNMMMMMMMMMMMMMMMMMMMMMMMMMMMNh/-:/+oos/            `:+hmNNNNNNNy  ``
                   .  +NNNNNNNNy-oNMMMMMMMMMMMMMMMMMMMMMMMMMMms/:/+osssssss/      `.:ohmNNNNNNNNNNNN+  `
                  `  -NNNNNNNd:/mMMMMMMMMMMMMMMMMMMMMMMMMMdo::+oosssssssssss:`osydmmNNNNNNNNNNNNNNNNN-  `
                 `` `dNNNNNm+:hMMMMMMMMMMMMMMMMMMMMMMMMdo::+ossssyyyyssssssso`-..-:+hNNNNNNNNNNNNNNNNd` `
                 `  +NNNNmo:sNMMMMMMMMMMMMMMMMMMMMMNdo::+o/-.`.-/hMMMNdysssss:      /NNNNNNNNNNNNNNNNNo  `
                `` .mmmdo:omMMMMMMMMMMMMMMMMMMMMNho::+oo:` .- `oo:oMMMMNhssss+   `::+mmmmmmmmmmmmmmmmmm.  `
         `      .  ody//smMMMMMMMMMMMMMMMMMMMNh+-/+oso:`   .h  /NmyyMMMMMssss/ ./os-smmmmmmmmmmmmmmmmmms  `
         .``..````./+sdNMMMMMMMMMMMMMMMMMNds/..+.+o/-`      h. `MMMNMMMMMdo/-:+osss`ymmmmmmmmmmmmmmmmmmm. ``
           ``.:+oyhmNMMMMMMMMMMMMMMMNmhs/.` +- so/.         o/  MMMMMMMMmo-/ossssss`ymmmmmmmmmmmmmmmmmmm+  `
               ` `oo++ooosssssssoo/+++.     /+ hNM.         o/ `MMMMMMm+:+ossssssss`ydddddddddddddddddddh  `
              `` -ddddhhhhyyy./+.s-ddd:     :o dMM:         s: /MMMMm+-+ossssssssss`odddddddddddddddddddd- ``
              `  +ddddddddddd::s:o:ddd+     /+`NMMs         y  hMMMs-/ossssssssssss-/ddddddddddddddddddddo  `
              `  ydddddddddddo y+./dddh`    o.:MMMN.       -/ :MMm/-ossyhddmmNmdyss+`hdddddddddddddddddddy  `
              ` `hhhhhhhhhhhhh.sy`-hhhho    / yMMMMd.      : .mMd-/sydNMMMMMMMMMMdss:+hhhhhhhhhhhhhhhhhhhh` `
              ` -hhhhhhhhhhhhhsoh/`hhhh+-.  `:NMMMMMm/`   `-omMh.+ymMMMMMMMMMMMMMMdso-:shhhhhhhhhhhhhhhhhh- `
              ` :hhhhhhhhhhhhhhyhh-shh+` /hhdNMMMMMMMMmhhddNMMm.+hmNNMMMMMMMMMMMMMNsso/::oyhhhhhhhhhhhhhhh: `
              ` /hhhhhhhhhhhhhhhhhyoy:    yMMMMMMMMMMMMMMMMMMM:-+sy+-:ohmMMMMMMMMMMsssos+:-+shhhhhhhhhhhhh/
                /yyyyyyyyyyyyyyyyyyy:     -MMMMMMMMMMMMMMMMMMm+mMMy`   `/+ymMMMMMMNssssssso/-:+syyyyyyyyyy+
                /yyyyyyyyyyyyyyyyyys `-:/+.mMMMMMMMMMMMMMMMMMMMMNo`    .hmNNMMMMMMNmdysssssss+/:+yyyyyyyyy+
                /yyyyyyyyyyyyyyyyyyo+syyyy-hMMMMMMMMMMMMMMMMMMMm:      oMMMMMMMMMMMMMMNdssssssss//yyyyyyyy/
              ` :yyyyyyyyyyyyyyyyyyyyyyyyy-yMMMMMMMMMMMMMMMMMMy.      .NMMMMMMMMMMMMMMMMNhsssssss:/yyyyyyy: `
              ` -sssssssssssssssssssssssss.yMMMMMMMMMMMMMMMMm/       `hMMMMMMMMMMMMMMMMMMMmsssssso.+ssssss- `
              ` .soossssssssssssssssssssss`dMMMMMMMMMMMMMMNy-       `yMMMMMMMMMMMMMMMMMMMMMmssssss+.ssssss. `
              `  +/+ssssssssssssssssssssso NMMMMMMMMMMMMMd/:+`     `yMMMMMMMMMMMMhhMMMMMMMMMyssssss-:sssso  `
              `  /++ooooooooooooooooooooo/`MMMMMMMMMMMMm+-+ss+`   .hMMMMMMMMMMMMMd-mMMMMMMMMdsssssso`oooo+  `
              `  -/++oooooooooooooooooooo::MMMMMMMMMMm+-+/sysso.`/mMMMMMMMMMMMMMMN//MMMMMMMMmsssssss.:ooo-  `
               ` `+/+oooooooooooooooooooo.oMMMMMMMMd+-`/s-dMNy/:hMMMMMMMMMMMMMMMMMy.dMMMMMMMMsssssss:.ooo` `
               `  //+/ooooooooooooooooooo`hMMMMMNh/-/:.o+`mMy+yNmhhNMMMMMMMMMMMMMNy+:MMMMMMMMhssssss+`+o/  `
               `  .///+++++++++++++++++++ NMMMNy/:/+/`hy-.Mh-MN+-- :MMMMMMMMMMMMMd++-yMMMMMMMdsssssso ++.  `
                `  /://+++++++++++++++++/-MMmo::+++/`yds-sMo-My dh`/MMMMMMMMMMMMMMs+/:MMMMMMMdsssssss //  `
                `  ./://++++++++++++++++:/y/:/++++/`yNs/:Nd:+Mh.--+NMMMMMMMMMMMMMMyss-MMMMMMMdsssssss`:.  `
                 `  :/:://///////////////:///////:.hNs::NNs`dMMmdmMMMMMMMMMMMMMMMMhso.MMMMMMMhsssssss`-  `
                 `  `/::////////////////////////-.dNs::NMy/-MMMMMMMMMMMMMMMMMMMMMMys+:MMMMMMMysssssss`   `
                  `  -:////////////////////////--mNs-/NMho`dMMMMMMMMMMMMMMMMMMMMMMss-oMMMMMMMssssssss   `
                  ``  ::-:///////////////////:./Nmo.+MMho.oMMMMMMMMMMMMMMMMMMMMMMmso`mMMMMMMmsssssss+   `
                   `  `:-:::::::::::::::::::-.sMdo.sMMhs::MMMMMMMMMMMMMMMMMMMMMMMys/-MMMMMMMysssssso.  `
                    `  `---::::::::::::::::..hMh+.yMMhs:-NMMMMMMMMMMMMMMMMMMMMMMmso`yMMMMMMNsssssso-  `
                     `  .----::::::::::::-./NNy+.hMMhs/.mMMMMMMMMMMMMMMMMMMMMMMNss/.MMMMMMMdssssss:  `
                     ``  .-..------------.sNds/-dMNys/.mMMMMMMMMMMMMMMMMMMMMMMMhso`sMMMMMMMysssss:  ``
                      ``  .--.---------.-dNyo:-mMNys/.mMMNdNMMMMMMMMMMMMMMMMMMdss/.MMMMMMMmsssso:  ``
                       ``  `...------.`oNdso-/NMmso:-mMNo.``hMMMMMMMMMMMMMMMMmsso`yMMMMMMMyssso-  ``
                        ``  `.------.-dNyso-oMMdso::NMM+.dy +MMMMMMMMMMMMMMMNsss::MMMMMMMNssso.  ``
                          `   .....`oNdsso-yMNyso-/NMMM:`/-`dMMMMMMMMMMMMMMMyss+`mMMMMMMMhss+`  `
                           `   `..:dNysso:dMmsso.oMMMMMNs+smMMMMMMMMMMMMMMMhsso.sMMMMMMMNso:   `
                            ``   /Ndsss+/NMdss+.yMMMMMMMMMMMMMMMMMMMMMMMMMmsss::MMMMMMMMh+.  ``
                              `   :oss+sMNyss/-dMMMMMMMMMMMMMMMMMMMMMMMMMNsss+`mMMMMMMMm-   `
                               ``   :+hMmsss:+NMMMMMMMMMMMMMMMMMMMMMMMMMMysso`hMMMMMMm+`  ``
                                 ``  `+ysso:yMMMMMMMMMMMMMMMMMMMMMMMMMMMhsss-sMMMMMm+`  ``
                                   ``   ./+mMMMMMMMMMMMMMMMMMMMMMMMMMMMhsss/+MMMNy:   ``
                                     ``   `/hNMMMMMMMMMMMMMMMMMMMMMMMMdsss++MNh+`   ``
                                        ``   `:smMMMMMMMMMMMMMMMMMMMMdssso/s/`   ``
                                          ````   `:+ydNMMMMMMMMMMMMMd+/:.`   `` `
                                              ````     `.://+++//:.`    `````
                                                   ```````       ```````
         ############################################################################################################


  #############################################################################################################################
  ###
  #############################################################################################################################

  [ - YOUTUBE - YOUTUBE - YOUTUBE - YOUTUBE - YOUTUBE  YOUTUBE - YOUTUBE - YOUTUBE - YOUTUBE - YOUTUBE - ]
  [ - YOUTUBE - YOUTUBE - YOUTUBE - YOUTUBE - YOUTUBE  YOUTUBE - YOUTUBE - YOUTUBE - YOUTUBE - YOUTUBE - ]
  [ - YOUTUBE - YOUTUBE - YOUTUBE - YOUTUBE - YOUTUBE  YOUTUBE - YOUTUBE - YOUTUBE - YOUTUBE - YOUTUBE - ]

  #############################################################################################################################
  ###
  #######################
  A. YOUTUBE CHANNELS
  B. YOUTUBE PLAYLISTS
  C. YOUTUBE VIDEOS/SONGS
  #######################
  ###
  #############################################################################################################################

  #############################################################################################################################
  ###
  #################
  playlist_urls.txt <<<< THIS FILE MUST CONTAIN ALL THE DIRECT URLS BEFORE WE START THE PROCESS <<<<<<<<<<<<<<
  #################
  ###
  ########
  examples
  ########
  ###
  #############################################################################################################################
   channel https://www.youtube.com/channel/zzzzzzzzzzzzzzzzzzzzzzzz
  playlist https://www.youtube.com/playlist?list=zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
    direct https://www.youtube.com/watch?v=tHeViDeOiDs or https://youtu.be/tHeViDeOiDs
  #############################################################################################################################
  ###
  #########################
  extracting from a channel
  #########################
  ### ```
1>### youtube-dl -j --flat-playlist https://www.youtube.com/channel/UC2ilI6Sp5D5cvNC0TxLbEmA | jq -r '.url' > playlist_urls.txt
  ### ```
  #############################################################################################################################

  #############################################################################################################################
  ### ```
2>### cat playlist_urls.txt
  ### ```
  ############################################################################
  ### https://www.youtube.com/playlist?list=PL0L_zzLQSZ2Wn5KbSQvabRYYVcPcV5PRe
  ### https://www.youtube.com/playlist?list=PL0L_zzLQSZ2VxkxDi_PtZgkHH8wKTA0HM
  ### https://www.youtube.com/playlist?list=PL0L_zzLQSZ2WY6-gTtdF9MEaS8uA_rUfV
  ### https://www.youtube.com/playlist?list=PL0L_zzLQSZ2V7PR2wj7zOnrOxPlIUKix6
  ### https://www.youtube.com/playlist?list=PL0L_zzLQSZ2WaWjtrObXM9jPep3d45d8H
  ### https://www.youtube.com/playlist?list=PL0L_zzLQSZ2WsfbOet4DhfTGio_V3gkuN
  ### https://www.youtube.com/playlist?list=PL0L_zzLQSZ2Wr0KbITs0lJAf4GPA8g6jJ
  ### https://www.youtube.com/playlist?list=PL0L_zzLQSZ2WDomHUhrzODp0PxsOTr1mb
  ### https://www.youtube.com/playlist?list=PL0L_zzLQSZ2XgaheJK6fccI_JMDBQpRId
  ### https://www.youtube.com/playlist?list=PL0L_zzLQSZ2VhBh6E9XZqI8gkhBH6DZEo
  #############################################################################################################################
  ### ```
3>### xargs -n 1 -P 10 youtube-dl -j --flat-playlist < playlist_urls.txt | jq -r '.id' | sed 's_^_https://youtu.be/_' > url_batch.log
  ### ```
  #############################################################################################################################

  #############################################################################################################################
  ### ```
4>### cat url_batch.log
  ### ```
  ################################
  ### https://youtu.be/DtxcoVQCjz4
  ### https://youtu.be/Zs2I30FslEE
  ### https://youtu.be/TkhtSktLRYk
  ### https://youtu.be/0-XpbGsw4xY
  ### https://youtu.be/oSCJzds71hs
  ### https://youtu.be/gp7xvYhmbU8
  ### https://youtu.be/WpwIf-sJrWw
  ### https://youtu.be/f2zMpuCNicg
  ################################
  ### ```
5>### parallel -j 10 youtube-dl -f bestaudio -i --download-archive downloaded.txt --no-post-overwrites -ciw --extract-audio --audio-format mp3 --audio-quality 0 < url_batch.log`
  ### ```
  #############################################################################################################################
  ###
  #############################################################################################################################

  [ - BANDCAMP - BANDCAMP - BANDCAMP - BANDCAMP - BANDCAMP - BANDCAMP - BANDCAMP - BANDCAMP - BANDCAMP - ]  SECT
  [ - BANDCAMP - BANDCAMP - BANDCAMP - BANDCAMP - BANDCAMP - BANDCAMP - BANDCAMP - BANDCAMP - BANDCAMP - ]  SECT
  [ - BANDCAMP - BANDCAMP - BANDCAMP - BANDCAMP - BANDCAMP - BANDCAMP - BANDCAMP - BANDCAMP - BANDCAMP - ]  SECT

  #############################################################################################################################
  ###
  ########
  examples
  ########
  ###
  #############################################################################################################################
  A. BANDCAMP MUSICIAN GROUP ???? https://theartistnamehere.bandcamp.com/
  B. BANDCAMP MUSICIAN ALBUM ???? https://theartistnamehere.bandcamp.com/album/
  C. BANDCAMP MUSICIAN TRACK ???? https://theartistnamehere.bandcamp.com/track/
  #############################################################################################################################
  ###
  ### ```
1>### touch bandcamp && chmod +x bandcamp
  ### ```
  ###
  #############################################################################################################################

  #############################################################################################################################
  ###
  #############################################################################################################################
  ### ```
2>### cat << eof >> bandcamp
2>### elinks --dump --no-numbering https://\$1.bandcamp.com/ |
2>### grep -e '.com/album' -e '.com/track' |
2>### sed 's/.*https/https/g' |
2>### uniq >> links.txt
2>### eof
  ### ```
  #############################################################################################################################
  ### ```
3>### cat << eof > artists.txt
3>### jenseninterceptor
3>### monnomblack
3>### 47x47
3>### eof
  ### ```
  #############################################################################################################################

  #############################################################################################################################
  ### ```
4>### xargs -n 1 -P 10 ./bandcamp < artists.txt
  ### ```
  #############################################################################################################################
  ### ```
5>### cat links.txt
  ### ```
  #############################################################################################################################
  https://jenseninterceptor.bandcamp.com/album/master-control-program-ep
  https://jenseninterceptor.bandcamp.com/album/strings-of-fear-ep
  https://jenseninterceptor.bandcamp.com/album/mother-lp
  https://monnomblack.bandcamp.com/album/unholy-empire-3
  https://monnomblack.bandcamp.com/album/organic-computer-awareness
  https://monnomblack.bandcamp.com/album/end-of-opulence
  https://47x47.bandcamp.com/album/5y
  https://47x47.bandcamp.com/album/47026
  https://47x47.bandcamp.com/album/47025
  #############################################################################################################################
  ### ```
6>### parallel -j 10 youtube-dl -f bestaudio --extract-audio --audio-format mp3 --audio-quality 0 < links.txt
  ### ```
  #############################################################################################################################

  #############################################################################################################################
  ###
  #############################################################################################################################
  [Bandcamp] manix: Downloading webpage
  [download] Destination: Jensen Interceptor - Manix-3291123225.mp3
  [download] 100% of 5.17MiB in 00:0080MiB/s ETA 00:005nown ETA
  [ffmpeg] Post-process file Jensen Interceptor - Manix-3291123225.mp3 exists, skipping
  [Bandcamp:album] dj-mml-communication-therapy: Downloading webpage
  [download] Downloading playlist: DJ MML - Communication Therapy
  [Bandcamp:album] playlist DJ MML - Communication Therapy: Collected 1 video ids (downloading 1 of them)
  [download] Downloading video 1 of 1
  [Bandcamp] communication-therapy: Downloading webpage
  [download] Destination: DJ MML - Communication Therapy-2275112051.mp3
  [download] 100% of 6.42MiB in 00:0193MiB/s ETA 00:008nown ETA
  [ffmpeg] Post-process file DJ MML - Communication Therapy-2275112051.mp3 exists, skipping
  [download] Finished downloading playlist: DJ MML - Communication Therapy
  [Bandcamp:album] code-3-ep: Downloading webpage
  [download] Downloading playlist: Code 3 EP
  [Bandcamp:album] playlist Code 3 EP: Collected 2 video ids (downloading 2 of them)
  [download] Downloading video 1 of 2
  #############################################################################################################################
  ###
  #############################################################################################################################

  [ - SOUNDCLOUD - SOUNDCLOUD - SOUNDCLOUD - SOUNDCLOUD - SOUNDCLOUD - SOUNDCLOUD - SOUNDCLOUD - SOUNDCLOUD ]
  [ - SOUNDCLOUD - SOUNDCLOUD - SOUNDCLOUD - SOUNDCLOUD - SOUNDCLOUD - SOUNDCLOUD - SOUNDCLOUD - SOUNDCLOUD ]
  [ - SOUNDCLOUD - SOUNDCLOUD - SOUNDCLOUD - SOUNDCLOUD - SOUNDCLOUD - SOUNDCLOUD - SOUNDCLOUD - SOUNDCLOUD ]

  #############################################################################################################################
  ###
  ######################
  A. SOUNDCLOUD ARTIST
  B. SOUNDCLOUD  SETS
  C. SOUNDCLOUD TRACK
  ######################
  ###
  #############################################################################################################################

  #############################################################################################################################
  ###
  #############
  url_batch.log
  #############
  ###
  ########
  examples
  ########
  ###
  ######################################################
   artist https://soundcloud.com/artistname/
     sets https://soundcloud.com/artistname/sets/setname
    track https://soundcloud.com/artistname/trackname
  ######################################################
  ###
  #############################################################################################################################

  #############################################################################################################################
  ### ```
1>### youtube-dl -j --flat-playlist https://soundcloud.com/ytcracker | jq -r '.url' > url_batch.log
1>### youtube-dl -j --flat-playlist https://soundcloud.com/ytcracker/sets/ytcracker-essential-listening | jq -r '.url' > url_batch.log
  ### ```
  #############################################################################################################################
  now your url_batch.log will contain similar looking urls like this example below
  #############################################################################################################################
  ### ```
2>### cat url_batch.log
  ### ```
  #############################################################################################################################
  ### https://soundcloud.com/ytcracker/ytcracker-bitcoin-baron-v1-ssl
  ### https://soundcloud.com/ytcracker/ytcracker-home-sweet-home
  ### https://soundcloud.com/ytcracker/ytcracker-otherworldly-foe
  ### https://soundcloud.com/ytcracker/ytcracker-bazaar-album-out-end
  ### https://soundcloud.com/ytcracker/ytcracker-choose-a-file-album
  ### https://soundcloud.com/ytcracker/ytcracker-x-skrillex-x-damian
  ### https://soundcloud.com/ytcracker/ytcracker-hacker-war
  ### https://soundcloud.com/ytcracker/ytcracker-computer-crime
  ### https://soundcloud.com/ytcracker/ytcracker-second-base-appeal
  #############################################################################################################################
  ### ```
3>### parallel -j 10 youtube-dl -f bestaudio -i --download-archive downloaded.txt --no-post-overwrites -ciw --extract-audio --audio-format mp3 --audio-quality 0 < url_batch.log
  ### ```
  #############################################################################################################################