KeyError: 'dislike_count' in pafy
snyamwong opened this issue · comments
I think the API no longer returns dislike counts (given the recent Youtube fiasco with removing dislikes...), and now pafy will throw an exception when playing a video.
Traceback (most recent call last):
File "/usr/local/Cellar/python@3.9/3.9.8/Frameworks/Python.framework/Versions/3.9/lib/python3.9/threading.py", line 973, in _bootstrap_inner
self.run()
File "/usr/local/Cellar/python@3.9/3.9.8/Frameworks/Python.framework/Versions/3.9/lib/python3.9/threading.py", line 910, in run
self._target(*self._args, **self._kwargs)
File "/usr/local/lib/python3.9/site-packages/mps_youtube/streams.py", line 180, in _preload
streamlist = get(song)
File "/usr/local/lib/python3.9/site-packages/mps_youtube/streams.py", line 51, in get
p = util.get_pafy(vid, force=force, callback=callback)
File "/usr/local/lib/python3.9/site-packages/mps_youtube/util.py", line 221, in get_pafy
p = pafy.new(ytid, callback=callback_fn)
File "/usr/local/lib/python3.9/site-packages/pafy/pafy.py", line 124, in new
return Pafy(url, basic, gdata, size, callback, ydl_opts=ydl_opts)
File "/usr/local/lib/python3.9/site-packages/pafy/backend_youtube_dl.py", line 31, in __init__
super(YtdlPafy, self).__init__(*args, **kwargs)
File "/usr/local/lib/python3.9/site-packages/pafy/backend_shared.py", line 97, in __init__
self._fetch_basic()
File "/usr/local/lib/python3.9/site-packages/pafy/backend_youtube_dl.py", line 54, in _fetch_basic
self._dislikes = self._ydl_info['dislike_count']
KeyError: 'dislike_count'
Issue / Suggestion
The easiest fix is to go into site-packages/pafy/backend_youtube_dl.py
and comment out this line
#self._dislikes = self._ydl_info['dislike_count']
Your Environment
mpsyt version : 0.2.8
notes : released 17 February 2018
pafy version : 0.5.5 (youtube-dl backend)
youtube-dl version : 2021.06.06
Python version : 3.9.8 (main, Nov 10 2021, 09:21:22)
[Clang 13.0.0 (clang-1300.0.29.3)]
Processor : i386
Machine type : x86_64
Architecture : 64bit,
Platform : macOS-11.4-x86_64-i386-64bit
sys.stdout.enc : utf-8
default enc : utf-8
Config dir : /Users/twong/.config/mps-youtube
env:TERM : xterm-256color
env:SHELL : /bin/zsh
env:LANG : en_US.UTF-8
mpv 0.34.0 Copyright © 2000-2021 mpv/MPlayer/mplayer2 projects
built on Tue Nov 16 13:41:55 UTC 2021
FFmpeg library versions:
libavutil 56.70.100
libavcodec 58.134.100
libavformat 58.76.100
libswscale 5.9.100
libavfilter 7.110.100
libswresample 3.9.100
FFmpeg version: 4.4.1
It looks like pafy already has a pull request for this, which takes the same approach: mps-youtube/pafy#305
i found the error and solution on my own, i was going to create a pull request for their fix on github. thx
i found the error and solution on my own, i was going to create a pull request for their fix on github. thx
how do you fix the problem ?
Thanks man
It looks like pafy already has a pull request for this, which takes the same approach: mps-youtube/pafy#305
But is it going to make in the repo and a release any time soon? This repo hasn't seen any commits in a while, is there some fork of it that is maintained?
@Ciliane there's a more-maintained fork at https://github.com/otisdog8/termitube/ but they haven't merged their PR yet either
@yardenac That repo is a fork of mps-youtube, but the edits need to take place in both that and pafy, which are maintained as separate projects. The pull request I linked to is the one for the pafy repo. So far as I know, there isn't a fork for that one yet.
As for termitube, it hasn't had any commits for about two and a half months either, and the project doesn't have an Issues tab so it's difficult to report issues with it. Hopefully they'll accept the pull request, but as I say, pafy needs to be updated as well.
was fixed iamtalhaasghar#3.