Comments (1)
Google is definitely messing with this currently. Now instead of not including the fixedColumns
object in the response, it's now included but the duration
is set to ' '
which breaks the parser:
.venv/lib/python3.12/site-packages/ytmusicapi/mixins/uploads.py:59: in get_library_upload_songs
songs = parse_uploaded_items(results["contents"])
.venv/lib/python3.12/site-packages/ytmusicapi/parsers/uploads.py:39: in parse_uploaded_items
"duration_seconds": parse_duration(duration),
.venv/lib/python3.12/site-packages/ytmusicapi/parsers/_utils.py:67: in parse_duration
seconds = sum(multiplier * int(time) for multiplier, time in mapped_increments)
E ValueError: invalid literal for int() with base 10: ' '
And although I said that this only happens right after uploading a new song, I had it happen on a user that had about 10k uploaded songs that had been sitting there for years, so I guess it's possible for any uploaded song to have a blank duration.
If I have time I will contribute a PR that will probably look something like this to cover both cases if there are no fixedColums and if the duration is just whitespace or empty string:
def parse_uploaded_items(results):
...
...
duration = None
if "fixedColumns" in data:
duration = get_fixed_column_item(data, 0)["text"]["runs"][0]["text"]
def parse_duration(duration):
if not duration or not duration.strip():
return None
mapped_increments = zip([1, 60, 3600], reversed(duration.split(":")))
seconds = sum(multiplier * int(time) for multiplier, time in mapped_increments)
return seconds
from ytmusicapi.
Related Issues (20)
- KeyError: "Unable to find 'menu' using path HOT 3
- parsers/browsing.py:parse_album() gives incorrect value for "year" HOT 5
- YTMusic::get_artist_albums raises KeyError HOT 1
- Add a get_artist_songs just like get_artist_albums HOT 1
- get_playlist fails if some track has invalid duration_seconds
- get_artist only returns about 10 songs and 10 albums at max HOT 1
- Edge case in edit_playlist: moving a title to the end of the playlist HOT 3
- album information on playlist tracks getting wrongly assigned on collaborative playlists HOT 4
- keyError when using get_playlist() HOT 9
- signatureCipher when requesting for get_song method HOT 4
- `get_playlist` does not work for all languages HOT 1
- `get_playlist` does not work for all languages
- YouTube music changed their UI of playlist page HOT 2
- get_playlist doen't return info about playlist author HOT 1
- get_album() fails if the album artist is 'Various Artists' HOT 1
- KeyError: 'singleColumnBrowseResultsRenderer' HOT 3
- `get_album` returns invalid artist data for track items in 1.7.4 HOT 1
- `get_playlist` returns `None` for track title HOT 3
- Search Continuations
- KeyError: 'thumbnails' when using `get_playlist` HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from ytmusicapi.