diff options
| author | Samantaz Fox <coding@samantaz.fr> | 2023-03-13 00:09:08 +0100 |
|---|---|---|
| committer | Samantaz Fox <coding@samantaz.fr> | 2023-03-13 00:09:08 +0100 |
| commit | 6837e4292829ee0891c73108096b806b63ab1506 (patch) | |
| tree | 48f797697e997990781367663cfd0918d821c9fa /src | |
| parent | b4806e7ba9129dbfac5c43b3803d4cb1ee649a4c (diff) | |
| parent | ffcc837c2adcb4faac104c08c32060a475730e2b (diff) | |
| download | invidious-6837e4292829ee0891c73108096b806b63ab1506.tar.gz invidious-6837e4292829ee0891c73108096b806b63ab1506.tar.bz2 invidious-6837e4292829ee0891c73108096b806b63ab1506.zip | |
Video page: add song title + remove song license on music videos (#3680)
Diffstat (limited to 'src')
| -rw-r--r-- | src/invidious/jsonify/api_v1/video_json.cr | 15 | ||||
| -rw-r--r-- | src/invidious/videos.cr | 7 | ||||
| -rw-r--r-- | src/invidious/videos/music.cr | 3 | ||||
| -rw-r--r-- | src/invidious/videos/parser.cr | 10 | ||||
| -rw-r--r-- | src/invidious/views/watch.ecr | 6 |
5 files changed, 35 insertions, 6 deletions
diff --git a/src/invidious/jsonify/api_v1/video_json.cr b/src/invidious/jsonify/api_v1/video_json.cr index a2b1a35c..fe4b5223 100644 --- a/src/invidious/jsonify/api_v1/video_json.cr +++ b/src/invidious/jsonify/api_v1/video_json.cr @@ -197,6 +197,21 @@ module Invidious::JSONify::APIv1 end end + if !video.music.empty? + json.field "musicTracks" do + json.array do + video.music.each do |music| + json.object do + json.field "song", music.song + json.field "artist", music.artist + json.field "album", music.album + json.field "license", music.license + end + end + end + end + end + json.field "recommendedVideos" do json.array do video.related_videos.each do |rv| diff --git a/src/invidious/videos.cr b/src/invidious/videos.cr index 436ac82d..0038a97a 100644 --- a/src/invidious/videos.cr +++ b/src/invidious/videos.cr @@ -249,7 +249,12 @@ struct Video def music : Array(VideoMusic) info["music"].as_a.map { |music_json| - VideoMusic.new(music_json["album"].as_s, music_json["artist"].as_s, music_json["license"].as_s) + VideoMusic.new( + music_json["song"].as_s, + music_json["album"].as_s, + music_json["artist"].as_s, + music_json["license"].as_s + ) } end diff --git a/src/invidious/videos/music.cr b/src/invidious/videos/music.cr index 402ae46f..08d88a3e 100644 --- a/src/invidious/videos/music.cr +++ b/src/invidious/videos/music.cr @@ -3,10 +3,11 @@ require "json" struct VideoMusic include JSON::Serializable + property song : String property album : String property artist : String property license : String - def initialize(@album : String, @artist : String, @license : String) + def initialize(@song : String, @album : String, @artist : String, @license : String) end end diff --git a/src/invidious/videos/parser.cr b/src/invidious/videos/parser.cr index cf43f1be..7cfc7ea7 100644 --- a/src/invidious/videos/parser.cr +++ b/src/invidious/videos/parser.cr @@ -325,17 +325,25 @@ def parse_video_info(video_id : String, player_response : Hash(String, JSON::Any album = nil music_license = nil + # Used when the video has multiple songs + if song_title = music_desc.dig?("carouselLockupRenderer", "videoLockup", "compactVideoRenderer", "title") + # "simpleText" for plain text / "runs" when song has a link + song = song_title["simpleText"]? || song_title.dig("runs", 0, "text") + end + music_desc.dig?("carouselLockupRenderer", "infoRows").try &.as_a.each do |desc| desc_title = extract_text(desc.dig?("infoRowRenderer", "title")) if desc_title == "ARTIST" artist = extract_text(desc.dig?("infoRowRenderer", "defaultMetadata")) + elsif desc_title == "SONG" + song = extract_text(desc.dig?("infoRowRenderer", "defaultMetadata")) elsif desc_title == "ALBUM" album = extract_text(desc.dig?("infoRowRenderer", "defaultMetadata")) elsif desc_title == "LICENSES" music_license = extract_text(desc.dig?("infoRowRenderer", "expandedMetadata")) end end - music_list << VideoMusic.new(album.to_s, artist.to_s, music_license.to_s) + music_list << VideoMusic.new(song.to_s, album.to_s, artist.to_s, music_license.to_s) end # Author infos diff --git a/src/invidious/views/watch.ecr b/src/invidious/views/watch.ecr index 666eb3b0..ce92a546 100644 --- a/src/invidious/views/watch.ecr +++ b/src/invidious/views/watch.ecr @@ -248,9 +248,9 @@ we're going to need to do it here in order to allow for translations. <div id="music-description-box"> <% video.music.each do |music| %> <div class="music-item"> - <p id="music-artist"><%= translate(locale, "Artist: ") %><%= music.artist %></p> - <p id="music-album"><%= translate(locale, "Album: ") %><%= music.album %></p> - <p id="music-license"><%= translate(locale, "License: ") %><%= music.license %></p> + <p class="music-song"><%= translate(locale, "Song: ") %><%= music.song %></p> + <p class="music-artist"><%= translate(locale, "Artist: ") %><%= music.artist %></p> + <p class="music-album"><%= translate(locale, "Album: ") %><%= music.album %></p> </div> <% end %> </div> |
