diff options
| -rw-r--r-- | .github/workflows/ci.yml | 30 | ||||
| -rw-r--r-- | assets/js/player.js | 8 | ||||
| -rw-r--r-- | src/invidious.cr | 1 | ||||
| -rw-r--r-- | src/invidious/playlists.cr | 10 | ||||
| -rw-r--r-- | src/invidious/views/components/player.ecr | 2 |
5 files changed, 16 insertions, 35 deletions
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index affa7337..fde6506e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -16,37 +16,9 @@ jobs: steps: - uses: actions/checkout@v2 - # - name: Find out latest Crystal version - # run: | - # crystal_latest=$(curl -ILs -o /dev/null -w %{url_effective} https://github.com/crystal-lang/crystal/releases/latest | grep -o '[^/]*$') - # echo "crystal_latest=$crystal_latest" >> $GITHUB_ENV - # echo $crystal_latest - # - # - name: Cache Crystal - # uses: actions/cache@v2 - # with: - # path: ./crystal-bin - # key: crystal-${{ env.crystal_latest }} - # - # - name: Add custom Crystal dir to path - # run: echo "./crystal-bin" >> $GITHUB_PATH - # - # - name: Find out installed Crystal version - # run: | - # if ! [ -x "$(command -v crystal)" ]; then - # crystal_installed="none" - # else - # crystal_installed=$(crystal version | grep Crystal | awk '{print $2}') - # fi - # echo "crystal_installed=$crystal_installed" >> $GITHUB_ENV - # echo $crystal_installed - - name: Install Crystal uses: oprypin/install-crystal@v1.2.4 - # if: env.crystal_installed != env.crystal_latest - # with: - # destination: ./crystal-bin - + - name: Cache Shards uses: actions/cache@v2 with: diff --git a/assets/js/player.js b/assets/js/player.js index f79fbbf3..a6b35d35 100644 --- a/assets/js/player.js +++ b/assets/js/player.js @@ -41,8 +41,16 @@ var shareOptions = { embedCode: "<iframe id='ivplayer' width='640' height='360' src='" + embed_url + "' style='border:none;'></iframe>" } +videojs.Hls.xhr.beforeRequest = function(options) { + if (options.uri.indexOf('local=true') === -1) { + options.uri = options.uri + '?local=true'; + } + return options; +}; + var player = videojs('player', options); + if (location.pathname.startsWith('/embed/')) { player.overlay({ overlays: [{ diff --git a/src/invidious.cr b/src/invidious.cr index c4ca9c08..cdf64696 100644 --- a/src/invidious.cr +++ b/src/invidious.cr @@ -197,6 +197,7 @@ before_all do |env| extra_media_csp = "" if CONFIG.disabled?("local") || !preferences.local extra_media_csp += " https://*.googlevideo.com:443" + extra_media_csp += " https://*.youtube.com:443" end # TODO: Remove style-src's 'unsafe-inline', requires to remove all inline styles (<style> [..] </style>, style=" [..] ") env.response.headers["Content-Security-Policy"] = "default-src 'none'; script-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data:; font-src 'self' data:; connect-src 'self'; manifest-src 'self'; media-src 'self' blob:#{extra_media_csp}" diff --git a/src/invidious/playlists.cr b/src/invidious/playlists.cr index 2389de49..d5b41caa 100644 --- a/src/invidious/playlists.cr +++ b/src/invidious/playlists.cr @@ -220,6 +220,11 @@ struct InvidiousPlaylist json.field "videos" do json.array do + if !offset || offset == 0 + index = PG_DB.query_one?("SELECT index FROM playlist_videos WHERE plid = $1 AND id = $2 LIMIT 1", self.id, continuation, as: Int64) + offset = self.index.index(index) || 0 + end + videos = get_playlist_videos(PG_DB, self, offset: offset, locale: locale, continuation: continuation) videos.each_with_index do |video, index| video.to_json(locale, json, offset + index) @@ -412,11 +417,6 @@ end def get_playlist_videos(db, playlist, offset, locale = nil, continuation = nil) if playlist.is_a? InvidiousPlaylist - if !offset - index = PG_DB.query_one?("SELECT index FROM playlist_videos WHERE plid = $1 AND id = $2 LIMIT 1", playlist.id, continuation, as: Int64) - offset = playlist.index.index(index) || 0 - end - db.query_all("SELECT * FROM playlist_videos WHERE plid = $1 ORDER BY array_position($2, index) LIMIT 100 OFFSET $3", playlist.id, playlist.index, offset, as: PlaylistVideo) else fetch_playlist_videos(playlist.id, playlist.video_count, offset, locale, continuation) diff --git a/src/invidious/views/components/player.ecr b/src/invidious/views/components/player.ecr index 0e6664fa..625c6fee 100644 --- a/src/invidious/views/components/player.ecr +++ b/src/invidious/views/components/player.ecr @@ -4,7 +4,7 @@ <% if params.video_loop %>loop<% end %> <% if params.controls %>controls<% end %>> <% if (hlsvp = video.hls_manifest_url) && !CONFIG.disabled?("livestreams") %> - <source src="<%= URI.parse(hlsvp).full_path %>?local=true" type="application/x-mpegURL" label="livestream"> + <source src="<%= URI.parse(hlsvp).full_path %><% if params.local %>?local=true<% end %>" type="application/x-mpegURL" label="livestream"> <% else %> <% if params.listen %> <% audio_streams.each_with_index do |fmt, i| %> |
