diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index aaa6717..edcfee7 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -18,7 +18,7 @@ jobs: - name: Install Crystal uses: oprypin/install-crystal@v1 with: - crystal: 1.0.0 + crystal: 1.10.1 - name: Cache Shards uses: actions/cache@v2 diff --git a/Dockerfile b/Dockerfile index 2b3b239..2b4b554 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,12 +1,12 @@ -FROM docker.io/crystallang/crystal:1.0.0-alpine AS builder +FROM crystallang/crystal:1.10.1-alpine AS builder WORKDIR /app COPY ./shard.yml ./shard.yml RUN shards install COPY ./src/ ./src/ RUN crystal build ./src/instances.cr --release -FROM alpine:latest -RUN apk add --no-cache gc pcre libgcc +FROM alpine:3.18 +RUN apk add --no-cache gc pcre2 libgcc WORKDIR /app RUN addgroup -g 1000 -S invidious && \ adduser -u 1000 -S invidious -G invidious diff --git a/shard.lock b/shard.lock index c4cb889..82d8d02 100644 --- a/shard.lock +++ b/shard.lock @@ -2,19 +2,15 @@ version: 2.0 shards: backtracer: git: https://github.com/sija/backtracer.cr.git - version: 1.2.1 + version: 1.2.2 exception_page: git: https://github.com/crystal-loot/exception_page.git - version: 0.2.0 + version: 0.3.1 kemal: git: https://github.com/kemalcr/kemal.git - version: 1.0.0+git.commit.218be2422172d330feb62c6a8abc7df5402fdb84 - - kilt: - git: https://github.com/jeromegn/kilt.git - version: 0.6.1 + version: 1.4.0 radix: git: https://github.com/luislavena/radix.git diff --git a/shard.yml b/shard.yml index 7599b58..ee5cab2 100644 --- a/shard.yml +++ b/shard.yml @@ -1,8 +1,9 @@ name: instances -version: 0.1.0 +version: 0.2.0 authors: - Omar Roth + - Invidious team targets: instances: @@ -11,8 +12,8 @@ targets: dependencies: kemal: github: kemalcr/kemal - branch: master + version: ~> 1.4.0 -crystal: 1.0.0 +crystal: 1.10.1 license: AGPLv3 diff --git a/src/instances.cr b/src/instances.cr index c885fd7..ea24de0 100644 --- a/src/instances.cr +++ b/src/instances.cr @@ -160,7 +160,7 @@ SORT_PROCS = { "api" => ->(name : String, instance : Instance) { instance[:api] == nil ? 2 : instance[:api] ? 0 : 1 }, "users" => ->(name : String, instance : Instance) { -(instance[:stats]?.try &.["usage"]?.try &.["users"]["total"].as_i || 0) }, "version" => ->(name : String, instance : Instance) { instance[:stats]?.try &.["software"]?.try &.["version"].as_s.try &.split("-", 2)[0].split(".").map { |a| -a.to_i } || [0, 0, 0] }, - "playback" => ->(name : String, instance : Instance) { -(instance[:stats]?.try &.["playback"]?.try &.["ratio"]?.try { |ratio| ratio.as_f.to_i * 100 } || 100) }, + "playback" => ->(name : String, instance : Instance) { -(instance[:stats]?.try &.["playback"]?.try &.["ratio"]?.try { |ratio| ratio.as_f } || 0.0) }, } def sort_instances(instances, sort_by)