This commit is contained in:
Agustin Ferrari 2019-02-01 20:15:34 -03:00
commit c0e73e71c5
7 changed files with 601 additions and 335 deletions

View file

@ -1128,21 +1128,21 @@ post "/preferences" do |env|
listen = listen == "on"
speed = env.params.body["speed"]?.try &.as(String).to_f?
speed ||= 1.0
speed ||= DEFAULT_USER_PREFERENCES.speed
quality = env.params.body["quality"]?.try &.as(String)
quality ||= "hd720"
quality ||= DEFAULT_USER_PREFERENCES.quality
volume = env.params.body["volume"]?.try &.as(String).to_i?
volume ||= 100
volume ||= DEFAULT_USER_PREFERENCES.volume
comments_0 = env.params.body["comments_0"]?.try &.as(String) || "youtube"
comments_1 = env.params.body["comments_1"]?.try &.as(String) || ""
comments_0 = env.params.body["comments_0"]?.try &.as(String) || DEFAULT_USER_PREFERENCES.comments[0]
comments_1 = env.params.body["comments_1"]?.try &.as(String) || DEFAULT_USER_PREFERENCES.comments[1]
comments = [comments_0, comments_1]
captions_0 = env.params.body["captions_0"]?.try &.as(String) || ""
captions_1 = env.params.body["captions_1"]?.try &.as(String) || ""
captions_2 = env.params.body["captions_2"]?.try &.as(String) || ""
captions_0 = env.params.body["captions_0"]?.try &.as(String) || DEFAULT_USER_PREFERENCES.captions[0]
captions_1 = env.params.body["captions_1"]?.try &.as(String) || DEFAULT_USER_PREFERENCES.captions[1]
captions_2 = env.params.body["captions_2"]?.try &.as(String) || DEFAULT_USER_PREFERENCES.captions[2]
captions = [captions_0, captions_1, captions_2]
related_videos = env.params.body["related_videos"]?.try &.as(String)
@ -1154,7 +1154,7 @@ post "/preferences" do |env|
redirect_feed = redirect_feed == "on"
locale = env.params.body["locale"]?.try &.as(String)
locale ||= "en-US"
locale ||= DEFAULT_USER_PREFERENCES.locale
dark_mode = env.params.body["dark_mode"]?.try &.as(String)
dark_mode ||= "off"
@ -1165,10 +1165,10 @@ post "/preferences" do |env|
thin_mode = thin_mode == "on"
max_results = env.params.body["max_results"]?.try &.as(String).to_i?
max_results ||= 40
max_results ||= DEFAULT_USER_PREFERENCES.max_results
sort = env.params.body["sort"]?.try &.as(String)
sort ||= "published"
sort ||= DEFAULT_USER_PREFERENCES.sort
latest_only = env.params.body["latest_only"]?.try &.as(String)
latest_only ||= "off"

View file

@ -79,36 +79,36 @@ class Preferences
autoplay: Bool,
continue: {
type: Bool,
default: false,
default: DEFAULT_USER_PREFERENCES.continue,
},
listen: {
type: Bool,
default: false,
default: DEFAULT_USER_PREFERENCES.listen,
},
speed: Float32,
quality: String,
volume: Int32,
comments: {
type: Array(String),
default: ["youtube", ""],
default: DEFAULT_USER_PREFERENCES.comments,
converter: StringToArray,
},
captions: {
type: Array(String),
default: ["", "", ""],
default: DEFAULT_USER_PREFERENCES.captions,
},
redirect_feed: {
type: Bool,
default: false,
default: DEFAULT_USER_PREFERENCES.redirect_feed,
},
related_videos: {
type: Bool,
default: true,
default: DEFAULT_USER_PREFERENCES.related_videos,
},
dark_mode: Bool,
thin_mode: {
type: Bool,
default: false,
default: DEFAULT_USER_PREFERENCES.thin_mode,
},
max_results: Int32,
sort: String,
@ -116,11 +116,11 @@ class Preferences
unseen_only: Bool,
notifications_only: {
type: Bool,
default: false,
default: DEFAULT_USER_PREFERENCES.notifications_only,
},
locale: {
type: String,
default: "en-US",
default: DEFAULT_USER_PREFERENCES.locale,
},
})
end

View file

@ -633,6 +633,10 @@ def fetch_video(id, proxies, region)
end
end
if info["errorcode"]?.try &.== "2"
raise "Video unavailable."
end
title = info["title"]
author = info["author"]
ucid = info["ucid"]
@ -741,14 +745,14 @@ def process_video_params(query, preferences)
volume ||= preferences.volume
end
autoplay ||= 0
continue ||= 0
listen ||= 0
preferred_captions ||= [] of String
quality ||= "hd720"
speed ||= 1
video_loop ||= 0
volume ||= 100
autoplay ||= DEFAULT_USER_PREFERENCES.autoplay.to_unsafe
continue ||= DEFAULT_USER_PREFERENCES.continue.to_unsafe
listen ||= DEFAULT_USER_PREFERENCES.listen.to_unsafe
preferred_captions ||= DEFAULT_USER_PREFERENCES.captions
quality ||= DEFAULT_USER_PREFERENCES.quality
speed ||= DEFAULT_USER_PREFERENCES.speed
video_loop ||= DEFAULT_USER_PREFERENCES.video_loop.to_unsafe
volume ||= DEFAULT_USER_PREFERENCES.volume
autoplay = autoplay == 1
continue = continue == 1

View file

@ -115,37 +115,25 @@ var player = videojs("player", options, function() {
});
player.on('error', function(event) {
if (player.error().code === 2) {
console.log("An error occured in the player, reloading...");
if (player.error().code === 2 || player.error().code === 4) {
setInterval(setTimeout(function (event) {
console.log("An error occured in the player, reloading...");
var currentTime = player.currentTime();
var playbackRate = player.playbackRate();
player.load();
if (currentTime > 0.5) {
currentTime -= 0.5;
}
player.currentTime(currentTime);
player.playbackRate(playbackRate);
player.play()
} else if (player.error().code === 4) {
console.log("Detected invalid source, removing...");
var currentTime = player.currentTime();
var sources = player.options().sources;
var currentTime = player.currentTime();
var playbackRate = player.playbackRate();
var paused = player.paused()
for (var i = 0; i < sources.length; i++) {
if (sources[i].src === player.currentSource().src) {
sources.splice(i, 1);
break
player.load();
if (currentTime > 0.5) {
currentTime -= 0.5;
}
};
player.load();
if (currentTime > 0.5) {
currentTime -= 0.5;
}
player.currentTime(currentTime);
player.src(sources);
player.play();
player.currentTime(currentTime);
player.playbackRate(playbackRate);
if (!paused) {
player.play();
}
}, 5000), 5000);
}
});

View file

@ -141,7 +141,7 @@
</div>
</div>
</div>
<% if preferences && preferences.related_videos || plid %>
<% if !preferences || preferences && preferences.related_videos || plid %>
<div class="pure-u-1 pure-u-md-1-5">
<% if plid %>
<div id="playlist" class="h-box">