フォーク元 suwako/invidious-mod
Merge branch 'master' of github.com:iv-org/invidious
このコミットが含まれているのは:
コミット
794470b2f8
44
Makefile
44
Makefile
|
@ -89,28 +89,28 @@ distclean: clean
|
|||
# -----------------------
|
||||
|
||||
help:
|
||||
echo "Targets available in this Makefile:"
|
||||
echo ""
|
||||
echo "get-libs Fetch Crystal libraries"
|
||||
echo "invidious Build Invidious"
|
||||
echo "run Launch Invidious"
|
||||
echo ""
|
||||
echo "format Run the Crystal formatter"
|
||||
echo "test Run tests"
|
||||
echo "verify Just make sure that the code compiles, but without"
|
||||
echo " generating any binaries. Useful to search for errors"
|
||||
echo ""
|
||||
echo "clean Remove build artifacts"
|
||||
echo "distclean Remove build artifacts and libraries"
|
||||
echo ""
|
||||
echo ""
|
||||
echo "Build options available for this Makefile:"
|
||||
echo ""
|
||||
echo "RELEASE Make a release build (Default: 1)"
|
||||
echo "STATIC Link libraries statically (Default: 0)"
|
||||
echo ""
|
||||
echo "DISABLE_QUIC Disable support for QUIC (Default: 0)"
|
||||
echo "NO_DBG_SYMBOLS Strip debug symbols (Default: 0)"
|
||||
@echo "Targets available in this Makefile:"
|
||||
@echo ""
|
||||
@echo " get-libs Fetch Crystal libraries"
|
||||
@echo " invidious Build Invidious"
|
||||
@echo " run Launch Invidious"
|
||||
@echo ""
|
||||
@echo " format Run the Crystal formatter"
|
||||
@echo " test Run tests"
|
||||
@echo " verify Just make sure that the code compiles, but without"
|
||||
@echo " generating any binaries. Useful to search for errors"
|
||||
@echo ""
|
||||
@echo " clean Remove build artifacts"
|
||||
@echo " distclean Remove build artifacts and libraries"
|
||||
@echo ""
|
||||
@echo ""
|
||||
@echo "Build options available for this Makefile:"
|
||||
@echo ""
|
||||
@echo " RELEASE Make a release build (Default: 1)"
|
||||
@echo " STATIC Link libraries statically (Default: 0)"
|
||||
@echo ""
|
||||
@echo " DISABLE_QUIC Disable support for QUIC (Default: 0)"
|
||||
@echo " NO_DBG_SYMBOLS Strip debug symbols (Default: 0)"
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -35,21 +35,11 @@ if (player_data.aspect_ratio) {
|
|||
|
||||
var embed_url = new URL(location);
|
||||
embed_url.searchParams.delete('v');
|
||||
short_url = location.origin + '/' + video_data.id + embed_url.search;
|
||||
var short_url = location.origin + '/' + video_data.id + embed_url.search;
|
||||
embed_url = location.origin + '/embed/' + video_data.id + embed_url.search;
|
||||
|
||||
var save_player_pos_key = "save_player_pos";
|
||||
|
||||
var shareOptions = {
|
||||
socials: ['fbFeed', 'tw', 'reddit', 'email'],
|
||||
|
||||
url: short_url,
|
||||
title: player_data.title,
|
||||
description: player_data.description,
|
||||
image: player_data.thumbnail,
|
||||
embedCode: "<iframe id='ivplayer' width='640' height='360' src='" + embed_url + "' style='border:none;'></iframe>"
|
||||
}
|
||||
|
||||
videojs.Vhs.xhr.beforeRequest = function(options) {
|
||||
if (options.uri.indexOf('videoplayback') === -1 && options.uri.indexOf('local=true') === -1) {
|
||||
options.uri = options.uri + '?local=true';
|
||||
|
@ -59,6 +49,37 @@ videojs.Vhs.xhr.beforeRequest = function(options) {
|
|||
|
||||
var player = videojs('player', options);
|
||||
|
||||
/**
|
||||
* Function for add time argument to url
|
||||
* @param {String} url
|
||||
* @returns urlWithTimeArg
|
||||
*/
|
||||
function addCurrentTimeToURL(url) {
|
||||
var urlUsed = new URL(url);
|
||||
urlUsed.searchParams.delete('start');
|
||||
var currentTime = Math.ceil(player.currentTime());
|
||||
if (currentTime > 0)
|
||||
urlUsed.searchParams.set('t', currentTime);
|
||||
else if (urlUsed.searchParams.has('t'))
|
||||
urlUsed.searchParams.delete('t');
|
||||
return urlUsed;
|
||||
}
|
||||
|
||||
var shareOptions = {
|
||||
socials: ['fbFeed', 'tw', 'reddit', 'email'],
|
||||
|
||||
get url() {
|
||||
return addCurrentTimeToURL(short_url);
|
||||
},
|
||||
title: player_data.title,
|
||||
description: player_data.description,
|
||||
image: player_data.thumbnail,
|
||||
get embedCode() {
|
||||
return "<iframe id='ivplayer' width='640' height='360' src='" +
|
||||
addCurrentTimeToURL(embed_url) + "' style='border:none;'></iframe>";
|
||||
}
|
||||
};
|
||||
|
||||
const storage = (() => {
|
||||
try { if (localStorage.length !== -1) return localStorage; }
|
||||
catch (e) { console.info('No storage available: ' + e); }
|
||||
|
|
|
@ -21,15 +21,15 @@
|
|||
"No": "Όχι",
|
||||
"Import and Export Data": "Εισαγωγή και Εξαγωγή Δεδομένων",
|
||||
"Import": "Εισαγωγή",
|
||||
"Import Invidious data": "Εισαγωγή δεδομένων Invidious",
|
||||
"Import YouTube subscriptions": "Εισαγωγή συνδρομών YouTube",
|
||||
"Import Invidious data": "Εsαγωγή δεδομένων Invidious JSON",
|
||||
"Import YouTube subscriptions": "Εισαγωγή συνδρομών YouTube/OPML",
|
||||
"Import FreeTube subscriptions (.db)": "Εισαγωγή συνδρομών FreeTube (.db)",
|
||||
"Import NewPipe subscriptions (.json)": "Εισαγωγή συνδρομών NewPipe (.json)",
|
||||
"Import NewPipe data (.zip)": "Εισαγωγή δεδομένων NewPipe (.zip)",
|
||||
"Export": "Εξαγωγή",
|
||||
"Export subscriptions as OPML": "Εξαγωγή συνδρομών ως OPML",
|
||||
"Export subscriptions as OPML (for NewPipe & FreeTube)": "Εξαγωγή συνδρομών ως OPML (για NewPipe & FreeTube)",
|
||||
"Export data as JSON": "Εξαγωγή δεδομένων ως JSON",
|
||||
"Export data as JSON": "Εξαγωγή δεδομένων Invidious ως JSON",
|
||||
"Delete account?": "Διαγραφή λογαριασμού;",
|
||||
"History": "Ιστορικό",
|
||||
"An alternative front-end to YouTube": "Μία εναλλακτική πλατφόρμα για το YouTube",
|
||||
|
@ -419,7 +419,34 @@
|
|||
"Search": "Αναζήτηση",
|
||||
"hdr": "HDR",
|
||||
"preferences_extend_desc_label": "Αυτόματη επέκταση της περιγραφής του βίντεο: ",
|
||||
"preferences_vr_mode_label": "Διαδραστικά βίντεο 360 μοιρών: ",
|
||||
"preferences_vr_mode_label": "Διαδραστικά βίντεο 360 μοιρών (απαιτεί WebGL): ",
|
||||
"Show less": "Εμφάνιση λιγότερων",
|
||||
"footer_source_code": "Πηγαίος κώδικας"
|
||||
"footer_source_code": "Πηγαίος κώδικας",
|
||||
"Chinese (Taiwan)": "Κινέζικα (Ταϊβάν)",
|
||||
"Portuguese (Brazil)": "Πορτογαλικά (Βραζιλία)",
|
||||
"German (auto-generated)": "Γερμανικά (αυτόματη παραγωγή)",
|
||||
"Korean (auto-generated)": "Κορεάτικα (αυτόματη παραγωγή)",
|
||||
"Russian (auto-generated)": "Ρωσικά (αυτόματη παραγωγή)",
|
||||
"Spanish (auto-generated)": "Ισπανικά (αυτόματη παραγωγή)",
|
||||
"Vietnamese (auto-generated)": "Βιετναμέζικα (αυτόματη παραγωγή)",
|
||||
"English (United Kingdom)": "Αγγλικά (Ηνωμένο Βασίλειο)",
|
||||
"English (United States)": "Αγγλικά (Ηνωμένων Πολιτειών)",
|
||||
"Cantonese (Hong Kong)": "Καντονέζικα (Χονγκ Κονγκ)",
|
||||
"Chinese": "Κινεζικά",
|
||||
"Chinese (China)": "Κινέζικα (Κίνα)",
|
||||
"Chinese (Hong Kong)": "Κινεζικά (Χονγκ Κονγκ)",
|
||||
"Dutch (auto-generated)": "Ολαμδικά (αυτόματη παραγωγή)",
|
||||
"French (auto-generated)": "Γαλλικά (αυτόματη παραγωγή)",
|
||||
"Interlingue": "Ιντερλίνγκουα",
|
||||
"Indonesian (auto-generated)": "Ινδονησιακά (αυτόματη παραγωγή)",
|
||||
"Italian (auto-generated)": "Ιταλικά (αυτόματη παραγωγή)",
|
||||
"Japanese (auto-generated)": "Ιαπωνικά (αυτόματη παραγωγή)",
|
||||
"Portuguese (auto-generated)": "Πορτογαλικά (αυτόματη παραγωγή)",
|
||||
"Spanish (Mexico)": "Ισπανικά (Μεξικό)",
|
||||
"Spanish (Spain)": "Ισπανικά (Ισπανία)",
|
||||
"Turkish (auto-generated)": "Τούρκικα (αυτόματη παραγωγή)",
|
||||
"none": "κανένα",
|
||||
"videoinfo_youTube_embed_link": "Ενσωμάτωση",
|
||||
"videoinfo_invidious_embed_link": "Σύνδεσμος Ενσωμάτωσης",
|
||||
"show": "Μπάρα προόδου διαβάσματος"
|
||||
}
|
||||
|
|
|
@ -31,8 +31,8 @@
|
|||
"No": "Non",
|
||||
"Import and Export Data": "Importer et exporter des données",
|
||||
"Import": "Importer",
|
||||
"Import Invidious data": "Importer des données Invidious",
|
||||
"Import YouTube subscriptions": "Importer des abonnements YouTube",
|
||||
"Import Invidious data": "Importer des données Invidious au format JSON",
|
||||
"Import YouTube subscriptions": "Importer des abonnements YouTube/OPML",
|
||||
"Import FreeTube subscriptions (.db)": "Importer des abonnements FreeTube (.db)",
|
||||
"Import NewPipe subscriptions (.json)": "Importer des abonnements NewPipe (.json)",
|
||||
"Import NewPipe data (.zip)": "Importer des données NewPipe (.zip)",
|
||||
|
|
|
@ -21,15 +21,15 @@
|
|||
"No": "Ne",
|
||||
"Import and Export Data": "Uvezi i izvezi podatke",
|
||||
"Import": "Uvezi",
|
||||
"Import Invidious data": "Uvezi Invidious podatke",
|
||||
"Import YouTube subscriptions": "Uvezi YouTube pretplate",
|
||||
"Import Invidious data": "Uvezi Invidious JSON podatke",
|
||||
"Import YouTube subscriptions": "Uvezi YouTube/OPML pretplate",
|
||||
"Import FreeTube subscriptions (.db)": "Uvezi FreeTube pretplate (.db)",
|
||||
"Import NewPipe subscriptions (.json)": "Uvezi NewPipe pretplate (.json)",
|
||||
"Import NewPipe data (.zip)": "Uvezi NewPipe podatke (.zip)",
|
||||
"Export": "Izvezi",
|
||||
"Export subscriptions as OPML": "Izvezi pretplate kao OPML",
|
||||
"Export subscriptions as OPML (for NewPipe & FreeTube)": "Izvezi pretplate kao OPML (za NewPipe i FreeTube)",
|
||||
"Export data as JSON": "Izvezi podatke kao JSON",
|
||||
"Export data as JSON": "Izvezi Invidious podatke kao JSON",
|
||||
"Delete account?": "Izbrisati račun?",
|
||||
"History": "Povijest",
|
||||
"An alternative front-end to YouTube": "Alternativa za YouTube",
|
||||
|
@ -66,7 +66,7 @@
|
|||
"preferences_related_videos_label": "Prikaži povezana videa: ",
|
||||
"preferences_annotations_label": "Standardno prikaži napomene: ",
|
||||
"preferences_extend_desc_label": "Automatski proširi opis videa: ",
|
||||
"preferences_vr_mode_label": "Interaktivna videa od 360 stupnjeva: ",
|
||||
"preferences_vr_mode_label": "Interaktivna videa od 360 stupnjeva (zahtijeva WebGL): ",
|
||||
"preferences_category_visual": "Postavke prikaza",
|
||||
"preferences_player_style_label": "Stil playera: ",
|
||||
"Dark mode: ": "Tamni modus: ",
|
||||
|
@ -453,5 +453,28 @@
|
|||
"crash_page_switch_instance": "pokušaj <a href=\"`x`\">koristiti jednu drugu instancu</a>",
|
||||
"crash_page_read_the_faq": "pročitaj <a href=\"`x`\">Često postavljena pitanja (ČPP)</a>",
|
||||
"crash_page_search_issue": "pretraži <a href=\"`x`\">postojeće probleme na Github-u</a>",
|
||||
"crash_page_report_issue": "Ako ništa od gore navedenog ne pomaže, <a href=\"`x`\">prijavi novi problem na GitHub-u</a> (po mogućnosti na engleskom) i uključi sljedeći tekst u poruku (NEMOJ prevoditi taj tekst):"
|
||||
"crash_page_report_issue": "Ako ništa od gore navedenog ne pomaže, <a href=\"`x`\">prijavi novi problem na GitHub-u</a> (po mogućnosti na engleskom) i uključi sljedeći tekst u poruku (NEMOJ prevoditi taj tekst):",
|
||||
"English (United Kingdom)": "Engleski (Ujedinjeno Kraljevstvo)",
|
||||
"English (United States)": "Engleski (Sjedinjene Američke Države)",
|
||||
"Cantonese (Hong Kong)": "Kantonski (Hong Kong)",
|
||||
"Chinese": "Kineski",
|
||||
"Chinese (Taiwan)": "Kineski (Tajvan)",
|
||||
"Dutch (auto-generated)": "Nizozemski (automatski generiran)",
|
||||
"French (auto-generated)": "Francuski (automatski generiran)",
|
||||
"Indonesian (auto-generated)": "Indonezijski (automatski generiran)",
|
||||
"Interlingue": "Interlingua",
|
||||
"Japanese (auto-generated)": "Japanski (automatski generiran)",
|
||||
"Russian (auto-generated)": "Ruski (automatski generiran)",
|
||||
"Turkish (auto-generated)": "Turski (automatski generiran)",
|
||||
"Vietnamese (auto-generated)": "Vijetnamski (automatski generiran)",
|
||||
"Spanish (Spain)": "Španjolski (Španjolska)",
|
||||
"Italian (auto-generated)": "Talijanski (automatski generiran)",
|
||||
"Portuguese (Brazil)": "Portugalski (Brazil)",
|
||||
"Spanish (Mexico)": "Španjolski (Meksiko)",
|
||||
"German (auto-generated)": "Njemački (automatski generiran)",
|
||||
"Chinese (China)": "Kineski (Kina)",
|
||||
"Chinese (Hong Kong)": "Kineski (Hong Kong)",
|
||||
"Korean (auto-generated)": "Korejski (automatski generiran)",
|
||||
"Portuguese (auto-generated)": "Portugalski (automatski generiran)",
|
||||
"Spanish (auto-generated)": "Španjolski (automatski generiran)"
|
||||
}
|
||||
|
|
|
@ -374,7 +374,7 @@
|
|||
"German (auto-generated)": "Немецкий (автоматический)",
|
||||
"Indonesian (auto-generated)": "Индонезийский (автоматический)",
|
||||
"Italian (auto-generated)": "Итальянский (автоматический)",
|
||||
"Interlingue": "Интерлингва",
|
||||
"Interlingue": "Окциденталь",
|
||||
"Russian (auto-generated)": "Русский (автоматический)",
|
||||
"Spanish (auto-generated)": "Испанский (автоматический)",
|
||||
"Spanish (Spain)": "Испанский (Испания)",
|
||||
|
|
|
@ -379,5 +379,74 @@
|
|||
"footer_donate_page": "Dhuroni",
|
||||
"footer_documentation": "Dokumentim",
|
||||
"footer_source_code": "Kod burim",
|
||||
"footer_original_source_code": "Kodim burim origjinal"
|
||||
"footer_original_source_code": "Kodim burim origjinal",
|
||||
"generic_count_hours": "{{count}} orë",
|
||||
"generic_count_hours_plural": "{{count}} orë",
|
||||
"generic_videos_count": "{{count}} video",
|
||||
"generic_videos_count_plural": "{{count}} video",
|
||||
"generic_playlists_count": "{{count}} luajlistë",
|
||||
"generic_playlists_count_plural": "{{count}} luajlista",
|
||||
"generic_subscribers_count": "{{count}} pajtimtar",
|
||||
"generic_subscribers_count_plural": "{{count}} pajtimtarë",
|
||||
"subscriptions_unseen_notifs_count": "{{count}} njoftim që s’është parë",
|
||||
"subscriptions_unseen_notifs_count_plural": "{{count}} njoftime që s’janë parë",
|
||||
"comments_view_x_replies": "Shihni {{count}} përgjigje",
|
||||
"comments_view_x_replies_plural": "Shihni {{count}} përgjigje",
|
||||
"comments_points_count": "{{count}} pikë",
|
||||
"comments_points_count_plural": "{{count}} pikë",
|
||||
"generic_count_years": "{{count}} vit",
|
||||
"generic_count_years_plural": "{{count}} vjet",
|
||||
"generic_count_months": "{{count}} muaj",
|
||||
"generic_count_months_plural": "{{count}} muaj",
|
||||
"generic_count_weeks": "{{count}} javë",
|
||||
"generic_count_weeks_plural": "{{count}} javë",
|
||||
"generic_count_days": "{{count}} ditë",
|
||||
"generic_count_days_plural": "{{count}} ditë",
|
||||
"generic_count_minutes": "{{count}} minutë",
|
||||
"generic_count_minutes_plural": "{{count}} minuta",
|
||||
"generic_count_seconds": "{{count}} sekondë",
|
||||
"generic_count_seconds_plural": "{{count}} sekonda",
|
||||
"crash_page_you_found_a_bug": "Duket sikur gjetët një të metë në Invidious!",
|
||||
"crash_page_before_reporting": "Para se të njoftoni një të metë, sigurohuni se keni:",
|
||||
"crash_page_refresh": "provuar të <a href=\"`x`\">rifreskoni faqen</a>",
|
||||
"crash_page_switch_instance": "provuar të <a href=\"`x`\">përdorni tjetër instancë</a>",
|
||||
"crash_page_read_the_faq": "lexuar <a href=\"`x`\">Pyetje të Bëra Rëndom (PBR)</a>",
|
||||
"generic_views_count": "{{count}} parje",
|
||||
"generic_views_count_plural": "{{count}} parje",
|
||||
"English (United Kingdom)": "Anglisht (Mbretëri e Bashkuar)",
|
||||
"English (United States)": "Anglisht (Shtetet e Bashkuara)",
|
||||
"Cantonese (Hong Kong)": "Kantoneze (Hong Kong)",
|
||||
"Chinese": "Kinezçe",
|
||||
"Chinese (China)": "Kinezçe (Kinë)",
|
||||
"Chinese (Hong Kong)": "Kinezçe (Hong-Kong)",
|
||||
"Chinese (Taiwan)": "Kinezçe (Tajvan)",
|
||||
"Dutch (auto-generated)": "Holandisht (e prodhuar automatikisht)",
|
||||
"French (auto-generated)": "Anglisht (të prodhuara automatikisht)",
|
||||
"German (auto-generated)": "Gjermanisht (të prodhuara automatikisht)",
|
||||
"Hmong": "Hmong",
|
||||
"Indonesian (auto-generated)": "Indonezisht (të prodhuara automatikisht)",
|
||||
"Interlingue": "Interlingue",
|
||||
"Italian (auto-generated)": "Italisht (të prodhuara automatikisht)",
|
||||
"Japanese (auto-generated)": "Japonisht (të prodhuara automatikisht)",
|
||||
"Korean (auto-generated)": "Koreane (të prodhuara automatikisht)",
|
||||
"Portuguese (auto-generated)": "Portugalisht (të prodhuara automatikisht)",
|
||||
"Portuguese (Brazil)": "Portugeze (Brazil)",
|
||||
"Russian (auto-generated)": "Rusisht (të prodhuara automatikisht)",
|
||||
"Spanish (auto-generated)": "Spanjisht (të prodhuara automatikisht)",
|
||||
"Spanish (Mexico)": "Spanjisht (Meksikë)",
|
||||
"Spanish (Spain)": "Spanjisht (Spanjë)",
|
||||
"Turkish (auto-generated)": "Turqisht (të prodhuara automatikisht)",
|
||||
"Vietnamese (auto-generated)": "Vietnamisht (të prodhuara automatikisht)",
|
||||
"crash_page_search_issue": "kërkuar për <a href=\"`x`\">çështje ekzistuese në Github</a>",
|
||||
"crash_page_report_issue": "Nëse asnjë nga sa më sipër s’ndihmoi, ju lutemi, <a href=\"`x`\">hapni një çështje në GitHub</a> (mundësisht në anglisht) dhe përfshini në mesazhin tuaj tekstin vijues (MOS e përktheni këtë tekst):",
|
||||
"generic_subscriptions_count": "{{count}} pajtim",
|
||||
"generic_subscriptions_count_plural": "{{count}} pajtime",
|
||||
"tokens_count": "{{count}} token",
|
||||
"tokens_count_plural": "{{count}} tokenë",
|
||||
"preferences_save_player_pos_label": "Mba mend pozicionin e luajtjes: ",
|
||||
"Import Invidious data": "Importoni të dhëna JSON Invidious",
|
||||
"Import YouTube subscriptions": "Importoni pajtime YouTube/OPML",
|
||||
"Export data as JSON": "Eksportoji të dhënat Invidious si JSON",
|
||||
"preferences_vr_mode_label": "Video me ndërveprim 360 gradë (lyp WebGL): ",
|
||||
"Shared `x`": "Ndau me të tjerë `x`"
|
||||
}
|
||||
|
|
|
@ -30,6 +30,7 @@ LOCALES_LIST = {
|
|||
"pt-PT" => "Português de Portugal", # Portuguese (Portugal)
|
||||
"ro" => "Română", # Romanian
|
||||
"ru" => "русский", # Russian
|
||||
"sq" => "Shqip", # Albanian
|
||||
"sr" => "srpski (latinica)", # Serbian (Latin)
|
||||
"sr_Cyrl" => "српски (ћирилица)", # Serbian (Cyrillic)
|
||||
"sv-SE" => "Svenska", # Swedish
|
||||
|
|
|
@ -4,10 +4,10 @@ module Invidious::Routes::API::V1::Misc
|
|||
env.response.content_type = "application/json"
|
||||
|
||||
if !CONFIG.statistics_enabled
|
||||
return error_json(400, "Statistics are not enabled.")
|
||||
return {"software" => SOFTWARE}.to_json
|
||||
else
|
||||
return Invidious::Jobs::StatisticsRefreshJob::STATISTICS.to_json
|
||||
end
|
||||
|
||||
Invidious::Jobs::StatisticsRefreshJob::STATISTICS.to_json
|
||||
end
|
||||
|
||||
# APIv1 currently uses the same logic for both
|
||||
|
|
|
@ -136,7 +136,7 @@ module Invidious::Routes::API::V1::Videos
|
|||
#
|
||||
# See: https://github.com/iv-org/invidious/issues/2391
|
||||
webvtt = YT_POOL.client &.get("#{url}&format=vtt").body
|
||||
.gsub(/([0-9:.]+ --> [0-9:.]+).+/, "\\1")
|
||||
.gsub(/([0-9:.]{12} --> [0-9:.]{12}).+/, "\\1")
|
||||
end
|
||||
|
||||
if title = env.params.query["title"]?
|
||||
|
|
読み込み中…
新しいイシューから参照