casualsnek / onthespot

qt based music downloader written in python
GNU General Public License v2.0
745 stars 54 forks source link

feat: add cli utility #27

Open saikhurana98 opened 1 year ago

saikhurana98 commented 1 year ago

Hey, First of all, thank you so much for creating this application. It's amazing what you've done here. It's by far the most advanced Spotify downloader I've seen. I know you're looking to refactor the code and make a newer ui but i would love a cli interface. I want to automate downloads therefore it would be awesome if there was a simple cli interface. just a basic one that takes in the "track id "and spilts out the mp3 file is perfect.

PassiveLemon commented 1 year ago

I would also like this feature. Configs could potentially be done in a config file or through arguments entered with command which would allow for full automation. Being able to have this run on a set schedule would help the hands-off functionality of my media server. An example could be onthespot.py -nogui -config.txt -link=spotifylink and in the config.txt would be lines like:

account1=email@email.com
password1=123456
max_download_workers=1
parsing_account_sn=1
etc
etc

which would use the provided commands to download that Spotify link. If you don't want to use the config file, you could just run the command like: onethespot.py -nogui -account1=email@email.com -etc -etc

You could add addition accounts with account#, password# or something of the likes. They could potentially also be hashed in some way so they aren't stored in plain text.

One thing I would like to see is a setting to remove songs that aren't in your playlist. Can just be a simple toggle that checks the songs downloaded from the songs in the playlist, compares them with the songs that are currently stored on disk and removes the ones that do not belong. This could have issues if the songs are downloaded like author/album/song.mp3 but I'm sure there is an effective way to figure this out.

casualsnek commented 1 year ago

I plan on doing this but it may take some time for refactoring and new code for cli support. Since the threads for downloading and all other depend on QThread an elegant cli can be difficult. CLI with same featureset of GUI can get some limitation like cli instance downloaing 'now playing' from desktop session and another instance downloading a playlist will almost fail.

I have some alternate plans to achieve automation and scripting with onthespot, maybe we can discuss how it should go on discord ?

PassiveLemon commented 1 year ago

Discord link is currently invalid

casualsnek commented 1 year ago

Discord link is currently invalid

I have updated it in readme ! Can you try now ?

PassiveLemon commented 1 year ago

Yup, it works now.

RandomLegend commented 1 year ago

Hey,

I'd love to have a simple CLI functionality aswell. I want to run this on my server so that my PC doesn't need to be turned on while downloading.

Any chance i can get the testcode aswell? :-D

casualsnek commented 1 year ago

Hey,

I'd love to have a simple CLI functionality aswell. I want to run this on my server so that my PC doesn't need to be turned on while downloading.

Any chance i can get the testcode aswell? :-D

A better rewrite of this project is planned and will probably add support for multiple user interface types. It will take a few weeks for me to start the rewrite as i'm currently busy due to academic works !

Sorry, i didn't get what you mean by testcode tho !

RandomLegend commented 1 year ago

Alright, are you planning on doing something docker-wise? Maybe even give it a quick and dirty webUI?

That would be astronomical!

casualsnek commented 1 year ago

Alright, are you planning on doing something docker-wise? Maybe even give it a quick and dirty webUI?

That would be astronomical!

I have plans for a qt, commandline interface as well as http API too !

RandomLegend commented 1 year ago

Fantastic, thank you! :-)

RandomLegend commented 4 months ago

@casualsnek - Hey mate! Just wanted to stop by and ask if you have a eta for the rework? Or "atleast" for the CLI mode?