Giter VIP home page Giter VIP logo

soggfy's People

Contributors

cubernetes avatar ivercoder avatar notspaulding avatar rafiuth avatar rekulous avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

soggfy's Issues

spotify updates

i do run the block updates bat but it still updates when pc is rebooted.
Do i have to run block updates each time ?

image

Lyrics tag field weird behaviour

I assume that currently, the lyrics are written into a 'USLT' tag field, which should be fairly standard, but I noticed that other applications behave quite strange. MusicBee doesn't recognize lyrics at all, and Mp3tag reports the field as 'USLT' instead of 'UNSYNCEDLYRICS', even though it should be the same thing, according to Mp3tag documentation.

I noticed that when manually writing an 'UNSYNCEDLYRICS' tag via Mp3tag, it automatically adds an eng|| prefix (or already contains it), which is not present in the Soggfy output files, maybe it's related to this? FFprobe reports the working tag field as 'lyrics-eng' while the field in Soggfy output is only reported as 'lyrics'

New Variable: playlist_num

For songs that already exist in a plsylist more than once, this would be great to allow duplicates. In my case, there are a lot of songs that have the same file name but are different lengths (not the same exact song), so being able to save the order in the playlist would solve that and be a nice enhancement.

For example, these two songs in my liked songs would save as:
C:\Users\Ryan\Music\Soggfy\unknown{playlist_num}. {artist_name} - {track_name}.ogg
C:\Users\Ryan\Music\Soggfy\unknown\316. 24kGoldn - DROPPED OUTTA COLLEGE.ogg
C:\Users\Ryan\Music\Soggfy\unknown\317. 24kGoldn - DROPPED OUTTA COLLEGE.ogg

image

Allow Injector to search current directory for spotify.

it would be quite nice if the injector could also search the current directory for a copy of Spotify to launch+Inject into.
Knowing that Spotify likes to force-update their software to %AppData%, that could also save some update issues.
Regarding settings (%AppData%\Soggfy and %LocalAppData%\Spotify), I believe they're fine to stay there.

This option would be great as it would allow users with a already-setup folder to simply copy + run.
The spotify folder would be as it is in AppData, so it would launch Soggfy/spotify/Spotify.exe.

I've just tried building the injector myself with the relative path, and it does work as expected.
Regarding adding both paths (.\spotify and %AppData%\Spotify), I wasn't sure how, sorry.

image

Ability to play tracks without overwriting (when skip disabled)

You can skip tracks already downloaded. This is useful if all you want to do is rip anything you haven't already ripped.
If this is disabled, then all tracks will play. This is also useful when you just want to play all tracks.

However, if you wish to listen to a playlist and rip anything you already haven't already downloaded, you can't cleanly do it.
The track will download and then transcoded even if it already exists. Whilst this might not be an issue, the date of the file is overwritten making it harder to find "new" tracks but worse, if you have modified the file in some way, perhaps added additional metadata, it is lost.

Could you add another option "Overwrite downloaded tracks". Using this in combination with Skip would be very flexible.

Linux Support

Hi, I would like to try this project and was wondering whether it would be possible to port this to Linux with minimal changes - one thing I've noticed is that you refer to userprofile which I suppose is Window's AppData(?)

Lmk and thanks for making this!

Does soggfy work with spicetify?

I need the play next feature and I found a spicetify addon which adds it. But I also need to save all the songs I listen to locally so I also need Soggfy. So does soggfy work with spicetify?

Injection causes Spotify to crash

Hi,

I tried today to inject the DLL into Spotify and the software suddenly closed.
Even when I tried to open the software using the injection exe, it closed immediately.

I think they released a software update that blocks the injection.

Support "Enhanced" playlists

It seems there is a new enhanced mode for playlists where Spotify add to them.

Would be great if the UI could be updated to support this new mode.

image

Hide Downloaded Songs

As a user who has 1000s of songs, it would be nice if we could hide songs that we have already downloaded, only showing those missing or with colliding names. The setting of course should be off by default but when enabled should skip (and hide) songs that are already downloaded in the playlist. Showing the number of downloaded tracks next to the duration when enabled could be a way to indicate how many are hidden.

image

image

[Feature Request] Pausing downloads

Reasoning

There are certain moments where I don't want to download songs, for example when I'm listening to my Discover Weekly.
Sometimes you just want to listen to a song just to check it out and not download it and having to relaunch Spotify just for that can be annoying.

Pause downloads for session

A setting or a button to pause downloads for the current session I think would be great; it would work similarly to the Private session already in Spotify.

Pause downloads on Private session

A setting for pausing downloads whenever Private session is enabled seems like a really good idea to me, considering it's a private session why would it download the songs you're listening to? Some people might not want this, so I think this would be best if it was toggleable.

Conclusion

I think a setting for pausing downloads would really benefit Soggfy. Deleting files, skipping forward in a song to cancel the download or relaunching Spotify is cumbersome, so having a setting right into Soggfy to pause downloads would be less of an annoyance for the user.
Having both of the settings mentioned would, in my opinion, be the best way to go about this. Considering some people might not want to have Private sessions pause downloads and turning a setting on and off constantly can be annoying; so having an easily toggleable setting that is only enabled for the session would be really convenient.

The application was unable to start correctly (0xc000007b).

I downloaded Spotify and Soggify within a Windows 10 VM, downloaded all the DLLs it asked, and it gave me this error. I tried all solutions with similar error codes to no avail.

image

If this helps, here's all the programs I currently have installed.

image

OGG data issue

If I download an OGG file with no transcoding, the file seems to play everywhere however I have found a couple of apps that have trouble processing the files.

Simple example is ffmpeg.

.\ffmpeg -i source.ogg destination.ogg

The example above fails badly with the source file.

image

If I change the destination to an m4a file...

image

Whilst I am not trying to use these commands in real life, I just wanted a reproducible example because you wont have access to the tool I was trying to load the files in to. I was going to write a script just to transcode them and then I found ffmpeg failed too.

Hope that is enough information.

"The directory name is invalid" for some songs

Setup:

  • Soggfy-2.2.16
  • Windows 10 (in a VM)
  • Spotify for Windows 1.1.87.612.gf8d110e2
  • Saving files to a SMB share on a Linux NAS

Currently for a lot of songs I'm getting the following error messages, mostly when scrolling through my saved songs. It also prevents me from downloading some of the files, as it only creates the folder with the lyrics file, but then is unable to recognize it somehow.

[WRN] Error while processing message from 0x1346f110: directory_iterator::directory_iterator: The directory name is invalid.: "\\?\C:\shortcuts\raid10\Music\Spotify_Downloaded\Architects\Daybreaker"
[WRN] Error while processing message from 0x1346f110: directory_iterator::directory_iterator: The directory name is invalid.: "\\?\C:\shortcuts\raid10\Music\Spotify_Downloaded\While She Sleeps\You Are We"
[WRN] Error while processing message from 0x1346f110: directory_iterator::directory_iterator: The directory name is invalid.: "\\?\C:\shortcuts\raid10\Music\Spotify_Downloaded\Carpenter Brut\Hush Sally, Hush!"

Example C:\shortcuts\raid10\Music\Spotify_Downloaded\Architects\Daybreaker exists, Soggfy was able to create the folder, write the lyrics file, but is unable to save the track after:

$ tree Architects/
Architects/
├── Daybreaker
│   └── 9. Devil's Island.lrc

One guess I have is that it might be be the special characters in songs like Hush Sally, Hush!, Devil's Island. It also happens with songs with spaces in it.

Happy for any pointers!

Offline mode support

No, this is not a duplication of #19 .

I wanted to ask if in case the songs already exist on the computer offline, is it possible to cancel the requests to Spotify's server (because then it blocks me after some time).
The information should be stored locally on the computer, and there is no need to make a new request to the server.

Thanks.

request: podcast support

There are some exclusive podcasts I'd like for offline viewing but there's no other tools I've found that seem capable. I was wondering if the method used in this tool could also be used for those.

Project fails to inject hooks

This issue doesn't seem all that common with the users as I can't seem to locate open or closed issues in regards to this.

image

Unfortunately I can't pin point where this issue started since this has been happening for quite a while, with me on Soggfy 2.2.5. I thought it was associated with me not updating the project and just procrastinated updating. Now however, even after updating the project to 2.2.8, the issue still persists.

This issue persists even with me disabling Spicetify via spicetify restore.

Evident by the screenshot I'm on a Windows 11 PC.

[DBG] FFmpeg path: C:\ProgramData\chocolatey\bin\ffmpeg.exe
[INF] Spotify version: 1.1.83.956
[DBG] Hook created: DecodeAudioData @ 0x9bdb7b
[ERR] Failed to install hooks: Fingerprint matches 0 locations, expected 1.

Try updating Soggfy.

Here's log.txt.

As I mentioned above, this issue doesn't seem common across devices, there might be something problematic on my end. It'd be great if I could get insights on how this is happening and even more great if there is a fix! Thanks!

Special Characters

Some song titles contain very weird special characters or are extremely long, which is not allowed in directory or file names by the OS (Windows in my case). If the track template path in the Soggfy settings is something like {artist_name}/{album_name}{multi_disc_path}/{track_num}. {track_name}.ogg, Soggfy will try to name the file accordingly, which will obviously not work. I found that in this case, the file will not be saved at all. (But the green checkmark next to the song will sometimes still appear.) I suggest replacing all non-latin characters with a - or similar and limiting the file name length before saving the file.

[Feature Request] Blacklist system

Reasoning

I think being able to blacklist certain songs, albums, artists and playlist would be quite nice, maybe you don't want to download a song but listen to it at certain times and going to the download folder just for a specific song is a hassle.

This kind of plays on my previous feature request (#42), pretty much pausing downloads whenever a certain song, album, artist or playlist is being played.

How it might work

On the context menu for songs, albums, artists and playlist there would be an "Add to blacklist" button. I don't know how Soggfy or even Spotify works; but my idea was to save the IDs of the selected songs, albums, artists and playlists in a JSON file (which would be accessible in the settings) and when Soggfy detected any of those, it would temporarily pause downloads so the current song doesn't get downloaded.

Conclusion

I am unsure how possible this really is, but I think this would be quite a nice feature to have. Maybe you're listening to a friend's playlist which has 1 or multiple songs you dislike, with this you can easily either blacklist the songs you dislike themselves or the playlist itself.

totaltracks field is sometimes 0

This only seems to happen the first time a song is played in a session, a re-download will have the correct value.

Maybe spotify is asynchronously updating the album_track_count field?

ability to download lyrics only

my request is to add the ability to only download lyrics without the audio file which the program already have the ability to do
p.s.: just for curiosity where does the program gets the lyrics data from is it from Spotify itself or from the lyrics provider servers

Multiple Album Artists

As an example, the song Bruno Mars, Anderson .Paak, Silk Sonic - Leave The Door Open would be saved under Bruno Mars\An Evening With Silk Sonic\2. Leave The Door Open.ogg.

Is it intentional to treat the album artist as the first artist (Bruno Mars) rather than include all of the album artists? (Bruno Mars, Anderson .Paak, Silk Sonic)

I've noticed that this behaviour comes from SpotifyOggDumper/StateManager.cpp:389 where the name of the first artist in the artists key is taken.

Error during installation

I get the following error when I try to run install.ps1.

Rename-Item : Das Argument kann nicht an den Parameter "Path" gebunden werden, da es NULL ist.
In C:\Users\XXX\Desktop\Soggfy-2.3.0\Install.ps1:17 Zeichen:23
+     Rename-Item -Path $spotifyFolder.FullName -NewName "Spotify"
+                       ~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidData: (:) [Rename-Item], ParameterBindingValidationException
    + FullyQualifiedErrorId : ParameterArgumentValidationErrorNullNotAllowed,Microsoft.PowerShell.Commands.RenameItemC
   ommand

Cover art not downloaded properly

Cover art which is automatically downloaded and embedded is only partially downloaded. Example:

image

OS: Windows 7
Spotify version: Spotify for Windows, 1.1.80.699
The latest release of the injector as of now.

Metadata has stopped embedding

Just noticed that using 1.1.77.643 and latest release (v2.2.1), the metadata is not being embedded in the ogg as it was a few days ago. Not sure if Spotify are fighting back with this or if you embed the metadata after stripping it but even the comment field is blank now.

Rebooted to be sure it wasn't just something memory resident.

Old UI Support

Is it possible to add support for older versions? The old ui is cleaner, the title and artist columns are separated, plus the application uses less resources. Personally, I'm using 1.1.4, but if I remember correctly the last version before the redesign was 1.1.58.

DMCA

When DMCA inevitably comes for this repo due to popularity rising, what will you do and what are your plans for this project?

A lot of people here seem to have found this tool recently from Reddit and other places.

No mapping for the Unicode character exists

Song: Lamp - 雨降る夜の向こう

New track detected: spotify:track:3iqYC2gMPND9ChNmmK0mLD
Saving track spotify:track:24kobKjeJdJPXnqaf5hB93
  title: Lamp - 雨降る夜の向こう
  stream: playback_eea06c09848c56dee38be9d6de44099b.dat
  meta: {"album":{"album_type":"album","artists":[{"external_urls":{"spotify":"https://open.spotify.com/artist/0rFHElzeddB9ymDjgpBENX"},"href":"https://api.spotify.com/v1/artists/0rFHElzeddB9ymDjgpBENX","id":"0rFHElzeddB9ymDjgpBENX","name":"Lamp","type":"artist","uri":"spotify:artist:0rFHElzeddB9ymDjgpBENX"}],"available_markets":["AD","AE","AG","AL","AM","AO","AR","AT","AU","AZ","BA","BB","BD","BE","BF","BG","BH","BI","BJ","BN","BO","BR","BS","BT","BW","BY","BZ","CA","CD","CG","CH","CI","CL","CM","CO","CR","CV","CW","CY","CZ","DE","DJ","DK","DM","DO","DZ","EC","EE","EG","ES","FI","FJ","FM","FR","GA","GB","GD","GE","GH","GM","GN","GQ","GR","GT","GW","GY","HK","HN","HR","HT","HU","ID","IE","IL","IN","IQ","IS","IT","JM","JO","JP","KE","KG","KH","KI","KM","KN","KR","KW","KZ","LA","LB","LC","LI","LK","LR","LS","LT","LU","LV","LY","MA","MC","MD","ME","MG","MH","MK","ML","MN","MO","MR","MT","MU","MV","MW","MX","MY","MZ","NA","NE","NG","NI","NL","NO","NP","NR","NZ","OM","PA","PE","PG","PH","PK","PL","PS","PT","PW","PY","QA","RO","RS","RU","RW","SA","SB","SC","SE","SG","SI","SK","SL","SM","SN","SR","ST","SV","SZ","TD","TG","TH","TJ","TL","TN","TO","TR","TT","TV","TW","TZ","UA","UG","US","UY","UZ","VC","VE","VN","VU","WS","XK","ZA","ZM","ZW"],"external_urls":{"spotify":"https://open.spotify.com/album/7b55VfUk2Vpuqnac9NDREc"},"href":"https://api.spotify.com/v1/albums/7b55VfUk2Vpuqnac9NDREc","id":"7b55VfUk2Vpuqnac9NDREc","images":[{"height":640,"url":"https://i.scdn.co/image/ab67616d0000b273bbc2ac628f52cd6127e20bfa","width":640},{"height":300,"url":"https://i.scdn.co/image/ab67616d00001e02bbc2ac628f52cd6127e20bfa","width":300},{"height":64,"url":"https://i.scdn.co/image/ab67616d00004851bbc2ac628f52cd6127e20bfa","width":64}],"name":"ランプ幻想","release_date":"2008-12-03","release_date_precision":"day","total_tracks":11,"type":"album","uri":"spotify:album:7b55VfUk2Vpuqnac9NDREc"},"artists":[{"external_urls":{"spotify":"https://open.spotify.com/artist/0rFHElzeddB9ymDjgpBENX"},"href":"https://api.spotify.com/v1/artists/0rFHElzeddB9ymDjgpBENX","id":"0rFHElzeddB9ymDjgpBENX","name":"Lamp","type":"artist","uri":"spotify:artist:0rFHElzeddB9ymDjgpBENX"}],"available_markets":["AD","AE","AG","AL","AM","AO","AR","AT","AU","AZ","BA","BB","BD","BE","BF","BG","BH","BI","BJ","BN","BO","BR","BS","BT","BW","BY","BZ","CA","CD","CG","CH","CI","CL","CM","CO","CR","CV","CW","CY","CZ","DE","DJ","DK","DM","DO","DZ","EC","EE","EG","ES","FI","FJ","FM","FR","GA","GB","GD","GE","GH","GM","GN","GQ","GR","GT","GW","GY","HK","HN","HR","HT","HU","ID","IE","IL","IN","IQ","IS","IT","JM","JO","JP","KE","KG","KH","KI","KM","KN","KR","KW","KZ","LA","LB","LC","LI","LK","LR","LS","LT","LU","LV","LY","MA","MC","MD","ME","MG","MH","MK","ML","MN","MO","MR","MT","MU","MV","MW","MX","MY","MZ","NA","NE","NG","NI","NL","NO","NP","NR","NZ","OM","PA","PE","PG","PH","PK","PL","PS","PT","PW","PY","QA","RO","RS","RU","RW","SA","SB","SC","SE","SG","SI","SK","SL","SM","SN","SR","ST","SV","SZ","TD","TG","TH","TJ","TL","TN","TO","TR","TT","TV","TW","TZ","UA","UG","US","UY","UZ","VC","VE","VN","VU","WS","XK","ZA","ZM","ZW"],"disc_number":1,"duration_ms":311920,"explicit":false,"external_ids":{"isrc":"JPG100800129"},"external_urls":{"spotify":"https://open.spotify.com/track/24kobKjeJdJPXnqaf5hB93"},"href":"https://api.spotify.com/v1/tracks/24kobKjeJdJPXnqaf5hB93","id":"24kobKjeJdJPXnqaf5hB93","is_local":false,"name":"雨降る夜の向こう","popularity":43,"preview_url":"https://p.scdn.co/mp3-preview/594b4b8130e08f928cffa9e69c5c516f20dffb78?cid=65b708073fc0480ea92a077233ca87bd","track_number":4,"type":"track","uri":"spotify:track:24kobKjeJdJPXnqaf5hB93"}
Failed to save track spotify:track:24kobKjeJdJPXnqaf5hB93: No mapping for the Unicode character exists in the target multi-byte code page.

Also thank you for this project! It's a real help.

Offline playlists/offline mode

I tried, in fear of being banned, downloading a playlist and then going offline to do the "download" in high speed. It does not work. Is there a reason for this or could it be made possible?

Successful status disappears

Normally the successful check mark is displayed once a song is complete. After a while, the check disappears and the tracks look like it they havent downloaded. It also used to show a checkmark even after a spotify restart. This doesn't seem to work either. If you scroll up and down the playlist you can make them disappear too.

image

Using latest release and latest support version of Spotify client.

Here are my settings....

image

I was previously using v2.2.5 and OGG but I upgraded to see if another issue I was seeing was resolved. I used to keep the files in ogg format however I found out over the weekend that some apps couldn't process the file, including ffmpeg. I have reported that as a separate issue. #27

Here is a screenshot after it has been running a while. You will see a number of missing checkmarks even though the file has been downloaded.

image

Files always in .ogg

Hi,
I'm having problems trying to download .mp3 files, they are only downloaded in .ogg and without any metadata.
If you can check if there is a problem, thanks!

Any reason to think that Spotify would even know that a track was being downloaded if played at normal speed?

I have Soggify up and running, and it's brilliant, but I'm considering your warning that an account could get banned for using it. I suspect that Spotify would notice if someone were "playing" a track at 10x speed, but if playing at normal speed is there any way that Spotify could even guess that you are reconstructing the original file as you're playing it?

If there's really no way for Spotify to see anything out of the ordinary, when you are playing (and reconstructing) at normal speed, you might just update your Notes to reflect that,

Thanks,
Drew

Premium Accounts

In the README, it says that this has not been tested on premium accounts.

I downloaded one song using the program and it works, but is there any possible risk to getting banned or having Soggfy possibly detected?

stop downloads without restarting

add option to stop downloads without restarting app
Could be like green button ->download black button -> stopped
Why should need to wait till the end for the song be downloaded? it could better xspot don't need that

BTW i ear some ads then i use the media keys on keyboard but i have to click 2 or 3 times sometimes to skip successfully!!

Resolve Relative Output Paths for ffmpeg

Since soggfy can be treated as a portable application, it would be nice to save files to a relative path.
When the application launches, i can enter "../Downloads" and jpg/mp4/txt/lrc files export just fine.

It does however seem like ffmpeg (might) not allow for relative paths in the file paths provided.
The Output settings I've tried are the Original OGG and MP3 320K formats, neither get saved.

Would it be possible to have soggfy resolve relative paths to full paths for just ffmpeg?
I've checked the arguments, and the only path that's not resolved is the output path.

Here's an example error I get in the log file for each song it tried to download:

[ERR] Failed to save track Various Artists - Entropy: FFmpeg exited with code 1. Check log for details.
[DBG] Requesting metadata for playback 5814f539187177b87c63290acb4db0f9...
[INF] Saving track Jim Yosef - Passion
[DBG]   stream: playback_5814f539187177b87c63290acb4db0f9.dat
[DBG] [ffmpeg.exe]: ../Downloads/Jim Yosef - Passion.ogg: No such file or directory

And here's how my file structure looks like:

image

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.