Merge branch 'master' into patch-1

このコミットが含まれているのは:
TheFrenchGhosty 2021-06-11 14:04:05 +00:00 committed by GitHub
コミット 4fd51ec880
この署名に対応する既知のキーがデータベースに存在しません
GPGキーID: 4AEE18F83AFDEB23
13個のファイルの変更44行の追加51行の削除

ファイルの表示

@ -19,7 +19,7 @@ jobs:
- name: Install Crystal
uses: oprypin/install-crystal@v1.2.4
with:
crystal: 0.36.1
crystal: 1.0.0
- name: Cache Shards
uses: actions/cache@v2

ファイルの表示

@ -18,5 +18,5 @@ jobs:
issue-lock-reason: 'resolved'
pr-lock-reason: 'resolved'
issue-lock-comment: 'This issue has been automatically locked since there has not been any activity in it in the last 30 days. If this is still applicable to the current version of Invidious feel free to open a new issue.'
pr-lock-comment: 'This pull request has been automatically locked since there has not been any activity in it in the last 30 days. If you want to tell us about needed or wanted changes or if problems related to this code are discovered, feel free to open an issue or a new pull request.'
# issue-lock-comment: 'This issue has been automatically locked since there has not been any activity in it in the last 30 days. If this is still applicable to the current version of Invidious feel free to open a new issue.'
# pr-lock-comment: 'This pull request has been automatically locked since there has not been any activity in it in the last 30 days. If you want to tell us about needed or wanted changes or if problems related to this code are discovered, feel free to open an issue or a new pull request.'

ファイルの表示

@ -1,4 +1,4 @@
FROM crystallang/crystal:0.36.1-alpine AS builder
FROM crystallang/crystal:1.0.0-alpine AS builder
RUN apk add --no-cache curl sqlite-static yaml-static
WORKDIR /invidious
COPY ./shard.yml ./shard.yml

ファイルの表示

@ -200,7 +200,7 @@
"Token is expired, please try again": "Lejárt token, kérem próbáld újra",
"English": "angol",
"English (auto-generated)": "angol (automatikusan generált)",
"Afrikaans": "",
"Afrikaans": "afrikaans",
"Albanian": "albán",
"Amharic": "amhara",
"Arabic": "arab",
@ -208,7 +208,7 @@
"Azerbaijani": "azerbajdzsáni",
"Bangla": "bengáli",
"Basque": "baszk",
"Belarusian": "belarusz",
"Belarusian": "fehérorosz",
"Bosnian": "bosnyák",
"Bulgarian": "bolgár",
"Burmese": "burmai",

ファイルの表示

@ -1,15 +1,15 @@
{
"`x` subscribers": {
"([^.,0-9]|^)1([^.,0-9]|$)": "`x` pelanggan",
"": "`x` pelanggan"
"": "`x` pelanggan."
},
"`x` videos": {
"([^.,0-9]|^)1([^.,0-9]|$)": "`x` video",
"": "`x` video"
"": "`x` video."
},
"`x` playlists": {
"([^.,0-9]|^)1([^.,0-9]|$)": "`x` daftar putar",
"": "`x` daftar putar"
"": "`x` daftar putar."
},
"LIVE": "SIARAN LANGSUNG",
"Shared `x` ago": "Dibagikan`x` lalu",
@ -77,7 +77,7 @@
"Fallback captions: ": "Subtitel fallback: ",
"Show related videos: ": "Tampilkan video terkait: ",
"Show annotations by default: ": "Tampilkan anotasi secara default: ",
"Automatically extend video description: ": "Luaskan keterangan video secara matis: ",
"Automatically extend video description: ": "Perluas deskripsi video secara otomatis: ",
"Interactive 360 degree videos: ": "Video interaktif 360°: ",
"Visual preferences": "Preferensi visual",
"Player style: ": "Gaya pemutar: ",
@ -126,11 +126,11 @@
"Token": "Token",
"`x` subscriptions": {
"([^.,0-9]|^)1([^.,0-9]|$)": "`x` langganan",
"": "`x` langganan"
"": "`x` langganan."
},
"`x` tokens": {
"([^.,0-9]|^)1([^.,0-9]|$)": "`x` token",
"": "`x` token"
"": "`x` token."
},
"Import/export": "Impor/ekspor",
"unsubscribe": "batal langganan",
@ -138,7 +138,7 @@
"Subscriptions": "Langganan",
"`x` unseen notifications": {
"([^.,0-9]|^)1([^.,0-9]|$)": "`x` pemberitahuan belum dilihat",
"": "`x` pemberitahuan belum dilihat"
"": "`x` pemberitahuan belum dilihat."
},
"search": "cari",
"Log out": "Keluar",
@ -158,8 +158,8 @@
"Title": "Judul",
"Playlist privacy": "Privasi daftar putar",
"Editing playlist `x`": "Menyunting daftar putar `x`",
"Show more": "Tampil lebih",
"Show less": "Tampil kurang",
"Show more": "Tampilkan lainnya",
"Show less": "Tampilkan lebih sedikit",
"Watch on YouTube": "Tonton di YouTube",
"Hide annotations": "Sembunyikan anotasi",
"Show annotations": "Tampilkan anotasi",
@ -363,7 +363,7 @@
"([^.,0-9]|^)1([^.,0-9]|$)": "`x` detik.([^.,0-9]|^)1([^.,0-9]|$)",
"": "`x` detik."
},
"Fallback comments: ": "Komentar ganti: ",
"Fallback comments: ": "Komentar mundur: ",
"Popular": "Populer",
"Search": "Cari",
"Top": "Teratas",
@ -373,7 +373,7 @@
"View as playlist": "Tampilkan sebagai daftar putar",
"Default": "Asali",
"Music": "Musik",
"Gaming": "Gaming",
"Gaming": "Permainan",
"News": "Berita",
"Movies": "Film",
"Download": "Unduh",

ファイルの表示

@ -2,39 +2,35 @@ version: 2.0
shards:
db:
git: https://github.com/crystal-lang/crystal-db.git
version: 0.10.0
version: 0.10.1
exception_page:
git: https://github.com/crystal-loot/exception_page.git
version: 0.1.4
version: 0.1.5
kemal:
git: https://github.com/kemalcr/kemal.git
version: 0.27.0
version: 1.0.0
kilt:
git: https://github.com/jeromegn/kilt.git
version: 0.4.0
version: 0.4.1
lsquic:
git: https://github.com/iv-org/lsquic.cr.git
version: 2.18.1-1
version: 2.18.1-2
pg:
git: https://github.com/will/crystal-pg.git
version: 0.23.1
pool:
git: https://github.com/ysbaddaden/pool.git
version: 0.2.3
version: 0.23.2
protodec:
git: https://github.com/iv-org/protodec.git
version: 0.1.3
version: 0.1.4
radix:
git: https://github.com/luislavena/radix.git
version: 0.3.9
version: 0.4.1
sqlite3:
git: https://github.com/crystal-lang/crystal-sqlite3.git

ファイルの表示

@ -12,23 +12,20 @@ targets:
dependencies:
pg:
github: will/crystal-pg
version: ~> 0.23.1
version: ~> 0.23.2
sqlite3:
github: crystal-lang/crystal-sqlite3
version: ~> 0.18.0
kemal:
github: kemalcr/kemal
version: ~> 0.27.0
pool:
github: ysbaddaden/pool
version: ~> 0.2.3
version: ~> 1.0.0
protodec:
github: iv-org/protodec
version: ~> 0.1.3
version: ~> 0.1.4
lsquic:
github: iv-org/lsquic.cr
version: ~> 2.18.1-1
version: ~> 2.18.1-2
crystal: 0.36.1
crystal: 1.0.0
license: AGPLv3

ファイルの表示

@ -166,7 +166,7 @@ end
before_all do |env|
preferences = begin
Preferences.from_json(env.request.cookies["PREFS"]?.try &.value || "{}")
Preferences.from_json(URI.decode_www_form(env.request.cookies["PREFS"]?.try &.value || "{}"))
rescue
Preferences.from_json("{}")
end
@ -421,7 +421,7 @@ get "/modify_notifications" do |env|
html = YT_POOL.client &.get("/subscription_manager?disable_polymer=1", headers)
cookies = HTTP::Cookies.from_headers(headers)
cookies = HTTP::Cookies.from_client_headers(headers)
html.cookies.each do |cookie|
if {"VISITOR_INFO1_LIVE", "YSC", "SIDCC"}.includes? cookie.name
if cookies[cookie.name]?

ファイルの表示

@ -1,5 +1,5 @@
require "lsquic"
require "pool/connection"
require "db"
def add_yt_headers(request)
request.headers["user-agent"] ||= "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36"
@ -20,7 +20,7 @@ struct YoutubeConnectionPool
property! url : URI
property! capacity : Int32
property! timeout : Float64
property pool : ConnectionPool(QUIC::Client | HTTP::Client)
property pool : DB::Pool(QUIC::Client | HTTP::Client)
def initialize(url : URI, @capacity = 5, @timeout = 5.0, use_quic = true)
@url = url
@ -43,7 +43,7 @@ struct YoutubeConnectionPool
conn.before_request { |r| add_yt_headers(r) } if url.host == "www.youtube.com"
response = yield conn
ensure
pool.checkin(conn)
pool.release(conn)
end
end
@ -51,7 +51,7 @@ struct YoutubeConnectionPool
end
private def build_pool(use_quic)
ConnectionPool(QUIC::Client | HTTP::Client).new(capacity: capacity, timeout: timeout) do
DB::Pool(QUIC::Client | HTTP::Client).new(initial_pool_size: 0, max_pool_size: capacity, max_idle_pool_size: capacity, checkout_timeout: timeout) do
if use_quic
conn = QUIC::Client.new(url)
else

ファイルの表示

@ -112,7 +112,7 @@ class Invidious::Jobs::BypassCaptchaJob < Invidious::Jobs::BaseJob
headers = HTTP::Headers{
"Cookie" => URI.parse(response.headers["location"]).query_params["google_abuse"].split(";")[0],
}
cookies = HTTP::Cookies.from_headers(headers)
cookies = HTTP::Cookies.from_client_headers(headers)
cookies.each { |cookie| CONFIG.cookies << cookie }

ファイルの表示

@ -238,7 +238,7 @@ class Invidious::Routes::Login < Invidious::Routes::BaseRoute
traceback << "Logging in..."
location = URI.parse(challenge_results[0][-1][2].to_s)
cookies = HTTP::Cookies.from_headers(headers)
cookies = HTTP::Cookies.from_client_headers(headers)
headers.delete("Content-Type")
headers.delete("Google-Accounts-XSRF")
@ -261,7 +261,7 @@ class Invidious::Routes::Login < Invidious::Routes::BaseRoute
location = login.headers["Location"]?.try { |u| URI.parse(u) }
end
cookies = HTTP::Cookies.from_headers(headers)
cookies = HTTP::Cookies.from_client_headers(headers)
sid = cookies["SID"]?.try &.value
if !sid
raise "Couldn't get SID."

ファイルの表示

@ -198,10 +198,10 @@ class Invidious::Routes::PreferencesRoute < Invidious::Routes::BaseRoute
end
if CONFIG.domain
env.response.cookies["PREFS"] = HTTP::Cookie.new(name: "PREFS", domain: "#{CONFIG.domain}", value: preferences, expires: Time.utc + 2.years,
env.response.cookies["PREFS"] = HTTP::Cookie.new(name: "PREFS", domain: "#{CONFIG.domain}", value: URI.encode_www_form(preferences), expires: Time.utc + 2.years,
secure: secure, http_only: true)
else
env.response.cookies["PREFS"] = HTTP::Cookie.new(name: "PREFS", value: preferences, expires: Time.utc + 2.years,
env.response.cookies["PREFS"] = HTTP::Cookie.new(name: "PREFS", value: URI.encode_www_form(preferences), expires: Time.utc + 2.years,
secure: secure, http_only: true)
end
end
@ -250,10 +250,10 @@ class Invidious::Routes::PreferencesRoute < Invidious::Routes::BaseRoute
end
if CONFIG.domain
env.response.cookies["PREFS"] = HTTP::Cookie.new(name: "PREFS", domain: "#{CONFIG.domain}", value: preferences, expires: Time.utc + 2.years,
env.response.cookies["PREFS"] = HTTP::Cookie.new(name: "PREFS", domain: "#{CONFIG.domain}", value: URI.encode_www_form(preferences), expires: Time.utc + 2.years,
secure: secure, http_only: true)
else
env.response.cookies["PREFS"] = HTTP::Cookie.new(name: "PREFS", value: preferences, expires: Time.utc + 2.years,
env.response.cookies["PREFS"] = HTTP::Cookie.new(name: "PREFS", value: URI.encode_www_form(preferences), expires: Time.utc + 2.years,
secure: secure, http_only: true)
end
end

ファイルの表示

@ -462,7 +462,7 @@ def subscribe_ajax(channel_id, action, env_headers)
html = YT_POOL.client &.get("/subscription_manager?disable_polymer=1", headers)
cookies = HTTP::Cookies.from_headers(headers)
cookies = HTTP::Cookies.from_client_headers(headers)
html.cookies.each do |cookie|
if {"VISITOR_INFO1_LIVE", "YSC", "SIDCC"}.includes? cookie.name
if cookies[cookie.name]?