Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Activity
    Vaarelsauce
    @Vaarelsauce
    I would greatly appreciate it if there's a way to do that @ritiek thanks! :)
    Vaarelsauce
    @Vaarelsauce
    UPDATE: Just found it simply by searching it in my windows search lol, I feel so dumb
    Balázs M.
    @balika0105
    Hello everyone! I'm having an issue with installing the program and I thought I might find help here
    I use pip3 install spotdl -U then it prints out a lot of stuff but afterwards I can't use it
    spotdl: command not found
    Ritiek Malhotra
    @ritiek
    @balika0105 See #451.
    Alwyn John
    @alwyn023_twitter
    spotdl is not working
    Ritiek Malhotra
    @ritiek
    why not?
    jared.
    @jaredbrown50_twitter
    Hi Ritiek and everyone, first I want to say that I love the program and have used it successfully to download my spotify playlist in the past. I am currently trying to use the overwrite command to skip duplicate tracks that I have previously downloaded to my music folder, however, when I call --overwrite skip, it doesn't actually skip any of the tracks. It checks, says that no duplicates are found and continues to download. I also tried to use the --skip command by creating a .txt file of all of the files within my music folder and added passed that file to my command as well. However, again it checked the file, said 0 duplicates were found and continues. Is there something that I am missing or doing wrong to get this functionality to work properly?
    Let me know if you have any suggestions for me to get this to work! Thank you for your help in advance
    jared.
    @jaredbrown50_twitter
    ^Regarding my last post, I have a feeling I might have spoke too soon, I am checking my download folder and not finding any duplicates despite the what the program was saying at the beginning of a run, the program possibly didn't find duplicates before but when trying to download to the folder the prompt triggered. Is there any way to skip the songs on the front end instead of the back end of the program run so that it doesn't take as long to run a long playlist?
    Ritiek Malhotra
    @ritiek

    Is there any way to skip the songs on the front end instead of the back end of the program run so that it doesn't take as long to run a long playlist?

    Nope, sorry. For every track being dowloaded, the tool needs to first fetch its corresponding metadata from Spotify and YouTube. Once it has this metadata, only then it can generate a filename for the current track being downloaded. If it now checks that a file with this filename already exists beforehand then the --overwrite option comes into play.

    jared.
    @jaredbrown50_twitter
    No problem, that definitely makes sense, thanks for the clarification and explanation! Hope all is well!
    Eliqui
    @Eliqui
    hey there, i didn't use spotdl in quite a while. today i wanted to download a track updated spotdl to version 1.2.6 python to version 3.8 and pip to 20.1. But now i run into this error:

    ERROR: Signature extraction failed: Traceback (most recent call last):
    File "d:\programme\python\lib\site-packages\youtube_dl\extractor\youtube.py", line 1384, in _decrypt_signature
    func = self._extract_signature_function(
    File "d:\programme\python\lib\site-packages\youtube_dl\extractor\youtube.py", line 1262, in _extract_signature_function
    raise ExtractorError('Cannot identify player %r' % player_url)
    youtube_dl.utils.ExtractorError: Cannot identify player 'https://www.youtube.com/s/player/c31ba6fc/player_ias.vflset/en_US/base.js'; please report this issue on https://yt-dl.org/bug . Make sure you are using the latest version; see https://yt-dl.org/update on how to update. Be sure to call youtube-dl with the --verbose flag and include its complete output.
    (caused by ExtractorError("Cannot identify player 'https://www.youtube.com/s/player/c31ba6fc/player_ias.vflset/en_US/base.js'; please report this issue on https://yt-dl.org/bug . Make sure you are using the latest version; see https://yt-dl.org/update on how to update. Be sure to call youtube-dl with the --verbose flag and include its complete output.")); please report this issue on https://yt-dl.org/bug . Make sure you are using the latest version; see https://yt-dl.org/update on how to update. Be sure to call youtube-dl with the --verbose flag and include its complete output.
    Traceback (most recent call last):
    File "d:\programme\python\lib\site-packages\youtube_dl\extractor\youtube.py", line 1384, in _decrypt_signature
    func = self._extract_signature_function(
    File "d:\programme\python\lib\site-packages\youtube_dl\extractor\youtube.py", line 1262, in _extract_signature_function
    raise ExtractorError('Cannot identify player %r' % player_url)
    youtube_dl.utils.ExtractorError: Cannot identify player 'https://www.youtube.com/s/player/c31ba6fc/player_ias.vflset/en_US/base.js'; please report this issue on https://yt-dl.org/bug . Make sure you are using the latest version; see https://yt-dl.org/update on how to update. Be sure to call youtube-dl with the --verbose flag and include its complete output.

    During handling of the above exception, another exception occurred:

    Traceback (most recent call last):
    File "d:\programme\python\lib\site-packages\youtube_dl\YoutubeDL.py", line 796, in extract_info
    ie_result = ie.extract(url)
    File "d:\programme\python\lib\site-packages\youtube_dl\extractor\common.py", line 530, in extract
    ie_result = self._real_extract(url)
    File "d:\programme\python\lib\site-packages\youtube_dl\extractor\youtube.py", line 2047, in _real_extract
    signature = self._decrypt_signature(
    File "d:\programme\python\lib\site-packages\youtube_dl\extractor\youtube.py", line 1394, in _decrypt_signature
    raise ExtractorError(
    youtube_dl.utils.ExtractorError: Signature extraction failed: Traceback (most recent call last):
    File "d:\programme\python\lib\site-packages\youtube_dl\extractor\youtube.py", line 1384, in _decrypt_signature
    func = self._extract_signature_function(
    File "d:\programme\python\lib\site-packages\youtube_dl\extractor\youtube.py", line 1262, in _extract_signature_function
    raise ExtractorError('Cannot identify player %r' % player_url)
    youtube_dl.utils.ExtractorError: Cannot identify player 'https://www.youtube.com/s/player/c31ba6fc/player_ias.vflset/en_US/base.js'; please report this issue on https://yt-dl.org/bug . Make sure you are using the latest version; see https://yt-dl.org/update on how to update. Be sure to call youtube-dl with the --verbose flag and include its complete output.
    (caused by ExtractorError("Cannot identify player 'https://www.youtube.com/s/player/c31ba6fc/player_ias.vflset/en_US/base.js'; please report this issue on https://yt-dl.org/bug . Make sure you are using the latest version; see https://yt-dl.org/update on how to update. Be sure to call youtube-dl with the --verbose flag and include its complete output.")); please report this issue on https://yt-dl.org/bug . Make sure you are using the latest version; see https://yt-dl.org/update on how to update. Be sure

    Ritiek Malhotra
    @ritiek
    @Eliqui You need to update your youtube-dl
    like it says in the error message
    Eliqui
    @Eliqui
    somehow it didn't work last time. now it did. thx anyway
    Eliqui
    @Eliqui
    but there's one thing in the new version which was better in the old one. in older versions it showed you the actual name of the video it downloaded. since it's the wrong one sometimes it was easier to identify it. if you download a whole playlist it can be quite timeconsuming to do this by listening to all of them. Also i get better search results if it's looking for:' {artist} - {track-name} topic ' instead of 'lyrics'
    Ritiek Malhotra
    @ritiek
    I see. I'll change it to also display the video title then
    Triss-droid
    @Triss-droid

    Traceback (most recent call last):
    File "c:\users\d4red\appdata\local\programs\python\python36\lib\site-packages\spotdl\command_line\core.py", line 346, in download_tracks_from_file
    metadata = search_metadata.on_youtube_and_spotify()
    File "c:\users\d4red\appdata\local\programs\python\python36\lib\site-packages\spotdl\metadata_search.py", line 89, in on_youtube_and_spotify
    metadata = caller()
    File "c:\users\d4red\appdata\local\programs\python\python36\lib\site-packages\spotdl\metadata_search.py", line 186, in _on_youtube_and_spotify_for_type_spotify
    youtube_metadata = self.providers["youtube"].from_url(youtube_video["url"])
    File "c:\users\d4red\appdata\local\programs\python\python36\lib\site-packages\spotdl\metadata\providers\youtube.py", line 230, in from_url
    content = pytube.YouTube(url)
    File "c:\users\d4red\appdata\local\programs\python\python36\lib\site-packages\pytube__main.py", line 91, in init
    self.prefetch()
    File "c:\users\d4red\appdata\local\programs\python\python36\lib\site-packages\pytube\
    main__.py", line 162, in prefetch
    self.watch_html = request.get(url=self.watch_url)
    File "c:\users\d4red\appdata\local\programs\python\python36\lib\site-packages\pytube\request.py", line 36, in get
    return _execute_request(url).read().decode("utf-8")
    File "c:\users\d4red\appdata\local\programs\python\python36\lib\site-packages\pytube\request.py", line 24, in _execute_request
    return urlopen(request) # nosec
    File "c:\users\d4red\appdata\local\programs\python\python36\lib\urllib\request.py", line 223, in urlopen
    return opener.open(url, data, timeout)
    File "c:\users\d4red\appdata\local\programs\python\python36\lib\urllib\request.py", line 532, in open
    response = meth(req, response)
    File "c:\users\d4red\appdata\local\programs\python\python36\lib\urllib\request.py", line 642, in http_response
    'http', request, response, code, msg, hdrs)
    File "c:\users\d4red\appdata\local\programs\python\python36\lib\urllib\request.py", line 564, in error
    result = self._call_chain(args)
    File "c:\users\d4red\appdata\local\programs\python\python36\lib\urllib\request.py", line 504, in _call_chain
    result = func(
    args)
    File "c:\users\d4red\appdata\local\programs\python\python36\lib\urllib\request.py", line 756, in http_error_302
    return self.parent.open(new, timeout=req.timeout)
    File "c:\users\d4red\appdata\local\programs\python\python36\lib\urllib\request.py", line 532, in open
    response = meth(req, response)
    File "c:\users\d4red\appdata\local\programs\python\python36\lib\urllib\request.py", line 642, in http_response
    'http', request, response, code, msg, hdrs)
    File "c:\users\d4red\appdata\local\programs\python\python36\lib\urllib\request.py", line 570, in error
    return self._call_chain(args)
    File "c:\users\d4red\appdata\local\programs\python\python36\lib\urllib\request.py", line 504, in _call_chain
    result = func(
    args)
    File "c:\users\d4red\appdata\local\programs\python\python36\lib\urllib\request.py", line 650, in http_error_default
    raise HTTPError(req.full_url, code, msg, hdrs, fp)
    urllib.error.HTTPError: HTTP Error 429: Too Many Requests

    During handling of the above exception, another exception occurred:

    Traceback (most recent call last):
    File "c:\users\d4red\appdata\local\programs\python\python36\lib\runpy.py", line 193, in _run_module_as_main
    "main", mod_spec)
    File "c:\users\d4red\appdata\local\programs\python\python36\lib\runpy.py", line 85, in _run_code
    exec(code, run_globals)
    File "C:\Users\d4red\AppData\Local\Programs\Python\Python36\Scripts\spotdl.exe__main.py", line 9, in <module>
    File "c:\users\d4red\appdata\local\programs\python\python36\lib\site-packages\spotdl\command_line\
    main__.py", line 48, in main
    spotdl.match_arguments()
    File "c:\users\d4red\appdata\local\programs\python\python36\lib\site-packages\spotdl\command_line\core.py", line 79, in match_arguments
    self.arguments["list"],
    File "c:\users\d4red\appdata\local\programs\python\python36\lib\site-packages\spotdl\command_line\cor

    I got that thing when I tried to download my playlist
    Yesterday it was fine but today it ain't working
    How do I fix it
    @ritiek any help?
    Ritiek Malhotra
    @ritiek
    How many tracks have you been downloading per day? I just wanna confirm if this has something to do with us moving to PyTube (and dropping Pafy) as more people have been filing reports on this specific HTTP Error 429: Too Many Requests error lately. Check out #745. This is YouTube rate-limiting us and should fix itself after waiting for a while.
    Triss-droid
    @Triss-droid
    My playlist was about 700 songs
    Guess I need to divide it a bit
    Thanks
    Triss-droid
    @Triss-droid
    I’ll try later to download again and let you know
    Triss-droid
    @Triss-droid
    @ritiek It works now
    There is a daily limit I guess
    mihailstacanov
    @mihailstacanov
    Hi everyone, is there any way to start downloading a playlist in background, so I close my ssh client and shut it down?
    Ritiek Malhotra
    @ritiek

    The easiest way I can think of would be to use screen or tmux. With screen you would go around like below:

    Create a screen session in your SSH session:

    $ ssh 127.0.0.1
    $ screen

    Now invoke spotdl however you want to.

    Hit ctrl+a then ctrl+d here which will disconnect from the screen session but will allow it to keep running in the background. Now you can disconnect your SSH session and the downloads should keep running on the machine.

    If you want to anytime monitor the download progress, SSH into your machine and run screen -x in it to connect to the already existing screen session (which is where spotdl process is in).

    mihailstacanov
    @mihailstacanov

    The easiest way I can think of would be to use screen or tmux. With screen you would go around like below:

    Create a screen session in your SSH session:

    $ ssh 127.0.0.1
    $ screen

    Now invoke spotdl however you want to.

    Hit ctrl+a then ctrl+d here which will disconnect from the screen session but will allow it to keep running in the background. Now you can disconnect your SSH session and the downloads should keep running on the machine.

    If you want to anytime monitor the download progress, SSH into your machine and run screen -x in it to connect to the already existing screen session (which is where spotdl process is in).

    thanks

    ritik sahu
    @ritikkumarsahu

    My code -:
    from spotdl import Spotdl
    spotify = Spotdl()
    spotify.download_track("https://open.spotify.com/user/nocopyrightsounds/playlist/7sZbq8QGyMnhKPcLJvCUFD")
    Error -
    Expected id of type track but found type playlist https://open.spotify.com/user/nocopyrightsounds/playlist/7sZbq8QGyMnhKPcLJvCUFD
    HTTP Error for GET to https://api.spotify.com/v1/tracks/7sZbq8QGyMnhKPcLJvCUFD returned 404 due to non existing id
    Exception in thread Thread-6:
    Traceback (most recent call last):
    File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python36_64\lib\site-packages\spotipy\client.py", line 175, in _internal_call
    response.raise_for_status()
    File "C:\Users\Ritik-PC\AppData\Roaming\Python\Python36\site-packages\requests\models.py", line 941, in raise_for_status
    raise HTTPError(http_error_msg, response=self)
    requests.exceptions.HTTPError: 404 Client Error: Not Found for url: https://api.spotify.com/v1/tracks/7sZbq8QGyMnhKPcLJvCUFD

    During handling of the above exception, another exception occurred:

    Traceback (most recent call last):
    File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python36_64\lib\threading.py", line 916, in _bootstrap_inner
    self.run()
    File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python36_64\lib\site-packages\spotdl\util.py", line 39, in run
    **self._kwargs
    File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python36_64\lib\site-packages\spotdl\command_line\core.py", line 221, in threaded_metadata
    metadata = search_metadata.on_youtube_and_spotify()
    File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python36_64\lib\site-packages\spotdl\metadata_search.py", line 89, in on_youtube_and_spotify
    metadata = caller(self.track)
    File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python36_64\lib\site-packages\spotdl\metadata_search.py", line 183, in _on_youtube_and_spotify_for_type_spotify
    spotify_metadata = self._on_spotify_for_type_spotify(url)
    File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python36_64\lib\site-packages\spotdl\metadata_search.py", line 246, in _on_spotify_for_type_spotify
    spotify_metadata = self.providers["spotify"].from_url(url)
    File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python36_64\lib\site-packages\spotdl\metadata\providers\spotify.py", line 26, in from_url
    metadata = self.spotify.track(url)
    File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python36_64\lib\site-packages\spotipy\client.py", line 257, in track
    return self._get("tracks/" + trid)
    File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python36_64\lib\site-packages\spotipy\client.py", line 210, in _get
    return self._internal_call("GET", url, payload, kwargs)
    File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python36_64\lib\site-packages\spotipy\client.py", line 190, in _internal_call
    headers=response.headers,
    spotipy.exceptions.SpotifyException: http status: 404, code:-1 - https://api.spotify.com/v1/tracks/7sZbq8QGyMnhKPcLJvCUFD:
    non existing id

    How i can download playlist

    Ritiek Malhotra
    @ritiek

    You cannot directly pass a playlist for download. Try this instead:

    from spotdl.helpers.spotify import SpotifyHelpers
    from spotdl import Spotdl
    
    from spotdl import util
    import logging
    util.install_logger(logging.INFO)
    
    playlist_uri = "https://open.spotify.com/user/nocopyrightsounds/playlist/7sZbq8QGyMnhKPcLJvCUFD"
    tracks_file = "tracks.txt"
    
    with Spotdl() as spotdl_handler:
        spotify_tools = SpotifyHelpers()
        playlist = spotify_tools.fetch_playlist(playlist_uri)
        spotify_tools.write_playlist_tracks(playlist, tracks_file)
        spotdl_handler.download_tracks_from_file(tracks_file)

    I'm still on working on the API docs but hope this clears some stuff.

    Arvin Morawej
    @Arvmor
    hey,
    there is a problem with request library !
    i tried to download a song and since Youtube is filter in my country i knew ill get an error without VPN, but i tried with 2 different VPNs and i got timeout error
    ritik sahu
    @ritikkumarsahu

    You cannot directly pass a playlist for download. Try this instead:

    from spotdl.helpers.spotify import SpotifyHelpers
    from spotdl import Spotdl
    
    from spotdl import util
    import logging
    util.install_logger(logging.INFO)
    
    playlist_uri = "https://open.spotify.com/user/nocopyrightsounds/playlist/7sZbq8QGyMnhKPcLJvCUFD"
    tracks_file = "tracks.txt"
    
    with Spotdl() as spotdl_handler:
        spotify_tools = SpotifyHelpers()
        playlist = spotify_tools.fetch_playlist(playlist_uri)
        spotify_tools.write_playlist_tracks(playlist, tracks_file)
        spotdl_handler.download_tracks_from_file(tracks_file)

    I'm still on working on the API docs but hope this clears some stuff.

    thanks

    it worked
    ma923
    @ma923
    How-to install spotdl in android termux
    I installed and runned song Downloading showing data/termux/ but no files detected ritek please reply
    Ritiek Malhotra
    @ritiek
    I don't understand. Are you unable to download tracks or unable to find the downloaded tracks? If it is the latter, you need to run termux-setup-storage and then modify your ~/.config/spotdl/config.yml to save tracks somewhere in the shared storage directory, so that you can access songs from other apps.
    Jim-Brewer
    @Jim-Brewer
    Similar vein to the above, was using Termux but looks like it's no longer working with the latest update due to the need for multiprocessing support. It throws the error '''ImportError: This platform lacks a functioning sem_open implementation, therefore, the required synchronization primitives needed will not function, see issue 3770 '''
    Anyone know of any workarounds for this? It's been raised in the Termux git before but sounds like there is no way to implement it on Android so it'd be up to spotdl to not rely on it if unavailable
    Irongameboy
    @Tjb2012zgmailc1_twitter
    My name is Jeff