summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorOmar Roth <omarroth@hotmail.com>2018-10-13 20:01:58 -0500
committerOmar Roth <omarroth@hotmail.com>2018-10-13 20:01:58 -0500
commitf88697541caf337bf068aa5e7db297a015336d3d (patch)
tree5e1faa1376332947dd7531847d35916f60693101
parent5eefab62fdd119037d1493a18eb618e3ee780269 (diff)
downloadinvidious-f88697541caf337bf068aa5e7db297a015336d3d.tar.gz
invidious-f88697541caf337bf068aa5e7db297a015336d3d.tar.bz2
invidious-f88697541caf337bf068aa5e7db297a015336d3d.zip
Add author_thumbnail to '/api/v1/videos'
-rw-r--r--config/sql/videos.sql1
-rw-r--r--src/invidious.cr15
-rw-r--r--src/invidious/videos.cr31
3 files changed, 41 insertions, 6 deletions
diff --git a/config/sql/videos.sql b/config/sql/videos.sql
index 2a02ccdf..b94405e9 100644
--- a/config/sql/videos.sql
+++ b/config/sql/videos.sql
@@ -23,6 +23,7 @@ CREATE TABLE public.videos
genre_url text COLLATE pg_catalog."default",
license text COLLATE pg_catalog."default",
sub_count_text text COLLATE pg_catalog."default",
+ author_thumbnail text COLLATE pg_catalog."default",
CONSTRAINT videos_pkey PRIMARY KEY (id)
)
WITH (
diff --git a/src/invidious.cr b/src/invidious.cr
index 74c70820..b5312e5b 100644
--- a/src/invidious.cr
+++ b/src/invidious.cr
@@ -2298,6 +2298,21 @@ get "/api/v1/videos/:id" do |env|
json.field "author", video.author
json.field "authorId", video.ucid
json.field "authorUrl", "/channel/#{video.ucid}"
+
+ json.field "authorThumbnails" do
+ json.array do
+ qualities = [32, 48, 76, 100, 176, 512]
+
+ qualities.each do |quality|
+ json.object do
+ json.field "url", video.author_thumbnail.gsub("=s48-", "=s#{quality}-")
+ json.field "width", quality
+ json.field "height", quality
+ end
+ end
+ end
+ end
+
json.field "subCountText", video.sub_count_text
json.field "lengthSeconds", video.info["length_seconds"].to_i
diff --git a/src/invidious/videos.cr b/src/invidious/videos.cr
index 864466a3..28b0922b 100644
--- a/src/invidious/videos.cr
+++ b/src/invidious/videos.cr
@@ -457,9 +457,10 @@ class Video
genre: String,
genre_url: String,
license: String,
- sub_count_text: {
+ sub_count_text: String,
+ author_thumbnail: {
type: String,
- default: "0",
+ default: "",
},
})
end
@@ -491,12 +492,20 @@ def get_video(id, db, proxies = {} of String => Array({ip: String, port: Int32})
video = fetch_video(id, proxies)
video_array = video.to_a
+ # Migration point
+ video_array = video_array[0..-2]
+
args = arg_array(video_array[1..-1], 2)
+ # Migration point
+ # db.exec("UPDATE videos SET (info,updated,title,views,likes,dislikes,wilson_score,\
+ # published,description,language,author,ucid,allowed_regions,is_family_friendly,\
+ # genre,genre_url,license,sub_count_text,author_thumbnail)\
+ # = (#{args}) WHERE id = $1", video_array)
db.exec("UPDATE videos SET (info,updated,title,views,likes,dislikes,wilson_score,\
- published,description,language,author,ucid,allowed_regions,is_family_friendly,\
- genre,genre_url,license,sub_count_text)\
- = (#{args}) WHERE id = $1", video_array)
+ published,description,language,author,ucid,allowed_regions,is_family_friendly,\
+ genre,genre_url,license,sub_count_text)\
+ = (#{args}) WHERE id = $1", video_array)
rescue ex
db.exec("DELETE FROM videos * WHERE id = $1", id)
raise ex
@@ -506,6 +515,9 @@ def get_video(id, db, proxies = {} of String => Array({ip: String, port: Int32})
video = fetch_video(id, proxies)
video_array = video.to_a
+ # Migration point
+ video_array = video_array[0..-2]
+
args = arg_array(video_array)
db.exec("INSERT INTO videos VALUES (#{args}) ON CONFLICT (id) DO NOTHING", video_array)
@@ -673,8 +685,15 @@ def fetch_video(id, proxies)
sub_count_text = "0"
end
+ author_thumbnail = html.xpath_node(%(//img[@alt="#{author}"]))
+ if author_thumbnail
+ author_thumbnail = author_thumbnail["data-thumb"]
+ else
+ author_thumbnail = ""
+ end
+
video = Video.new(id, info, Time.now, title, views, likes, dislikes, wilson_score, published, description,
- nil, author, ucid, allowed_regions, is_family_friendly, genre, genre_url, license, sub_count_text)
+ nil, author, ucid, allowed_regions, is_family_friendly, genre, genre_url, license, sub_count_text, author_thumbnail)
return video
end