a self-hostable web-ui apple music downloader widevine decryptor with questionable legality https://amdl.reidlab.pink
Find a file
2025-04-28 20:49:03 -07:00
docs decryptio฻n ke(зіц)ys are rειnaðarann 2025-04-20 03:07:30 -07:00
public codecત્યpl 2025-04-28 20:49:03 -07:00
src codecત્યpl 2025-04-28 20:49:03 -07:00
.editorconfig ini𝖔 𝕞𝐚𝔢 b𝖁𝖘𝖋𝖗𝖆𝕊t commit 2025-04-18 02:12:33 -07:00
.env.example decryptio฻n ke(зіц)ys are rειnaðarann 2025-04-20 03:07:30 -07:00
.gitignore ini𝖔 𝕞𝐚𝔢 b𝖁𝖘𝖋𝖗𝖆𝕊t commit 2025-04-18 02:12:33 -07:00
config.example.toml downlederigoೃ 2025-04-26 18:40:13 -07:00
eslint.config.mjs make릭ع a few f梦nctions have return types + etc 2025-04-22 00:57:30 -07:00
flake.lock ini𝖔 𝕞𝐚𝔢 b𝖁𝖘𝖋𝖗𝖆𝕊t commit 2025-04-18 02:12:33 -07:00
flake.nix downlederigoೃ 2025-04-26 18:40:13 -07:00
LICENSE codecત્યpl 2025-04-28 20:49:03 -07:00
package-lock.json codecત્યpl 2025-04-28 20:49:03 -07:00
package.json codecત્યpl 2025-04-28 20:49:03 -07:00
README.md codecત્યpl 2025-04-28 20:49:03 -07:00
tsconfig.json ini𝖔 𝕞𝐚𝔢 b𝖁𝖘𝖋𝖗𝖆𝕊t commit 2025-04-18 02:12:33 -07:00

amdl

banner

a self-hostable web-ui apple music downloader widevine decryptor with questionable legality

setup

.env

MEDIA_USER_TOKEN and ITUA are both from your apple music cookies

WIDEVINE_CLIENT_ID is uhm owie. this thing kind of Sucks to obtain and i would totally recommend finding a not-so-legal spot you can obtain this from (in fact, i found one on github LOL), rather than extracting it yourself. if you want to do through the pain like i did, check this guide out!! once you have your client_id.bin file, convert it to base64 and slap it in the env var (cat client_id.bin | base64 -w 0)

WIDEVINE_PRIVATE_KEY is essentially the same process of obtainment, you'll get it from the same guide!! i'm not sure how to easily find one of these on the web, but i'm sure you end users (user count: 0 (TRVTHNVKE)) can pull through. this is also in base64 (cat private_key.pem | base64 -w 0)

config

most of the config is talked on in config.example.toml, just copy it over to config.toml and go wild! i tried to make the error reporting for invalid configurations pretty good and digestable

limitations / the formats

currently you can only get basic widevine ones, everything related to playready and fairplay is not supported, sorry!! someday i will get this working, at least for playready. it's just that no one has written a library yet

guaranteed formats to work include:

  • aac-legacy
  • aac-he-legacy