Skip to content

[Feature] Backend rewrite#6

Draft
Superredstone wants to merge 39 commits into
mainfrom
backend-rewrite
Draft

[Feature] Backend rewrite#6
Superredstone wants to merge 39 commits into
mainfrom
backend-rewrite

Conversation

@Superredstone

@Superredstone Superredstone commented Feb 17, 2026

Copy link
Copy Markdown
Owner

This rewrite aims to completely ditch the old SpotiFLAC library.

I decided to do this rewrite in order to distance myself from the original author’s design choices in SpotiFLAC. Since it was not written as a proper library, the integration process became suboptimal due to rushed design decisions that were not oriented toward scalability and code reusability.

Features I cannot add (without some hacks) because of the original author’s implementation:

  • Download in a different format
  • Download at a lower quality

Questionable choices made by the original author:

  • Songs that are not found in FLAC are still downloaded in M4A and then converted to FLAC, effectively nullifying FLAC’s superior quality and creating a dependency on FFmpeg
  • The output file name cannot be modified

Missing features:

  • Playlist download
  • Album download
  • Metadata fetching
  • Override song flag (download even if a file already exists)
  • Download from Qobuz. (PLANNED FOR FUTURE)
  • Album conver embedding
  • Download quality select
  • A flag to write failed songs to a log file
  • Move already downloaded songs skip logic before metadata fetching

@Superredstone Superredstone self-assigned this Feb 17, 2026
@Superredstone Superredstone added enhancement New feature or request help wanted Extra attention is needed labels Feb 17, 2026
@Superredstone Superredstone changed the title Backend rewrite [Feature] Backend rewrite Feb 17, 2026
@Superredstone Superredstone marked this pull request as draft February 17, 2026 10:29
Repository owner deleted a comment from mahoganyprogrammer Feb 19, 2026
@mahoganyprogrammer

This comment was marked as off-topic.

@mahoganyprogrammer

This comment was marked as resolved.

@mahoganyprogrammer

Copy link
Copy Markdown

check newest spotiflac . there is logic that makes report what files failed. but it just count failed and put in separate array.

@mahoganyprogrammer

Copy link
Copy Markdown

@Superredstone i checked your code. download track broken, playlist logic exist but it seems to pass spoti id to tidal downloader

@mahoganyprogrammer

Copy link
Copy Markdown

you allowed null to pass, if no tidal link return error

@mahoganyprogrammer

mahoganyprogrammer commented Feb 25, 2026

Copy link
Copy Markdown

i fixed playlist downloading. it download song now. why it saves at drive root

@mahoganyprogrammer

Copy link
Copy Markdown

i fixed. outputFile was empty

@mahoganyprogrammer

Copy link
Copy Markdown

app.GetTidalIdFromSonglink(songlink) for qobuz its same just different field is fetched

@mahoganyprogrammer

Copy link
Copy Markdown

new spotiflac version released . deezer source added. i hope it wont need ffmpeg to download.

@Superredstone

Copy link
Copy Markdown
Owner Author

new spotiflac version released . deezer source added. i hope it wont need ffmpeg to download.

I hope too

@Superredstone

Copy link
Copy Markdown
Owner Author

For now i decided to not download from amazon since in the original application this feature relies on APIs made by afkarxyz, which AFIK are not open source.

If anyone finds a solution to this be sure to let me know or implement it yourself!

@Superredstone

Copy link
Copy Markdown
Owner Author

you allowed null to pass, if no tidal link return error

fixed

@Superredstone

Copy link
Copy Markdown
Owner Author

Omg, I've just encountered another great decision of the original project. Apparently downloading from deezer (which is implemented in deezer.go, at this link) does not actually download from deezer but from https://yoinkify.lol which has nothing to do with Deezer.

@kristijonas-jan

Copy link
Copy Markdown

Omg, I've just encountered another great decision of the original project. Apparently downloading from deezer (which is implemented in deezer.go, at this link) does not actually download from deezer but from https://yoinkify.lol which has nothing to do with Deezer.

I think yoinkify might download from Deezer.. still a weird as hell workaround.. https://yoinkify.lol/roadmap
image

@devilAPI

devilAPI commented Mar 7, 2026

Copy link
Copy Markdown

is there any update on this? I would love to use the new version, as the old one is really slow for a large collection! I would love to contribute too but never written in Go before...

@Superredstone

Copy link
Copy Markdown
Owner Author

is there any update on this? I would love to use the new version, as the old one is really slow for a large collection! I would love to contribute too but never written in Go before...

I would like to implement at least the last checkmark A flag to write failed songs to a log file

To speed up things there should be implemented some kind of concurrency, which, TBH I'm not really familiar with, but I'll give it a try.

@devilAPI

devilAPI commented Mar 7, 2026

Copy link
Copy Markdown

By speeding up I meant the yt-dlp's --download-archive equivalent.
It logs the downloaded files to a text file with ID and Name and then skips all of them at the next run.

@Superredstone

Copy link
Copy Markdown
Owner Author

Oh, I miss understood, it is half implemented at the moment, if not today, in a couple of days the feature should be ready.

@Superredstone

Copy link
Copy Markdown
Owner Author

@devilAPI the application is now capable of skipping entirely already downloaded songs before fetching metadata. This should improve download times by a lot.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request help wanted Extra attention is needed

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants