
I'm a little amateur so maybe it's a stupid mistake that I'm making
Could you please provide the full traceback as raw text, formatted as code? That would make things much easier!
@linusg
➜ spotify-downloader git:(master) ✗ python3 spotdl.py --song http://open.spotify.com/track/1MDoll6jK4rrk2BcFRP5i7
Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/mutagen/_util.py", line 218, in _openfile
fileobj = open(filename, "rb+" if writable else "rb")
FileNotFoundError: [Errno 2] No such file or directory: 'song.mp3'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/Users/macintosh/spotify-downloader/core/metadata.py", line 12, in
tag = EasyID3(path)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/mutagen/easyid3.py", line 170, in __init__
self.load(filename)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/mutagen/_util.py", line 158, in wrapper
return func(args, *kwargs)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/mutagen/_util.py", line 128, in wrapper
writable, create) as h:
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/contextlib.py", line 81, in __enter__
return next(self.gen)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/mutagen/_util.py", line 227, in _openfile
raise MutagenError(e)
mutagen.MutagenError: [Errno 2] No such file or directory: 'song.mp3'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/mutagen/_util.py", line 218, in _openfile
fileobj = open(filename, "rb+" if writable else "rb")
FileNotFoundError: [Errno 2] No such file or directory: 'song.mp3'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "spotdl.py", line 4, in
from core import metadata
File "/Users/macintosh/spotify-downloader/core/metadata.py", line 14, in
tag = mutagen.File(path, easy=True)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/mutagen/_util.py", line 136, in wrapper_func
writable, create) as h:
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/contextlib.py", line 81, in __enter__
return next(self.gen)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/mutagen/_util.py", line 227, in _openfile
raise MutagenError(e)
mutagen.MutagenError: [Errno 2] No such file or directory: 'song.mp3'
I've never dealt with this problem in the past and I can't seem to reproduce it at the moment either. I'm not really sure what's faulty.
I believe this has something to do with an antivirus protection conflict. I noticed my Comodo Antivirus had opened up after I specifically forced "end-task" however when this problem occurred I noticed that it was re-opened, upon ending it again, the spotdl worked flawlessly once more! Just a suggestion :)
@ParsaFakhar can you please check whether or not you have an antivirus software interfering with the process?
@Xevrac I have the same problem and I'm pretty sure, it has nothing to do with the antivirus software, as I don't have one installed.
Does anyone else has a possible solution? I've been reading about the Mutagen library, as it's the one mentioned on the error, but unfortunately I'm still new to python, so I can't be sure if the problem is there.
@ritiek Any comments?
@ParsaFakhar a possible work-around could be using the --avconv argument, just make sure to have it installed. On Ubuntu I used: sudo apt-get install libav-tools and it's working perfectly 👍
According to what I read, the problem must be related to the version of ffmpeg, as posts on the forums mentioned something about ffmpeg _being deprecated_ or something, and other posts commented that AvConv is just a fork from ffmpeg.... But in the end, it works!
Hope it helps 😉
What I see from the error log is that it won't even download the song but it expects song.mp3 to exist to apply metadata on for some reason. Download and conversion won't even come into action but it goes straight to applying metadata? Not sure how avconv helps fix this. For ones using OSX, try your luck with brew install libav.
@ritiek Could it be something related to ffmpeg? I mean, I didn't install it from the Ubuntu stable repos, as I needed some extras things to use OpenCV and had to compile it from the source.
Could it be something that I forgot to add during compilation? It's just an idea... But I don't think it's the same problem as @ParsaFakhar
1. Young Dumb & Broke
3,217,653 Bytes [100.00%] received. Rate: [3945 KB/s]. ETA: [0 secs]
Converting Khalid_-_Young_Dumb__Broke.m4a to mp3
Fixing meta-tags
Traceback (most recent call last):
File "C:\Users\Tanner Brunscheon\AppData\Local\Programs\Python\Python36\lib\site-packages\mutagen\_util.py", line 231, in _openfile
fileobj = open(filename, "rb+" if writable else "rb")
FileNotFoundError: [Errno 2] No such file or directory: spotify-downloader-master\\Music\\Khalid_-_Young_Dumb__Broke.mp3'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "spotdl.py", line 431, in <module>
grab_list(text_file=args.list)
File "spotdl.py", line 304, in grab_list
grab_single(raw_song, number=number)
File "spotdl.py", line 408, in grab_single
metadata.embed(os.path.join(args.folder, output_song), meta_tags)
File "C:\Users\Tanner Brunscheon\Desktop\Music\spotify-downloader-master\core\metadata.py", line 36, in embed
return embed_mp3(music_file, meta_tags)
File "C:\Users\Tanner Brunscheon\Desktop\Music\spotify-downloader-master\core\metadata.py", line 45, in embed_mp3
audiofile = EasyID3(music_file)
File "C:\Users\Tanner Brunscheon\AppData\Local\Programs\Python\Python36\lib\site-packages\mutagen\easyid3.py", line 170, in __init__
self.load(filename)
File "C:\Users\Tanner Brunscheon\AppData\Local\Programs\Python\Python36\lib\site-packages\mutagen\_util.py", line 169, in wrapper
return func(*args, **kwargs)
File "C:\Users\Tanner Brunscheon\AppData\Local\Programs\Python\Python36\lib\site-packages\mutagen\_util.py", line 139, in wrapper
writable, create) as h:
File "C:\Users\Tanner Brunscheon\AppData\Local\Programs\Python\Python36\lib\contextlib.py", line 81, in __enter__
return next(self.gen)
File "C:\Users\Tanner Brunscheon\AppData\Local\Programs\Python\Python36\lib\site-packages\mutagen\_util.py", line 252, in _openfile
raise MutagenError(e)
mutagen.MutagenError: [Errno 2] No such file or directory: 'C:\\Users\\Tanner Brunscheon\\Desktop\\Music\\spotify-downloader-master\\Music\\Khalid_-_Young_Dumb__Broke.mp3'
Hope this helps. Having same problem as above
@TannerBrunscheon I don't think your problem is completely related with the original issue. Check out #153.
Is this still an issue? If so, can someone please run the script with --log-level debug and paste the output here?
I faced this a few days ago, after switching from a Python 3.5 installation to a Python 3.6 installation. I had to reinstall Mutagen, along with the other dependencies when I was updating Spotify Downloader. However, after the first attempt, I deleted a failed file, and it kept skipping the download step, trying to apply metadata to a non-existent file. I deleted the subfolder, and it made the same subfolder again, expecting a file in the subfolder. Today, I tried again, re-downloaded Spotify Downloader, and it somehow works.
EDIT: Note that after I re-downloaded Spotify Downloader, I also re-downloaded FFmpeg, which means I'm using 3.4.1 now, whereas I was using 3.3.3 back then (I think).
I have come across the same issue. But my purpose is just to obtain the length of a mp3 file.
self.load(*args, **kwargs)
File "C:\python36\lib\site-packages\mutagen\_util.py", line 139, in wrapper
writable, create) as h:
File "C:\python36\lib\contextlib.py", line 81, in __enter__
return next(self.gen)
File "C:\python36\lib\site-packages\mutagen\_util.py", line 256, in _openfile
raise MutagenError(e)
mutagen.MutagenError: [Errno 2] No such file or directory: 'C:/Users/neal1/project/voicer/audio.mp3'
It seems the problem is just because of the mutagen.
no it's not mutagen it's ffmpeg. it happens when ffmpeg encounters two argumet that are not supposed to put together like this:
mk009@mk009-ubuntu:~$ spotdl -s https://open.spotify.com/track/7COXchtUOMd6uIT6HvmRaI -ll DEBUG
DEBUG: Fetching metadata for given track URL
DEBUG: Fetching lyrics
DEBUG: {'album': {'album_type': 'single',
'artists': [{'external_urls': {'spotify': 'https://open.spotify.com/artist/5JZ7CnR6gTvEMKX4g70Amv'},
'href': 'https://api.spotify.com/v1/artists/5JZ7CnR6gTvEMKX4g70Amv',
'id': '5JZ7CnR6gTvEMKX4g70Amv',
'name': 'Lauv',
'type': 'artist',
'uri': 'spotify:artist:5JZ7CnR6gTvEMKX4g70Amv'},
{'external_urls': {'spotify': 'https://open.spotify.com/artist/3WGpXCj9YhhfX11TToZcXP'},
'href': 'https://api.spotify.com/v1/artists/3WGpXCj9YhhfX11TToZcXP',
'id': '3WGpXCj9YhhfX11TToZcXP',
'name': 'Troye Sivan',
'type': 'artist',
'uri': 'spotify:artist:3WGpXCj9YhhfX11TToZcXP'}],
'external_urls': {'spotify': 'https://open.spotify.com/album/13yMsBNa2femeWzhcDOqFw'},
'href': 'https://api.spotify.com/v1/albums/13yMsBNa2femeWzhcDOqFw',
'id': '13yMsBNa2femeWzhcDOqFw',
'images': [{'height': 640,
'url': 'https://i.scdn.co/image/7fe337a427d07515fa4b5b91b65f8cd66bc81e70',
'width': 640},
{'height': 300,
'url': 'https://i.scdn.co/image/f449cf61174ea21fbaba699b96b66899606a3bf3',
'width': 300},
{'height': 64,
'url': 'https://i.scdn.co/image/85c4a06b588fe74f6765c885e3ca99a989cf9004',
'width': 64}],
'name': "i'm so tired...",
'release_date': '2019-01-24',
'release_date_precision': 'day',
'total_tracks': 1,
'type': 'album',
'uri': 'spotify:album:13yMsBNa2femeWzhcDOqFw'},
'artists': [{'external_urls': {'spotify': 'https://open.spotify.com/artist/5JZ7CnR6gTvEMKX4g70Amv'},
'href': 'https://api.spotify.com/v1/artists/5JZ7CnR6gTvEMKX4g70Amv',
'id': '5JZ7CnR6gTvEMKX4g70Amv',
'name': 'Lauv',
'type': 'artist',
'uri': 'spotify:artist:5JZ7CnR6gTvEMKX4g70Amv'},
{'external_urls': {'spotify': 'https://open.spotify.com/artist/3WGpXCj9YhhfX11TToZcXP'},
'href': 'https://api.spotify.com/v1/artists/3WGpXCj9YhhfX11TToZcXP',
'id': '3WGpXCj9YhhfX11TToZcXP',
'name': 'Troye Sivan',
'type': 'artist',
'uri': 'spotify:artist:3WGpXCj9YhhfX11TToZcXP'}],
'copyright': '2019 Lauv',
'disc_number': 1,
'duration': 162.582,
'explicit': False,
'external_ids': {'isrc': 'GBKPL1933763'},
'external_urls': {'spotify': 'https://open.spotify.com/track/7COXchtUOMd6uIT6HvmRaI'},
'genre': 'Dance Pop',
'href': 'https://api.spotify.com/v1/tracks/7COXchtUOMd6uIT6HvmRaI',
'id': '7COXchtUOMd6uIT6HvmRaI',
'is_local': False,
'lyrics': None,
'name': "i'm so tired...",
'popularity': 88,
'preview_url': 'https://p.scdn.co/mp3-preview/c066ee13f04cb53b3b5033079f06200a44b18cf1?cid=4fe3fecfe5334023a1472516cc99d805',
'publisher': 'Lauv',
'release_date': '2019-01-24',
'total_tracks': 1,
'track_number': 1,
'type': 'track',
'uri': 'spotify:track:7COXchtUOMd6uIT6HvmRaI',
'year': '2019'}
DEBUG: Opening URL: https://www.youtube.com/results?sp=EgIQAQ%253D%253D&q=Lauv%20-%20i%27m%20so%20tired...
INFO: https://open.spotify.com/track/7COXchtUOMd6uIT6HvmRaI
INFO: 0. Skip downloading this song.
INFO: 1. Lauv & Troye Sivan - i'm so tired... [Official Audio] 2:44 http://youtube.com/watch?v=fvjpE_wFL5A
INFO: 2. Lauv & Troye Sivan - i'm so tired... (Lyrics) 2:43 http://youtube.com/watch?v=AOW_fAD6_Fw
INFO: 3. Lauv & Troye Sivan - i'm so tired... 3:04 http://youtube.com/watch?v=NPWNeh5TIpE
INFO: 4. Lauv, Troye Sivan - i'm so tired... (Lyrics) 2:43 http://youtube.com/watch?v=Z62OkNdELlM
INFO: 5. Lauv & Troye Sivan – i'm so tired... [Official Audio] 2:42 http://youtube.com/watch?v=xlEAutFdFxg
INFO: 6. Lauv, Troye Sivan - I'm so tired (1 HOUR VERSION) 1:03:53 http://youtube.com/watch?v=5SkOGsfZ8_w
INFO: 7. Lauv & Troye Sivan - i'm so tired [Lyrics] 2:42 http://youtube.com/watch?v=os8R6vUSJyc
INFO: 8. i'm so tired - Lauv & Troye Sivan (Acoustic Cover) 3:30 http://youtube.com/watch?v=8B5lIUsuxwY
INFO: 9. i'm sooooo tired... 5:22 http://youtube.com/watch?v=vRfkyhiaKN4
INFO: 10. Lauv, Troye Sivan - i'm so tired... (Lyrics) 2:43 http://youtube.com/watch?v=tDY2aBp3PO4
INFO: 11. i'm so tired... by Lauv and Troye Sivan | Alex Aiono Cover 3:06 http://youtube.com/watch?v=cN7KgTGLJaY
INFO: 12. Lauv & Troye Sivan - i'm so tired... (Lyrics) 2:43 http://youtube.com/watch?v=r60sGQ_FV4Q
INFO: 13. Lauv & Troye Sivan - i'm so tired... cover by Highcloud. (With Lyrics) 2:35 http://youtube.com/watch?v=W1ymvmHcf_c
INFO: 14. I'm so tired..- LAUV & TROYE SIVAN (Rajiv Dhall cover) 2:16 http://youtube.com/watch?v=FtgOCx_wGk4
INFO: 15. Lauv, Troye Sivan - I'm so tired (1 HOUR VERSION) 1:01:46 http://youtube.com/watch?v=kRaonqJXNoY
INFO: 16. Lauv, Troye Sivan - i'm so tired... (8D AUDIO) 🎧 2:43 http://youtube.com/watch?v=3vBGdYmuo9o
INFO: 17. LAUV TROYE SIVAN I'm SO TIRED REACTION 4:14 http://youtube.com/watch?v=1gHF1hiP5as
INFO: 18. Lauv & Troye Sivan - i'm so tired... (ZK67Beats Remix) 3:13 http://youtube.com/watch?v=TWjM6yK4m38
INFO: 19. Lauv & Troye Sivan - i'm so tired... (Lyric Video) 2:43 http://youtube.com/watch?v=iAmlcHYhAjg
INFO: 20. i'm so tired by Lauv and Troye Sivan [1 hour loop] 1:00:36 http://youtube.com/watch?v=Wcw4ZnJdo24
INFO: Choose your number:
> 1
INFO: Lauv & Troye Sivan - i'm so tired... [Official Audio] (http://www.youtube.com/watch?v=fvjpE_wFL5A)
DEBUG: Refining songname from "Lauv & Troye Sivan - i'm so tired... [Official Audio]" to "Lauv - i'm so tired"
DEBUG: Cleaning any temp files and checking if "Lauv - i'm so tired" already exists
DEBUG: Downloading from URL: https://r1---sn-gwpa-w5ps.googlevideo.com/videoplayback?clen=2652323&dur=163.839&lmt=1548368905416369&keepalive=yes&expire=1550083336&sparams=clen%2Cdur%2Cei%2Cgir%2Cid%2Cinitcwndbps%2Cip%2Cipbits%2Citag%2Ckeepalive%2Clmt%2Cmime%2Cmm%2Cmn%2Cms%2Cmv%2Cpl%2Crequiressl%2Csource%2Cexpire&mime=audio%2Fmp4&key=yt6&source=youtube&requiressl=yes&itag=140&ei=qBBkXJyEKdWOz7sP5qGakAI&fvip=1&pl=36&ipbits=0&initcwndbps=157500&c=WEB&id=o-ANFNF_iWT3h1aWK1Dj4T8xrUaolbRaLmwHRXtTeVISHi&mm=31%2C29&gir=yes&mn=sn-gwpa-w5ps%2Csn-gwpa-qxad&ms=au%2Crdu&mt=1550061608&mv=m&txp=5532432&ip=*:*:*:*:*:*:*:*&signature=6ECA77E8B72282B58156BBC9EC1B20E5DAEC01B4.DF7B0786F58C2CF80BDBA319148D74A0C1FE6CE4&ratebypass=yes
DEBUG: Saving to: /home/mk009/Music/Lauv - i'm so tired.m4a
2,652,323 Bytes [100.00%] received. Rate: [ 710 KB/s]. ETA: [0 secs]
INFO: Correcting container in "Lauv - i'm so tired.m4a"
DEBUG: Input file and output file are going will be same during encoding, will append ".temp" to input file just before starting encoding to avoid conflict
DEBUG: ['ffmpeg', '-y', '-i', "/home/mk009/Music/Lauv - i'm so tired.m4a.temp", '-acodec', 'copy', '-b:a', '192k', '-vn', '-af', 'silenceremove=start_periods=1', "/home/mk009/Music/Lauv - i'm so tired.m4a"]
ffmpeg version 3.4.4-0ubuntu0.18.04.1 Copyright (c) 2000-2018 the FFmpeg developers
built with gcc 7 (Ubuntu 7.3.0-16ubuntu3)
configuration: --prefix=/usr --extra-version=0ubuntu0.18.04.1 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --enable-gpl --disable-stripping --enable-avresample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librubberband --enable-librsvg --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-omx --enable-openal --enable-opengl --enable-sdl2 --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libopencv --enable-libx264 --enable-shared
libavutil 55. 78.100 / 55. 78.100
libavcodec 57.107.100 / 57.107.100
libavformat 57. 83.100 / 57. 83.100
libavdevice 57. 10.100 / 57. 10.100
libavfilter 6.107.100 / 6.107.100
libavresample 3. 7. 0 / 3. 7. 0
libswscale 4. 8.100 / 4. 8.100
libswresample 2. 9.100 / 2. 9.100
libpostproc 54. 7.100 / 54. 7.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/home/mk009/Music/Lauv - i'm so tired.m4a.temp':
Metadata:
major_brand : dash
minor_version : 0
compatible_brands: iso6mp41
creation_time : 2019-01-24T22:28:18.000000Z
Duration: 00:02:43.84, start: 0.000000, bitrate: 129 kb/s
Stream #0:0(eng): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 7 kb/s (default)
Metadata:
creation_time : 2019-01-24T22:28:18.000000Z
handler_name : ISO Media file produced by Google Inc. Created on: 01/24/2019.
Filtergraph 'silenceremove=start_periods=1' was defined for audio output stream 0:0 but codec copy was selected.
Filtering and streamcopy cannot be used together.
DEBUG: Removing original file: "/home/mk009/Music/Lauv - i'm so tired.m4a.temp"
INFO: Applying metadata
Traceback (most recent call last):
File "/home/mk009/.local/lib/python3.6/site-packages/mutagen/_util.py", line 235, in _openfile
fileobj = open(filename, "rb+" if writable else "rb")
FileNotFoundError: [Errno 2] No such file or directory: "/home/mk009/Music/Lauv - i'm so tired.m4a"
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/local/bin/spotdl", line 11, in <module>
load_entry_point('spotdl==1.1.1', 'console_scripts', 'spotdl')()
File "/usr/local/lib/python3.6/dist-packages/spotdl-1.1.1-py3.6.egg/spotdl/spotdl.py", line 58, in main
File "/usr/local/lib/python3.6/dist-packages/spotdl-1.1.1-py3.6.egg/spotdl/spotdl.py", line 28, in match_args
File "/usr/local/lib/python3.6/dist-packages/spotdl-1.1.1-py3.6.egg/spotdl/downloader.py", line 115, in download_single
File "/usr/local/lib/python3.6/dist-packages/spotdl-1.1.1-py3.6.egg/spotdl/downloader.py", line 140, in _download_single
File "/usr/local/lib/python3.6/dist-packages/spotdl-1.1.1-py3.6.egg/spotdl/metadata.py", line 33, in embed
File "/usr/local/lib/python3.6/dist-packages/spotdl-1.1.1-py3.6.egg/spotdl/metadata.py", line 106, in as_m4a
File "/home/mk009/.local/lib/python3.6/site-packages/mutagen/_file.py", line 49, in __init__
self.load(*args, **kwargs)
File "/home/mk009/.local/lib/python3.6/site-packages/mutagen/_util.py", line 139, in wrapper
writable, create) as h:
File "/usr/lib/python3.6/contextlib.py", line 81, in __enter__
return next(self.gen)
File "/home/mk009/.local/lib/python3.6/site-packages/mutagen/_util.py", line 256, in _openfile
raise MutagenError(e)
mutagen.MutagenError: [Errno 2] No such file or directory: "/home/mk009/Music/Lauv - i'm so tired.m4a"
so just need to make sure that when input and output format is same, silence filtergraph shouldn't be placed even though it's
trim-silence: true
@66MrKumar99 Thanks for the report! I tested out and the minimum parameters needed to reproduce this is:
$ spotdl -s https://open.spotify.com/track/7COXchtUOMd6uIT6HvmRaI -ll DEBUG --trim-silence -o .m4a
I'll take a better look soon.
Same problem here :(
spotdl --song https://open.spotify.com/track/0FhBANnxcQBgD3tQ75WFAn
INFO: Lizzo - Fitness LYRIC VIDEO (http://www.youtube.com/watch?v=e5cCHm2qyK8)
16,154 Bytes [100.00%] received. Rate: [ 419 KB/s]. ETA: [0 secs]
INFO: Converting Lizzo - Fitness.m4a to mp3
INFO: Applying metadata
Traceback (most recent call last):
File "/usr/local/lib/python3.7/site-packages/mutagen/_util.py", line 235, in _openfile
fileobj = open(filename, "rb+" if writable else "rb")
FileNotFoundError: [Errno 2] No such file or directory: '/Users/janka/Music/Lizzo - Fitness.mp3'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/local/bin/spotdl", line 10, in
sys.exit(main())
File "/usr/local/lib/python3.7/site-packages/spotdl/spotdl.py", line 63, in main
match_args()
File "/usr/local/lib/python3.7/site-packages/spotdl/spotdl.py", line 28, in match_args
track_dl.download_single()
File "/usr/local/lib/python3.7/site-packages/spotdl/downloader.py", line 119, in download_single
return self._download_single(songname)
File "/usr/local/lib/python3.7/site-packages/spotdl/downloader.py", line 144, in _download_single
os.path.join(const.args.folder, output_song), self.meta_tags
File "/usr/local/lib/python3.7/site-packages/spotdl/metadata.py", line 36, in embed
return embed.as_mp3()
File "/usr/local/lib/python3.7/site-packages/spotdl/metadata.py", line 60, in as_mp3
audiofile = EasyID3(music_file)
File "/usr/local/lib/python3.7/site-packages/mutagen/easyid3.py", line 170, in __init__
self.load(filename)
File "/usr/local/lib/python3.7/site-packages/mutagen/_util.py", line 169, in wrapper
return func(args, *kwargs)
File "/usr/local/lib/python3.7/site-packages/mutagen/_util.py", line 139, in wrapper
writable, create) as h:
File "/usr/local/Cellar/python/3.7.2_2/Frameworks/Python.framework/Versions/3.7/lib/python3.7/contextlib.py", line 112, in __enter__
return next(self.gen)
File "/usr/local/lib/python3.7/site-packages/mutagen/_util.py", line 256, in _openfile
raise MutagenError(e)
mutagen.MutagenError: [Errno 2] No such file or directory: '/Users/janka/Music/Lizzo - Fitness.mp3'
same here..
nugrohoe_ku@bastomi:~$ spotdl --song https://open.spotify.com/track/4KXSpLJcQQIZY4vJnxSPRk
INFO: Unfriended: Dark Web Original Soundtrack (http://www.youtube.com/watch?v=9yTkm5gCkoY)
22,545 Bytes [100.00%] received. Rate: [ 557 KB/s]. ETA: [0 secs]
INFO: Converting The Tambo Rays - Wrong Turn.m4a to mp3
INFO: Applying metadata
Traceback (most recent call last):
File "/home/nugrohoe_ku/.local/lib/python3.6/site-packages/mutagen/_util.py", line 235, in _openfile
fileobj = open(filename, "rb+" if writable else "rb")
FileNotFoundError: [Errno 2] No such file or directory: '/home/nugrohoe_ku/Music/The Tambo Rays - Wrong Turn.mp3'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/local/bin/spotdl", line 11, in
load_entry_point('spotdl==1.2.0', 'console_scripts', 'spotdl')()
File "/home/nugrohoe_ku/.local/lib/python3.6/site-packages/spotdl/spotdl.py", line 63, in main
match_args()
File "/home/nugrohoe_ku/.local/lib/python3.6/site-packages/spotdl/spotdl.py", line 28, in match_args
track_dl.download_single()
File "/home/nugrohoe_ku/.local/lib/python3.6/site-packages/spotdl/downloader.py", line 119, in download_single
return self._download_single(songname)
File "/home/nugrohoe_ku/.local/lib/python3.6/site-packages/spotdl/downloader.py", line 144, in _download_single
os.path.join(const.args.folder, output_song), self.meta_tags
File "/home/nugrohoe_ku/.local/lib/python3.6/site-packages/spotdl/metadata.py", line 36, in embed
return embed.as_mp3()
File "/home/nugrohoe_ku/.local/lib/python3.6/site-packages/spotdl/metadata.py", line 60, in as_mp3
audiofile = EasyID3(music_file)
File "/home/nugrohoe_ku/.local/lib/python3.6/site-packages/mutagen/easyid3.py", line 170, in __init__
self.load(filename)
File "/home/nugrohoe_ku/.local/lib/python3.6/site-packages/mutagen/_util.py", line 169, in wrapper
return func(args, *kwargs)
File "/home/nugrohoe_ku/.local/lib/python3.6/site-packages/mutagen/_util.py", line 139, in wrapper
writable, create) as h:
File "/usr/lib/python3.6/contextlib.py", line 81, in __enter__
return next(self.gen)
File "/home/nugrohoe_ku/.local/lib/python3.6/site-packages/mutagen/_util.py", line 256, in _openfile
raise MutagenError(e)
mutagen.MutagenError: [Errno 2] No such file or directory: '/home/nugrohoe_ku/Music/The Tambo Rays - Wrong Turn.mp3'
this is happening to me with spotdl 1.2.0 on fedora
the same download succeed with spotdl 1.1.1 on debian.
on fedora (and with 1.2.0) I also have the folowing warning:
/usr/local/lib/python3.7/site-packages/spotdl/handle.py:61: YAMLLoadWarning: calling yaml.load() without Loader=... is deprecated, as the default Loader is unsafe. Please read https://msg.pyyaml.org/load for full details.
cfg = yaml.load(ymlfile)
test with the following
spotdl -s spotify:track:4hKCIKKUud1QHfUXG7dklr
spotdl 1.2.0
Python 3.5.2
ffmpeg version 2.8.15-0ubuntu0.16.04.1Output to: spotdl --log-level debug -s https://open.spotify.com/track/53mrVsi49rLHIaKBiSvElG
DEBUG: Input song is a Spotify URL
DEBUG: Fetching metadata for given track URL
DEBUG: Fetching lyrics
DEBUG: {'album': {'album_type': 'single',
'artists': [{'external_urls': {'spotify': 'https://open.spotify.com/artist/2cFrymmkijnjDg9SS92EPM'},
'href': 'https://api.spotify.com/v1/artists/2cFrymmkijnjDg9SS92EPM',
'id': '2cFrymmkijnjDg9SS92EPM',
'name': 'blackbear',
'type': 'artist',
'uri': 'spotify:artist:2cFrymmkijnjDg9SS92EPM'}],
'external_urls': {'spotify': 'https://open.spotify.com/album/7v20RlVibTDdhbbtSBjS9b'},
'href': 'https://api.spotify.com/v1/albums/7v20RlVibTDdhbbtSBjS9b',
'id': '7v20RlVibTDdhbbtSBjS9b',
'images': [{'height': 640,
'url': 'https://i.scdn.co/image/2e914888bc96aaed067c7d71539f2cf358759ba8',
'width': 640},
{'height': 300,
'url': 'https://i.scdn.co/image/cd3d0940c60961b22fccb612cdd1183f85726145',
'width': 300},
{'height': 64,
'url': 'https://i.scdn.co/image/d065f5c6c87316f548208c9c16e2e979e15cc441',
'width': 64}],
'name': 'do re mi (feat. Gucci Mane)',
'release_date': '2017-07-28',
'release_date_precision': 'day',
'total_tracks': 1,
'type': 'album',
'uri': 'spotify:album:7v20RlVibTDdhbbtSBjS9b'},
'artists': [{'external_urls': {'spotify': 'https://open.spotify.com/artist/2cFrymmkijnjDg9SS92EPM'},
'href': 'https://api.spotify.com/v1/artists/2cFrymmkijnjDg9SS92EPM',
'id': '2cFrymmkijnjDg9SS92EPM',
'name': 'blackbear',
'type': 'artist',
'uri': 'spotify:artist:2cFrymmkijnjDg9SS92EPM'},
{'external_urls': {'spotify': 'https://open.spotify.com/artist/13y7CgLHjMVRMDqxdx0Xdo'},
'href': 'https://api.spotify.com/v1/artists/13y7CgLHjMVRMDqxdx0Xdo',
'id': '13y7CgLHjMVRMDqxdx0Xdo',
'name': 'Gucci Mane',
'type': 'artist',
'uri': 'spotify:artist:13y7CgLHjMVRMDqxdx0Xdo'}],
'copyright': '© 2017 Beartrap, LLC, under exclusive license to UMG '
'Recordings, Inc.',
'disc_number': 1,
'duration': 233.705,
'explicit': True,
'external_ids': {'isrc': 'USUM71708071'},
'external_urls': {'spotify': 'https://open.spotify.com/track/53mrVsi49rLHIaKBiSvElG'},
'genre': 'Pop',
'href': 'https://api.spotify.com/v1/tracks/53mrVsi49rLHIaKBiSvElG',
'id': '53mrVsi49rLHIaKBiSvElG',
'is_local': False,
'lyrics': 'Do re mi fa so\n'
'Yeah yeah\n'
'Do re mi fa so\n'
'Yeah\n'
'\n'
'Yeah\n'
'If I could go back to that day we met\n'
'I probably would just stay in bed\n'
'You run your mouth all over town\n'
'And this one goes out to the sound of breaking glass on my range '
'rover\n'
"Pay me back or bitch it's over\n"
'All the presents I would send\n'
'Fuck my friends behind my shoulder\n'
"Next time I'mma stay asleep\n"
'I pray the lord my soul to keep\n'
'\n'
'And you got me thinking lately\n'
'Bitch you crazy\n'
"And nothing's ever good enough\n"
"I wrote a little song for ya'\n"
'It go like\n'
'\n'
'Do re mi fa so fucking done with you girl\n'
'So fucking done with all the games you play\n'
"I ain't no tic tac toe\n"
"Send the X and Os on another note I'm ghost\n"
'Do re mi fa so fucking done with you baby\n'
"So send the X and Os on another note I'm ghost\n"
'\n'
'If I could go back to that day we met\n'
"I probably would've stayed in bed\n"
"You wake up everyday and make me feel like I'm incompetent\n"
'Designer shoes and Xanax tabs\n'
'Compliments, your makeup bag\n'
'You never had to buy yourself a drink\n'
'Cause everybody wanted to tap that ass sometime\n'
'\n'
'And you got me thinking lately\n'
'Bitch you crazy\n'
"And nothing's ever good enough\n"
"I wrote a little song for ya'\n"
'It go like\n'
'\n'
'Do re mi fa so fucking done with you girl\n'
'So fucking done with all the games you play\n'
"I ain't no tic tac toe\n"
"Send the X and Os on another note I'm ghost\n"
'Do re mi fa so fucking done with you baby\n'
"So send the X and Os on another note I'm ghost\n"
'\n'
'(Yeah, yeah, oh)\n'
"(And you got me thinking lately, bitch you crazy and nothing's "
'ever good enough)\n'
'\n'
'I wrote a little song for ya\n'
'It go like do re mi fa so fucking done with you girl\n'
'So fucking done with all the games you play\n'
"I ain't no tic tac toe\n"
"Send the X and Os on another note I'm ghost\n"
'Do re mi fa so fucking done with you baby\n'
"So send the X and Os on another note I'm ghost\n"
'\n'
"So send the X and Os on another note I'm ghost",
'name': 'do re mi (feat. Gucci Mane)',
'popularity': 67,
'preview_url': None,
'publisher': 'Alamo Records / Interscope',
'release_date': '2017-07-28',
'spotify_metadata': True,
'total_tracks': 1,
'track_number': 1,
'type': 'track',
'uri': 'spotify:track:53mrVsi49rLHIaKBiSvElG',
'year': '2017'}
DEBUG: Opening URL: https://www.youtube.com/results?sp=EgIQAQ%253D%253D&q=blackbear%20-%20do%20re%20mi%20%28feat.%20Gucci%20Mane%29%20lyrics
INFO: Do Re Mi -Blackbear ft Gucci Mane Lyrics (http://www.youtube.com/watch?v=fJqH-iD6sKk)
DEBUG: Refining songname from "Do Re Mi -Blackbear ft Gucci Mane Lyrics" to "blackbear - do re mi (feat Gucci Mane)"
DEBUG: Cleaning any temp files and checking if "blackbear - do re mi (feat Gucci Mane)" already exists
DEBUG: Downloading from URL: https://manifest.googlevideo.com/api/manifest/dash/pcm2cms/yes/mt/1552403115/source/youtube/mn/sn-8vq54voxpo-5hqe%2Csn-8vq54voxpo-qxae/as/fmp4_audio_clear%2Cfmp4_sd_hd_clear/hfr/all/sparams/as%2Cei%2Chfr%2Cid%2Cinitcwndbps%2Cip%2Cipbits%2Citag%2Cmm%2Cmn%2Cms%2Cmv%2Cpcm2cms%2Cpl%2Cplayback_host%2Crequiressl%2Csource%2Cexpire/signature/D0D5DF60F1D7E25E0EA2E1F84DB3B766CF6B7A24.80B776B0D7D4EDBCB6F4CCA695482E06E86E30A9/itag/0/ip/2402%3A3a80%3A8f2%3A2637%3Ac980%3A7c17%3A684e%3A2f2/playback_host/r1---sn-8vq54voxpo-5hqe.googlevideo.com/ei/OMuHXPSxLfHGz7sP0NSjsA4/ms/au%2Crdu/requiressl/yes/initcwndbps/123750/ipbits/0/pl/44/mv/m/id/7c9a87fa20fab0a9/mm/31%2C29/key/yt6/expire/1552424856/fvip/1
DEBUG: Saving to: /home/priyank/Music/blackbear - do re mi (feat Gucci Mane).m4a
18,203 Bytes [100.00%] received. Rate: [ 80 KB/s]. ETA: [0 secs]
INFO: Converting blackbear - do re mi (feat Gucci Mane).m4a to mp3
DEBUG: ['ffmpeg', '-y', '-i', '/home/priyank/Music/blackbear - do re mi (feat Gucci Mane).m4a', '-codec:v', 'copy', '-codec:a', 'libmp3lame', '-ar', '44100', '-b:a', '192k', '-vn', '/home/priyank/Music/blackbear - do re mi (feat Gucci Mane).mp3']
ffmpeg version 2.8.15-0ubuntu0.16.04.1 Copyright (c) 2000-2018 the FFmpeg developers
built with gcc 5.4.0 (Ubuntu 5.4.0-6ubuntu1~16.04.10) 20160609
configuration: --prefix=/usr --extra-version=0ubuntu0.16.04.1 --build-suffix=-ffmpeg --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --cc=cc --cxx=g++ --enable-gpl --enable-shared --disable-stripping --disable-decoder=libopenjpeg --disable-decoder=libschroedinger --enable-avresample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmodplug --enable-libmp3lame --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-librtmp --enable-libschroedinger --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxvid --enable-libzvbi --enable-openal --enable-opengl --enable-x11grab --enable-libdc1394 --enable-libiec61883 --enable-libzmq --enable-frei0r --enable-libx264 --enable-libopencv
WARNING: library configuration mismatch
avcodec configuration: --prefix=/usr --extra-version=0ubuntu0.16.04.1 --build-suffix=-ffmpeg --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --cc=cc --cxx=g++ --enable-gpl --enable-shared --disable-stripping --disable-decoder=libopenjpeg --disable-decoder=libschroedinger --enable-avresample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmodplug --enable-libmp3lame --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-librtmp --enable-libschroedinger --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxvid --enable-libzvbi --enable-openal --enable-opengl --enable-x11grab --enable-libdc1394 --enable-libiec61883 --enable-libzmq --enable-frei0r --enable-libx264 --enable-libopencv --enable-version3 --disable-doc --disable-programs --disable-avdevice --disable-avfilter --disable-avformat --disable-avresample --disable-postproc --disable-swscale --enable-libopencore_amrnb --enable-libopencore_amrwb --enable-libvo_aacenc --enable-libvo_amrwbenc
libavutil 54. 31.100 / 54. 31.100
libavcodec 56. 60.100 / 56. 60.100
libavformat 56. 40.101 / 56. 40.101
libavdevice 56. 4.100 / 56. 4.100
libavfilter 5. 40.101 / 5. 40.101
libavresample 2. 1. 0 / 2. 1. 0
libswscale 3. 1.101 / 3. 1.101
libswresample 1. 2.101 / 1. 2.101
libpostproc 53. 3.100 / 53. 3.100
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x1abc540] Format mov,mp4,m4a,3gp,3g2,mj2 detected only with low score of 1, misdetection possible!
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x1abc540] moov atom not found
/home/priyank/Music/blackbear - do re mi (feat Gucci Mane).m4a: Invalid data found when processing input
DEBUG: Removing original file: "/home/priyank/Music/blackbear - do re mi (feat Gucci Mane).m4a"
INFO: Applying metadata
Traceback (most recent call last):
File "/home/priyank/.local/lib/python3.5/site-packages/mutagen/_util.py", line 235, in _openfile
fileobj = open(filename, "rb+" if writable else "rb")
FileNotFoundError: [Errno 2] No such file or directory: '/home/priyank/Music/blackbear - do re mi (feat Gucci Mane).mp3'During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/priyank/.local/bin/spotdl", line 10, in
sys.exit(main())
File "/home/priyank/.local/lib/python3.5/site-packages/spotdl/spotdl.py", line 63, in main
match_args()
File "/home/priyank/.local/lib/python3.5/site-packages/spotdl/spotdl.py", line 28, in match_args
track_dl.download_single()
File "/home/priyank/.local/lib/python3.5/site-packages/spotdl/downloader.py", line 119, in download_single
return self._download_single(songname)
File "/home/priyank/.local/lib/python3.5/site-packages/spotdl/downloader.py", line 144, in _download_single
os.path.join(const.args.folder, output_song), self.meta_tags
File "/home/priyank/.local/lib/python3.5/site-packages/spotdl/metadata.py", line 36, in embed
return embed.as_mp3()
File "/home/priyank/.local/lib/python3.5/site-packages/spotdl/metadata.py", line 60, in as_mp3
audiofile = EasyID3(music_file)
File "/home/priyank/.local/lib/python3.5/site-packages/mutagen/easyid3.py", line 170, in init
self.load(filename)
File "/home/priyank/.local/lib/python3.5/site-packages/mutagen/_util.py", line 169, in wrapper
return func(args, kwargs)
File "/home/priyank/.local/lib/python3.5/site-packages/mutagen/_util.py", line 139, in wrapper
writable, create) as h:
File "/usr/lib/python3.5/contextlib.py", line 59, in *enter
return next(self.gen)
File "/home/priyank/.local/lib/python3.5/site-packages/mutagen/_util.py", line 256, in _openfile
raise MutagenError(e)
mutagen.MutagenError: [Errno 2] No such file or directory: '/home/priyank/Music/blackbear - do re mi (feat Gucci Mane).mp3'
@PriyankVashiar until now maybe you've understood the problem here or maybe not.
But Just to make some of things clear here...
song is 3 minute long, but in your log youtube-dl downloaded only 18 KBs file. (When I separately downloaded this file with youtube-dl, it was a dash file of 3.45 MB of total 47 fragment and I don't know how spotify-downloader uses youtube-dl library.) maybe it was only 1 fragement.
second error 'moov atom not found' is because of reason 1. incomplete mp4 files can't be read properly without moov atom. https://support.convertio.co/hc/en-us/articles/360004409694-What-does-moov-atom-not-found-error-means-
I downloaded this same song and same youtube url with default config, but I didn't encounter this error.
One personal advice @PriyankVashiar, be careful when posting logs. check for personal info before. youtube_dl download url contains your ip with signature :smiling_imp: .
@66MrKumar99 I was in a hurry while posting this. I request you to delete the comment as it still shows the signature.
@PriyankVashiar you can edit your comment than delete older version from history.
see three dot on your comment...
I confirm this bug.
➜ Running to Rock spotdl --song https://open.spotify.com/track/144fBZWn4968hszzQkXV9q
/home/pedro/.local/lib/python3.6/site-packages/spotdl/handle.py:61: YAMLLoadWarning: calling yaml.load() without Loader=... is deprecated, as the default Loader is unsafe. Please read https://msg.pyyaml.org/load for full details.
cfg = yaml.load(ymlfile)
INFO: Run Run Run by Black Paisley (http://www.youtube.com/watch?v=yLXuAnnRUN4)
26,509 Bytes [100.00%] received. Rate: [1502 KB/s]. ETA: [0 secs]
INFO: Converting Black Paisley - Run Run Run.m4a to mp3
INFO: Applying metadata
Traceback (most recent call last):
File "/usr/local/lib/python3.6/dist-packages/mutagen/_util.py", line 235, in _openfile
fileobj = open(filename, "rb+" if writable else "rb")
FileNotFoundError: [Errno 2] No such file or directory: '/home/pedro/Música/Black Paisley - Run Run Run.mp3'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/pedro/.local/bin/spotdl", line 10, in <module>
sys.exit(main())
File "/home/pedro/.local/lib/python3.6/site-packages/spotdl/spotdl.py", line 63, in main
match_args()
File "/home/pedro/.local/lib/python3.6/site-packages/spotdl/spotdl.py", line 28, in match_args
track_dl.download_single()
File "/home/pedro/.local/lib/python3.6/site-packages/spotdl/downloader.py", line 119, in download_single
return self._download_single(songname)
File "/home/pedro/.local/lib/python3.6/site-packages/spotdl/downloader.py", line 144, in _download_single
os.path.join(const.args.folder, output_song), self.meta_tags
File "/home/pedro/.local/lib/python3.6/site-packages/spotdl/metadata.py", line 36, in embed
return embed.as_mp3()
File "/home/pedro/.local/lib/python3.6/site-packages/spotdl/metadata.py", line 60, in as_mp3
audiofile = EasyID3(music_file)
File "/usr/local/lib/python3.6/dist-packages/mutagen/easyid3.py", line 170, in __init__
self.load(filename)
File "/usr/local/lib/python3.6/dist-packages/mutagen/_util.py", line 169, in wrapper
return func(*args, **kwargs)
File "/usr/local/lib/python3.6/dist-packages/mutagen/_util.py", line 139, in wrapper
writable, create) as h:
File "/usr/lib/python3.6/contextlib.py", line 81, in __enter__
return next(self.gen)
File "/usr/local/lib/python3.6/dist-packages/mutagen/_util.py", line 256, in _openfile
raise MutagenError(e)
mutagen.MutagenError: [Errno 2] No such file or directory: '/home/pedro/Música/Black Paisley - Run Run Run.mp3'
Same here, I can reproduce this with a Fedora 29 (with and without venv) and also tried with Docker, same result
Rolling back to youtube-dl 2019.3.1 seemed to have solved the issue for me. Version 2019.3.9 and beyond give me the same exception, so I'm guessing it has something to do with that update.
https://github.com/ytdl-org/youtube-dl/releases/tag/2019.03.09
I confirm the bug, on Ubuntu 16.04-1, Pyhton 3.5.
INFO: Simge-Aşkın Olayım Şarkı Sözleri (http://www.youtube.com/watch?v=KgxWomAluJM)
33,934 Bytes [100.00%] received. Rate: [1074 KB/s]. ETA: [0 secs]
INFO: Converting Simge - Aşkın Olayım.m4a to mp3
INFO: Applying metadata
Traceback (most recent call last):
File "/usr/local/lib/python3.5/dist-packages/mutagen/_util.py", line 235, in _openfile
fileobj = open(filename, "rb+" if writable else "rb")
FileNotFoundError: [Errno 2] No such file or directory: './Simge - Aşkın Olayım.mp3'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/local/bin/spotdl", line 10, in <module>
sys.exit(main())
File "/usr/local/lib/python3.5/dist-packages/spotdl/spotdl.py", line 63, in main
match_args()
File "/usr/local/lib/python3.5/dist-packages/spotdl/spotdl.py", line 28, in match_args
track_dl.download_single()
File "/usr/local/lib/python3.5/dist-packages/spotdl/downloader.py", line 119, in download_single
return self._download_single(songname)
File "/usr/local/lib/python3.5/dist-packages/spotdl/downloader.py", line 144, in _download_single
os.path.join(const.args.folder, output_song), self.meta_tags
File "/usr/local/lib/python3.5/dist-packages/spotdl/metadata.py", line 36, in embed
return embed.as_mp3()
File "/usr/local/lib/python3.5/dist-packages/spotdl/metadata.py", line 60, in as_mp3
audiofile = EasyID3(music_file)
File "/usr/local/lib/python3.5/dist-packages/mutagen/easyid3.py", line 170, in __init__
self.load(filename)
File "/usr/local/lib/python3.5/dist-packages/mutagen/_util.py", line 169, in wrapper
return func(*args, **kwargs)
File "/usr/local/lib/python3.5/dist-packages/mutagen/_util.py", line 139, in wrapper
writable, create) as h:
File "/usr/lib/python3.5/contextlib.py", line 59, in __enter__
return next(self.gen)
File "/usr/local/lib/python3.5/dist-packages/mutagen/_util.py", line 256, in _openfile
raise MutagenError(e)
mutagen.MutagenError: [Errno 2] No such file or directory: './Simge - Aşkın Olayım.mp3'
I had a similar problem with:
$ spotdl -s "thefatrat - solitude" --log-level=debug
DEBUG: Input song is plain text based
DEBUG: Searching for "thefatrat - solitude" on Spotify
DEBUG: Fetching lyrics
DEBUG: {'album': {'album_type': 'single',
'artists': [{'external_urls': {'spotify': 'https://open.spotify.com/artist/3OKg7YbOIatODzkRIbLJR4'},
'href': 'https://api.spotify.com/v1/artists/3OKg7YbOIatODzkRIbLJR4',
'id': '3OKg7YbOIatODzkRIbLJR4',
'name': 'TheFatRat',
'type': 'artist',
'uri': 'spotify:artist:3OKg7YbOIatODzkRIbLJR4'},
{'external_urls': {'spotify': 'https://open.spotify.com/artist/0vC48gyflgfcrP6f50V9R8'},
'href': 'https://api.spotify.com/v1/artists/0vC48gyflgfcrP6f50V9R8',
'id': '0vC48gyflgfcrP6f50V9R8',
'name': 'Slaydit',
'type': 'artist',
'uri': 'spotify:artist:0vC48gyflgfcrP6f50V9R8'}],
'external_urls': {'spotify': 'https://open.spotify.com/album/0oOAtmdKKEPkOGRurbgXQS'},
'href': 'https://api.spotify.com/v1/albums/0oOAtmdKKEPkOGRurbgXQS',
'id': '0oOAtmdKKEPkOGRurbgXQS',
'images': [{'height': 640,
'url': 'https://i.scdn.co/image/2af9836612b66cdba31d0b8fa0754b454ab0d38e',
'width': 640},
{'height': 300,
'url': 'https://i.scdn.co/image/167735797a139b422e74f6f00f8d2f8f8c532925',
'width': 300},
{'height': 64,
'url': 'https://i.scdn.co/image/99083276a39fa01dea14c09865a267bb626dc929',
'width': 64}],
'name': 'Solitude',
'release_date': '2019-04-19',
'release_date_precision': 'day',
'total_tracks': 1,
'type': 'album',
'uri': 'spotify:album:0oOAtmdKKEPkOGRurbgXQS'},
'artists': [{'external_urls': {'spotify': 'https://open.spotify.com/artist/3OKg7YbOIatODzkRIbLJR4'},
'href': 'https://api.spotify.com/v1/artists/3OKg7YbOIatODzkRIbLJR4',
'id': '3OKg7YbOIatODzkRIbLJR4',
'name': 'TheFatRat',
'type': 'artist',
'uri': 'spotify:artist:3OKg7YbOIatODzkRIbLJR4'},
{'external_urls': {'spotify': 'https://open.spotify.com/artist/0vC48gyflgfcrP6f50V9R8'},
'href': 'https://api.spotify.com/v1/artists/0vC48gyflgfcrP6f50V9R8',
'id': '0vC48gyflgfcrP6f50V9R8',
'name': 'Slaydit',
'type': 'artist',
'uri': 'spotify:artist:0vC48gyflgfcrP6f50V9R8'}],
'copyright': '© 2019 Melofaktur UG, Under exclusive license to Universal '
'Music AB',
'disc_number': 1,
'duration': 208.695,
'explicit': False,
'external_ids': {'isrc': 'SEUM71900169'},
'external_urls': {'spotify': 'https://open.spotify.com/track/7H7RtxRYHIwfhOy8vLxpAw'},
'genre': 'Tracestep',
'href': 'https://api.spotify.com/v1/tracks/7H7RtxRYHIwfhOy8vLxpAw',
'id': '7H7RtxRYHIwfhOy8vLxpAw',
'is_local': False,
'lyrics': None,
'name': 'Solitude',
'popularity': 49,
'preview_url': None,
'publisher': 'Universal Music AB',
'release_date': '2019-04-19',
'spotify_metadata': True,
'total_tracks': 1,
'track_number': 1,
'type': 'track',
'uri': 'spotify:track:7H7RtxRYHIwfhOy8vLxpAw',
'year': '2019'}
DEBUG: Opening URL: https://www.youtube.com/results?sp=EgIQAQ%253D%253D&q=TheFatRat%20-%20Solitude%20lyrics
INFO: LYRICS | TheFatRat & Slaydit - Solitude (http://www.youtube.com/watch?v=Xdz4skkZ4lQ)
DEBUG: Refining songname from "LYRICS | TheFatRat & Slaydit - Solitude" to "TheFatRat - Solitude"
DEBUG: Cleaning any temp files and checking if "TheFatRat - Solitude" already exists
DEBUG: Downloading from URL: https://manifest.googlevideo.com/api/manifest/dash/requiressl/yes/source/youtube/id/5ddcf8b24919e254/itag/0/ei/qMrCXMTfJ8yn3LUPk6WwqAU/playback_host/r3---sn-ci5gup-pmjs.googlevideo.com/mm/31%2C29/mn/sn-ci5gup-pmjs%2Csn-ci5gup-qxae7/ms/au%2Crdu/mv/m/pl/20/hfr/all/as/fmp4_audio_clear%2Cwebm_audio_clear%2Cwebm2_audio_clear%2Cfmp4_sd_hd_clear%2Cwebm2_sd_hd_clear/initcwndbps/651250/mt/1556269640/fvip/7/ip/xxx.xxx.176.82/ipbits/0/expire/1556291336/sparams/ip%2Cipbits%2Cexpire%2Crequiressl%2Csource%2Cid%2Citag%2Cei%2Cplayback_host%2Cmm%2Cmn%2Cms%2Cmv%2Cpl%2Chfr%2Cas%2Cinitcwndbps/signature/70B2F63332C5E3A2B632BA687953AFB663BE1E8B.26745A03152014654FAE72F1A9DAAC7EBDE13295/key/yt8
DEBUG: Saving to: /home/ritiek/Music/TheFatRat - Solitude.m4a
29,714 Bytes [100.00%] received. Rate: [ 793 KB/s]. ETA: [0 secs]
INFO: Converting TheFatRat - Solitude.m4a to mp3
DEBUG: ['ffmpeg', '-y', '-i', '/home/ritiek/Music/TheFatRat - Solitude.m4a', '-codec:v', 'copy', '-codec:a', 'libmp3lame', '-ar', '44100', '-b:a', '192k', '-vn', '/home/ritiek/Music/TheFatRat - Solitude.mp3']
ffmpeg version 3.4.4-0ubuntu0.18.04.1 Copyright (c) 2000-2018 the FFmpeg developers
built with gcc 7 (Ubuntu 7.3.0-16ubuntu3)
configuration: --prefix=/usr --extra-version=0ubuntu0.18.04.1 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --enable-gpl --disable-stripping --enable-avresample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librubberband --enable-librsvg --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-omx --enable-openal --enable-opengl --enable-sdl2 --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libopencv --enable-libx264 --enable-shared
WARNING: library configuration mismatch
avcodec configuration: --prefix=/usr --extra-version=0ubuntu0.18.04.1 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --enable-gpl --disable-stripping --enable-avresample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librubberband --enable-librsvg --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-omx --enable-openal --enable-opengl --enable-sdl2 --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libopencv --enable-libx264 --enable-shared --enable-version3 --disable-doc --disable-programs --enable-libopencore_amrnb --enable-libopencore_amrwb --enable-libtesseract --enable-libvo_amrwbenc
libavutil 55. 78.100 / 55. 78.100
libavcodec 57.107.100 / 57.107.100
libavformat 57. 83.100 / 57. 83.100
libavdevice 57. 10.100 / 57. 10.100
libavfilter 6.107.100 / 6.107.100
libavresample 3. 7. 0 / 3. 7. 0
libswscale 4. 8.100 / 4. 8.100
libswresample 2. 9.100 / 2. 9.100
libpostproc 54. 7.100 / 54. 7.100
[dash @ 0x560d53ce33e0] Opening 'https://r3---sn-ci5gup-pmjs.googlevideo.com/videoplayback/id/5ddcf8b24919e254/itag/133/source/yt_otf/requiressl/yes/ei/qMrCXMTfJ8yn3LUPk6WwqAU/mm/31,29/mn/sn-ci5gup-pmjs,sn-ci5gup-qxae7/ms/au,rdu/mv/m/pl/20/initcwndbps/651250/ratebypass/yes/mime/video%2Fmp4/otfp/1/otf/1/lmt/1555683301605015/mt/1556269640/fvip/7/ip/xxx.xxx.176.82/ipbits/0/expire/1556291336/sparams/ip,ipbits,expire,id,itag,source,requiressl,ei,mm,mn,ms,mv,pl,initcwndbps,ratebypass,mime,otfp,otf,lmt/signature/43BF6F57A78897392394ACBFB0F7C8BEF67900BA.33F2D126BB8CA7E87C510A8D78844B8B3CDC713F/key/dg_yt0/sq/0' for reading
[https @ 0x560d53cf61e0] Protocol 'https' not on whitelist 'file,crypto'!
[dash @ 0x560d53ce33e0] Failed to open an initialization section in playlist 0
[dash @ 0x560d53ce33e0] Error when loading first fragment, playlist 0
/home/ritiek/Music/TheFatRat - Solitude.m4a: Invalid data found when processing input
DEBUG: Removing original file: "/home/ritiek/Music/TheFatRat - Solitude.m4a"
INFO: Applying metadata
Traceback (most recent call last):
File "/home/ritiek/.local/lib/python3.7/site-packages/mutagen/_util.py", line 235, in _openfile
fileobj = open(filename, "rb+" if writable else "rb")
FileNotFoundError: [Errno 2] No such file or directory: '/home/ritiek/Music/TheFatRat - Solitude.mp3'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/ritiek/.local/bin/spotdl", line 11, in <module>
sys.exit(main())
File "/home/ritiek/.local/lib/python3.7/site-packages/spotdl/spotdl.py", line 63, in main
match_args()
File "/home/ritiek/.local/lib/python3.7/site-packages/spotdl/spotdl.py", line 28, in match_args
track_dl.download_single()
File "/home/ritiek/.local/lib/python3.7/site-packages/spotdl/downloader.py", line 119, in download_single
return self._download_single(songname)
File "/home/ritiek/.local/lib/python3.7/site-packages/spotdl/downloader.py", line 144, in _download_single
os.path.join(const.args.folder, output_song), self.meta_tags
File "/home/ritiek/.local/lib/python3.7/site-packages/spotdl/metadata.py", line 36, in embed
return embed.as_mp3()
File "/home/ritiek/.local/lib/python3.7/site-packages/spotdl/metadata.py", line 60, in as_mp3
audiofile = EasyID3(music_file)
File "/home/ritiek/.local/lib/python3.7/site-packages/mutagen/easyid3.py", line 170, in __init__
self.load(filename)
File "/home/ritiek/.local/lib/python3.7/site-packages/mutagen/_util.py", line 169, in wrapper
return func(*args, **kwargs)
File "/home/ritiek/.local/lib/python3.7/site-packages/mutagen/_util.py", line 139, in wrapper
writable, create) as h:
File "/usr/local/lib/python3.7/contextlib.py", line 112, in __enter__
return next(self.gen)
File "/home/ritiek/.local/lib/python3.7/site-packages/mutagen/_util.py", line 256, in _openfile
raise MutagenError(e)
mutagen.MutagenError: [Errno 2] No such file or directory: '/home/ritiek/Music/TheFatRat - Solitude.mp3'
I then tried to download the audiostream using pafy which is the library being used internally by spotify-downloader to download audio off YouTube:
import pafy
content = pafy.new("https://www.youtube.com/watch?v=Xdz4skkZ4lQ")
audiostream = content.getbestaudio()
audiostream.download()
And my media player wasn't able to play the downloaded file (LYRICS | TheFatRat & Slaydit - Solitude.m4a).
Turns out the download file doesn't actually contain any audio data. Rather it is an MPD manifest file which can be opened in a text editor! I'm not sure what's going on here but turns out the problem is in pafy. I'll report this to them.
This bug has been already reported on upstream (https://github.com/mps-youtube/pafy/issues/227). I've made an upstream fix in this PR https://github.com/mps-youtube/pafy/pull/230.
Anyway, it could take quite some time before it gets approved and makes it in the next Pafy release before we can use the fix. So, for the moment I've made a PR #539 that patches the current latest version of Pafy (v0.5.4). Could you guys test #539 whether it works for you? If it does, I'll publish a new release for spotify-downloader ASAP.
EDIT: You can test the fix with:
$ git clone https://github.com/ritiek/spotify-downloader
$ cd spotify-downloader
$ git checkout patch-audiostream-urls
$ pip3 install -e .
# and then run `$ spotdl ..` as usual
$ spotdl <args>
@ritiek Yeap, is working like a charm. 🎉
before #539 PR
$ spotdl --song https://open.spotify.com/track/25ht9mCmiaXIENR1OqEn0C?si=DlIKlHatS6WWYgCRFmRDng
c:\python37\lib\site-packages\spotdl\handle.py:57: YAMLLoadWarning: calling yaml.load() without Loader=... is deprecated, as the default Loader is unsafe. Please read https://msg.pyyaml.org/load for full details.
cfg = yaml.load(ymlfile)
INFO: Nok From the Future -New England (http://www.youtube.com/watch?v=rp5zcYnE9N4)
16,774 Bytes [100.00%] received. Rate: [ 256 KB/s]. ETA: [0 secs]
INFO: Converting NOK from the Future - New England.m4a to mp3
INFO: Applying metadata
Traceback (most recent call last):
File "c:\python37\lib\site-packages\mutagen\_util.py", line 235, in _openfile
fileobj = open(filename, "rb+" if writable else "rb")
FileNotFoundError: [Errno 2] No such file or directory: 'C:\\Users\\Saeed\\Music\\NOK from the Future - New England.mp3'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "c:\python37\lib\runpy.py", line 193, in _run_module_as_main
"__main__", mod_spec)
File "c:\python37\lib\runpy.py", line 85, in _run_code
exec(code, run_globals)
File "C:\Python37\Scripts\spotdl.exe\__main__.py", line 9, in <module>
File "c:\python37\lib\site-packages\spotdl\spotdl.py", line 58, in main
match_args()
File "c:\python37\lib\site-packages\spotdl\spotdl.py", line 28, in match_args
track_dl.download_single()
File "c:\python37\lib\site-packages\spotdl\downloader.py", line 115, in download_single
return self._download_single(songname)
File "c:\python37\lib\site-packages\spotdl\downloader.py", line 140, in _download_single
os.path.join(const.args.folder, output_song), self.meta_tags
File "c:\python37\lib\site-packages\spotdl\metadata.py", line 36, in embed
return embed.as_mp3()
File "c:\python37\lib\site-packages\spotdl\metadata.py", line 58, in as_mp3
audiofile = EasyID3(music_file)
File "c:\python37\lib\site-packages\mutagen\easyid3.py", line 170, in __init__
self.load(filename)
File "c:\python37\lib\site-packages\mutagen\_util.py", line 169, in wrapper
return func(*args, **kwargs)
File "c:\python37\lib\site-packages\mutagen\_util.py", line 139, in wrapper
writable, create) as h:
File "c:\python37\lib\contextlib.py", line 112, in __enter__
return next(self.gen)
File "c:\python37\lib\site-packages\mutagen\_util.py", line 256, in _openfile
raise MutagenError(e)
mutagen.MutagenError: [Errno 2] No such file or directory: 'C:\\Users\\Saeed\\Music\\NOK from the Future - New England.mp3'
and after installing PR:
$ spotdl --song https://open.spotify.com/track/25ht9mCmiaXIENR1OqEn0C?si=DlIKlHatS6WWYgCRFmRDng
INFO: Nok From the Future -New England (http://www.youtube.com/watch?v=rp5zcYnE9N4)
2,694,021 Bytes [100.00%] received. Rate: [ 735 KB/s]. ETA: [0 secs]
INFO: Converting NOK from the Future - New England.m4a to mp3
INFO: Applying metadata
Nice work dude, Thanks
@SaeedSheikhi Good to know! I also tested it on my other machine and on Android with Termux. Downloads that failed earlier seem to be working properly now.
I'll go ahead and publish v1.2.1.
Can confirm it works here as well. Thanks!
I've released v1.2.1! Update your installation with:
$ pip3 install spotdl -U
and everything should work properly now.
At start I would like to emphasize that my spotdl is working fine and I know how to write correct commands.
Unfortunately for some tracks I get error described as above (mutagen, file not found).
I attach file (tracklist.txt) with four tracks causing this crash.
My call in terminal:
spotdl -l tracklist.txt -f ./
@sephuxeresh I was able to download all of the four tracks without an error. Could you please run:
$ spotdl -l tracklist.txt -f ./ --log-level=debug
and paste the output here?
Also, what is the output of:
$ spotdl --version
?
My bad, I didn't see the last line You've made 1.2.1 version. All is fine.
i think something is broken on -f command, before update to 1.2.1 i could use -f for --playlist and set a custom directory that .txt file saved into.
but unfortunately it seems after update, spotdl is forcing to write .txt in current(default, right?) directory where script executing is happening and ignore -f command.
tested on Windows 10, python 3.7.2 & Ubuntu 16.04-1, Pyhton 3.5. and result is the same.
@SaeedSheikhi There was a new option--write-to <path/to/file> introduced in https://github.com/ritiek/spotify-downloader/pull/507 that you could use. However, there isn't way to use both the default playlist name for the .txt file (which gets automatically generated by spotdl) and save the .txt file to a different directory. I'll push a commit to address both these soon.
I had to remove -f option for affecting path to where .txt file was written as without passing -f, the .txt file would get written to the default directory where the music gets downloaded. And that could cause confusion to where were .txt files were being written if -f option wasn't used!
@ritiek Yeap -f is not working for --playlist anymore, and I fixed that by using --write-to, but there was a difference, -f will handle mkdir recursively on its own, but with --write-to I must mkdir first then exec script to save .txt file in my custom directory, anyway problem is solved, thank you buddy.
this library is nice, I would love to know python to help and contribute, but currently i just code in node.js. :((
cheers for your hard work 🍻
I'll close this as fixed. By the way, the issue posted in the original post is different than what this issue transformed into. However, the original issue no longer seems to be relevant any more. Please open a new issue if that problem still persists.
@ParsaFakhar a possible work-around could be using the
--avconvargument, just make sure to have it installed. On Ubuntu I used:sudo apt-get install libav-toolsand it's working perfectly 👍According to what I read, the problem must be related to the version of ffmpeg, as posts on the forums mentioned something about ffmpeg _being deprecated_ or something, and other posts commented that AvConv is just a fork from ffmpeg.... But in the end, it works!
Hope it helps 😉
Thanks Dude!
is this resolved?
I have the latest spotdl 1.2.6 debian 9 and still
sudo spotdl --song "ncs - spectre" --avconv
INFO: Alan Walker - Spectre [NCS Release] (http://www.youtube.com/watch?v=AOeY-nDp7hI)
WARNING: "Alan Walker - Spectre.mp3" already exists
INFO: "Alan Walker - Spectre.mp3" has already been downloaded. Re-download? (y/N):
y
INFO: Overwriting "Alan Walker - Spectre.mp3"
3,659,411.0 Bytes [100.00%] received. Rate: [32748 KB/s]. ETA: [0 secs]
INFO: Converting Alan Walker - Spectre.m4a to mp3
INFO: Applying metadata
Traceback (most recent call last):
File "/usr/local/lib/python3.5/dist-packages/mutagen/_util.py", line 169, in wrapper
return func(*args, **kwargs)
File "/usr/local/lib/python3.5/dist-packages/mutagen/id3/_tags.py", line 57, in init
data = fileobj.read(10)
PermissionError: [Errno 1] Operation not permitted
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/local/lib/python3.5/dist-packages/mutagen/_util.py", line 259, in _openfile
yield FileThing(fileobj, filename, filename)
File "/usr/local/lib/python3.5/dist-packages/mutagen/_util.py", line 140, in wrapper
return func(self, h, *args, **kwargs)
File "/usr/local/lib/python3.5/dist-packages/mutagen/easyid3.py", line 194, in save
padding=padding)
File "/usr/local/lib/python3.5/dist-packages/mutagen/_util.py", line 169, in wrapper
return func(*args, **kwargs)
File "/usr/local/lib/python3.5/dist-packages/mutagen/_util.py", line 140, in wrapper
return func(self, h, *args, **kwargs)
File "/usr/local/lib/python3.5/dist-packages/mutagen/id3/_file.py", line 257, in save
header = ID3Header(filething.fileobj)
File "/usr/local/lib/python3.5/dist-packages/mutagen/_util.py", line 173, in wrapper
reraise(exc_dest, err, sys.exc_info()[2])
File "/usr/local/lib/python3.5/dist-packages/mutagen/_compat.py", line 88, in reraise
raise tp(value).with_traceback(tb)
File "/usr/local/lib/python3.5/dist-packages/mutagen/_util.py", line 169, in wrapper
return func(*args, **kwargs)
File "/usr/local/lib/python3.5/dist-packages/mutagen/id3/_tags.py", line 57, in init
data = fileobj.read(10)
mutagen.id3._util.error: [Errno 1] Operation not permitted
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/local/bin/spotdl", line 11, in
sys.exit(main())
File "/usr/local/lib/python3.5/dist-packages/spotdl/spotdl.py", line 68, in main
match_args()
File "/usr/local/lib/python3.5/dist-packages/spotdl/spotdl.py", line 28, in match_args
track_dl.download_single()
File "/usr/local/lib/python3.5/dist-packages/spotdl/downloader.py", line 120, in download_single
return self._download_single(songname)
File "/usr/local/lib/python3.5/dist-packages/spotdl/downloader.py", line 146, in _download_single
os.path.join(const.args.folder, output_song), self.meta_tags
File "/usr/local/lib/python3.5/dist-packages/spotdl/metadata.py", line 36, in embed
return embed.as_mp3()
File "/usr/local/lib/python3.5/dist-packages/spotdl/metadata.py", line 73, in as_mp3
audiofile.save(v2_version=3)
File "/usr/local/lib/python3.5/dist-packages/mutagen/_util.py", line 140, in wrapper
return func(self, h, *args, **kwargs)
File "/usr/lib/python3.5/contextlib.py", line 77, in exit
self.gen.throw(type, value, traceback)
File "/usr/local/lib/python3.5/dist-packages/mutagen/_util.py", line 268, in _openfile
raise MutagenError(e)
PermissionError: [Errno 1] Operation not permitted
Most helpful comment
I've released v1.2.1! Update your installation with:
and everything should work properly now.