diff --git a/.github/workflows/docker-pr.yml b/.github/workflows/docker-pr.yml index 4287930..71cc9a1 100644 --- a/.github/workflows/docker-pr.yml +++ b/.github/workflows/docker-pr.yml @@ -32,7 +32,7 @@ jobs: with: context: . file: ./Dockerfile - platforms: linux/amd64,linux/arm64/v8 + platforms: linux/amd64,linux/arm/v7,linux/arm64/v8 #platforms: linux/amd64 push: false - tags: tzahi12345/youtubedl-material:nightly-pr \ No newline at end of file + tags: tzahi12345/youtubedl-material:nightly-pr diff --git a/Dockerfile b/Dockerfile index b8a53de..6c9b328 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,15 +1,17 @@ -# Fetching our ffmpeg -FROM ubuntu:22.04 AS ffmpeg +# Fetching our utils +FROM ubuntu:22.04 AS utils ENV DEBIAN_FRONTEND=noninteractive # Use script due local build compability -COPY docker-utils/ffmpeg-fetch.sh . -RUN chmod +x ffmpeg-fetch.sh +COPY docker-utils/*.sh . +RUN chmod +x *.sh RUN sh ./ffmpeg-fetch.sh +RUN sh ./fetch-twitchdownloader.sh # Create our Ubuntu 22.04 with node 16.14.2 (that specific version is required as per: https://stackoverflow.com/a/72855258/8088021) # Go to 20.04 -FROM ubuntu:20.04 AS base +FROM ubuntu:22.04 AS base +ARG TARGETPLATFORM ARG DEBIAN_FRONTEND=noninteractive ENV UID=1000 ENV GID=1000 @@ -17,19 +19,30 @@ ENV USER=youtube ENV NO_UPDATE_NOTIFIER=true ENV PM2_HOME=/app/pm2 ENV ALLOW_CONFIG_MUTATIONS=true +# Directy fetch specific version +## https://deb.nodesource.com/node_16.x/pool/main/n/nodejs/nodejs_16.14.2-deb-1nodesource1_amd64.deb RUN groupadd -g $GID $USER && useradd --system -m -g $USER --uid $UID $USER && \ apt update && \ - apt install -y --no-install-recommends curl ca-certificates tzdata && \ - curl -fsSL https://deb.nodesource.com/setup_16.x | bash - && \ - apt install -y --no-install-recommends nodejs && \ - npm -g install npm n && \ - n 16.14.2 && \ + apt install -y --no-install-recommends curl ca-certificates tzdata libicu70 && \ apt clean && \ rm -rf /var/lib/apt/lists/* + RUN case ${TARGETPLATFORM} in \ + "linux/amd64") NODE_ARCH=amd64 ;; \ + "linux/arm") NODE_ARCH=armhf ;; \ + "linux/arm/v7") NODE_ARCH=armhf ;; \ + "linux/arm64") NODE_ARCH=arm64 ;; \ + esac \ + && curl -L https://deb.nodesource.com/node_16.x/pool/main/n/nodejs/nodejs_16.14.2-deb-1nodesource1_$NODE_ARCH.deb -o ./nodejs.deb && \ + apt update && \ + apt install -y ./nodejs.deb && \ + apt clean && \ + rm -rf /var/lib/apt/lists/* &&\ + rm nodejs.deb; # Build frontend -FROM base as frontend +ARG BUILDPLATFORM +FROM --platform=${BUILDPLATFORM} node:16 as frontend RUN npm install -g @angular/cli WORKDIR /build COPY [ "package.json", "package-lock.json", "angular.json", "tsconfig.json", "/build/" ] @@ -49,32 +62,35 @@ RUN npm config set strict-ssl false && \ npm install --prod && \ ls -al -FROM base as python -WORKDIR /app -COPY docker-utils/GetTwitchDownloader.py . -RUN apt update && \ - apt install -y --no-install-recommends python3-minimal python-is-python3 python3-pip && \ - apt clean && \ - rm -rf /var/lib/apt/lists/* -RUN pip install PyGithub requests -RUN python GetTwitchDownloader.py +#FROM base as python +# armv7 need build from source +#WORKDIR /app +#COPY docker-utils/GetTwitchDownloader.py . +#RUN apt update && \ +# apt install -y --no-install-recommends python3-minimal python-is-python3 python3-pip python3-dev build-essential libffi-dev && \ +# apt clean && \ +# rm -rf /var/lib/apt/lists/* +#RUN pip install PyGithub requests +#RUN python GetTwitchDownloader.py # Final image FROM base RUN npm install -g pm2 && \ apt update && \ apt install -y --no-install-recommends gosu python3-minimal python-is-python3 python3-pip atomicparsley build-essential && \ + pip install pycryptodomex && \ + apt remove -y --purge build-essential && \ + apt autoremove -y --purge && \ apt clean && \ rm -rf /var/lib/apt/lists/* -RUN pip install pycryptodomex WORKDIR /app # User 1000 already exist from base image -COPY --chown=$UID:$GID --from=ffmpeg [ "/usr/local/bin/ffmpeg", "/usr/local/bin/ffmpeg" ] -COPY --chown=$UID:$GID --from=ffmpeg [ "/usr/local/bin/ffprobe", "/usr/local/bin/ffprobe" ] +COPY --chown=$UID:$GID --from=utils [ "/usr/local/bin/ffmpeg", "/usr/local/bin/ffmpeg" ] +COPY --chown=$UID:$GID --from=utils [ "/usr/local/bin/ffprobe", "/usr/local/bin/ffprobe" ] +COPY --chown=$UID:$GID --from=utils [ "/usr/local/bin/TwitchDownloaderCLI", "/usr/local/bin/TwitchDownloaderCLI"] COPY --chown=$UID:$GID --from=backend ["/app/","/app/"] COPY --chown=$UID:$GID --from=frontend [ "/build/backend/public/", "/app/public/" ] -COPY --chown=$UID:$GID --from=python ["/app/TwitchDownloaderCLI","/usr/local/bin/TwitchDownloaderCLI"] -RUN chown $UID:$GID . +#COPY --chown=$UID:$GID --from=python ["/app/TwitchDownloaderCLI","/usr/local/bin/TwitchDownloaderCLI"] RUN chmod +x /app/fix-scripts/*.sh # Add some persistence data #VOLUME ["/app/appdata"] diff --git a/Public API v1.yaml b/Public API v1.yaml index 5a82c7f..e49783d 100644 --- a/Public API v1.yaml +++ b/Public API v1.yaml @@ -2742,7 +2742,7 @@ components: error: type: string schedule: - type: object + $ref: '#/components/schemas/Schedule' options: type: object TaskType: @@ -2888,6 +2888,7 @@ components: - sharing - advanced_download - downloads_manager + - tasks_manager YesNo: type: string enum: diff --git a/backend/entrypoint.sh b/backend/entrypoint.sh index ed568e7..aabfe36 100755 --- a/backend/entrypoint.sh +++ b/backend/entrypoint.sh @@ -1,7 +1,7 @@ #!/bin/sh set -eu -CMD="npm start" +CMD="npm start && pm2 start" # if the first arg starts with "-" pass it to program if [ "${1#-}" != "$1" ]; then @@ -10,7 +10,7 @@ fi # chown current working directory to current user if [ "$*" = "$CMD" ] && [ "$(id -u)" = "0" ]; then - find . \! -user "$UID" -exec chown "$UID:$GID" '{}' + || echo "WARNING! Could not change directory ownership. If you manage permissions externally this is fine, otherwise you may experience issues when downloading or deleting videos." + find . \! -user "$UID" -exec chown "$UID:$GID" -R '{}' + || echo "WARNING! Could not change directory ownership. If you manage permissions externally this is fine, otherwise you may experience issues when downloading or deleting videos." exec gosu "$UID:$GID" "$0" "$@" fi diff --git a/backend/package-lock.json b/backend/package-lock.json index eaa788f..fd71a0a 100644 --- a/backend/package-lock.json +++ b/backend/package-lock.json @@ -769,6 +769,11 @@ "delayed-stream": "~1.0.0" } }, + "command-exists": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz", + "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==" + }, "compress-commons": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-4.1.1.tgz", diff --git a/backend/package.json b/backend/package.json index 3b14be4..3038d49 100644 --- a/backend/package.json +++ b/backend/package.json @@ -30,6 +30,7 @@ "async-mutex": "^0.4.0", "axios": "^0.21.2", "bcryptjs": "^2.4.0", + "command-exists": "^1.2.9", "compression": "^1.7.4", "config": "^3.2.3", "express": "^4.18.2", diff --git a/backend/twitch.js b/backend/twitch.js index b0ac965..2237bc9 100644 --- a/backend/twitch.js +++ b/backend/twitch.js @@ -6,6 +6,7 @@ const fs = require('fs-extra') const path = require('path'); const { promisify } = require('util'); const child_process = require('child_process'); +const commandExistsSync = require('command-exists').sync; async function getCommentsForVOD(vodId) { const exec = promisify(child_process.exec); @@ -20,7 +21,7 @@ async function getCommentsForVOD(vodId) { const cliExt = is_windows ? '.exe' : '' const cliPath = `TwitchDownloaderCLI${cliExt}` - if (!fs.existsSync(cliPath)) { + if (!commandExistsSync(cliPath)) { logger.error(`${cliPath} does not exist. Twitch chat download failed! Get it here: https://github.com/lay295/TwitchDownloader`); return null; } diff --git a/docker-utils/fetch-twitchdownloader.sh b/docker-utils/fetch-twitchdownloader.sh new file mode 100644 index 0000000..661cdbb --- /dev/null +++ b/docker-utils/fetch-twitchdownloader.sh @@ -0,0 +1,39 @@ +#!/bin/sh + +# THANK YOU TALULAH (https://github.com/nottalulah) for your help in figuring this out +# and also optimizing some code with this commit. +# xoxo :D + +case $(uname -m) in + x86_64) + ARCH=Linux-x64;; + aarch64) + ARCH=LinuxArm64;; + armhf) + ARCH=LinuxArm;; + armv7) + ARCH=LinuxArm;; + armv7l) + ARCH=LinuxArm;; + *) + echo "Unsupported architecture: $(uname -m)" + exit 1 +esac + +echo "(INFO) Architecture detected: $ARCH" +echo "(1/5) READY - Install unzip" +apt-get update && apt-get -y install unzip curl jq libicu70 +VERSION=$(curl --silent "https://api.github.com/repos/lay295/TwitchDownloader/releases" | jq -r --arg arch "$ARCH" '[.[] | select(.assets | length > 0) | select(.assets[].name | contains("CLI") and contains($arch))] | max_by(.published_at) | .tag_name') +echo "(2/5) DOWNLOAD - Acquire twitchdownloader" +curl -o twitchdownloader.zip \ + --connect-timeout 5 \ + --max-time 120 \ + --retry 5 \ + --retry-delay 0 \ + --retry-max-time 40 \ + -L "https://github.com/lay295/TwitchDownloader/releases/download/$VERSION/TwitchDownloaderCLI-$VERSION-$ARCH.zip" +unzip twitchdownloader.zip +chmod +x TwitchDownloaderCLI +echo "(3/5) Smoke test" +./TwitchDownloaderCLI --help +cp ./TwitchDownloaderCLI /usr/local/bin/TwitchDownloaderCLI diff --git a/docker-utils/ffmpeg-fetch.sh b/docker-utils/ffmpeg-fetch.sh index 6a169bf..d5fadbb 100644 --- a/docker-utils/ffmpeg-fetch.sh +++ b/docker-utils/ffmpeg-fetch.sh @@ -30,7 +30,7 @@ curl -o ffmpeg.txz \ --retry 5 \ --retry-delay 0 \ --retry-max-time 40 \ - "https://johnvansickle.com/ffmpeg/builds/ffmpeg-git-${ARCH}-static.tar.xz" + "https://johnvansickle.com/ffmpeg/old-releases/ffmpeg-5.1.1-${ARCH}-static.tar.xz" mkdir /tmp/ffmpeg tar xf ffmpeg.txz -C /tmp/ffmpeg echo "(3/5) CLEANUP - Remove temp dependencies from ffmpeg obtain layer" diff --git a/src/api-types/models/AddFileToPlaylistRequest.ts b/src/api-types/models/AddFileToPlaylistRequest.ts index a08c586..bc5b21a 100644 --- a/src/api-types/models/AddFileToPlaylistRequest.ts +++ b/src/api-types/models/AddFileToPlaylistRequest.ts @@ -5,4 +5,4 @@ export type AddFileToPlaylistRequest = { file_uid: string; playlist_id: string; -}; \ No newline at end of file +}; diff --git a/src/api-types/models/Archive.ts b/src/api-types/models/Archive.ts index 0c0e216..63ce05b 100644 --- a/src/api-types/models/Archive.ts +++ b/src/api-types/models/Archive.ts @@ -13,4 +13,4 @@ export type Archive = { sub_id?: string; timestamp: number; uid: string; -}; \ No newline at end of file +}; diff --git a/src/api-types/models/BaseChangePermissionsRequest.ts b/src/api-types/models/BaseChangePermissionsRequest.ts index fd418de..912d429 100644 --- a/src/api-types/models/BaseChangePermissionsRequest.ts +++ b/src/api-types/models/BaseChangePermissionsRequest.ts @@ -8,4 +8,4 @@ import type { YesNo } from './YesNo'; export type BaseChangePermissionsRequest = { permission: UserPermission; new_value: YesNo; -}; \ No newline at end of file +}; diff --git a/src/api-types/models/Category.ts b/src/api-types/models/Category.ts index cfabd8b..b03d891 100644 --- a/src/api-types/models/Category.ts +++ b/src/api-types/models/Category.ts @@ -12,4 +12,4 @@ export type Category = { * Overrides file output for downloaded files in category */ custom_output?: string; -}; \ No newline at end of file +}; diff --git a/src/api-types/models/CategoryRule.ts b/src/api-types/models/CategoryRule.ts index e99cda1..ad13eb6 100644 --- a/src/api-types/models/CategoryRule.ts +++ b/src/api-types/models/CategoryRule.ts @@ -22,4 +22,4 @@ export namespace CategoryRule { } -} \ No newline at end of file +} diff --git a/src/api-types/models/ChangeRolePermissionsRequest.ts b/src/api-types/models/ChangeRolePermissionsRequest.ts index 9d786e7..e7e5051 100644 --- a/src/api-types/models/ChangeRolePermissionsRequest.ts +++ b/src/api-types/models/ChangeRolePermissionsRequest.ts @@ -6,4 +6,4 @@ import type { BaseChangePermissionsRequest } from './BaseChangePermissionsReques export type ChangeRolePermissionsRequest = (BaseChangePermissionsRequest & { role: string; -}); \ No newline at end of file +}); diff --git a/src/api-types/models/ChangeUserPermissionsRequest.ts b/src/api-types/models/ChangeUserPermissionsRequest.ts index ffa4817..780ceaa 100644 --- a/src/api-types/models/ChangeUserPermissionsRequest.ts +++ b/src/api-types/models/ChangeUserPermissionsRequest.ts @@ -6,4 +6,4 @@ import type { BaseChangePermissionsRequest } from './BaseChangePermissionsReques export type ChangeUserPermissionsRequest = (BaseChangePermissionsRequest & { user_uid: string; -}); \ No newline at end of file +}); diff --git a/src/api-types/models/CheckConcurrentStreamRequest.ts b/src/api-types/models/CheckConcurrentStreamRequest.ts index 7c30670..d117e3a 100644 --- a/src/api-types/models/CheckConcurrentStreamRequest.ts +++ b/src/api-types/models/CheckConcurrentStreamRequest.ts @@ -7,4 +7,4 @@ export type CheckConcurrentStreamRequest = { * UID of the concurrent stream */ uid: string; -}; \ No newline at end of file +}; diff --git a/src/api-types/models/CheckConcurrentStreamResponse.ts b/src/api-types/models/CheckConcurrentStreamResponse.ts index 2d1df1c..54f03a2 100644 --- a/src/api-types/models/CheckConcurrentStreamResponse.ts +++ b/src/api-types/models/CheckConcurrentStreamResponse.ts @@ -6,4 +6,4 @@ import type { ConcurrentStream } from './ConcurrentStream'; export type CheckConcurrentStreamResponse = { stream: ConcurrentStream; -}; \ No newline at end of file +}; diff --git a/src/api-types/models/ClearDownloadsRequest.ts b/src/api-types/models/ClearDownloadsRequest.ts index efee2c9..5603dc5 100644 --- a/src/api-types/models/ClearDownloadsRequest.ts +++ b/src/api-types/models/ClearDownloadsRequest.ts @@ -6,4 +6,4 @@ export type ClearDownloadsRequest = { clear_finished?: boolean; clear_paused?: boolean; clear_errors?: boolean; -}; \ No newline at end of file +}; diff --git a/src/api-types/models/ConcurrentStream.ts b/src/api-types/models/ConcurrentStream.ts index 486cc57..ef475d6 100644 --- a/src/api-types/models/ConcurrentStream.ts +++ b/src/api-types/models/ConcurrentStream.ts @@ -6,4 +6,4 @@ export type ConcurrentStream = { playback_timestamp?: number; unix_timestamp?: number; playing?: boolean; -}; \ No newline at end of file +}; diff --git a/src/api-types/models/Config.ts b/src/api-types/models/Config.ts index cb05dea..cb80587 100644 --- a/src/api-types/models/Config.ts +++ b/src/api-types/models/Config.ts @@ -3,5 +3,5 @@ /* eslint-disable */ export type Config = { - YoutubeDLMaterial: any; -}; \ No newline at end of file + YoutubeDLMaterial: Record; +}; diff --git a/src/api-types/models/ConfigResponse.ts b/src/api-types/models/ConfigResponse.ts index 0912cac..4d9eb77 100644 --- a/src/api-types/models/ConfigResponse.ts +++ b/src/api-types/models/ConfigResponse.ts @@ -7,4 +7,4 @@ import type { Config } from './Config'; export type ConfigResponse = { config_file: Config; success: boolean; -}; \ No newline at end of file +}; diff --git a/src/api-types/models/CreateCategoryRequest.ts b/src/api-types/models/CreateCategoryRequest.ts index 7c091b6..552c745 100644 --- a/src/api-types/models/CreateCategoryRequest.ts +++ b/src/api-types/models/CreateCategoryRequest.ts @@ -4,4 +4,4 @@ export type CreateCategoryRequest = { name: string; -}; \ No newline at end of file +}; diff --git a/src/api-types/models/CreateCategoryResponse.ts b/src/api-types/models/CreateCategoryResponse.ts index 2be83f6..0d38792 100644 --- a/src/api-types/models/CreateCategoryResponse.ts +++ b/src/api-types/models/CreateCategoryResponse.ts @@ -7,4 +7,4 @@ import type { Category } from './Category'; export type CreateCategoryResponse = { new_category?: Category; success?: boolean; -}; \ No newline at end of file +}; diff --git a/src/api-types/models/CreatePlaylistRequest.ts b/src/api-types/models/CreatePlaylistRequest.ts index e61a2a0..e276658 100644 --- a/src/api-types/models/CreatePlaylistRequest.ts +++ b/src/api-types/models/CreatePlaylistRequest.ts @@ -6,4 +6,4 @@ export type CreatePlaylistRequest = { playlistName: string; uids: Array; thumbnailURL: string; -}; \ No newline at end of file +}; diff --git a/src/api-types/models/CreatePlaylistResponse.ts b/src/api-types/models/CreatePlaylistResponse.ts index 48b5d06..51fba29 100644 --- a/src/api-types/models/CreatePlaylistResponse.ts +++ b/src/api-types/models/CreatePlaylistResponse.ts @@ -7,4 +7,4 @@ import type { Playlist } from './Playlist'; export type CreatePlaylistResponse = { new_playlist: Playlist; success: boolean; -}; \ No newline at end of file +}; diff --git a/src/api-types/models/CropFileSettings.ts b/src/api-types/models/CropFileSettings.ts index e4ab45a..0e203f2 100644 --- a/src/api-types/models/CropFileSettings.ts +++ b/src/api-types/models/CropFileSettings.ts @@ -5,4 +5,4 @@ export type CropFileSettings = { cropFileStart: number; cropFileEnd: number; -}; \ No newline at end of file +}; diff --git a/src/api-types/models/DBBackup.ts b/src/api-types/models/DBBackup.ts index b137cad..5e90358 100644 --- a/src/api-types/models/DBBackup.ts +++ b/src/api-types/models/DBBackup.ts @@ -17,4 +17,4 @@ export namespace DBBackup { } -} \ No newline at end of file +} diff --git a/src/api-types/models/DBInfoResponse.ts b/src/api-types/models/DBInfoResponse.ts index b4e4fe1..e57d595 100644 --- a/src/api-types/models/DBInfoResponse.ts +++ b/src/api-types/models/DBInfoResponse.ts @@ -16,4 +16,4 @@ roles?: TableInfo; download_queue?: TableInfo; archives?: TableInfo; }; -}; \ No newline at end of file +}; diff --git a/src/api-types/models/DatabaseFile.ts b/src/api-types/models/DatabaseFile.ts index 855aa61..8fdec34 100644 --- a/src/api-types/models/DatabaseFile.ts +++ b/src/api-types/models/DatabaseFile.ts @@ -42,4 +42,4 @@ export type DatabaseFile = { */ abr?: number; favorite: boolean; -}; \ No newline at end of file +}; diff --git a/src/api-types/models/DeleteAllFilesResponse.ts b/src/api-types/models/DeleteAllFilesResponse.ts index 94efef7..0720b46 100644 --- a/src/api-types/models/DeleteAllFilesResponse.ts +++ b/src/api-types/models/DeleteAllFilesResponse.ts @@ -11,4 +11,4 @@ export type DeleteAllFilesResponse = { * Number of files removed */ delete_count?: number; -}; \ No newline at end of file +}; diff --git a/src/api-types/models/DeleteArchiveItemsRequest.ts b/src/api-types/models/DeleteArchiveItemsRequest.ts index 7911f59..2b849f6 100644 --- a/src/api-types/models/DeleteArchiveItemsRequest.ts +++ b/src/api-types/models/DeleteArchiveItemsRequest.ts @@ -6,4 +6,4 @@ import type { Archive } from './Archive'; export type DeleteArchiveItemsRequest = { archives: Array; -}; \ No newline at end of file +}; diff --git a/src/api-types/models/DeleteCategoryRequest.ts b/src/api-types/models/DeleteCategoryRequest.ts index 50e736b..c9e381e 100644 --- a/src/api-types/models/DeleteCategoryRequest.ts +++ b/src/api-types/models/DeleteCategoryRequest.ts @@ -4,4 +4,4 @@ export type DeleteCategoryRequest = { category_uid: string; -}; \ No newline at end of file +}; diff --git a/src/api-types/models/DeleteMp3Mp4Request.ts b/src/api-types/models/DeleteMp3Mp4Request.ts index ec74390..e3c2b0a 100644 --- a/src/api-types/models/DeleteMp3Mp4Request.ts +++ b/src/api-types/models/DeleteMp3Mp4Request.ts @@ -5,4 +5,4 @@ export type DeleteMp3Mp4Request = { uid: string; blacklistMode?: boolean; -}; \ No newline at end of file +}; diff --git a/src/api-types/models/DeleteNotificationRequest.ts b/src/api-types/models/DeleteNotificationRequest.ts index c554c6d..f69e476 100644 --- a/src/api-types/models/DeleteNotificationRequest.ts +++ b/src/api-types/models/DeleteNotificationRequest.ts @@ -4,4 +4,4 @@ export type DeleteNotificationRequest = { uid: string; -}; \ No newline at end of file +}; diff --git a/src/api-types/models/DeletePlaylistRequest.ts b/src/api-types/models/DeletePlaylistRequest.ts index 82e25b2..e351f7c 100644 --- a/src/api-types/models/DeletePlaylistRequest.ts +++ b/src/api-types/models/DeletePlaylistRequest.ts @@ -4,4 +4,4 @@ export type DeletePlaylistRequest = { playlist_id: string; -}; \ No newline at end of file +}; diff --git a/src/api-types/models/DeleteSubscriptionFileRequest.ts b/src/api-types/models/DeleteSubscriptionFileRequest.ts index 46afd3f..61051f9 100644 --- a/src/api-types/models/DeleteSubscriptionFileRequest.ts +++ b/src/api-types/models/DeleteSubscriptionFileRequest.ts @@ -8,4 +8,4 @@ export type DeleteSubscriptionFileRequest = { * If true, does not remove id from archive. Only valid if youtube-dl archive is enabled in settings. */ deleteForever?: boolean; -}; \ No newline at end of file +}; diff --git a/src/api-types/models/DeleteUserRequest.ts b/src/api-types/models/DeleteUserRequest.ts index 50b2ce6..8d26983 100644 --- a/src/api-types/models/DeleteUserRequest.ts +++ b/src/api-types/models/DeleteUserRequest.ts @@ -4,4 +4,4 @@ export type DeleteUserRequest = { uid: string; -}; \ No newline at end of file +}; diff --git a/src/api-types/models/Download.ts b/src/api-types/models/Download.ts index cae580f..1a0d05e 100644 --- a/src/api-types/models/Download.ts +++ b/src/api-types/models/Download.ts @@ -26,5 +26,5 @@ export type Download = { user_uid?: string; sub_id?: string; sub_name?: string; - prefetched_info?: any; -}; \ No newline at end of file + prefetched_info?: Record; +}; diff --git a/src/api-types/models/DownloadArchiveRequest.ts b/src/api-types/models/DownloadArchiveRequest.ts index 6123a30..10d9284 100644 --- a/src/api-types/models/DownloadArchiveRequest.ts +++ b/src/api-types/models/DownloadArchiveRequest.ts @@ -7,4 +7,4 @@ import type { FileType } from './FileType'; export type DownloadArchiveRequest = { type?: FileType; sub_id?: string; -}; \ No newline at end of file +}; diff --git a/src/api-types/models/DownloadFileRequest.ts b/src/api-types/models/DownloadFileRequest.ts index b14f3ea..daf6392 100644 --- a/src/api-types/models/DownloadFileRequest.ts +++ b/src/api-types/models/DownloadFileRequest.ts @@ -11,4 +11,4 @@ export type DownloadFileRequest = { playlist_id?: string; url?: string; type?: FileType; -}; \ No newline at end of file +}; diff --git a/src/api-types/models/DownloadRequest.ts b/src/api-types/models/DownloadRequest.ts index 2d76d96..1f067fe 100644 --- a/src/api-types/models/DownloadRequest.ts +++ b/src/api-types/models/DownloadRequest.ts @@ -49,4 +49,4 @@ export type DownloadRequest = { * If using youtube-dl archive, download will ignore it */ ignoreArchive?: boolean; -}; \ No newline at end of file +}; diff --git a/src/api-types/models/DownloadResponse.ts b/src/api-types/models/DownloadResponse.ts index 9428f00..217be23 100644 --- a/src/api-types/models/DownloadResponse.ts +++ b/src/api-types/models/DownloadResponse.ts @@ -6,4 +6,4 @@ import type { Download } from './Download'; export type DownloadResponse = { download?: Download; -}; \ No newline at end of file +}; diff --git a/src/api-types/models/DownloadTwitchChatByVODIDRequest.ts b/src/api-types/models/DownloadTwitchChatByVODIDRequest.ts index c807f13..648587b 100644 --- a/src/api-types/models/DownloadTwitchChatByVODIDRequest.ts +++ b/src/api-types/models/DownloadTwitchChatByVODIDRequest.ts @@ -20,4 +20,4 @@ export type DownloadTwitchChatByVODIDRequest = { */ uuid?: string; sub?: Subscription; -}; \ No newline at end of file +}; diff --git a/src/api-types/models/DownloadTwitchChatByVODIDResponse.ts b/src/api-types/models/DownloadTwitchChatByVODIDResponse.ts index 673fd08..f399d2c 100644 --- a/src/api-types/models/DownloadTwitchChatByVODIDResponse.ts +++ b/src/api-types/models/DownloadTwitchChatByVODIDResponse.ts @@ -6,4 +6,4 @@ import type { TwitchChatMessage } from './TwitchChatMessage'; export type DownloadTwitchChatByVODIDResponse = { chat: Array; -}; \ No newline at end of file +}; diff --git a/src/api-types/models/DownloadVideosForSubscriptionRequest.ts b/src/api-types/models/DownloadVideosForSubscriptionRequest.ts index e68b4e4..6482252 100644 --- a/src/api-types/models/DownloadVideosForSubscriptionRequest.ts +++ b/src/api-types/models/DownloadVideosForSubscriptionRequest.ts @@ -4,4 +4,4 @@ export type DownloadVideosForSubscriptionRequest = { subID: string; -}; \ No newline at end of file +}; diff --git a/src/api-types/models/FileType.ts b/src/api-types/models/FileType.ts index c220762..0b79b13 100644 --- a/src/api-types/models/FileType.ts +++ b/src/api-types/models/FileType.ts @@ -5,4 +5,4 @@ export enum FileType { AUDIO = 'audio', VIDEO = 'video', -} \ No newline at end of file +} diff --git a/src/api-types/models/FileTypeFilter.ts b/src/api-types/models/FileTypeFilter.ts index d1fac98..eea3f12 100644 --- a/src/api-types/models/FileTypeFilter.ts +++ b/src/api-types/models/FileTypeFilter.ts @@ -6,4 +6,4 @@ export enum FileTypeFilter { AUDIO_ONLY = 'audio_only', VIDEO_ONLY = 'video_only', BOTH = 'both', -} \ No newline at end of file +} diff --git a/src/api-types/models/GenerateArgsResponse.ts b/src/api-types/models/GenerateArgsResponse.ts index 0201d16..30b0b62 100644 --- a/src/api-types/models/GenerateArgsResponse.ts +++ b/src/api-types/models/GenerateArgsResponse.ts @@ -4,4 +4,4 @@ export type GenerateArgsResponse = { args?: Array; -}; \ No newline at end of file +}; diff --git a/src/api-types/models/GenerateNewApiKeyResponse.ts b/src/api-types/models/GenerateNewApiKeyResponse.ts index 3eb90e0..334dab1 100644 --- a/src/api-types/models/GenerateNewApiKeyResponse.ts +++ b/src/api-types/models/GenerateNewApiKeyResponse.ts @@ -4,4 +4,4 @@ export type GenerateNewApiKeyResponse = { new_api_key: string; -}; \ No newline at end of file +}; diff --git a/src/api-types/models/GetAllCategoriesResponse.ts b/src/api-types/models/GetAllCategoriesResponse.ts index 6623016..a45c713 100644 --- a/src/api-types/models/GetAllCategoriesResponse.ts +++ b/src/api-types/models/GetAllCategoriesResponse.ts @@ -6,4 +6,4 @@ import type { Category } from './Category'; export type GetAllCategoriesResponse = { categories: Array; -}; \ No newline at end of file +}; diff --git a/src/api-types/models/GetAllDownloadsRequest.ts b/src/api-types/models/GetAllDownloadsRequest.ts index fa0ea24..fe608d4 100644 --- a/src/api-types/models/GetAllDownloadsRequest.ts +++ b/src/api-types/models/GetAllDownloadsRequest.ts @@ -7,4 +7,4 @@ export type GetAllDownloadsRequest = { * Filters downloads with the array */ uids?: Array | null; -}; \ No newline at end of file +}; diff --git a/src/api-types/models/GetAllDownloadsResponse.ts b/src/api-types/models/GetAllDownloadsResponse.ts index 16f6f8c..db2257c 100644 --- a/src/api-types/models/GetAllDownloadsResponse.ts +++ b/src/api-types/models/GetAllDownloadsResponse.ts @@ -6,4 +6,4 @@ import type { Download } from './Download'; export type GetAllDownloadsResponse = { downloads?: Array; -}; \ No newline at end of file +}; diff --git a/src/api-types/models/GetAllFilesRequest.ts b/src/api-types/models/GetAllFilesRequest.ts index cd07f36..d86ecde 100644 --- a/src/api-types/models/GetAllFilesRequest.ts +++ b/src/api-types/models/GetAllFilesRequest.ts @@ -21,4 +21,4 @@ export type GetAllFilesRequest = { * Include if you want to filter by subscription */ sub_id?: string; -}; \ No newline at end of file +}; diff --git a/src/api-types/models/GetAllFilesResponse.ts b/src/api-types/models/GetAllFilesResponse.ts index 22aa333..12f5d5c 100644 --- a/src/api-types/models/GetAllFilesResponse.ts +++ b/src/api-types/models/GetAllFilesResponse.ts @@ -11,4 +11,4 @@ export type GetAllFilesResponse = { * All video playlists */ playlists: Array; -}; \ No newline at end of file +}; diff --git a/src/api-types/models/GetAllSubscriptionsResponse.ts b/src/api-types/models/GetAllSubscriptionsResponse.ts index 4c2d1a8..a7cb064 100644 --- a/src/api-types/models/GetAllSubscriptionsResponse.ts +++ b/src/api-types/models/GetAllSubscriptionsResponse.ts @@ -6,4 +6,4 @@ import type { Subscription } from './Subscription'; export type GetAllSubscriptionsResponse = { subscriptions: Array; -}; \ No newline at end of file +}; diff --git a/src/api-types/models/GetAllTasksResponse.ts b/src/api-types/models/GetAllTasksResponse.ts index 9bbd394..28b8b04 100644 --- a/src/api-types/models/GetAllTasksResponse.ts +++ b/src/api-types/models/GetAllTasksResponse.ts @@ -6,4 +6,4 @@ import type { Task } from './Task'; export type GetAllTasksResponse = { tasks?: Array; -}; \ No newline at end of file +}; diff --git a/src/api-types/models/GetArchivesRequest.ts b/src/api-types/models/GetArchivesRequest.ts index 5a0d132..0ce245a 100644 --- a/src/api-types/models/GetArchivesRequest.ts +++ b/src/api-types/models/GetArchivesRequest.ts @@ -7,4 +7,4 @@ import type { FileType } from './FileType'; export type GetArchivesRequest = { type?: FileType; sub_id?: string; -}; \ No newline at end of file +}; diff --git a/src/api-types/models/GetArchivesResponse.ts b/src/api-types/models/GetArchivesResponse.ts index 953807c..4c0e1ce 100644 --- a/src/api-types/models/GetArchivesResponse.ts +++ b/src/api-types/models/GetArchivesResponse.ts @@ -6,4 +6,4 @@ import type { Archive } from './Archive'; export type GetArchivesResponse = { archives: Array; -}; \ No newline at end of file +}; diff --git a/src/api-types/models/GetDBBackupsResponse.ts b/src/api-types/models/GetDBBackupsResponse.ts index 0ec58d8..3e0c0ec 100644 --- a/src/api-types/models/GetDBBackupsResponse.ts +++ b/src/api-types/models/GetDBBackupsResponse.ts @@ -6,4 +6,4 @@ import type { DBBackup } from './DBBackup'; export type GetDBBackupsResponse = { tasks?: Array; -}; \ No newline at end of file +}; diff --git a/src/api-types/models/GetDownloadRequest.ts b/src/api-types/models/GetDownloadRequest.ts index e166f9f..3e2df4e 100644 --- a/src/api-types/models/GetDownloadRequest.ts +++ b/src/api-types/models/GetDownloadRequest.ts @@ -4,4 +4,4 @@ export type GetDownloadRequest = { download_uid: string; -}; \ No newline at end of file +}; diff --git a/src/api-types/models/GetDownloadResponse.ts b/src/api-types/models/GetDownloadResponse.ts index c6eeb51..9495cc2 100644 --- a/src/api-types/models/GetDownloadResponse.ts +++ b/src/api-types/models/GetDownloadResponse.ts @@ -6,4 +6,4 @@ import type { Download } from './Download'; export type GetDownloadResponse = { download?: Download; -}; \ No newline at end of file +}; diff --git a/src/api-types/models/GetFileFormatsRequest.ts b/src/api-types/models/GetFileFormatsRequest.ts index 3b9fa54..45cbeb7 100644 --- a/src/api-types/models/GetFileFormatsRequest.ts +++ b/src/api-types/models/GetFileFormatsRequest.ts @@ -4,4 +4,4 @@ export type GetFileFormatsRequest = { url?: string; -}; \ No newline at end of file +}; diff --git a/src/api-types/models/GetFileFormatsResponse.ts b/src/api-types/models/GetFileFormatsResponse.ts index d195660..34e5059 100644 --- a/src/api-types/models/GetFileFormatsResponse.ts +++ b/src/api-types/models/GetFileFormatsResponse.ts @@ -5,6 +5,6 @@ export type GetFileFormatsResponse = { success: boolean; result: { -formats?: Array; +formats?: Array>; +}; }; -}; \ No newline at end of file diff --git a/src/api-types/models/GetFileRequest.ts b/src/api-types/models/GetFileRequest.ts index 6c3e0cb..085dab9 100644 --- a/src/api-types/models/GetFileRequest.ts +++ b/src/api-types/models/GetFileRequest.ts @@ -14,4 +14,4 @@ export type GetFileRequest = { * User UID */ uuid?: string; -}; \ No newline at end of file +}; diff --git a/src/api-types/models/GetFileResponse.ts b/src/api-types/models/GetFileResponse.ts index ad64755..b62f1c6 100644 --- a/src/api-types/models/GetFileResponse.ts +++ b/src/api-types/models/GetFileResponse.ts @@ -7,4 +7,4 @@ import type { DatabaseFile } from './DatabaseFile'; export type GetFileResponse = { success: boolean; file?: DatabaseFile; -}; \ No newline at end of file +}; diff --git a/src/api-types/models/GetFullTwitchChatRequest.ts b/src/api-types/models/GetFullTwitchChatRequest.ts index 0b10d98..4e6efa9 100644 --- a/src/api-types/models/GetFullTwitchChatRequest.ts +++ b/src/api-types/models/GetFullTwitchChatRequest.ts @@ -16,4 +16,4 @@ export type GetFullTwitchChatRequest = { */ uuid?: string; sub?: Subscription; -}; \ No newline at end of file +}; diff --git a/src/api-types/models/GetFullTwitchChatResponse.ts b/src/api-types/models/GetFullTwitchChatResponse.ts index 1f52375..a894650 100644 --- a/src/api-types/models/GetFullTwitchChatResponse.ts +++ b/src/api-types/models/GetFullTwitchChatResponse.ts @@ -5,4 +5,4 @@ export type GetFullTwitchChatResponse = { success: boolean; error?: string; -}; \ No newline at end of file +}; diff --git a/src/api-types/models/GetLogsRequest.ts b/src/api-types/models/GetLogsRequest.ts index e5029ee..ef6800b 100644 --- a/src/api-types/models/GetLogsRequest.ts +++ b/src/api-types/models/GetLogsRequest.ts @@ -4,4 +4,4 @@ export type GetLogsRequest = { lines?: number; -}; \ No newline at end of file +}; diff --git a/src/api-types/models/GetLogsResponse.ts b/src/api-types/models/GetLogsResponse.ts index 760d5f4..255ec9c 100644 --- a/src/api-types/models/GetLogsResponse.ts +++ b/src/api-types/models/GetLogsResponse.ts @@ -8,4 +8,4 @@ export type GetLogsResponse = { */ logs?: string; success?: boolean; -}; \ No newline at end of file +}; diff --git a/src/api-types/models/GetMp3sResponse.ts b/src/api-types/models/GetMp3sResponse.ts index ed63f48..cecafb1 100644 --- a/src/api-types/models/GetMp3sResponse.ts +++ b/src/api-types/models/GetMp3sResponse.ts @@ -11,4 +11,4 @@ export type GetMp3sResponse = { * All audio playlists */ playlists: Array; -}; \ No newline at end of file +}; diff --git a/src/api-types/models/GetMp4sResponse.ts b/src/api-types/models/GetMp4sResponse.ts index bfa0ed0..9a763da 100644 --- a/src/api-types/models/GetMp4sResponse.ts +++ b/src/api-types/models/GetMp4sResponse.ts @@ -11,4 +11,4 @@ export type GetMp4sResponse = { * All video playlists */ playlists: Array; -}; \ No newline at end of file +}; diff --git a/src/api-types/models/GetNotificationsResponse.ts b/src/api-types/models/GetNotificationsResponse.ts index 1a018cd..35d7469 100644 --- a/src/api-types/models/GetNotificationsResponse.ts +++ b/src/api-types/models/GetNotificationsResponse.ts @@ -6,4 +6,4 @@ import type { Notification } from './Notification'; export type GetNotificationsResponse = { notifications?: Array; -}; \ No newline at end of file +}; diff --git a/src/api-types/models/GetPlaylistRequest.ts b/src/api-types/models/GetPlaylistRequest.ts index 51c85bd..335d1cd 100644 --- a/src/api-types/models/GetPlaylistRequest.ts +++ b/src/api-types/models/GetPlaylistRequest.ts @@ -9,4 +9,4 @@ export type GetPlaylistRequest = { type?: FileType; uuid?: string; include_file_metadata?: boolean; -}; \ No newline at end of file +}; diff --git a/src/api-types/models/GetPlaylistResponse.ts b/src/api-types/models/GetPlaylistResponse.ts index 14ff0c0..7c9e2d1 100644 --- a/src/api-types/models/GetPlaylistResponse.ts +++ b/src/api-types/models/GetPlaylistResponse.ts @@ -12,4 +12,4 @@ export type GetPlaylistResponse = { * File objects for every uid in the playlist's uids property, in the same order */ file_objs?: Array; -}; \ No newline at end of file +}; diff --git a/src/api-types/models/GetPlaylistsRequest.ts b/src/api-types/models/GetPlaylistsRequest.ts index 50edba9..1de88b6 100644 --- a/src/api-types/models/GetPlaylistsRequest.ts +++ b/src/api-types/models/GetPlaylistsRequest.ts @@ -4,4 +4,4 @@ export type GetPlaylistsRequest = { include_categories?: boolean; -}; \ No newline at end of file +}; diff --git a/src/api-types/models/GetPlaylistsResponse.ts b/src/api-types/models/GetPlaylistsResponse.ts index 7d5a4d4..294360c 100644 --- a/src/api-types/models/GetPlaylistsResponse.ts +++ b/src/api-types/models/GetPlaylistsResponse.ts @@ -6,4 +6,4 @@ import type { Playlist } from './Playlist'; export type GetPlaylistsResponse = { playlists: Array; -}; \ No newline at end of file +}; diff --git a/src/api-types/models/GetRolesResponse.ts b/src/api-types/models/GetRolesResponse.ts index cddc679..3ab5ab7 100644 --- a/src/api-types/models/GetRolesResponse.ts +++ b/src/api-types/models/GetRolesResponse.ts @@ -13,4 +13,4 @@ user?: { permissions?: Array; }; }; -}; \ No newline at end of file +}; diff --git a/src/api-types/models/GetSubscriptionRequest.ts b/src/api-types/models/GetSubscriptionRequest.ts index 3a9bf63..19fc36a 100644 --- a/src/api-types/models/GetSubscriptionRequest.ts +++ b/src/api-types/models/GetSubscriptionRequest.ts @@ -11,4 +11,4 @@ export type GetSubscriptionRequest = { * Subscription name */ name?: string; -}; \ No newline at end of file +}; diff --git a/src/api-types/models/GetSubscriptionResponse.ts b/src/api-types/models/GetSubscriptionResponse.ts index 7b6663d..3801205 100644 --- a/src/api-types/models/GetSubscriptionResponse.ts +++ b/src/api-types/models/GetSubscriptionResponse.ts @@ -6,5 +6,5 @@ import type { Subscription } from './Subscription'; export type GetSubscriptionResponse = { subscription: Subscription; - files: Array; -}; \ No newline at end of file + files: Array>; +}; diff --git a/src/api-types/models/GetTaskRequest.ts b/src/api-types/models/GetTaskRequest.ts index 5602d3c..a188892 100644 --- a/src/api-types/models/GetTaskRequest.ts +++ b/src/api-types/models/GetTaskRequest.ts @@ -4,4 +4,4 @@ export type GetTaskRequest = { task_key: string; -}; \ No newline at end of file +}; diff --git a/src/api-types/models/GetTaskResponse.ts b/src/api-types/models/GetTaskResponse.ts index a901123..850ee05 100644 --- a/src/api-types/models/GetTaskResponse.ts +++ b/src/api-types/models/GetTaskResponse.ts @@ -6,4 +6,4 @@ import type { Task } from './Task'; export type GetTaskResponse = { task?: Task; -}; \ No newline at end of file +}; diff --git a/src/api-types/models/GetUsersResponse.ts b/src/api-types/models/GetUsersResponse.ts index 5a18ec7..5e13f1a 100644 --- a/src/api-types/models/GetUsersResponse.ts +++ b/src/api-types/models/GetUsersResponse.ts @@ -6,4 +6,4 @@ import type { User } from './User'; export type GetUsersResponse = { users: Array; -}; \ No newline at end of file +}; diff --git a/src/api-types/models/ImportArchiveRequest.ts b/src/api-types/models/ImportArchiveRequest.ts index 7c00028..05c6e1a 100644 --- a/src/api-types/models/ImportArchiveRequest.ts +++ b/src/api-types/models/ImportArchiveRequest.ts @@ -8,4 +8,4 @@ export type ImportArchiveRequest = { archive: string; type: FileType; sub_id?: string; -}; \ No newline at end of file +}; diff --git a/src/api-types/models/IncrementViewCountRequest.ts b/src/api-types/models/IncrementViewCountRequest.ts index 19011c1..d49d2c2 100644 --- a/src/api-types/models/IncrementViewCountRequest.ts +++ b/src/api-types/models/IncrementViewCountRequest.ts @@ -9,4 +9,4 @@ export type IncrementViewCountRequest = { * User UID */ uuid?: string; -}; \ No newline at end of file +}; diff --git a/src/api-types/models/LoginRequest.ts b/src/api-types/models/LoginRequest.ts index 544a1a2..44c2ae8 100644 --- a/src/api-types/models/LoginRequest.ts +++ b/src/api-types/models/LoginRequest.ts @@ -5,4 +5,4 @@ export type LoginRequest = { username: string; password: string; -}; \ No newline at end of file +}; diff --git a/src/api-types/models/LoginResponse.ts b/src/api-types/models/LoginResponse.ts index cd4b380..6521ed7 100644 --- a/src/api-types/models/LoginResponse.ts +++ b/src/api-types/models/LoginResponse.ts @@ -10,4 +10,4 @@ export type LoginResponse = { token?: string; permissions?: Array; available_permissions?: Array; -}; \ No newline at end of file +}; diff --git a/src/api-types/models/Notification.ts b/src/api-types/models/Notification.ts index ce99fe6..6ad7425 100644 --- a/src/api-types/models/Notification.ts +++ b/src/api-types/models/Notification.ts @@ -11,6 +11,6 @@ export type Notification = { user_uid?: string; action?: Array; read: boolean; - data?: any; + data?: Record; timestamp: number; -}; \ No newline at end of file +}; diff --git a/src/api-types/models/NotificationAction.ts b/src/api-types/models/NotificationAction.ts index 9f97b41..8313aaf 100644 --- a/src/api-types/models/NotificationAction.ts +++ b/src/api-types/models/NotificationAction.ts @@ -7,4 +7,4 @@ export enum NotificationAction { RETRY_DOWNLOAD = 'retry_download', VIEW_DOWNLOAD_ERROR = 'view_download_error', VIEW_TASKS = 'view_tasks', -} \ No newline at end of file +} diff --git a/src/api-types/models/NotificationType.ts b/src/api-types/models/NotificationType.ts index 26cfee9..e773485 100644 --- a/src/api-types/models/NotificationType.ts +++ b/src/api-types/models/NotificationType.ts @@ -6,4 +6,4 @@ export enum NotificationType { DOWNLOAD_COMPLETE = 'download_complete', DOWNLOAD_ERROR = 'download_error', TASK_FINISHED = 'task_finished', -} \ No newline at end of file +} diff --git a/src/api-types/models/Playlist.ts b/src/api-types/models/Playlist.ts index bdbd0f6..cff083a 100644 --- a/src/api-types/models/Playlist.ts +++ b/src/api-types/models/Playlist.ts @@ -15,4 +15,4 @@ export type Playlist = { user_uid?: string; auto?: boolean; sharingEnabled?: boolean; -}; \ No newline at end of file +}; diff --git a/src/api-types/models/RegisterRequest.ts b/src/api-types/models/RegisterRequest.ts index 0cd5a87..5508dc4 100644 --- a/src/api-types/models/RegisterRequest.ts +++ b/src/api-types/models/RegisterRequest.ts @@ -6,4 +6,4 @@ export type RegisterRequest = { userid: string; username: string; password: string; -}; \ No newline at end of file +}; diff --git a/src/api-types/models/RegisterResponse.ts b/src/api-types/models/RegisterResponse.ts index 62d0387..518c62b 100644 --- a/src/api-types/models/RegisterResponse.ts +++ b/src/api-types/models/RegisterResponse.ts @@ -6,4 +6,4 @@ import type { User } from './User'; export type RegisterResponse = { user?: User; -}; \ No newline at end of file +}; diff --git a/src/api-types/models/RestartDownloadResponse.ts b/src/api-types/models/RestartDownloadResponse.ts index 1cb0233..ec08704 100644 --- a/src/api-types/models/RestartDownloadResponse.ts +++ b/src/api-types/models/RestartDownloadResponse.ts @@ -6,4 +6,4 @@ import type { SuccessObject } from './SuccessObject'; export type RestartDownloadResponse = (SuccessObject & { new_download_uid?: string; -}); \ No newline at end of file +}); diff --git a/src/api-types/models/RestoreDBBackupRequest.ts b/src/api-types/models/RestoreDBBackupRequest.ts index 6804f46..9ae2ad3 100644 --- a/src/api-types/models/RestoreDBBackupRequest.ts +++ b/src/api-types/models/RestoreDBBackupRequest.ts @@ -4,4 +4,4 @@ export type RestoreDBBackupRequest = { file_name: string; -}; \ No newline at end of file +}; diff --git a/src/api-types/models/Schedule.ts b/src/api-types/models/Schedule.ts index a16fc5f..3138c83 100644 --- a/src/api-types/models/Schedule.ts +++ b/src/api-types/models/Schedule.ts @@ -21,4 +21,4 @@ export namespace Schedule { } -} \ No newline at end of file +} diff --git a/src/api-types/models/SetConfigRequest.ts b/src/api-types/models/SetConfigRequest.ts index e0edf66..f4388a5 100644 --- a/src/api-types/models/SetConfigRequest.ts +++ b/src/api-types/models/SetConfigRequest.ts @@ -6,4 +6,4 @@ import type { Config } from './Config'; export type SetConfigRequest = { new_config_file: Config; -}; \ No newline at end of file +}; diff --git a/src/api-types/models/SetNotificationsToReadRequest.ts b/src/api-types/models/SetNotificationsToReadRequest.ts index 83f5948..8865af9 100644 --- a/src/api-types/models/SetNotificationsToReadRequest.ts +++ b/src/api-types/models/SetNotificationsToReadRequest.ts @@ -4,4 +4,4 @@ export type SetNotificationsToReadRequest = { uids: Array; -}; \ No newline at end of file +}; diff --git a/src/api-types/models/SharingToggle.ts b/src/api-types/models/SharingToggle.ts index 8c486f5..68249d7 100644 --- a/src/api-types/models/SharingToggle.ts +++ b/src/api-types/models/SharingToggle.ts @@ -5,4 +5,4 @@ export type SharingToggle = { uid: string; is_playlist?: boolean; -}; \ No newline at end of file +}; diff --git a/src/api-types/models/Sort.ts b/src/api-types/models/Sort.ts index 438f884..e8107e8 100644 --- a/src/api-types/models/Sort.ts +++ b/src/api-types/models/Sort.ts @@ -11,4 +11,4 @@ export type Sort = { * 1 for ascending, -1 for descending */ order?: number; -}; \ No newline at end of file +}; diff --git a/src/api-types/models/SubscribeRequest.ts b/src/api-types/models/SubscribeRequest.ts index d7490bf..69b25f3 100644 --- a/src/api-types/models/SubscribeRequest.ts +++ b/src/api-types/models/SubscribeRequest.ts @@ -10,4 +10,4 @@ export type SubscribeRequest = { customArgs?: string; customFileOutput?: string; maxQuality?: string; -}; \ No newline at end of file +}; diff --git a/src/api-types/models/SubscribeResponse.ts b/src/api-types/models/SubscribeResponse.ts index 0440340..aab560a 100644 --- a/src/api-types/models/SubscribeResponse.ts +++ b/src/api-types/models/SubscribeResponse.ts @@ -7,4 +7,4 @@ import type { Subscription } from './Subscription'; export type SubscribeResponse = { new_sub: Subscription; error?: string; -}; \ No newline at end of file +}; diff --git a/src/api-types/models/Subscription.ts b/src/api-types/models/Subscription.ts index 2e280d8..bffb738 100644 --- a/src/api-types/models/Subscription.ts +++ b/src/api-types/models/Subscription.ts @@ -15,5 +15,5 @@ export type Subscription = { timerange?: string; custom_args?: string; custom_output?: string; - videos: Array; -}; \ No newline at end of file + videos: Array>; +}; diff --git a/src/api-types/models/SubscriptionRequestData.ts b/src/api-types/models/SubscriptionRequestData.ts index a7c9650..2bc3591 100644 --- a/src/api-types/models/SubscriptionRequestData.ts +++ b/src/api-types/models/SubscriptionRequestData.ts @@ -10,4 +10,4 @@ export type SubscriptionRequestData = { type?: FileType; isPlaylist?: boolean; archive?: string; -}; \ No newline at end of file +}; diff --git a/src/api-types/models/SuccessObject.ts b/src/api-types/models/SuccessObject.ts index 9cfdf8b..c736856 100644 --- a/src/api-types/models/SuccessObject.ts +++ b/src/api-types/models/SuccessObject.ts @@ -5,4 +5,4 @@ export type SuccessObject = { success: boolean; error?: string; -}; \ No newline at end of file +}; diff --git a/src/api-types/models/TableInfo.ts b/src/api-types/models/TableInfo.ts index 58b651a..dada036 100644 --- a/src/api-types/models/TableInfo.ts +++ b/src/api-types/models/TableInfo.ts @@ -4,4 +4,4 @@ export type TableInfo = { records_count?: number; -}; \ No newline at end of file +}; diff --git a/src/api-types/models/Task.ts b/src/api-types/models/Task.ts index 4b85095..a9dbacc 100644 --- a/src/api-types/models/Task.ts +++ b/src/api-types/models/Task.ts @@ -2,6 +2,8 @@ /* tslint:disable */ /* eslint-disable */ +import type { Schedule } from './Schedule'; + export type Task = { key: string; title?: string; @@ -9,8 +11,8 @@ export type Task = { last_confirmed: number; running: boolean; confirming: boolean; - data: any; + data: Record; error: string; - schedule: any; - options?: any; -}; \ No newline at end of file + schedule: Schedule; + options?: Record; +}; diff --git a/src/api-types/models/TestConnectionStringRequest.ts b/src/api-types/models/TestConnectionStringRequest.ts index af83b84..5822bbc 100644 --- a/src/api-types/models/TestConnectionStringRequest.ts +++ b/src/api-types/models/TestConnectionStringRequest.ts @@ -7,4 +7,4 @@ export type TestConnectionStringRequest = { * MongoDB connection string */ connection_string: string; -}; \ No newline at end of file +}; diff --git a/src/api-types/models/TestConnectionStringResponse.ts b/src/api-types/models/TestConnectionStringResponse.ts index 745d63f..fac7d24 100644 --- a/src/api-types/models/TestConnectionStringResponse.ts +++ b/src/api-types/models/TestConnectionStringResponse.ts @@ -5,4 +5,4 @@ export type TestConnectionStringResponse = { success: boolean; error?: string; -}; \ No newline at end of file +}; diff --git a/src/api-types/models/TransferDBRequest.ts b/src/api-types/models/TransferDBRequest.ts index 5119252..4e11d06 100644 --- a/src/api-types/models/TransferDBRequest.ts +++ b/src/api-types/models/TransferDBRequest.ts @@ -7,4 +7,4 @@ export type TransferDBRequest = { * True if transfering DB from Local to MongoDB, false if transferring DB from MongoDB to Local */ local_to_remote: boolean; -}; \ No newline at end of file +}; diff --git a/src/api-types/models/TransferDBResponse.ts b/src/api-types/models/TransferDBResponse.ts index ab744d4..25b35d8 100644 --- a/src/api-types/models/TransferDBResponse.ts +++ b/src/api-types/models/TransferDBResponse.ts @@ -5,4 +5,4 @@ export type TransferDBResponse = { success: boolean; error?: string; -}; \ No newline at end of file +}; diff --git a/src/api-types/models/TwitchChatMessage.ts b/src/api-types/models/TwitchChatMessage.ts index cc7efd7..1405287 100644 --- a/src/api-types/models/TwitchChatMessage.ts +++ b/src/api-types/models/TwitchChatMessage.ts @@ -14,4 +14,4 @@ created_at?: string; body?: string; user_color?: string; }; -}; \ No newline at end of file +}; diff --git a/src/api-types/models/UnsubscribeRequest.ts b/src/api-types/models/UnsubscribeRequest.ts index ffc939c..9eed3c5 100644 --- a/src/api-types/models/UnsubscribeRequest.ts +++ b/src/api-types/models/UnsubscribeRequest.ts @@ -10,4 +10,4 @@ export type UnsubscribeRequest = { * Defaults to false */ deleteMode?: boolean; -}; \ No newline at end of file +}; diff --git a/src/api-types/models/UnsubscribeResponse.ts b/src/api-types/models/UnsubscribeResponse.ts index 6eb1c36..18bc079 100644 --- a/src/api-types/models/UnsubscribeResponse.ts +++ b/src/api-types/models/UnsubscribeResponse.ts @@ -5,4 +5,4 @@ export type UnsubscribeResponse = { success: boolean; error?: string; -}; \ No newline at end of file +}; diff --git a/src/api-types/models/UpdateCategoriesRequest.ts b/src/api-types/models/UpdateCategoriesRequest.ts index 6a611ab..b530ee4 100644 --- a/src/api-types/models/UpdateCategoriesRequest.ts +++ b/src/api-types/models/UpdateCategoriesRequest.ts @@ -6,4 +6,4 @@ import type { Category } from './Category'; export type UpdateCategoriesRequest = { categories: Array; -}; \ No newline at end of file +}; diff --git a/src/api-types/models/UpdateCategoryRequest.ts b/src/api-types/models/UpdateCategoryRequest.ts index 7b3e1cb..9d92406 100644 --- a/src/api-types/models/UpdateCategoryRequest.ts +++ b/src/api-types/models/UpdateCategoryRequest.ts @@ -6,4 +6,4 @@ import type { Category } from './Category'; export type UpdateCategoryRequest = { category: Category; -}; \ No newline at end of file +}; diff --git a/src/api-types/models/UpdateConcurrentStreamRequest.ts b/src/api-types/models/UpdateConcurrentStreamRequest.ts index ce78768..a98d258 100644 --- a/src/api-types/models/UpdateConcurrentStreamRequest.ts +++ b/src/api-types/models/UpdateConcurrentStreamRequest.ts @@ -9,4 +9,4 @@ export type UpdateConcurrentStreamRequest = (ConcurrentStream & { * Concurrent stream UID */ uid: string; -}); \ No newline at end of file +}); diff --git a/src/api-types/models/UpdateConcurrentStreamResponse.ts b/src/api-types/models/UpdateConcurrentStreamResponse.ts index f3dc88d..4a40fb0 100644 --- a/src/api-types/models/UpdateConcurrentStreamResponse.ts +++ b/src/api-types/models/UpdateConcurrentStreamResponse.ts @@ -6,4 +6,4 @@ import type { ConcurrentStream } from './ConcurrentStream'; export type UpdateConcurrentStreamResponse = { stream: ConcurrentStream; -}; \ No newline at end of file +}; diff --git a/src/api-types/models/UpdateFileRequest.ts b/src/api-types/models/UpdateFileRequest.ts index cada2e5..b5bb188 100644 --- a/src/api-types/models/UpdateFileRequest.ts +++ b/src/api-types/models/UpdateFileRequest.ts @@ -10,5 +10,5 @@ export type UpdateFileRequest = { /** * Object with fields to update as keys and their new values */ - change_obj: any; -}; \ No newline at end of file + change_obj: Record; +}; diff --git a/src/api-types/models/UpdatePlaylistRequest.ts b/src/api-types/models/UpdatePlaylistRequest.ts index ba015b3..b16dec6 100644 --- a/src/api-types/models/UpdatePlaylistRequest.ts +++ b/src/api-types/models/UpdatePlaylistRequest.ts @@ -6,4 +6,4 @@ import type { Playlist } from './Playlist'; export type UpdatePlaylistRequest = { playlist: Playlist; -}; \ No newline at end of file +}; diff --git a/src/api-types/models/UpdateServerRequest.ts b/src/api-types/models/UpdateServerRequest.ts index 8239869..92d95bb 100644 --- a/src/api-types/models/UpdateServerRequest.ts +++ b/src/api-types/models/UpdateServerRequest.ts @@ -4,4 +4,4 @@ export type UpdateServerRequest = { tag: string; -}; \ No newline at end of file +}; diff --git a/src/api-types/models/UpdateTaskDataRequest.ts b/src/api-types/models/UpdateTaskDataRequest.ts index afe9b54..c52509c 100644 --- a/src/api-types/models/UpdateTaskDataRequest.ts +++ b/src/api-types/models/UpdateTaskDataRequest.ts @@ -4,5 +4,5 @@ export type UpdateTaskDataRequest = { task_key: string; - new_data: any; -}; \ No newline at end of file + new_data: Record; +}; diff --git a/src/api-types/models/UpdateTaskOptionsRequest.ts b/src/api-types/models/UpdateTaskOptionsRequest.ts index 47cde2d..50ae9e8 100644 --- a/src/api-types/models/UpdateTaskOptionsRequest.ts +++ b/src/api-types/models/UpdateTaskOptionsRequest.ts @@ -4,5 +4,5 @@ export type UpdateTaskOptionsRequest = { task_key: string; - new_options: any; -}; \ No newline at end of file + new_options: Record; +}; diff --git a/src/api-types/models/UpdateTaskScheduleRequest.ts b/src/api-types/models/UpdateTaskScheduleRequest.ts index 62d8775..fb27cd8 100644 --- a/src/api-types/models/UpdateTaskScheduleRequest.ts +++ b/src/api-types/models/UpdateTaskScheduleRequest.ts @@ -7,4 +7,4 @@ import type { Schedule } from './Schedule'; export type UpdateTaskScheduleRequest = { task_key: string; new_schedule: Schedule; -}; \ No newline at end of file +}; diff --git a/src/api-types/models/UpdateUserRequest.ts b/src/api-types/models/UpdateUserRequest.ts index db522c6..31b9b33 100644 --- a/src/api-types/models/UpdateUserRequest.ts +++ b/src/api-types/models/UpdateUserRequest.ts @@ -8,4 +8,4 @@ uid: string; name?: string; role?: string; }; -}; \ No newline at end of file +}; diff --git a/src/api-types/models/UpdaterStatus.ts b/src/api-types/models/UpdaterStatus.ts index 47a2e99..01db98d 100644 --- a/src/api-types/models/UpdaterStatus.ts +++ b/src/api-types/models/UpdaterStatus.ts @@ -6,4 +6,4 @@ export type UpdaterStatus = { updating: boolean; details: string; error?: boolean; -}; \ No newline at end of file +}; diff --git a/src/api-types/models/UploadCookiesRequest.ts b/src/api-types/models/UploadCookiesRequest.ts index f65420d..e240063 100644 --- a/src/api-types/models/UploadCookiesRequest.ts +++ b/src/api-types/models/UploadCookiesRequest.ts @@ -4,4 +4,4 @@ export type UploadCookiesRequest = { cookies: Blob; -}; \ No newline at end of file +}; diff --git a/src/api-types/models/User.ts b/src/api-types/models/User.ts index aa9802e..6436ccc 100644 --- a/src/api-types/models/User.ts +++ b/src/api-types/models/User.ts @@ -14,4 +14,4 @@ export type User = { role?: string; permissions?: Array; permission_overrides?: Array; -}; \ No newline at end of file +}; diff --git a/src/api-types/models/UserPermission.ts b/src/api-types/models/UserPermission.ts index ca8df45..ba153d6 100644 --- a/src/api-types/models/UserPermission.ts +++ b/src/api-types/models/UserPermission.ts @@ -9,4 +9,5 @@ export enum UserPermission { SHARING = 'sharing', ADVANCED_DOWNLOAD = 'advanced_download', DOWNLOADS_MANAGER = 'downloads_manager', -} \ No newline at end of file + TASKS_MANAGER = 'tasks_manager', +} diff --git a/src/api-types/models/Version.ts b/src/api-types/models/Version.ts index 37c4289..1b2fda0 100644 --- a/src/api-types/models/Version.ts +++ b/src/api-types/models/Version.ts @@ -7,4 +7,4 @@ export type Version = { tag?: string; commit?: string; date?: string; -}; \ No newline at end of file +}; diff --git a/src/api-types/models/VersionInfoResponse.ts b/src/api-types/models/VersionInfoResponse.ts index 20d77da..0a291be 100644 --- a/src/api-types/models/VersionInfoResponse.ts +++ b/src/api-types/models/VersionInfoResponse.ts @@ -6,4 +6,4 @@ import type { Version } from './Version'; export type VersionInfoResponse = { version_info: Version; -}; \ No newline at end of file +}; diff --git a/src/api-types/models/YesNo.ts b/src/api-types/models/YesNo.ts index b30f848..09bce39 100644 --- a/src/api-types/models/YesNo.ts +++ b/src/api-types/models/YesNo.ts @@ -5,4 +5,4 @@ export enum YesNo { YES = 'yes', NO = 'no', -} \ No newline at end of file +} diff --git a/src/api-types/models/binary.ts b/src/api-types/models/binary.ts index e8c6812..0f97ae2 100644 --- a/src/api-types/models/binary.ts +++ b/src/api-types/models/binary.ts @@ -4,4 +4,4 @@ export type binary = { id?: string; -}; \ No newline at end of file +}; diff --git a/src/api-types/models/body_19.ts b/src/api-types/models/body_19.ts index 69df745..09ed602 100644 --- a/src/api-types/models/body_19.ts +++ b/src/api-types/models/body_19.ts @@ -4,4 +4,4 @@ export type body_19 = { input_pin: string; -}; \ No newline at end of file +}; diff --git a/src/api-types/models/body_20.ts b/src/api-types/models/body_20.ts index be997a7..66f9ec3 100644 --- a/src/api-types/models/body_20.ts +++ b/src/api-types/models/body_20.ts @@ -4,4 +4,4 @@ export type body_20 = { unhashed_pin: string; -}; \ No newline at end of file +}; diff --git a/src/api-types/models/inline_response_200_15.ts b/src/api-types/models/inline_response_200_15.ts index c8d731d..957fa1c 100644 --- a/src/api-types/models/inline_response_200_15.ts +++ b/src/api-types/models/inline_response_200_15.ts @@ -4,4 +4,4 @@ export type inline_response_200_15 = { is_set: boolean; -}; \ No newline at end of file +}; diff --git a/src/app/app.component.ts b/src/app/app.component.ts index 58352e7..f7d551e 100644 --- a/src/app/app.component.ts +++ b/src/app/app.component.ts @@ -84,8 +84,8 @@ export class AppComponent implements OnInit, AfterViewInit { this.postsService.open_create_default_admin_dialog.subscribe(open => { if (open) { const dialogRef = this.dialog.open(SetDefaultAdminDialogComponent); - dialogRef.afterClosed().subscribe(success => { - if (success) { + dialogRef.afterClosed().subscribe(res => { + if (!res || !res['user']) { if (this.router.url !== '/login') { this.router.navigate(['/login']); } } else { console.error('Failed to create default admin account. See logs for details.'); diff --git a/src/app/posts.services.ts b/src/app/posts.services.ts index 812b1a2..0183bcf 100644 --- a/src/app/posts.services.ts +++ b/src/app/posts.services.ts @@ -734,7 +734,7 @@ export class PostsService implements CanActivate { this.afterLogin(res['user'], res['token'], res['permissions'], res['available_permissions']); } }, err => { - if (err.status === 401) { + if (err === 'Unauthorized') { this.sendToLogin(); this.token = null; this.resetHttpParams(); diff --git a/src/assets/i18n/messages.es.xlf b/src/assets/i18n/messages.es.xlf index c1c1e38..dd0544c 100644 --- a/src/assets/i18n/messages.es.xlf +++ b/src/assets/i18n/messages.es.xlf @@ -2577,7 +2577,7 @@ - Error for + Error for Error para src/app/components/downloads/downloads.component.ts @@ -2733,8 +2733,8 @@ Clear missing files from DB - Playlist created. - Lista de reproducción creada. + Successfully created playlist! + ¡Lista de reproducción creada con éxito! src/app/components/custom-playlists/custom-playlists.component.ts 56 @@ -3092,6 +3092,848 @@ Generate NFO files setting + + Archives + Archivos + + src/app/app.component.html + 26 + + Archives menu label + + + Filter + Filtros + + src/app/components/archive-viewer/archive-viewer.component.html + 3 + + Filter + + + ID + ID + + src/app/components/archive-viewer/archive-viewer.component.html + 47 + + ID + + + Archives empty + Archivos vacíos + + src/app/components/archive-viewer/archive-viewer.component.html + 72 + + Archives empty + + + Delete selected + Eliminar seleccionado + + src/app/components/archive-viewer/archive-viewer.component.html + 77 + + Delete selected + + + Download archive + Descargar archivo + + src/app/components/archive-viewer/archive-viewer.component.html + 80 + + Download archive + + + None + Ninguno + + src/app/components/archive-viewer/archive-viewer.component.html + 84 + + + src/app/components/archive-viewer/archive-viewer.component.html + 126 + + + src/app/dialogs/generate-rss-url/generate-rss-url.component.html + 27 + + + src/app/dialogs/generate-rss-url/generate-rss-url.component.html + 36 + + None + + + Upload + Cargado + + src/app/components/archive-viewer/archive-viewer.component.html + 137 + + + src/app/dialogs/cookies-uploader-dialog/cookies-uploader-dialog.component.html + 30 + + Upload + + + Video + Video + + src/app/components/archive-viewer/archive-viewer.component.ts + 40 + + + + Audio + Audio + + src/app/components/archive-viewer/archive-viewer.component.ts + 44 + + + + Archive successfully imported! + ¡Archivo importado con éxito! + + src/app/components/archive-viewer/archive-viewer.component.ts + 130 + + + + Delete archives + Borrar los archivos + + src/app/components/archive-viewer/archive-viewer.component.ts + 152 + + + + Delete + Borrar + + src/app/components/archive-viewer/archive-viewer.component.ts + 154 + + + src/app/settings/settings.component.ts + 175 + + + + Successfully deleted archive items! + ¡Elementos del archivo eliminados correctamente! + + src/app/components/archive-viewer/archive-viewer.component.ts + 172 + + + + Failed to delete archive items! + ¡No se pudieron eliminar los elementos del archivo! + + src/app/components/archive-viewer/archive-viewer.component.ts + 174 + + + + Remove + Quitar + + src/app/components/notifications-list/notifications-list.component.html + 23 + + Remove + + + Finished downloading + Descarga finalizada + + src/app/components/notifications-list/notifications-list.component.ts + 17 + + + + Download failed + La descarga fracasó + + src/app/components/notifications-list/notifications-list.component.ts + 18 + + + + Task finished + Tarea terminada + + src/app/components/notifications-list/notifications-list.component.ts + 19 + + + + View task + Ver la tarea + + src/app/components/notifications-list/notifications-list.component.ts + 33 + + + + No notifications available + No hay notificaciones disponibles + + src/app/components/notifications/notifications.component.html + 1 + + No notifications available + + + Download completed + Descarga completa + + src/app/components/notifications/notifications.component.ts + 23 + + + + Audio only + Solo el audio + + src/app/components/recent-videos/recent-videos.component.ts + 60 + + + + Favorited + Favorito + + src/app/components/recent-videos/recent-videos.component.ts + 65 + + + + Download Date + Fecha de la descarga + + src/app/components/sort-property/sort-property.component.ts + 13 + + + + Upload Date + Fecha en la que se subió + + src/app/components/sort-property/sort-property.component.ts + 17 + + + + Name + Nombre + + src/app/components/sort-property/sort-property.component.ts + 21 + + + + File Size + Tamaño del archivo + + src/app/components/sort-property/sort-property.component.ts + 25 + + + + Duration + Duración + + src/app/components/sort-property/sort-property.component.ts + 29 + + + + Task settings - + Configuración de las tareas - + + src/app/components/task-settings/task-settings.component.html + 1 + + Task settings + + + Delete files older than + Eliminar los archivos anteriores a + + src/app/components/task-settings/task-settings.component.html + 6 + + Delete files older than + + + Blacklist all files + Lista negra de todos los archivos + + src/app/components/task-settings/task-settings.component.html + 11 + + Blacklist deleted files + + + Blacklist deleted subscription files + Lista negra de los archivos de la suscripción eliminados + + src/app/components/task-settings/task-settings.component.html + 14 + + Blacklist deleted subscription files + + + Do not ask for confirmation + No pedir confirmación + + src/app/components/task-settings/task-settings.component.html + 19 + + Do not ask for confirmation + + + Error for: + Error para: + + src/app/components/tasks/tasks.component.ts + 174 + + + + Favorite + Favorito + + src/app/components/unified-file-card/unified-file-card.component.html + 26 + + Favorite button + + + Unfavorite + No es favorito + + src/app/components/unified-file-card/unified-file-card.component.html + 27 + + Unfavorite button + + + Sidepanel mode + Modo del panel lateral + + src/app/dialogs/about-dialog/about-dialog.component.html + 42 + + Sidepanel mode + + + File card size + Tamaño de la tarjeta del archivo + + src/app/dialogs/about-dialog/about-dialog.component.html + 54 + + File card size + + + Arg + Realidad virtual + + src/app/dialogs/arg-modifier-dialog/arg-modifier-dialog.component.html + 41 + + Arg + + + Generate RSS URL + Generar la url para RSS + + src/app/dialogs/generate-rss-url/generate-rss-url.component.html + 1 + + + src/app/settings/settings.component.html + 306 + + Generate RSS URL + + + Title filter + Filtrar por título + + src/app/dialogs/generate-rss-url/generate-rss-url.component.html + 8 + + Title filter + + + Supports regex + Admitir expresiones regulares + + src/app/dialogs/generate-rss-url/generate-rss-url.component.html + 10 + + Supports regex + + + User + Usuario + + src/app/dialogs/generate-rss-url/generate-rss-url.component.html + 25 + + User + + + Item limit + Límite del elemento + + src/app/dialogs/generate-rss-url/generate-rss-url.component.html + 46 + + Item limit + + + Favorited + Favoritos + + src/app/dialogs/generate-rss-url/generate-rss-url.component.html + 51 + + Favorited + + + Unsubscribe from + Cancelar la suscripción a + + src/app/dialogs/subscription-info-dialog/subscription-info-dialog.component.ts + 30 + + + + Unsubscribe + Darse de baja + + src/app/dialogs/subscription-info-dialog/subscription-info-dialog.component.ts + 32 + + + + You must input a time! + ¡Debes ingresar una hora! + + src/app/dialogs/update-task-schedule-dialog/update-task-schedule-dialog.component.ts + 70 + + + + Best + El mejor + + src/app/main/main.component.html + 24,25 + + Best + + + Force autoplay + Forzar la reproducción automática + + src/app/settings/settings.component.html + 235 + + Force autoplay setting + + + Enable RSS Feed + Activar la fuente RSS + + src/app/settings/settings.component.html + 304 + + Enable RSS Feed setting + + + Be careful enabling this with multi-user mode! User data may be exposed. + ¡Ten cuidado al habilitar esto con el modo multiusuario! Los datos del usuario pueden estar expuestos. + + src/app/settings/settings.component.html + 305 + + RSS Feed prefix + + + See documentation here. + Consulte la documentación aquí. + + src/app/settings/settings.component.html + 307 + + RSS feed documentation + + + Notifications + Notificaciones + + src/app/settings/settings.component.html + 376 + + Notifications settings label + + + Enable notifications + Activar las notificaciones + + src/app/settings/settings.component.html + 382 + + Enable notifications setting + + + Enable all notifications + Activar toda las notificaciones + + src/app/settings/settings.component.html + 385 + + Enable all notifications setting + + + Allowed notification types + Tipos de notificaciones permitidos + + src/app/settings/settings.component.html + 389 + + Allowed notification types + + + Download complete + Descarga completa + + src/app/settings/settings.component.html + 391 + + Download complete + + + Download error + Error en la descarga + + src/app/settings/settings.component.html + 392 + + Download error + + + Task finished + Tarea finalizada + + src/app/settings/settings.component.html + 393 + + Task finished + + + Webhook URL + URL del webhook + + src/app/settings/settings.component.html + 399 + + webhook URL + + + Use ntfy API + Utilizar la API de ntfy + + src/app/settings/settings.component.html + 405 + + Use ntfy API setting + + + ntfy topic URL + URL del tema ntfy + + src/app/settings/settings.component.html + 409 + + ntfy topic URL + + + See docs here. + Consulta la documentación aquí. + + src/app/settings/settings.component.html + 411 + + + src/app/settings/settings.component.html + 421 + + + src/app/settings/settings.component.html + 428 + + ntfy API setting hint + + + Use gotify API + Utilizar la Api de gotify + + src/app/settings/settings.component.html + 415 + + Use gotify API setting + + + Gotify server URL + URL del servidor Gotify + + src/app/settings/settings.component.html + 419 + + Gotify server URL + + + Gotify app token + Token de la aplicación Gotify + + src/app/settings/settings.component.html + 426 + + Gotify app token + + + Use Telegram API + Utilizar la API de Telegram + + src/app/settings/settings.component.html + 432 + + Use Telegram API setting + + + Telegram bot token + Tomen del bot de Telegram + + src/app/settings/settings.component.html + 436 + + Telegram bot token + + + Create bot here. + Crear un bot aquí. + + src/app/settings/settings.component.html + 438 + + Telegram bot create link + + + Telegram chat ID + ID del chat de Telegram + + src/app/settings/settings.component.html + 443 + + Telegram chat ID + + + How do I get the chat ID? + ¿Cómo obtengo la identificación del chat? + + src/app/settings/settings.component.html + 445 + + Telegram chat ID help + + + Restart required. + Reinicio requerido. + + src/app/settings/settings.component.html + 465 + + Restart required hint + + + Delete category + Borrar la categoría + + src/app/settings/settings.component.ts + 173 + + + + Would you like to delete ? + ¿Deseas eliminar ? + + src/app/settings/settings.component.ts + 174 + + + + Failed to delete ! + ¡No se ha podido eliminar ! + + src/app/settings/settings.component.ts + 187 + + + + Play all + Reproducir todo + + src/app/subscription/subscription/subscription.component.html + 17 + + Play all + + + Download zip + Descargar en un archivo zip + + src/app/subscription/subscription/subscription.component.html + 18 + + Download zip + + + Add subscription + Añadir suscripción + + src/app/subscriptions/subscriptions.component.html + 60 + + Add subscription + + + Extractor + Extractor + + src/app/components/archive-viewer/archive-viewer.component.html + 57 + + Extractor + + + Would you like to delete archive(s)? + ¿ Quieres borrar el(los) archivo(s) de ? + + src/app/components/archive-viewer/archive-viewer.component.ts + 153 + + + + Play + Reproducir + + src/app/components/notifications-list/notifications-list.component.ts + 30 + + + + Retry download + Reintertar la descarga + + src/app/components/notifications-list/notifications-list.component.ts + 31 + + + + View error + Ver el error + + src/app/components/notifications-list/notifications-list.component.ts + 32 + + + + Download error + Error al descargar + + src/app/components/notifications/notifications.component.ts + 27 + + + + Video only + Solo el video + + src/app/components/recent-videos/recent-videos.component.ts + 55 + + + + Task + Tarea + + src/app/components/notifications/notifications.component.ts + 31 + + + + Download restarted! + ¡Descarga reiniciada! + + src/app/components/notifications/notifications.component.ts + 72 + + + + Delete old files: + Eliminar los archivos antiguos: + + src/app/components/tasks/tasks.component.html + 66 + + Delete old files + + + Would you like to unsubscribe from ? + ¿Deseas anular tu suscripción a ? + + src/app/dialogs/subscription-info-dialog/subscription-info-dialog.component.ts + 31 + + + + Successfully deleted ! + ¡Se ha eliminado correctamente ! + + src/app/settings/settings.component.ts + 183 + + + + Slack Webhook URL + URL del webhook de Slack + + src/app/settings/settings.component.html + 397 + + Slack Webhook URL + + + Discord Webhook URL + URL del webhook de Discord + + src/app/settings/settings.component.html + 390 + + Discord Webhook URL + diff --git a/src/assets/i18n/messages.pl.xlf b/src/assets/i18n/messages.pl.xlf index 0c87a99..9c68bc3 100644 --- a/src/assets/i18n/messages.pl.xlf +++ b/src/assets/i18n/messages.pl.xlf @@ -3757,6 +3757,33 @@ Select a version + + Task finished + Zadanie zakończone + + src/app/settings/settings.component.html + 377 + + Task finished + + + Download complete + Pobieranie zakończone + + src/app/settings/settings.component.html + 375 + + Download complete + + + Download error + Błąd pobierania + + src/app/settings/settings.component.html + 376 + + Download error +