Merge branch 'master' into homepage

This commit is contained in:
girst 2019-10-22 19:14:53 +02:00
commit e27580f155
9 changed files with 72 additions and 74 deletions

View File

@ -274,18 +274,17 @@ input[type="search"]::-webkit-search-cancel-button {
padding: 0 1em ; padding: 0 1em ;
} }
.welcome-box h1 {
font-size: 1em;
margin-bottom: 0;
}
#dismiss_welcome { #dismiss_welcome {
font-size: small; font-size: small;
float: right; float: right;
margin: 1em 0; margin: 1em 0;
} }
#call_to_action {
overflow: hidden;
text-overflow: ellipsis;
max-width: 100%;
}
/* /*
* Footer * Footer
*/ */

View File

@ -14,6 +14,5 @@ dismiss_welcome.addEventListener('click', function () {
}); });
function hide_welcome (bool) { function hide_welcome (bool) {
document.getElementById('feed-menu').classList.remove('hidden');
document.getElementById('welcome-outer').classList.add('hidden'); document.getElementById('welcome-outer').classList.add('hidden');
} }

View File

@ -19,6 +19,9 @@ if [ ! -f /var/lib/postgresql/data/setupFinished ]; then
su postgres -c 'psql invidious kemal < config/sql/session_ids.sql' su postgres -c 'psql invidious kemal < config/sql/session_ids.sql'
su postgres -c 'psql invidious kemal < config/sql/nonces.sql' su postgres -c 'psql invidious kemal < config/sql/nonces.sql'
su postgres -c 'psql invidious kemal < config/sql/annotations.sql' su postgres -c 'psql invidious kemal < config/sql/annotations.sql'
su postgres -c 'psql invidious kemal < config/sql/playlists.sql'
su postgres -c 'psql invidious kemal < config/sql/playlist_videos.sql'
su postgres -c 'psql invidious kemal < config/sql/privacy.sql'
touch /var/lib/postgresql/data/setupFinished touch /var/lib/postgresql/data/setupFinished
echo "### invidious database setup finished" echo "### invidious database setup finished"
exit exit

View File

@ -1,10 +1,10 @@
{ {
"`x` subscribers": { "`x` subscribers": {
"([^0-9]|^)1([^,0-9]|$)": "`x` συνδρομητής", "([^.,0-9]|^)1([^.,0-9]|$)": "`x` συνδρομητής",
"": "`x` συνδρομητές" "": "`x` συνδρομητές"
}, },
"`x` videos": { "`x` videos": {
"([^0-9]|^)1([^,0-9]|$)": "`x` βίντεο", "([^.,0-9]|^)1([^.,0-9]|$)": "`x` βίντεο",
"": "`x` βίντεο" "": "`x` βίντεο"
}, },
"`x` playlists": "", "`x` playlists": "",
@ -120,11 +120,11 @@
"Token manager": "Διαχειριστής διασυνδέσεων", "Token manager": "Διαχειριστής διασυνδέσεων",
"Token": "Διασύνδεση", "Token": "Διασύνδεση",
"`x` subscriptions": { "`x` subscriptions": {
"([^0-9]|^)1([^,0-9]|$)": "`x` συνδρομή", "([^.,0-9]|^)1([^.,0-9]|$)": "`x` συνδρομή",
"": "`x` συνδρομές" "": "`x` συνδρομές"
}, },
"`x` tokens": { "`x` tokens": {
"([^0-9]|^)1([^,0-9]|$)": "`x` διασύνδεση", "([^.,0-9]|^)1([^.,0-9]|$)": "`x` διασύνδεση",
"": "`x` διασυνδέσεις" "": "`x` διασυνδέσεις"
}, },
"Import/export": "Εισαγωγή/εξαγωγή", "Import/export": "Εισαγωγή/εξαγωγή",
@ -132,7 +132,7 @@
"revoke": "ανάκληση", "revoke": "ανάκληση",
"Subscriptions": "Συνδρομές", "Subscriptions": "Συνδρομές",
"`x` unseen notifications": { "`x` unseen notifications": {
"([^0-9]|^)1([^,0-9]|$)": "`x` καινούρια ειδοποίηση", "([^.,0-9]|^)1([^.,0-9]|$)": "`x` καινούρια ειδοποίηση",
"": "`x` καινούριες ειδοποιήσεις" "": "`x` καινούριες ειδοποιήσεις"
}, },
"search": "αναζήτηση", "search": "αναζήτηση",
@ -165,7 +165,7 @@
"Blacklisted regions: ": "Μη-επιτρεπτές περιοχές: ", "Blacklisted regions: ": "Μη-επιτρεπτές περιοχές: ",
"Shared `x`": "Μοιράστηκε το `x`", "Shared `x`": "Μοιράστηκε το `x`",
"`x` views": { "`x` views": {
"([^0-9]|^)1([^,0-9]|$)": "`x` προβολή", "([^.,0-9]|^)1([^.,0-9]|$)": "`x` προβολή",
"": "`x` προβολές" "": "`x` προβολές"
}, },
"Premieres in `x`": "Πρώτη προβολή σε `x`", "Premieres in `x`": "Πρώτη προβολή σε `x`",
@ -199,13 +199,13 @@
"Could not get channel info.": "Αδύναμια εύρεσης πληροφοριών καναλιού.", "Could not get channel info.": "Αδύναμια εύρεσης πληροφοριών καναλιού.",
"Could not fetch comments": "Αδυναμία λήψης σχολίων", "Could not fetch comments": "Αδυναμία λήψης σχολίων",
"View `x` replies": { "View `x` replies": {
"([^0-9]|^)1([^,0-9]|$)": "Προβολή `x` απάντησης", "([^.,0-9]|^)1([^.,0-9]|$)": "Προβολή `x` απάντησης",
"": "Προβολή `x` απαντήσεων" "": "Προβολή `x` απαντήσεων"
}, },
"`x` ago": "Πριν `x`", "`x` ago": "Πριν `x`",
"Load more": "Φόρτωση περισσότερων", "Load more": "Φόρτωση περισσότερων",
"`x` points": { "`x` points": {
"([^0-9]|^)1([^,0-9]|$)": "`x` βαθμός", "([^.,0-9]|^)1([^.,0-9]|$)": "`x` βαθμός",
"": "`x` βαθμοί" "": "`x` βαθμοί"
}, },
"Could not create mix.": "Αδυναμία δημιουργίας μίξης.", "Could not create mix.": "Αδυναμία δημιουργίας μίξης.",
@ -326,31 +326,31 @@
"Yoruba": "Γιορούμπα", "Yoruba": "Γιορούμπα",
"Zulu": "Ζουλού", "Zulu": "Ζουλού",
"`x` years": { "`x` years": {
"([^0-9]|^)1([^,0-9]|$)": "`x` χρόνο", "([^.,0-9]|^)1([^.,0-9]|$)": "`x` χρόνο",
"": "`x` χρόνια" "": "`x` χρόνια"
}, },
"`x` months": { "`x` months": {
"([^0-9]|^)1([^,0-9]|$)": "`x` μήνα", "([^.,0-9]|^)1([^.,0-9]|$)": "`x` μήνα",
"": "`x` μήνες" "": "`x` μήνες"
}, },
"`x` weeks": { "`x` weeks": {
"([^0-9]|^)1([^,0-9]|$)": "`x` εβδομάδα", "([^.,0-9]|^)1([^.,0-9]|$)": "`x` εβδομάδα",
"": "`x` εβδομάδες" "": "`x` εβδομάδες"
}, },
"`x` days": { "`x` days": {
"([^0-9]|^)1([^,0-9]|$)": "`x` ημέρα", "([^.,0-9]|^)1([^.,0-9]|$)": "`x` ημέρα",
"": "`x` ημέρες" "": "`x` ημέρες"
}, },
"`x` hours": { "`x` hours": {
"([^0-9]|^)1([^,0-9]|$)": "`x` ώρα", "([^.,0-9]|^)1([^.,0-9]|$)": "`x` ώρα",
"": "`x` ώρες" "": "`x` ώρες"
}, },
"`x` minutes": { "`x` minutes": {
"([^0-9]|^)1([^,0-9]|$)": "`x` λεπτό", "([^.,0-9]|^)1([^.,0-9]|$)": "`x` λεπτό",
"": "`x` λεπτά" "": "`x` λεπτά"
}, },
"`x` seconds": { "`x` seconds": {
"([^0-9]|^)1([^,0-9]|$)": "`x` δευτερόλεπτο", "([^.,0-9]|^)1([^.,0-9]|$)": "`x` δευτερόλεπτο",
"": "`x` δευτερόλεπτα" "": "`x` δευτερόλεπτα"
}, },
"Fallback comments: ": "Εναλλακτικά σχόλια: ", "Fallback comments: ": "Εναλλακτικά σχόλια: ",

View File

@ -1,10 +1,10 @@
{ {
"`x` subscribers": { "`x` subscribers": {
"([^0-9]|^)1([^,0-9]|$)": "`x` subscriber", "([^.,0-9]|^)1([^.,0-9]|$)": "`x` subscriber",
"": "`x` subscribers" "": "`x` subscribers"
}, },
"`x` videos": { "`x` videos": {
"([^0-9]|^)1([^,0-9]|$)": "`x` video", "([^.,0-9]|^)1([^.,0-9]|$)": "`x` video",
"": "`x` videos" "": "`x` videos"
}, },
"`x` playlists": { "`x` playlists": {
@ -126,11 +126,11 @@
"Token manager": "Token manager", "Token manager": "Token manager",
"Token": "Token", "Token": "Token",
"`x` subscriptions": { "`x` subscriptions": {
"([^0-9]|^)1([^,0-9]|$)": "`x` subscription", "([^.,0-9]|^)1([^.,0-9]|$)": "`x` subscription",
"": "`x` subscriptions" "": "`x` subscriptions"
}, },
"`x` tokens": { "`x` tokens": {
"([^0-9]|^)1([^,0-9]|$)": "`x` token", "([^.,0-9]|^)1([^.,0-9]|$)": "`x` token",
"": "`x` tokens" "": "`x` tokens"
}, },
"Import/export": "Import/export", "Import/export": "Import/export",
@ -138,7 +138,7 @@
"revoke": "revoke", "revoke": "revoke",
"Subscriptions": "Subscriptions", "Subscriptions": "Subscriptions",
"`x` unseen notifications": { "`x` unseen notifications": {
"([^0-9]|^)1([^,0-9]|$)": "`x` unseen notification", "([^.,0-9]|^)1([^.,0-9]|$)": "`x` unseen notification",
"": "`x` unseen notifications" "": "`x` unseen notifications"
}, },
"search": "search", "search": "search",
@ -171,7 +171,7 @@
"Blacklisted regions: ": "Blacklisted regions: ", "Blacklisted regions: ": "Blacklisted regions: ",
"Shared `x`": "Shared `x`", "Shared `x`": "Shared `x`",
"`x` views": { "`x` views": {
"([^0-9]|^)1([^,0-9]|$)": "`x` view", "([^.,0-9]|^)1([^.,0-9]|$)": "`x` view",
"": "`x` views" "": "`x` views"
}, },
"Premieres in `x`": "Premieres in `x`", "Premieres in `x`": "Premieres in `x`",
@ -208,13 +208,13 @@
"Could not get channel info.": "Could not get channel info.", "Could not get channel info.": "Could not get channel info.",
"Could not fetch comments": "Could not fetch comments", "Could not fetch comments": "Could not fetch comments",
"View `x` replies": { "View `x` replies": {
"([^0-9]|^)1([^,0-9]|$)": "View `x` reply", "([^.,0-9]|^)1([^.,0-9]|$)": "View `x` reply",
"": "View `x` replies" "": "View `x` replies"
}, },
"`x` ago": "`x` ago", "`x` ago": "`x` ago",
"Load more": "Load more", "Load more": "Load more",
"`x` points": { "`x` points": {
"([^0-9]|^)1([^,0-9]|$)": "`x` point", "([^.,0-9]|^)1([^.,0-9]|$)": "`x` point",
"": "`x` points" "": "`x` points"
}, },
"Could not create mix.": "Could not create mix.", "Could not create mix.": "Could not create mix.",
@ -335,31 +335,31 @@
"Yoruba": "Yoruba", "Yoruba": "Yoruba",
"Zulu": "Zulu", "Zulu": "Zulu",
"`x` years": { "`x` years": {
"([^0-9]|^)1([^,0-9]|$)": "`x` year", "([^.,0-9]|^)1([^.,0-9]|$)": "`x` year",
"": "`x` years" "": "`x` years"
}, },
"`x` months": { "`x` months": {
"([^0-9]|^)1([^,0-9]|$)": "`x` month", "([^.,0-9]|^)1([^.,0-9]|$)": "`x` month",
"": "`x` months" "": "`x` months"
}, },
"`x` weeks": { "`x` weeks": {
"([^0-9]|^)1([^,0-9]|$)": "`x` week", "([^.,0-9]|^)1([^.,0-9]|$)": "`x` week",
"": "`x` weeks" "": "`x` weeks"
}, },
"`x` days": { "`x` days": {
"([^0-9]|^)1([^,0-9]|$)": "`x` day", "([^.,0-9]|^)1([^.,0-9]|$)": "`x` day",
"": "`x` days" "": "`x` days"
}, },
"`x` hours": { "`x` hours": {
"([^0-9]|^)1([^,0-9]|$)": "`x` hour", "([^.,0-9]|^)1([^.,0-9]|$)": "`x` hour",
"": "`x` hours" "": "`x` hours"
}, },
"`x` minutes": { "`x` minutes": {
"([^0-9]|^)1([^,0-9]|$)": "`x` minute", "([^.,0-9]|^)1([^.,0-9]|$)": "`x` minute",
"": "`x` minutes" "": "`x` minutes"
}, },
"`x` seconds": { "`x` seconds": {
"([^0-9]|^)1([^,0-9]|$)": "`x` second", "([^.,0-9]|^)1([^.,0-9]|$)": "`x` second",
"": "`x` seconds" "": "`x` seconds"
}, },
"Fallback comments: ": "Fallback comments: ", "Fallback comments: ": "Fallback comments: ",

View File

@ -1,10 +1,10 @@
{ {
"`x` subscribers": { "`x` subscribers": {
"([^0-9]|^)1([^,0-9]|$)": "`x` iscritto", "([^.,0-9]|^)1([^.,0-9]|$)": "`x` iscritto",
"": "`x` iscritti" "": "`x` iscritti"
}, },
"`x` videos": { "`x` videos": {
"([^0-9]|^)1([^,0-9]|$)": "`x` video", "([^.,0-9]|^)1([^.,0-9]|$)": "`x` video",
"": "`x` video" "": "`x` video"
}, },
"`x` playlists": "", "`x` playlists": "",
@ -120,11 +120,11 @@
"Token manager": "Gestione dei gettoni", "Token manager": "Gestione dei gettoni",
"Token": "Gettone", "Token": "Gettone",
"`x` subscriptions": { "`x` subscriptions": {
"([^0-9]|^)1([^,0-9]|$)": "`x` iscrizione", "([^.,0-9]|^)1([^.,0-9]|$)": "`x` iscrizione",
"": "`x` iscrizioni" "": "`x` iscrizioni"
}, },
"`x` tokens": { "`x` tokens": {
"([^0-9]|^)1([^,0-9]|$)": "`x` gettone", "([^.,0-9]|^)1([^.,0-9]|$)": "`x` gettone",
"": "`x` gettoni" "": "`x` gettoni"
}, },
"Import/export": "Importa/esporta", "Import/export": "Importa/esporta",
@ -132,7 +132,7 @@
"revoke": "revoca", "revoke": "revoca",
"Subscriptions": "Iscrizioni", "Subscriptions": "Iscrizioni",
"`x` unseen notifications": { "`x` unseen notifications": {
"([^0-9]|^)1([^,0-9]|$)": "`x` notifica non visualizzata", "([^.,0-9]|^)1([^.,0-9]|$)": "`x` notifica non visualizzata",
"": "`x` notifiche non visualizzate" "": "`x` notifiche non visualizzate"
}, },
"search": "Cerca", "search": "Cerca",
@ -165,7 +165,7 @@
"Blacklisted regions: ": "Regioni in lista nera: ", "Blacklisted regions: ": "Regioni in lista nera: ",
"Shared `x`": "Condiviso `x`", "Shared `x`": "Condiviso `x`",
"`x` views": { "`x` views": {
"([^0-9]|^)1([^,0-9]|$)": "`x` visualizzazione", "([^.,0-9]|^)1([^.,0-9]|$)": "`x` visualizzazione",
"": "`x` visualizzazioni" "": "`x` visualizzazioni"
}, },
"Premieres in `x`": "", "Premieres in `x`": "",
@ -199,13 +199,13 @@
"Could not get channel info.": "Impossibile ottenere le informazioni del canale.", "Could not get channel info.": "Impossibile ottenere le informazioni del canale.",
"Could not fetch comments": "Impossibile recuperare i commenti", "Could not fetch comments": "Impossibile recuperare i commenti",
"View `x` replies": { "View `x` replies": {
"([^0-9]|^)1([^,0-9]|$)": "Visualizza `x` risposta", "([^.,0-9]|^)1([^.,0-9]|$)": "Visualizza `x` risposta",
"": "Visualizza `x` risposte" "": "Visualizza `x` risposte"
}, },
"`x` ago": "`x` fa", "`x` ago": "`x` fa",
"Load more": "Carica altro", "Load more": "Carica altro",
"`x` points": { "`x` points": {
"([^0-9]|^)1([^,0-9]|$)": "`x` punto", "([^.,0-9]|^)1([^.,0-9]|$)": "`x` punto",
"": "`x` punti" "": "`x` punti"
}, },
"Could not create mix.": "Impossibile creare il mix.", "Could not create mix.": "Impossibile creare il mix.",
@ -326,31 +326,31 @@
"Yoruba": "Yoruba", "Yoruba": "Yoruba",
"Zulu": "Zulu", "Zulu": "Zulu",
"`x` years": { "`x` years": {
"([^0-9]|^)1([^,0-9]|$)": "`x` anno", "([^.,0-9]|^)1([^.,0-9]|$)": "`x` anno",
"": "`x` anni" "": "`x` anni"
}, },
"`x` months": { "`x` months": {
"([^0-9]|^)1([^,0-9]|$)": "`x` mese", "([^.,0-9]|^)1([^.,0-9]|$)": "`x` mese",
"": "`x` mesi" "": "`x` mesi"
}, },
"`x` weeks": { "`x` weeks": {
"([^0-9]|^)1([^,0-9]|$)": "`x` settimana", "([^.,0-9]|^)1([^.,0-9]|$)": "`x` settimana",
"": "`x` settimane" "": "`x` settimane"
}, },
"`x` days": { "`x` days": {
"([^0-9]|^)1([^,0-9]|$)": "`x` giorno", "([^.,0-9]|^)1([^.,0-9]|$)": "`x` giorno",
"": "`x` giorni" "": "`x` giorni"
}, },
"`x` hours": { "`x` hours": {
"([^0-9]|^)1([^,0-9]|$)": "`x` ora", "([^.,0-9]|^)1([^.,0-9]|$)": "`x` ora",
"": "`x` ore" "": "`x` ore"
}, },
"`x` minutes": { "`x` minutes": {
"([^0-9]|^)1([^,0-9]|$)": "`x` minuto", "([^.,0-9]|^)1([^.,0-9]|$)": "`x` minuto",
"": "`x` minuti" "": "`x` minuti"
}, },
"`x` seconds": { "`x` seconds": {
"([^0-9]|^)1([^,0-9]|$)": "`x` secondo", "([^.,0-9]|^)1([^.,0-9]|$)": "`x` secondo",
"": "`x` secondi" "": "`x` secondi"
}, },
"Fallback comments: ": "Commenti alternativi: ", "Fallback comments: ": "Commenti alternativi: ",

View File

@ -1,10 +1,10 @@
{ {
"`x` subscribers": { "`x` subscribers": {
"([^0-9]|^)1([^,0-9]|$)": "`x` 個訂閱者", "([^.,0-9]|^)1([^.,0-9]|$)": "`x` 個訂閱者",
"": "`x` 個訂閱者" "": "`x` 個訂閱者"
}, },
"`x` videos": { "`x` videos": {
"([^0-9]|^)1([^,0-9]|$)": "`x` 部影片", "([^.,0-9]|^)1([^.,0-9]|$)": "`x` 部影片",
"": "`x` 部影片" "": "`x` 部影片"
}, },
"`x` playlists": "", "`x` playlists": "",
@ -120,11 +120,11 @@
"Token manager": "Token 管理員", "Token manager": "Token 管理員",
"Token": "Token", "Token": "Token",
"`x` subscriptions": { "`x` subscriptions": {
"([^0-9]|^)1([^,0-9]|$)": "`x` 個訂閱", "([^.,0-9]|^)1([^.,0-9]|$)": "`x` 個訂閱",
"": "`x` 個訂閱" "": "`x` 個訂閱"
}, },
"`x` tokens": { "`x` tokens": {
"([^0-9]|^)1([^,0-9]|$)": "`x` token", "([^.,0-9]|^)1([^.,0-9]|$)": "`x` token",
"": "`x` tokens" "": "`x` tokens"
}, },
"Import/export": "匯入/匯出", "Import/export": "匯入/匯出",
@ -132,7 +132,7 @@
"revoke": "撤銷", "revoke": "撤銷",
"Subscriptions": "訂閱", "Subscriptions": "訂閱",
"`x` unseen notifications": { "`x` unseen notifications": {
"([^0-9]|^)1([^,0-9]|$)": "`x` 個未讀的通知", "([^.,0-9]|^)1([^.,0-9]|$)": "`x` 個未讀的通知",
"": "`x` 個未讀的通知" "": "`x` 個未讀的通知"
}, },
"search": "搜尋", "search": "搜尋",
@ -165,7 +165,7 @@
"Blacklisted regions: ": "黑名單區域:", "Blacklisted regions: ": "黑名單區域:",
"Shared `x`": "`x` 發佈", "Shared `x`": "`x` 發佈",
"`x` views": { "`x` views": {
"([^0-9]|^)1([^,0-9]|$)": "`x` 次檢視", "([^.,0-9]|^)1([^.,0-9]|$)": "`x` 次檢視",
"": "`x` 次檢視" "": "`x` 次檢視"
}, },
"Premieres in `x`": "首映於 `x`", "Premieres in `x`": "首映於 `x`",
@ -199,13 +199,13 @@
"Could not get channel info.": "無法取得頻道資訊。", "Could not get channel info.": "無法取得頻道資訊。",
"Could not fetch comments": "無法擷取留言", "Could not fetch comments": "無法擷取留言",
"View `x` replies": { "View `x` replies": {
"([^0-9]|^)1([^,0-9]|$)": "檢視 `x` 則回覆", "([^.,0-9]|^)1([^.,0-9]|$)": "檢視 `x` 則回覆",
"": "檢視 `x` 則回覆" "": "檢視 `x` 則回覆"
}, },
"`x` ago": "`x` 以前", "`x` ago": "`x` 以前",
"Load more": "載入更多", "Load more": "載入更多",
"`x` points": { "`x` points": {
"([^0-9]|^)1([^,0-9]|$)": "`x` 點", "([^.,0-9]|^)1([^.,0-9]|$)": "`x` 點",
"": "`x` 點" "": "`x` 點"
}, },
"Could not create mix.": "無法建立混合。", "Could not create mix.": "無法建立混合。",
@ -326,31 +326,31 @@
"Yoruba": "約魯巴語", "Yoruba": "約魯巴語",
"Zulu": "祖魯語", "Zulu": "祖魯語",
"`x` years": { "`x` years": {
"([^0-9]|^)1([^,0-9]|$)": "`x` 年", "([^.,0-9]|^)1([^.,0-9]|$)": "`x` 年",
"": "`x` 年" "": "`x` 年"
}, },
"`x` months": { "`x` months": {
"([^0-9]|^)1([^,0-9]|$)": "`x` 月", "([^.,0-9]|^)1([^.,0-9]|$)": "`x` 月",
"": "`x` 月" "": "`x` 月"
}, },
"`x` weeks": { "`x` weeks": {
"([^0-9]|^)1([^,0-9]|$)": "`x` 週", "([^.,0-9]|^)1([^.,0-9]|$)": "`x` 週",
"": "`x` 週" "": "`x` 週"
}, },
"`x` days": { "`x` days": {
"([^0-9]|^)1([^,0-9]|$)": "`x` 天", "([^.,0-9]|^)1([^.,0-9]|$)": "`x` 天",
"": "`x` 天" "": "`x` 天"
}, },
"`x` hours": { "`x` hours": {
"([^0-9]|^)1([^,0-9]|$)": "`x` 小時", "([^.,0-9]|^)1([^.,0-9]|$)": "`x` 小時",
"": "`x` 小時" "": "`x` 小時"
}, },
"`x` minutes": { "`x` minutes": {
"([^0-9]|^)1([^,0-9]|$)": "`x` 天", "([^.,0-9]|^)1([^.,0-9]|$)": "`x` 天",
"": "`x` 天" "": "`x` 天"
}, },
"`x` seconds": { "`x` seconds": {
"([^0-9]|^)1([^,0-9]|$)": "`x` 秒", "([^.,0-9]|^)1([^.,0-9]|$)": "`x` 秒",
"": "`x` 秒" "": "`x` 秒"
}, },
"Fallback comments: ": "汰退留言:", "Fallback comments: ": "汰退留言:",

View File

@ -4687,8 +4687,7 @@ end
if format == "html" if format == "html"
response = JSON.parse(response) response = JSON.parse(response)
playlist_html = template_playlist(response) playlist_html = template_playlist(response)
index = response["videos"].as_a[1]?.try &.["index"] index, next_video = response["videos"].as_a.skip(1).select { |video| !video["author"].as_s.empty? }[0]?.try { |v| {v["index"], v["videoId"]} } || {nil, nil}
next_video = response["videos"].as_a[1]?.try &.["videoId"]
response = { response = {
"playlistHtml" => playlist_html, "playlistHtml" => playlist_html,
@ -4721,7 +4720,6 @@ get "/api/v1/mixes/:rdid" do |env|
mix = fetch_mix(rdid, mix.videos[1].id) mix = fetch_mix(rdid, mix.videos[1].id)
index = mix.videos.index(mix.videos.select { |video| video.id == continuation }[0]?) index = mix.videos.index(mix.videos.select { |video| video.id == continuation }[0]?)
end end
index ||= 0
mix.videos = mix.videos[index..-1] mix.videos = mix.videos[index..-1]
rescue ex rescue ex
@ -4764,8 +4762,7 @@ get "/api/v1/mixes/:rdid" do |env|
if format == "html" if format == "html"
response = JSON.parse(response) response = JSON.parse(response)
playlist_html = template_mix(response) playlist_html = template_mix(response)
next_video = response["videos"].as_a[1]?.try &.["videoId"] next_video = response["videos"].as_a.select { |video| !video["author"].as_s.empty? }[0]?.try &.["videoId"]
next_video ||= ""
response = { response = {
"playlistHtml" => playlist_html, "playlistHtml" => playlist_html,

View File

@ -2,8 +2,8 @@
<div class="infobox welcome-box"> <div class="infobox welcome-box">
<a id="dismiss_welcome" class="pure-button" href="/dismiss_info?name=welcome&amp;referer=<%= env.get?("current_page") %>">dismiss</a> <a id="dismiss_welcome" class="pure-button" href="/dismiss_info?name=welcome&amp;referer=<%= env.get?("current_page") %>">dismiss</a>
<h1>Welcome to Invidious</h1> <h1>Welcome to Invidious</h1>
<p>Watch Youtube-videos <em>Ad-free</em>, <em>download videos, audio and subitles</em> and <em>subscribe to channels</em> without Google tracking you. <p>Watch Youtube-videos <em>Ad-free</em>, <em>download videos, audio and subitles</em>, <em>subscribe to channels</em> without Google tracking you and <a href="https://github.com/omarroth/invidious/blob/master/README.md" id="learn_more_link">much, much more</a>.
<p><a href="https://github.com/omarroth/invidious/blob/master/README.md">Click to learn more</a> or <a href="/login?referer=%2Fdata_control" id="call_to_action">create an account to import your subscriptions</a>. <p><a href="/login?referer=%2Fdata_control" id="call_to_action">Create an account to import your subscriptions</a> now!
</div> </div>
<div class="pure-u-1 pure-u-md-1-4"></div> <div class="pure-u-1 pure-u-md-1-4"></div>
</div> </div>