You are browsing as a guest. Sign up (or log in) to start making projects!

AppleMusic-Downloader

  • 17 Devlogs
  • 25 Total hours

A powerful applemusic downloader with gui

Ship #1 Pending review

The initial phase of this project involved some debugging work.
A few days ago, I officially began the refactoring of this project. I removed redundant code and modules, abandoned the cumbersome PyQt, built a standard API backend using FastAPI, and built the web frontend using Next.js.

You can run the packaged software now to try it out (don't forget to install ffmpeg). If you don't have an Apple Music subscription, DM @Cret on Slack and I'll provide you with my own cookies.txt file.

  • 17 devlogs
  • 25h
Try project → See source code →
Open comments for this post

2h 12m 37s logged

The Dolby format finally downloaded normally. During this stage, copilot helped me debug and test the project.This project is ready to ship

0

Loading discussion…

0
13
Open comments for this post

1h 59m 28s logged

Remove Windows-specific GUI components and associated files from the project, including CMake configurations, resource files, and source code for the Flutter window implementation. This cleanup streamlines the project structure and eliminates unnecessary dependencies for non-Windows platforms.

0

Loading discussion…

0
4
Open comments for this post

1h 10m 13s logged

I ultimately gave up on using Flutter for frontend development; it was simply too difficult. Instead, I am using Next.js combined with pywebview to build the desktop frontend.

0

Loading discussion…

0
3
Open comments for this post

1h 39m 7s logged

I have completed the API construction; in this phase, I encapsulated all of gamdl’s parameters—aligning them with the definitions in core_downloader.py—into a unified API. Next up is learning Flutter for the frontend.

0

Loading discussion…

0
3
Open comments for this post

3h 43m 20s logged

This conversation tracked the comprehensive refactoring and bug-fixing of the AppleMusic-Downloader project. The work began by diagnosing why CN-region songs failed with a KeyError on extendedAssetUrls — fixed by switching to .get() with a fallback, and adding a webplayback-based stream path for songs without enhancedHls. We then extracted the entire download orchestration from cli.py (a Click-based CLI) into a new core_downloader.py module — a pure Python API with no terminal dependencies — and rewired both cli.py and download_worker.py (the GUI’s QThread) to call it directly, eliminating a class of Windows GUI crashes caused by Click’s stdin/stdout assumptions. We fixed download_worker.py’s variable name bug (remux_path vs remuxed_path) that silently dropped song files, normalized Path/str type handling, added CENC stream support (ISO-23001-7 with data:;base64, KIDs) by reconstructing Widevine PSSH boxes and passing real KIDs to mp4decrypt, switched ffmpeg remux from -f ipod to -f mp4 and added automatic fragmentation detection with fallback to aac_at/aac re-encoding for playable output, and added backward-compatible config migration for the renamed codec_song enum. We also fixed the Windows manifest name, updated the PyInstaller .spec with missing hidden imports, and corrected several type annotation issues across models.py, downloader.py, and downloader_song.py. The result is that both standard Widevine songs (e.g., ROSÉ’s toxic till the end) and CENC-encrypted songs (e.g., Queen’s Under Pressure via the 28:ctrp256 webplayback asset) now download and play correctly across all platforms.

0

Loading discussion…

0
1
Open comments for this post

2h 49m 25s logged

really thanks deepseek help me to rebuild the interface
I updated the regular expression to account for Apple changing the location of the index.js file on the Apple Music web interface following WWDC2026. After removing redundant code, I used AI to add cross-platform compatibility support, moving closer to a full project refactor once the holidays are over. I also revamped the UI, implementing a card-stacking layout to make the logs easier to read. Huge thanks to AI—it has made fixing baffling bugs far more efficient.

0

Loading discussion…

0
2
Open comments for this post

18m 5s logged

Preparing to add new features and migrate the tech stack for cross-platform builds next month. In this update, I leveraged AI to refine part of the code and manually optimized and removed redundant code.

0

Loading discussion…

0
9

Followers

Loading…