mirror of
https://github.com/KevinMidboe/spotify-downloader.git
synced 2025-10-29 18:00:15 +00:00
Merge pull request #48 from Ritiek/develop
Initiate list from command-line
This commit is contained in:
12
README.md
12
README.md
@@ -22,7 +22,7 @@ That's how your Music library will look like!
|
|||||||
|
|
||||||
- This version supports both Python2 and Python3.
|
- This version supports both Python2 and Python3.
|
||||||
|
|
||||||
- Note: `play` and `lyrics` commands have been deprecated in `remake` brach since they were not of much use and created unnecessary clutter. You can still get them back by using `old` branch though.
|
- Note: `play` and `lyrics` commands have been deprecated in the current brach since they were not of much use and created unnecessary clutter. You can still get them back by using `old` branch though.
|
||||||
|
|
||||||
### Debian, Ubuntu, Linux & Mac:
|
### Debian, Ubuntu, Linux & Mac:
|
||||||
|
|
||||||
@@ -60,7 +60,7 @@ Now to run the script type:
|
|||||||
|
|
||||||
- Launch the script using the above command as mentioned for your OS.
|
- Launch the script using the above command as mentioned for your OS.
|
||||||
|
|
||||||
- For available options, run `sudo python spotdl.py --help`.
|
- For available options, run `sudo python spotdl.py --help` (or for windows run `python.exe spotdl.py --help`.
|
||||||
|
|
||||||
#### Downloading by Name:
|
#### Downloading by Name:
|
||||||
|
|
||||||
@@ -82,7 +82,7 @@ For example:
|
|||||||
|
|
||||||
- Just like before, it will again convert the song to an mp3 but since we used a Spotify HTTP link, the script is guaranteed to fetch the correct meta-tags and album-art.
|
- Just like before, it will again convert the song to an mp3 but since we used a Spotify HTTP link, the script is guaranteed to fetch the correct meta-tags and album-art.
|
||||||
|
|
||||||
- Just type `exit` to exit out of the script.
|
- Just hit `ctrl+c` to exit out of the script.
|
||||||
|
|
||||||
#### What if we want to download multiple songs at once?
|
#### What if we want to download multiple songs at once?
|
||||||
|
|
||||||
@@ -111,11 +111,11 @@ the nights avicci
|
|||||||
21 guns green day
|
21 guns green day
|
||||||
```
|
```
|
||||||
|
|
||||||
- Now just run the script and type `list`, it will automatically start downloading the songs you provided in `list.txt`.
|
- Now pass `--list` or `-l` to the script, i.e `sudo python spotdl.py --list` and it will start downloading songs mentioned in `list.txt`.
|
||||||
|
|
||||||
- You can stop downloading songs by hitting `ctrl+c`, the script will automatically resume from the song where you stopped it the next time you want to download the songs using `list` command.
|
- You can stop downloading songs by hitting `ctrl+c`, the script will automatically resume from the song where you stopped it the next time you want to download the songs present in `list.txt`.
|
||||||
|
|
||||||
- To download all songs in your playlist, just select all the songs `ctrl+a` in Spotify desktop app, copy them `ctrl+c` and paste `ctrl+v` in `list.txt`.
|
- To download all songs in your playlist, just select all the songs `ctrl+a` in Spotify desktop app, copy them `ctrl+c` and paste `ctrl+v` in `list.txt` and then use `--list` argument.
|
||||||
|
|
||||||
## Disclaimer:
|
## Disclaimer:
|
||||||
|
|
||||||
|
|||||||
71
spotdl.py
71
spotdl.py
@@ -13,39 +13,6 @@ import argparse
|
|||||||
import pathlib
|
import pathlib
|
||||||
#import spotipy.util as util
|
#import spotipy.util as util
|
||||||
|
|
||||||
# Python 3 compatibility
|
|
||||||
if version_info > (3,0):
|
|
||||||
raw_input = input
|
|
||||||
|
|
||||||
eyed3.log.setLevel("ERROR")
|
|
||||||
|
|
||||||
os.chdir(path[0])
|
|
||||||
|
|
||||||
if not os.path.exists("Music"):
|
|
||||||
os.makedirs("Music")
|
|
||||||
open('list.txt', 'a').close()
|
|
||||||
|
|
||||||
spotify = spotipy.Spotify()
|
|
||||||
|
|
||||||
# Set up arguments
|
|
||||||
parser = argparse.ArgumentParser()
|
|
||||||
parser.add_argument("-n", "--no-convert", help="skip the conversion process and meta-tags", action="store_true")
|
|
||||||
parser.add_argument("-m", "--manual", help="choose the song to download manually", action="store_true")
|
|
||||||
args = parser.parse_args()
|
|
||||||
|
|
||||||
if args.no_convert:
|
|
||||||
print("-n, --no-convert skip the conversion process and meta-tags")
|
|
||||||
if args.manual:
|
|
||||||
print("-m, --manual choose the song to download manually")
|
|
||||||
|
|
||||||
def initializeInput(command):
|
|
||||||
if command == 'list':
|
|
||||||
grabList(file='list.txt')
|
|
||||||
elif command == 'exit':
|
|
||||||
graceQuit()
|
|
||||||
else:
|
|
||||||
grabSingle(raw_song=command, number=None)
|
|
||||||
|
|
||||||
def getInputLink(links):
|
def getInputLink(links):
|
||||||
while True:
|
while True:
|
||||||
try:
|
try:
|
||||||
@@ -220,6 +187,7 @@ def grabList(file):
|
|||||||
except ValueError:
|
except ValueError:
|
||||||
pass
|
pass
|
||||||
print('Total songs in list = ' + str(len(lines)) + ' songs')
|
print('Total songs in list = ' + str(len(lines)) + ' songs')
|
||||||
|
print('')
|
||||||
# Count the number of song being downloaded
|
# Count the number of song being downloaded
|
||||||
number = 1
|
number = 1
|
||||||
for raw_song in lines:
|
for raw_song in lines:
|
||||||
@@ -243,14 +211,45 @@ def graceQuit():
|
|||||||
print('Exitting..')
|
print('Exitting..')
|
||||||
exit()
|
exit()
|
||||||
|
|
||||||
|
# Python 3 compatibility
|
||||||
|
if version_info > (3,0):
|
||||||
|
raw_input = input
|
||||||
|
|
||||||
|
eyed3.log.setLevel("ERROR")
|
||||||
|
|
||||||
|
os.chdir(path[0])
|
||||||
|
|
||||||
|
if not os.path.exists("Music"):
|
||||||
|
os.makedirs("Music")
|
||||||
|
open('list.txt', 'a').close()
|
||||||
|
|
||||||
|
spotify = spotipy.Spotify()
|
||||||
|
|
||||||
|
# Set up arguments
|
||||||
|
parser = argparse.ArgumentParser()
|
||||||
|
parser.add_argument("-n", "--no-convert", help="skip the conversion process and meta-tags", action="store_true")
|
||||||
|
parser.add_argument("-m", "--manual", help="choose the song to download manually", action="store_true")
|
||||||
|
parser.add_argument("-l", "--list", help="download songs present in list.txt", action="store_true")
|
||||||
|
args = parser.parse_args()
|
||||||
|
|
||||||
|
if args.no_convert:
|
||||||
|
print("-n, --no-convert skip the conversion process and meta-tags")
|
||||||
|
if args.manual:
|
||||||
|
print("-m, --manual choose the song to download manually")
|
||||||
|
print('')
|
||||||
|
if args.list:
|
||||||
|
grabList(file='list.txt')
|
||||||
|
exit()
|
||||||
|
|
||||||
while True:
|
while True:
|
||||||
for temp in os.listdir('Music/'):
|
for temp in os.listdir('Music/'):
|
||||||
if temp.endswith('.m4a.temp'):
|
if temp.endswith('.m4a.temp'):
|
||||||
os.remove('Music/' + temp)
|
os.remove('Music/' + temp)
|
||||||
print('')
|
|
||||||
try:
|
try:
|
||||||
command = raw_input('>> Enter a song/cmd: ')
|
print('Enter a Spotify URL or Song Name: ')
|
||||||
|
command = raw_input('>> ')
|
||||||
|
print('')
|
||||||
|
grabSingle(raw_song=command, number=None)
|
||||||
print('')
|
print('')
|
||||||
initializeInput(command)
|
|
||||||
except KeyboardInterrupt:
|
except KeyboardInterrupt:
|
||||||
graceQuit()
|
graceQuit()
|
||||||
|
|||||||
Reference in New Issue
Block a user