Skip to content
forked from glomatico/gamdl

Glomatico's ✨ Apple Music ✨ Downloader

Notifications You must be signed in to change notification settings

Avatarchik/gamdl

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Glomatico's ✨ Apple Music ✨ Downloader

A Python script to download Apple Music songs/music videos/albums/playlists. This is a rework of https://github.com/loveyoursupport/AppleMusic-Downloader/tree/661a274d62586b521feec5a7de6bee0e230fdb7d.

Setup

  1. Install Python 3.7 or newer
  2. Install gamdl with pip
    pip install gamdl
    
  3. Add FFmpeg and mp4decrypt to PATH or specify the location using the command line arguments or the config file (see Configuration)
    • mp4decrypt is only needed if you want to download music videos
  4. Place your cookies in the same folder that you will run the script as cookies.txt
  5. Place your .wvd file in the same folder that you will run the script as device.wvd
    • You can use dumper to dump your phone's L3 CDM. Once you have the L3 CDM, use pywidevine to create the .wvd file from it.
      1. Install pywidevine with pip
        pip install pywidevine pyyaml
        
      2. Create the .wvd file
        pywidevine create-device -t ANDROID -l 3 -k private_key.pem -c client_id.bin -o .
        

Examples

  • Download a song
    gamdl "https://music.apple.com/us/album/never-gonna-give-you-up-2022-remaster/1626265761?i=1626265765"
    
  • Download an album
    gamdl "https://music.apple.com/us/album/whenever-you-need-somebody-2022-remaster/1626265761"
    

Configuration

gamdl can be configured using the command line arguments or the config file. The config file is created automatically when you run gamdl for the first time at ~/.gamdl/config.json on Linux and %USERPROFILE%\.gamdl\config.json on Windows. Config file values can be overridden using command line arguments.

Command line argument / Config file key Description Default value
-f, --final-path / final_path Path where the downloaded files will be saved. ./Apple Music
-t, --temp-path / temp_path Path where the temporary files will be saved. ./temp
-c, --cookies-location / cookies_location Location of the cookies file. ./cookies.txt
-w, --wvd-location / wvd_location Location of the .wvd file. ./device.wvd
--ffmpeg-location / ffmpeg_location Location of the FFmpeg binary. ffmpeg
--mp4box-location / mp4box_location Location of the MP4Box binary. MP4Box
--mp4decrypt-location / mp4decrypt_location Location of the mp4decrypt binary. mp4decrypt
--nm3u8dlre-location / nm3u8dlre_location Location of the N_m3u8DL-RE binary. N_m3u8DL-RE
--config-location / - Location of the config file. <home_folder>/.gamdl/config.json
--template-folder-album / template_folder_album Template of the album folders as a format string. {album_artist}/{album}
--template-folder-compilation / template_folder_compilation Template of the compilation album folders as a format string. Compilations/{album}
--template-file-single-disc / template_file_single_disc Template of the track files for single-disc albums as a format string. {track:02d} {title}
--template-file-multi-disc / template_file_multi_disc Template of the track files for multi-disc albums as a format string. {disc}-{track:02d} {title}
--template-folder-music-video / template_folder_music_video Template of the music video folders as a format string. {artist}/Unknown Album
--template-file-music-video / template_file_music_video Template of the music video files as a format string. {title}
--cover-size / cover_size Size of the cover. 1200
--cover-format / cover_format Format of the cover. jpg
--remux-mode / remux_mode Remux mode. ffmpeg
--download-mode / download_mode Download mode. ytdlp
-e, --exclude-tags / exclude_tags List of tags to exclude from file tagging separated by commas. null
--truncate / truncate Maximum length of the file/folder names. 40
-l, --log-level / log_level Log level. INFO
--prefer-hevc / prefer_hevc Prefer HEVC over AVC when downloading music videos. false
--ask-video-format / ask_video_format Ask for the video format when downloading music videos. false
--disable-music-video-skip / disable_music_video_skip Don't skip downloading music videos in albums/playlists. false
-l, --lrc-only / lrc_only Download only the synced lyrics. false
-n, --no-lrc / no_lrc Don't download the synced lyrics. false
-s, --save-cover / save_cover Save cover as a separate file. false
--songs-heaac / songs_heaac Download songs in HE-AAC 64kbps. false
-o, --overwrite / overwrite Overwrite existing files. false
--print-exceptions / print_exceptions Print exceptions. false
-u, --url-txt / - Read URLs as location of text files containing URLs. false
-n, --no-config-file / - Don't use the config file. false

Tags variables

The following variables can be used in the template folders/files and/or in the exclude_tags list:

  • album
  • album_artist
  • album_id
  • album_sort
  • artist
  • artist_id
  • artist_sort
  • comment
  • compilation
  • composer
  • composer_id
  • composer_sort
  • copyright
  • cover
  • date
  • disc
  • disc_total
  • gapless
  • genre
  • genre_id
  • lyrics
  • media_type
  • rating
  • storefront
  • title
  • title_id
  • title_sort
  • track
  • track_total
  • xid

Remux mode

Can be either ffmpeg or mp4box. mp4decrypt is required for music videos and remuxing with mp4box. mp4box is slower but will not convert the closed captions track in music videos that have one. mp4box can be obtained from here.

Download mode

Can be either ytdlp or nm3u8dlre. nm3u8dlre is faster but requires ffmpeg. nm3u8dlre can be obtained from here.

Songs quality

Songs will be downloaded in AAC 256kbps by default or in HE-AAC 64kbps if the songs_heaac option is enabled.

Music videos quality

Music videos will be downloaded in the highest quality available by default. The available qualities are:

  • AVC 1080p 10mbps, AAC 256kbps
  • AVC 1080p 6.5mbps, AAC 256kbps
  • AVC 720p 4mbps, AAC 256kbps
  • AVC 576p 2mbps, AAC 256kbps
  • AVC 480p 1.5mbps, AAC 256kbps
  • AVC 360p 1mbps, AAC 256kbps

By enabling the prefer_hevc option, music videos will be downloaded in the highest HEVC quality available. The available qualities are:

  • HEVC 4K 20mbps, AAC 256kbps
  • HEVC 4K 12mbps, AAC 256kbps

Enable ask_video_format to select a custom audio/video format.

About

Glomatico's ✨ Apple Music ✨ Downloader

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Python 100.0%