Add support for default channel banners

This commit is contained in:
Omar Roth 2019-06-30 12:59:38 -05:00
parent 556d5b0ca5
commit 48ad744ebf
No known key found for this signature in database
GPG key ID: B8254FB7EC3D37F2
4 changed files with 39 additions and 29 deletions

View file

@ -3565,23 +3565,25 @@ get "/api/v1/channels/:ucid" do |env|
json.field "authorBanners" do json.field "authorBanners" do
json.array do json.array do
qualities = { if channel.banner
{width: 2560, height: 424}, qualities = {
{width: 2120, height: 351}, {width: 2560, height: 424},
{width: 1060, height: 175}, {width: 2120, height: 351},
} {width: 1060, height: 175},
qualities.each do |quality| }
json.object do qualities.each do |quality|
json.field "url", channel.banner.gsub("=w1060", "=w#{quality[:width]}") json.object do
json.field "width", quality[:width] json.field "url", channel.banner.not_nil!.gsub("=w1060", "=w#{quality[:width]}")
json.field "height", quality[:height] json.field "width", quality[:width]
json.field "height", quality[:height]
end
end end
end
json.object do json.object do
json.field "url", channel.banner.rchop("=w1060-fcrop64=1,00005a57ffffa5a8-nd-c0xffffffff-rj-k-no") json.field "url", channel.banner.not_nil!.rchop("=w1060-fcrop64=1,00005a57ffffa5a8-nd-c0xffffffff-rj-k-no")
json.field "width", 512 json.field "width", 512
json.field "height", 288 json.field "height", 288
end
end end
end end
end end
@ -3592,7 +3594,7 @@ get "/api/v1/channels/:ucid" do |env|
qualities.each do |quality| qualities.each do |quality|
json.object do json.object do
json.field "url", channel.author_thumbnail.gsub("/s100-", "/s#{quality}-") json.field "url", channel.author_thumbnail.gsub("=s100-", "=s#{quality}-")
json.field "width", quality json.field "width", quality
json.field "height", quality json.field "height", quality
end end

View file

@ -114,7 +114,7 @@ struct AboutChannel
auto_generated: Bool, auto_generated: Bool,
author_url: String, author_url: String,
author_thumbnail: String, author_thumbnail: String,
banner: String, banner: String?,
description_html: String, description_html: String,
paid: Bool, paid: Bool,
total_views: Int64, total_views: Int64,
@ -654,6 +654,10 @@ def get_about_info(ucid, locale)
banner = about.xpath_node(%q(//div[@id="gh-banner"]/style)).not_nil!.content banner = about.xpath_node(%q(//div[@id="gh-banner"]/style)).not_nil!.content
banner = "https:" + banner.match(/background-image: url\((?<url>[^)]+)\)/).not_nil!["url"] banner = "https:" + banner.match(/background-image: url\((?<url>[^)]+)\)/).not_nil!["url"]
if banner.includes? "channels/c4/default_banner"
banner = nil
end
description_html = about.xpath_node(%q(//div[contains(@class,"about-description")])).try &.to_s || "" description_html = about.xpath_node(%q(//div[contains(@class,"about-description")])).try &.to_s || ""
paid = about.xpath_node(%q(//meta[@itemprop="paid"])).not_nil!["content"] == "True" paid = about.xpath_node(%q(//meta[@itemprop="paid"])).not_nil!["content"] == "True"

View file

@ -3,13 +3,15 @@
<link rel="alternate" type="application/rss+xml" title="RSS" href="/feed/channel/<%= channel.ucid %>" /> <link rel="alternate" type="application/rss+xml" title="RSS" href="/feed/channel/<%= channel.ucid %>" />
<% end %> <% end %>
<div class="h-box"> <% if channel.banner %>
<img style="width:100%" src="/ggpht<%= URI.parse(channel.banner.gsub("=w1060", "=w1280")).full_path %>"> <div class="h-box">
</div> <img style="width:100%" src="/ggpht<%= URI.parse(channel.banner.not_nil!.gsub("=w1060", "=w1280")).full_path %>">
</div>
<div class="h-box"> <div class="h-box">
<hr> <hr>
</div> </div>
<% end %>
<div class="pure-g h-box"> <div class="pure-g h-box">
<div class="pure-u-2-3"> <div class="pure-u-2-3">

View file

@ -2,13 +2,15 @@
<title><%= channel.author %> - Invidious</title> <title><%= channel.author %> - Invidious</title>
<% end %> <% end %>
<div class="h-box"> <% if channel.banner %>
<img style="width:100%" src="/ggpht<%= URI.parse(channel.banner.gsub("=w1060", "=w1280")).full_path %>"> <div class="h-box">
</div> <img style="width:100%" src="/ggpht<%= URI.parse(channel.banner.not_nil!.gsub("=w1060", "=w1280")).full_path %>">
</div>
<div class="h-box"> <div class="h-box">
<hr> <hr>
</div> </div>
<% end %>
<div class="pure-g h-box"> <div class="pure-g h-box">
<div class="pure-u-2-3"> <div class="pure-u-2-3">