diff options
| author | Samantaz Fox <coding@samantaz.fr> | 2022-01-20 16:00:47 +0100 |
|---|---|---|
| committer | Samantaz Fox <coding@samantaz.fr> | 2022-01-28 02:19:53 +0100 |
| commit | fa99c9aa85ac9f0b4dc0d705b8e62a50cd4cc9a3 (patch) | |
| tree | bb9562ce05c0f799d8fa0f743e91fa98b218cee5 /src | |
| parent | 2d949834e976d433899341e46c72e7d8514ce50f (diff) | |
| download | invidious-fa99c9aa85ac9f0b4dc0d705b8e62a50cd4cc9a3.tar.gz invidious-fa99c9aa85ac9f0b4dc0d705b8e62a50cd4cc9a3.tar.bz2 invidious-fa99c9aa85ac9f0b4dc0d705b8e62a50cd4cc9a3.zip | |
Use '.dig?()' in playlist parsing
Diffstat (limited to 'src')
| -rw-r--r-- | src/invidious/playlists.cr | 22 |
1 files changed, 14 insertions, 8 deletions
diff --git a/src/invidious/playlists.cr b/src/invidious/playlists.cr index ecebba91..afbc8624 100644 --- a/src/invidious/playlists.cr +++ b/src/invidious/playlists.cr @@ -331,10 +331,10 @@ def fetch_playlist(plid : String) initial_data = YoutubeAPI.browse("VL" + plid, params: "") - playlist_sidebar_renderer = initial_data["sidebar"]?.try &.["playlistSidebarRenderer"]?.try &.["items"]? + playlist_sidebar_renderer = initial_data.dig?("sidebar", "playlistSidebarRenderer", "items") raise InfoException.new("Could not extract playlistSidebarRenderer.") if !playlist_sidebar_renderer - playlist_info = playlist_sidebar_renderer[0]["playlistSidebarPrimaryInfoRenderer"]? + playlist_info = playlist_sidebar_renderer.dig?(0, "playlistSidebarPrimaryInfoRenderer") raise InfoException.new("Could not extract playlist info") if !playlist_info title = playlist_info.dig?("title", "runs", 0, "text").try &.as_s || "" @@ -347,12 +347,15 @@ def fetch_playlist(plid : String) description_html = desc_item.try &.["runs"]?.try &.as_a .try { |run| content_to_comment_html(run).try &.to_s } || "<p></p>" - thumbnail = playlist_info["thumbnailRenderer"]?.try &.["playlistVideoThumbnailRenderer"]? - .try &.["thumbnail"]["thumbnails"][0]["url"]?.try &.as_s + thumbnail = playlist_info.dig?( + "thumbnailRenderer", "playlistVideoThumbnailRenderer", + "thumbnail", "thumbnails", 0, "url" + ).try &.as_s views = 0_i64 updated = Time.utc video_count = 0 + playlist_info["stats"]?.try &.as_a.each do |stat| text = stat["runs"]?.try &.as_a.map(&.["text"].as_s).join("") || stat["simpleText"]?.try &.as_s next if !text @@ -371,12 +374,15 @@ def fetch_playlist(plid : String) author_thumbnail = "" ucid = "" else - author_info = playlist_sidebar_renderer[1]["playlistSidebarSecondaryInfoRenderer"]?.try &.["videoOwner"]["videoOwnerRenderer"]? + author_info = playlist_sidebar_renderer[1].dig?( + "playlistSidebarSecondaryInfoRenderer", "videoOwner", "videoOwnerRenderer" + ) + raise InfoException.new("Could not extract author info") if !author_info - author = author_info["title"]["runs"][0]["text"]?.try &.as_s || "" - author_thumbnail = author_info["thumbnail"]["thumbnails"][0]["url"]?.try &.as_s || "" - ucid = author_info["title"]["runs"][0]["navigationEndpoint"]["browseEndpoint"]["browseId"]?.try &.as_s || "" + author = author_info.dig?("title", "runs", 0, "text").try &.as_s || "" + author_thumbnail = author_info.dig?("thumbnail", "thumbnails", 0, "url").try &.as_s || "" + ucid = author_info.dig?("title", "runs", 0, "navigationEndpoint", "browseEndpoint", "browseId").try &.as_s || "" end return Playlist.new({ |
