diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 00000000..74f6302c --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,10 @@ +version: 2 +updates: + - package-ecosystem: "docker" + directory: "/docker" + schedule: + interval: "weekly" + - package-ecosystem: github-actions + directory: / + schedule: + interval: "weekly" diff --git a/.github/workflows/build-nightly-container.yml b/.github/workflows/build-nightly-container.yml index 5ff3322f..4149bd0b 100644 --- a/.github/workflows/build-nightly-container.yml +++ b/.github/workflows/build-nightly-container.yml @@ -50,7 +50,7 @@ jobs: quay.expires-after=12w - name: Build and push Docker AMD64 image for Push Event - uses: docker/build-push-action@v5 + uses: docker/build-push-action@v6 with: context: . file: docker/Dockerfile @@ -75,7 +75,7 @@ jobs: quay.expires-after=12w - name: Build and push Docker ARM64 image for Push Event - uses: docker/build-push-action@v5 + uses: docker/build-push-action@v6 with: context: . file: docker/Dockerfile.arm64 diff --git a/.github/workflows/build-stable-container.yml b/.github/workflows/build-stable-container.yml index 25571ed6..1a23e68c 100644 --- a/.github/workflows/build-stable-container.yml +++ b/.github/workflows/build-stable-container.yml @@ -43,7 +43,7 @@ jobs: quay.expires-after=12w - name: Build and push Docker AMD64 image for Push Event - uses: docker/build-push-action@v5 + uses: docker/build-push-action@v6 with: context: . file: docker/Dockerfile @@ -69,7 +69,7 @@ jobs: quay.expires-after=12w - name: Build and push Docker ARM64 image for Push Event - uses: docker/build-push-action@v5 + uses: docker/build-push-action@v6 with: context: . file: docker/Dockerfile.arm64 diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 5f859613..4c4635c4 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -57,12 +57,12 @@ jobs: shell: bash - name: Install Crystal - uses: crystal-lang/install-crystal@v1.8.0 + uses: crystal-lang/install-crystal@v1.8.2 with: crystal: ${{ matrix.crystal }} - name: Cache Shards - uses: actions/cache@v3 + uses: actions/cache@v4 with: path: | ./lib @@ -113,7 +113,7 @@ jobs: uses: docker/setup-buildx-action@v3 - name: Build Docker ARM64 image - uses: docker/build-push-action@v5 + uses: docker/build-push-action@v6 with: context: . file: docker/Dockerfile.arm64 @@ -136,12 +136,12 @@ jobs: - name: Install Crystal id: lint_step_install_crystal - uses: crystal-lang/install-crystal@v1.8.0 + uses: crystal-lang/install-crystal@v1.8.2 with: crystal: latest - name: Cache Shards - uses: actions/cache@v3 + uses: actions/cache@v4 with: path: | ./lib diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml index 498a2c1b..65340d14 100644 --- a/.github/workflows/stale.yml +++ b/.github/workflows/stale.yml @@ -10,7 +10,7 @@ jobs: stale: runs-on: ubuntu-latest steps: - - uses: actions/stale@v8 + - uses: actions/stale@v9 with: repo-token: ${{ secrets.GITHUB_TOKEN }} days-before-stale: 730 diff --git a/docker/Dockerfile b/docker/Dockerfile index 17252624..c1f42213 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -1,4 +1,4 @@ -FROM mirror.gcr.io/crystallang/crystal:1.16.0-alpine AS builder +FROM mirror.gcr.io/crystallang/crystal:1.16.2-alpine AS builder RUN apk add --no-cache sqlite-static yaml-static @@ -26,7 +26,7 @@ RUN --mount=type=cache,target=/root/.cache/crystal \ --static --warnings all \ --link-flags "-lxml2 -llzma"; -FROM mirror.gcr.io/alpine:3.20 +FROM mirror.gcr.io/alpine:3.21 RUN apk add --no-cache rsvg-convert ttf-opensans tini tzdata WORKDIR /invidious RUN addgroup -g 1000 -S invidious && \ diff --git a/docker/Dockerfile.arm64 b/docker/Dockerfile.arm64 index 7fcb176e..758e7950 100644 --- a/docker/Dockerfile.arm64 +++ b/docker/Dockerfile.arm64 @@ -1,5 +1,5 @@ -FROM alpine:3.20 AS builder -RUN apk add --no-cache 'crystal=1.12.2-r0' shards sqlite-static yaml-static yaml-dev libxml2-static \ +FROM alpine:3.21 AS builder +RUN apk add --no-cache 'crystal=1.14.0-r0' shards sqlite-static yaml-static yaml-dev libxml2-static \ zlib-static openssl-libs-static openssl-dev musl-dev xz-static ARG release @@ -33,7 +33,7 @@ RUN --mount=type=cache,target=/root/.cache/crystal if [[ "${release}" == 1 ]] ; --link-flags "-lxml2 -llzma"; \ fi -FROM alpine:3.20 +FROM alpine:3.21 RUN apk add --no-cache rsvg-convert ttf-opensans tini tzdata WORKDIR /invidious RUN addgroup -g 1000 -S invidious && \ diff --git a/src/invidious/videos/parser.cr b/src/invidious/videos/parser.cr index f13a3bb5..7c0a77d9 100644 --- a/src/invidious/videos/parser.cr +++ b/src/invidious/videos/parser.cr @@ -111,7 +111,7 @@ def extract_video_info(video_id : String, env : HTTP::Server::Context | Nil = ni if !CONFIG.invidious_companion.present? if player_response["streamingData"]? && player_response.dig?("streamingData", "adaptiveFormats", 0, "url").nil? LOGGER.warn("Missing URLs for adaptive formats, falling back to other YT clients.") - players_fallback = [YoutubeAPI::ClientType::WebMobile, YoutubeAPI::ClientType::TvHtml5] + players_fallback = [YoutubeAPI::ClientType::TvHtml5, YoutubeAPI::ClientType::WebMobile] players_fallback.each do |player_fallback| client_config.client_type = player_fallback player_fallback_response = try_fetch_streaming_data(video_id, client_config, env)