Compare commits

..

2 Commits

Author SHA1 Message Date
Glassed Silver
e1a48f67fa Change of node.js version mention. (12 -> 116)
In relation to PR #609
2022-05-07 11:43:04 +02:00
Glassed Silver
bbb5e8ebb9 Adding Node.js version to README 2022-05-02 08:44:01 +02:00
31 changed files with 1857 additions and 3515 deletions

View File

@@ -1,18 +0,0 @@
version: 2
updates:
- package-ecosystem: "docker"
directory: "/"
schedule:
interval: "daily"
- package-ecosystem: "github-actions"
directory: "/.github/workflows"
schedule:
interval: "daily"
- package-ecosystem: "npm"
directory: "/"
schedule:
interval: "daily"
- package-ecosystem: "npm"
directory: "/backend/"
schedule:
interval: "daily"

View File

@@ -1,38 +0,0 @@
name: No Response
# Both `issue_comment` and `scheduled` event types are required for this Action
# to work properly.
on:
issue_comment:
types: [created]
schedule:
# Schedule for five minutes after the hour, every hour
- cron: '5 * * * *'
# By specifying the access of one of the scopes, all of those that are not
# specified are set to 'none'.
permissions:
issues: write
jobs:
noResponse:
runs-on: ubuntu-latest
if: ${{ github.repository == 'Tzahi12345/YoutubeDL-Material' }}
steps:
- uses: lee-dohm/no-response@v0.5.0
with:
token: ${{ github.token }}
# Comment to post when closing an Issue for lack of response. Set to `false` to disable
closeComment: >
This issue has been automatically closed because there has been no response
to our request for more information from the original author. With only the
information that is currently in the issue, we don't have enough information
to take action. Please reach out if you have or find the answers we need so
that we can investigate further. We will re-open this issue if you provide us
with the requested information with a comment under this issue.
Thank you for your understanding and for trying to help make this application
a better one!
# Number of days of inactivity before an issue is closed for lack of response.
daysUntilClose: 21
# Label requiring a response.
responseRequiredLabel: "💬 response-needed"

View File

@@ -8,9 +8,9 @@ on:
- '.vscode/**'
- 'chrome-extension/**'
- 'releases/**'
- '**/**.md'
- '**.crx'
- '**.pem'
- '**.md'
- '.dockerignore'
- '.gitignore'

View File

@@ -1,66 +1,71 @@
# Fetching our ffmpeg
FROM ubuntu:22.04 AS ffmpeg
FROM ubuntu:20.04 AS ffmpeg
ENV DEBIAN_FRONTEND=noninteractive
# Use script due local build compability
COPY ffmpeg-fetch.sh .
RUN sh ./ffmpeg-fetch.sh
COPY docker-build.sh .
RUN sh ./docker-build.sh
FROM ubuntu:20.04 as frontend
# Create our Ubuntu 22.04 with node 16
# Go to 20.04
FROM ubuntu:20.04 AS base
ENV DEBIAN_FRONTEND=noninteractive
ENV UID=1000
ENV GID=1000
ENV USER=youtube
ENV NO_UPDATE_NOTIFIER=true
ENV PM2_HOME=/app/pm2
RUN groupadd -g $GID $USER && useradd --system -m -g $USER --uid $UID $USER && \
apt update && \
apt install -y --no-install-recommends curl ca-certificates && \
curl -fsSL https://deb.nodesource.com/setup_16.x | bash - && \
apt install -y --no-install-recommends nodejs && \
npm -g install npm && \
apt clean && \
rm -rf /var/lib/apt/lists/*
RUN apt-get update && apt-get -y install \
curl \
gnupg && \
curl -sL https://deb.nodesource.com/setup_12.x | bash - && \
apt-get -y install \
nodejs \
# YARN: brings along npm, solves dependency conflicts,
# spares us this spaghetti approach: https://stackoverflow.com/a/60547197
yarn && \
apt-get install -f && \
npm config set strict-ssl false && \
npm install -g @angular/cli
# Build frontend
FROM base as frontend
RUN npm install -g @angular/cli
WORKDIR /build
COPY [ "package.json", "package-lock.json", "angular.json", "tsconfig.json", "/build/" ]
COPY [ "package.json", "package-lock.json", "/build/" ]
RUN npm install
COPY [ "angular.json", "tsconfig.json", "/build/" ]
COPY [ "src/", "/build/src/" ]
RUN npm install && \
npm run build && \
ls -al /build/backend/public
RUN npm run build
#--------------#
FROM ubuntu:20.04
ENV UID=1000 \
GID=1000 \
USER=youtube \
NO_UPDATE_NOTIFIER=true
ENV DEBIAN_FRONTEND=noninteractive
RUN groupadd -g $GID $USER && useradd --system -g $USER --uid $UID $USER
RUN curl -sL https://deb.nodesource.com/setup_12.x | bash -
RUN apt-get update && apt-get -y install \
npm \
python2 \
python3 \
atomicparsley && \
apt-get install -f && \
apt-get autoremove --purge && \
apt-get autoremove && \
apt-get clean && \
rm -rf /var/lib/apt
# Install backend deps
FROM base as backend
WORKDIR /app
COPY [ "backend/","/app/" ]
COPY --from=ffmpeg /usr/local/bin/ffmpeg /usr/local/bin/ffmpeg
COPY --from=ffmpeg /usr/local/bin/ffprobe /usr/local/bin/ffprobe
COPY --chown=$UID:$GID [ "backend/package.json", "backend/package-lock.json", "/app/" ]
ENV PM2_HOME=/app/pm2
RUN npm config set strict-ssl false && \
npm install --prod && \
ls -al
npm install pm2 -g && \
npm install && chown -R $UID:$GID ./
# Final image
FROM base
RUN npm install -g pm2 && \
apt update && \
apt install -y --no-install-recommends gosu python3-minimal python-is-python3 atomicparsley && \
apt clean && \
rm -rf /var/lib/apt/lists/*
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=backend ["/app/","/app/"]
COPY --chown=$UID:$GID --from=frontend [ "/build/backend/public/", "/app/public/" ]
# Add some persistence data
#VOLUME ["/app/appdata"]
COPY --chown=$UID:$GID [ "/backend/", "/app/" ]
EXPOSE 17442
ENTRYPOINT [ "/app/entrypoint.sh" ]
CMD [ "pm2-runtime","--raw","pm2.config.js" ]
# ENTRYPOINT [ "/app/entrypoint.sh" ]
CMD [ "pm2-runtime", "pm2.config.js" ]

View File

@@ -1,2 +0,0 @@
FROM tzahi12345/youtubedl-material:nightly
CMD [ "pm2-runtime", "pm2.config.js" ]

1
Procfile Normal file
View File

@@ -0,0 +1 @@
web: npm start --prefix backend

View File

@@ -6,7 +6,7 @@
[![GitHub issues badge](https://img.shields.io/github/issues/Tzahi12345/YoutubeDL-Material)](https://github.com/Tzahi12345/YoutubeDL-Material/issues)
[![License badge](https://img.shields.io/github/license/Tzahi12345/YoutubeDL-Material)](https://github.com/Tzahi12345/YoutubeDL-Material/blob/master/LICENSE.md)
YoutubeDL-Material is a Material Design frontend for [youtube-dl](https://rg3.github.io/youtube-dl/). It's coded using [Angular 13](https://angular.io/) for the frontend, and [Node.js](https://nodejs.org/) on the backend.
YoutubeDL-Material is a Material Design frontend for [youtube-dl](https://rg3.github.io/youtube-dl/). It's coded using [Angular 13](https://angular.io/) for the frontend, and [Node.js](https://nodejs.org/) 16 on the backend.
Now with [Docker](#Docker) support!

View File

@@ -2,7 +2,6 @@
"name": "YoutubeDL-Material",
"description": "An open-source and self-hosted YouTube downloader based on Google's Material Design specifications.",
"repository": "https://github.com/Tzahi12345/YoutubeDL-Material",
"stack": "container",
"logo": "https://i.imgur.com/GPzvPiU.png",
"keywords": ["youtube-dl", "youtubedl-material", "nodejs"]
}

View File

@@ -249,6 +249,14 @@ async function startServer() {
});
}
async function restartServer(is_update = false) {
logger.info(`${is_update ? 'Update complete! ' : ''}Restarting server...`);
// the following line restarts the server through nodemon
fs.writeFileSync(`restart${is_update ? '_update' : '_general'}.json`, 'internal use only');
process.exit(1);
}
async function updateServer(tag) {
// no tag provided means update to the latest version
if (!tag) {
@@ -289,7 +297,7 @@ async function updateServer(tag) {
updating: true,
'details': 'Update complete! Restarting server...'
}
utils.restartServer(true);
restartServer(true);
}, err => {
logger.error(err);
updaterStatus = {
@@ -668,7 +676,6 @@ async function getUrlInfos(url) {
async function startYoutubeDL() {
// auto update youtube-dl
youtubedl_api.verifyBinaryExistsLinux();
const update_available = await youtubedl_api.checkForYoutubeDLUpdate();
if (update_available) await youtubedl_api.updateYoutubeDL(update_available);
}
@@ -757,7 +764,7 @@ app.get('/api/versionInfo', (req, res) => {
app.post('/api/restartServer', optionalJwt, (req, res) => {
// delayed by a little bit so that the client gets a response
setTimeout(() => {utils.restartServer()}, 100);
setTimeout(() => {restartServer()}, 100);
res.send({success: true});
});
@@ -1795,7 +1802,6 @@ app.post('/api/updateTaskData', optionalJwt, async (req, res) => {
app.post('/api/getDBBackups', optionalJwt, async (req, res) => {
const backup_dir = path.join('appdata', 'db_backup');
fs.ensureDirSync(backup_dir);
const db_backups = [];
const candidate_backups = await utils.recFindByExt(backup_dir, 'bak', null, [], false);

View File

@@ -222,83 +222,4 @@ exports.AVAILABLE_PERMISSIONS = [
exports.DETAILS_BIN_PATH = 'node_modules/youtube-dl/bin/details'
// args that have a value after it (e.g. -o <output> or -f <format>)
const YTDL_ARGS_WITH_VALUES = [
'--default-search',
'--config-location',
'--proxy',
'--socket-timeout',
'--source-address',
'--geo-verification-proxy',
'--geo-bypass-country',
'--geo-bypass-ip-block',
'--playlist-start',
'--playlist-end',
'--playlist-items',
'--match-title',
'--reject-title',
'--max-downloads',
'--min-filesize',
'--max-filesize',
'--date',
'--datebefore',
'--dateafter',
'--min-views',
'--max-views',
'--match-filter',
'--age-limit',
'--download-archive',
'-r',
'--limit-rate',
'-R',
'--retries',
'--fragment-retries',
'--buffer-size',
'--http-chunk-size',
'--external-downloader',
'--external-downloader-args',
'-a',
'--batch-file',
'-o',
'--output',
'--output-na-placeholder',
'--autonumber-start',
'--load-info-json',
'--cookies',
'--cache-dir',
'--encoding',
'--user-agent',
'--referer',
'--add-header',
'--sleep-interval',
'--max-sleep-interval',
'-f',
'--format',
'--merge-output-format',
'--sub-format',
'--sub-lang',
'-u',
'--username',
'-p',
'--password',
'-2',
'--twofactor',
'--video-password',
'--ap-mso',
'--ap-username',
'--ap-password',
'--audio-format',
'--audio-quality',
'--recode-video',
'--postprocessor-args',
'--metadata-from-title',
'--fixup',
'--ffmpeg-location',
'--exec',
'--convert-subs'
];
// we're using a Set here for performance
exports.YTDL_ARGS_WITH_VALUES = new Set(YTDL_ARGS_WITH_VALUES);
exports.CURRENT_VERSION = 'v4.2';

View File

@@ -85,6 +85,8 @@ exports.initialize = (input_db, input_users_db) => {
}
exports.connectToDB = async (retries = 5, no_fallback = false, custom_connection_string = null) => {
using_local_db = config_api.getConfigItem('ytdl_use_local_db'); // verify
if (using_local_db && !custom_connection_string) return;
const success = await exports._connectToDB(custom_connection_string);
if (success) return true;

View File

@@ -485,7 +485,7 @@ exports.generateArgs = async (url, type, options, user_uid = null, simulated = f
}
if (options.additionalArgs && options.additionalArgs !== '') {
downloadConfig = utils.injectArgs(downloadConfig, options.additionalArgs.split(',,'));
downloadConfig = downloadConfig.concat(options.additionalArgs.split(',,'));
}
const rate_limit = config_api.getConfigItem('ytdl_download_rate_limit');

View File

@@ -11,7 +11,7 @@ fi
# chown current working directory to current user
if [ "$*" = "$CMD" ] && [ "$(id -u)" = "0" ]; then
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" "$@"
exec su-exec "$UID:$GID" "$0" "$@"
fi
exec "$@"

View File

@@ -1,58 +0,0 @@
#!/bin/sh
# INTERACTIVE PERMISSIONS FIX SCRIPT FOR YTDL-M
# Date: 2022-05-03
# If you want to run this script on a bare-metal installation instead of within Docker
# make sure that the paths configured below match your paths! (it's wise to use the full paths)
# USAGE: within your container's bash shell:
# chmod -R +x ./fix-scripts/
# ./fix-scripts/001-fix_download_permissions.sh
# User defines / Docker env defaults
PATH_SUBS=/app/subscriptions
PATH_AUDIO=/app/audio
PATH_VIDS=/app/video
clear -x
echo "\n"
printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' - # horizontal line
echo "Welcome to the INTERACTIVE PERMISSIONS FIX SCRIPT FOR YTDL-M."
echo "This script will set YTDL-M's download paths' owner to ${USER} (${UID}:${GID})"
echo "and permissions to the default of 644."
printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' - # horizontal line
echo "\n"
# check whether dirs exist
i=0
[ -d $PATH_SUBS ] && i=$((i+1)) && echo "✔ (${i}/3) Found Subscriptions directory at ${PATH_SUBS}"
[ -d $PATH_AUDIO ] && i=$((i+1)) && echo "✔ (${i}/3) Found Audio directory at ${PATH_AUDIO}"
[ -d $PATH_VIDS ] && i=$((i+1)) && echo "✔ (${i}/3) Found Video directory at ${PATH_VIDS}"
# Ask to proceed or cancel, exit on missing paths
case $i in
0)
echo "\nCouldn't find any download path to fix permissions for! \nPlease edit this script to configure!"
exit 2;;
3)
echo "\nFound all download paths to fix permissions for. \nProceed? (Y/N)";;
*)
echo "\nOnly found ${i} out of 3 download paths! Something about this script's config must be wrong. \nProceed anyways? (Y/N)";;
esac
old_stty_cfg=$(stty -g)
stty raw -echo ; answer=$(head -c 1) ; stty $old_stty_cfg # Careful playing with stty
if echo "$answer" | grep -iq "^y" ;then
echo "\n Running jobs now... (this may take a while)\n"
[ -d $PATH_SUBS ] && chown "$UID:$GID" -R $PATH_SUBS && echo "✔ Set owner of ${PATH_SUBS} to ${USER}."
[ -d $PATH_SUBS ] && chmod 644 -R $PATH_SUBS && echo "✔ Set permissions of ${PATH_SUBS} to 644."
[ -d $PATH_AUDIO ] && chown "$UID:$GID" -R $PATH_AUDIO && echo "✔ Set owner of ${PATH_AUDIO} to ${USER}."
[ -d $PATH_AUDIO ] && chmod 644 -R $PATH_AUDIO && echo "✔ Set permissions of ${PATH_AUDIO} to 644."
[ -d $PATH_VIDS ] && chown "$UID:$GID" -R $PATH_VIDS && echo "✔ Set owner of ${PATH_VIDS} to ${USER}."
[ -d $PATH_VIDS ] && chmod 644 -R $PATH_VIDS && echo "✔ Set permissions of ${PATH_VIDS} to 644."
echo "\n✔ Done."
echo "\n If you noticed file access errors those MAY be due to currently running downloads."
echo " Feel free to re-run this script, however download parts should have correct file permissions anyhow. :)"
exit
else
echo "\nOkay, bye."
fi

View File

@@ -386,21 +386,6 @@ describe('Downloader', function() {
assert(fs.existsSync(nfo_file_path), true);
fs.unlinkSync(nfo_file_path);
});
it('Inject args', async function() {
const original_args1 = ['--no-resize-buffer', '-o', '%(title)s', '--no-mtime'];
const new_args1 = ['--age-limit', '25', '--yes-playlist', '--abort-on-error', '-o', '%(id)s'];
const updated_args1 = utils.injectArgs(original_args1, new_args1);
const expected_args1 = ['--no-resize-buffer', '--no-mtime', '--age-limit', '25', '--yes-playlist', '--abort-on-error', '-o', '%(id)s'];
assert(JSON.stringify(updated_args1), JSON.stringify(expected_args1));
const original_args2 = ['-o', '%(title)s.%(ext)s', '--write-info-json', '--print-json', '--audio-quality', '0', '-x', '--audio-format', 'mp3'];
const new_args2 = ['--add-metadata', '--embed-thumbnail', '--convert-thumbnails', 'jpg'];
const updated_args2 = utils.injectArgs(original_args2, new_args2);
const expected_args2 = ['-o', '%(title)s.%(ext)s', '--write-info-json', '--print-json', '--audio-quality', '0', '-x', '--audio-format', 'mp3', '--add-metadata', '--embed-thumbnail', '--convert_thumbnails', 'jpg'];
console.log(updated_args2);
assert(JSON.stringify(updated_args2), JSON.stringify(expected_args2));
});
});
describe('Tasks', function() {

View File

@@ -415,47 +415,6 @@ async function fetchFile(url, path, file_label) {
});
}
async function restartServer(is_update = false) {
logger.info(`${is_update ? 'Update complete! ' : ''}Restarting server...`);
// the following line restarts the server through nodemon
fs.writeFileSync(`restart${is_update ? '_update' : '_general'}.json`, 'internal use only');
process.exit(1);
}
// adds or replaces args according to the following rules:
// - if it already exists and has value, then replace both arg and value
// - if already exists and doesn't have value, ignore
// - if it doesn't exist and has value, add both arg and value
// - if it doesn't exist and doesn't have value, add arg
function injectArgs(original_args, new_args) {
const updated_args = original_args.slice();
try {
for (let i = 0; i < new_args.length; i++) {
const new_arg = new_args[i];
if (!new_arg.startsWith('-') && !new_arg.startsWith('--') && i > 0 && original_args.includes(new_args[i - 1])) continue;
if (CONSTS.YTDL_ARGS_WITH_VALUES.has(new_arg)) {
if (original_args.includes(new_arg)) {
const original_index = original_args.indexOf(new_arg);
original_args.splice(original_index, 2);
}
updated_args.push(new_arg, new_args[i + 1]);
} else {
if (!original_args.includes(new_arg)) {
updated_args.push(new_arg);
}
}
}
} catch (err) {
logger.warn(err);
logger.warn(`Failed to inject args (${new_args}) into (${original_args})`);
}
return updated_args;
}
// objects
function File(id, title, thumbnailURL, isAudio, duration, url, uploader, size, path, upload_date, description, view_count, height, abr) {
@@ -499,7 +458,5 @@ module.exports = {
wait: wait,
checkExistsWithTimeout: checkExistsWithTimeout,
fetchFile: fetchFile,
restartServer: restartServer,
injectArgs: injectArgs,
File: File
}

View File

@@ -6,8 +6,6 @@ const utils = require('./utils');
const CONSTS = require('./consts');
const config_api = require('./config.js');
const OUTDATED_VERSION = "2020.00.00";
const is_windows = process.platform === 'win32';
const download_sources = {
@@ -33,7 +31,7 @@ exports.checkForYoutubeDLUpdate = async () => {
let current_app_details_exists = fs.existsSync(CONSTS.DETAILS_BIN_PATH);
if (!current_app_details_exists) {
logger.warn(`Failed to get youtube-dl binary details at location '${CONSTS.DETAILS_BIN_PATH}'. Generating file...`);
fs.writeJSONSync(CONSTS.DETAILS_BIN_PATH, {"version": OUTDATED_VERSION, "downloader": default_downloader});
fs.writeJSONSync(CONSTS.DETAILS_BIN_PATH, {"version":"2020.00.00", "downloader": default_downloader});
}
let current_app_details = JSON.parse(fs.readFileSync(CONSTS.DETAILS_BIN_PATH));
let current_version = current_app_details['version'];
@@ -88,18 +86,6 @@ exports.updateYoutubeDL = async (latest_update_version) => {
await download_sources[default_downloader]['func'](latest_update_version);
}
exports.verifyBinaryExistsLinux = () => {
const details_json = fs.readJSONSync(CONSTS.DETAILS_BIN_PATH);
if (!is_windows && details_json && details_json['path'] && details_json['path'].includes('.exe')) {
details_json['path'] = 'node_modules/youtube-dl/bin/youtube-dl';
details_json['exec'] = 'youtube-dl';
details_json['version'] = OUTDATED_VERSION;
fs.writeJSONSync(CONSTS.DETAILS_BIN_PATH, details_json);
utils.restartServer();
}
}
async function downloadLatestYoutubeDLBinary(new_version) {
const file_ext = is_windows ? '.exe' : '';

28
chrome-extension.pem Normal file
View File

@@ -0,0 +1,28 @@
-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDMX9Wk5SM5cIfY
6ReKX3ybY1rsbNbOzG8ceN7yyeXB0mor8pVsX1MOna2HewOyBuaaYNJRO4tJBxic
7a8zQErfgHL/i/QrVvVCpfJ7xKvq6zij5NYoqd/FBUwawqjeH5/voIcAp9z5Vmsr
kL0sxJUKy6b4IWNp3noU7Nvq2RwxnXQbKDhz8FrX6oQAnDC6gsG5a2OSPsaE4oqw
6nmonORJypmpP5hqyHY8ffXBT2lAxjHT7OnYbaCBe2TQP8+rH6rDBOhjVNtUJ089
ocTQL6LtQEPkcF4yKJmtcOwHl8OPGZs5l9i8xb4j9RuSPkm2lbzZX8sOsdGGoqJZ
q68nYhsHAgMBAAECggEAXmtKEzfPObq88B/kAcgSk+FngMHZzcmR7bgD3GwdSxnQ
dkRI9zvk7eQ35tcUwntAr4Lat6/ILjFqlBmVLxrdXHuF5Xz9jcZLYgKzz61xdYM9
dC6FKF0u5eGIIvbauGAo7jaeGFX1F3Zu5b4lP9kEOGwU1B7sxF0FzsQM5+dtCJgv
We/hWQeF+9gtoVnkCSS/Mq2p0UomXXHW0Bz4+HuHlTR9aiYbviYnotABiLUhZyzt
v5yUaktb9qniBfdLpRlq8cp06xYlTEA9gJpa4Pnok8OWUsbAiW6EiXUSaZ/cchVa
AnO8WWYvVOnnt6WHI3+QdFTnqVjE5TBX4N/7bVhHGQKBgQD0dtbFqp7vZK/jVYvE
z0WPdySOg2ZDmoSfk5ZlR1+Y9zWToHv0qu8zqoOjL8Ubxrh9fGlOow+cCVdkEuaa
jWC2AWetuRvW0Z5A3XMXr0/N/1fgOkTqtp3WNrUPjVJahEg3lN+90opgFoT8swSi
s1oxW0oLcVIlrjhGBXAPCfsAuQKBgQDWBLRhHsRAvGcK5wGuVnxVApTIyBOermsW
3bJt+7+UI+4sYrBAwkWdQG93IG0cQtn48TEPBgmR2fjRF5IFT9M4/u+QOeeByT7I
we7nVtHgSY5ByC9N0mjWbcmSg8fktz/LonjldNC4kWdOFb75fxGf8kOGS5rUaMA4
zHucfB6ZvwKBgQCPHJrysMXGY21MaqIeHzEboaX3ABl37hdBzAa5V6UxSVdGCydF
vmO2HVZey/JaJmWOoKyNaowSzq0oWqBBTg6VvhDR9JHFmoVId9uOvAS+FYN+Mt5x
gWK5KuGoLxVNBC+6yh6JY526TrSfsrU+Aj0Es+qO9FIg2PL8muZVB4S3kQKBgH/5
CDMaxpc/EQ5/2413wZjDllwI51J3USm3Hz6Mzp2ybnSz/lh60k2Zfg1polTH1Lb6
4i7tmUNRZ2sAARyUAuWN64n+VeRRhe1dqZFDZPQMh7fmEAMk0fOGaoXlrt2ghdEq
Mchi9Xun1nHmpu9hgBR4NNBU3RwuFuLfwvprbZDZAoGAWa62QJChE86xQGP1MrL2
SbIzw3cfeP5xdQ3MKldJiy5IkbMR7Z13WZ7FwvPTy0g/onLHD1rqlm1kUMsGRHpD
5vH06PNpKXQ6x8BYaRGtE6P39jLycO/X+WK/lYTrWo1bR+mGCebDh4B5XrwT3gI6
x4Gvz134pZCTyQCf5JCwbQs=
-----END PRIVATE KEY-----

View File

@@ -40,4 +40,4 @@ echo "(4/5) PROVISION - Provide ffmpeg and ffprobe from ffmpeg obtain layer"
cp /tmp/ffmpeg/*/ffmpeg /usr/local/bin/ffmpeg
cp /tmp/ffmpeg/*/ffprobe /usr/local/bin/ffprobe
echo "(5/5) CLEANUP - Remove temporary downloads from ffmpeg obtain layer"
rm -rf /tmp/ffmpeg ffmpeg.txz
rm -rf /tmp/ffmpeg ffmpeg.txz

View File

@@ -1,3 +0,0 @@
build:
docker:
web: Dockerfile.heroku

59
package-lock.json generated
View File

@@ -3295,12 +3295,65 @@
"safer-buffer": "~2.1.0"
}
},
"asn1.js": {
"version": "5.4.1",
"resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz",
"integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==",
"dev": true,
"requires": {
"bn.js": "^4.0.0",
"inherits": "^2.0.1",
"minimalistic-assert": "^1.0.0",
"safer-buffer": "^2.1.0"
},
"dependencies": {
"bn.js": {
"version": "4.11.9",
"resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz",
"integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==",
"dev": true
}
}
},
"assert": {
"version": "1.5.0",
"resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz",
"integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==",
"dev": true,
"requires": {
"object-assign": "^4.1.1",
"util": "0.10.3"
},
"dependencies": {
"inherits": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz",
"integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=",
"dev": true
},
"util": {
"version": "0.10.3",
"resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz",
"integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=",
"dev": true,
"requires": {
"inherits": "2.0.1"
}
}
}
},
"assert-plus": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
"integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
"dev": true
},
"assign-symbols": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz",
"integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=",
"dev": true
},
"ast-types-flow": {
"version": "0.0.7",
"resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz",
@@ -10687,9 +10740,9 @@
}
},
"rxjs-compat": {
"version": "6.6.7",
"resolved": "https://registry.npmjs.org/rxjs-compat/-/rxjs-compat-6.6.7.tgz",
"integrity": "sha512-szN4fK+TqBPOFBcBcsR0g2cmTTUF/vaFEOZNuSdfU8/pGFnNmmn2u8SystYXG1QMrjOPBc6XTKHMVfENDf6hHw=="
"version": "6.5.4",
"resolved": "https://registry.npmjs.org/rxjs-compat/-/rxjs-compat-6.5.4.tgz",
"integrity": "sha512-rkn+lbOHUQOurdd74J/hjmDsG9nFx0z66fvnbs8M95nrtKvNqCKdk7iZqdY51CGmDemTQk+kUPy4s8HVOHtkfA=="
},
"safe-buffer": {
"version": "5.1.2",

View File

@@ -12,8 +12,7 @@
"lint": "ng lint",
"e2e": "ng e2e",
"electron": "ng build --base-href ./ && electron .",
"generate": "openapi --input ./\"Public API v1.yaml\" --output ./src/api-types --exportCore false --exportServices false --exportModels true",
"i18n-source": "ng extract-i18n --output-path=src/assets/i18n"
"generate": "openapi --input ./\"Public API v1.yaml\" --output ./src/api-types --exportCore false --exportServices false --exportModels true"
},
"engines": {
"node": "12.3.1",
@@ -48,7 +47,7 @@
"ngx-avatars": "^1.3.1",
"ngx-file-drop": "^13.0.0",
"rxjs": "^6.6.3",
"rxjs-compat": "^6.6.7",
"rxjs-compat": "^6.0.0-rc.0",
"tslib": "^2.0.0",
"typescript": "~4.6.3",
"xliff-to-json": "^1.0.4",

View File

@@ -36,9 +36,6 @@
<ng-container i18n="Subscription playlist not available text">Name not available. Playlist retrieval in progress.</ng-container>
</div>
</a>
<button mat-icon-button (click)="editSubscription(sub)">
<mat-icon>edit</mat-icon>
</button>
<button mat-icon-button (click)="showSubInfo(sub)">
<mat-icon>info</mat-icon>
</button>

View File

@@ -1392,7 +1392,7 @@
<note priority="1" from="description">Allow subscriptions setting</note>
</trans-unit>
<trans-unit id="4bee2a4bef2d26d37c9b353c278e24e5cd309ce3" datatype="html">
<source>Subscriptions base path</source>
<source>Base bath for subscriptions</source>
<target>Camí base de subscripcions</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/settings/settings.component.html</context>
@@ -3009,8 +3009,8 @@
<note priority="1" from="description">Skip ad button</note>
</trans-unit>
<trans-unit id="7220285196408439810" datatype="html">
<source>Download for <x id="url" equiv-text="url"/> has been queued!</source>
<target>La descàrrega de <x id="url" equiv-text="url"/> s'ha posat a la cua!</target>
<source>Download for <x id="url" equiv-text="d, cropF"/> has been queued!</source>
<target>La descàrrega de <x id="url" equiv-text="d, cropF"/> s'ha posat a la cua!</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/main/main.component.ts</context>
<context context-type="linenumber">469</context>
@@ -3071,8 +3071,8 @@
<note priority="1" from="description">Installation type</note>
</trans-unit>
<trans-unit id="2560364143605631750" datatype="html">
<source>Error for <x id="url" equiv-text="download['url']"/></source>
<target>Error a <x id="url" equiv-text="download['url']"/></target>
<source>Error for <x id="url" equiv-text="}); retu"/></source>
<target>Error a <x id="url" equiv-text="}); retu"/></target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/downloads/downloads.component.ts</context>
<context context-type="linenumber">238</context>
@@ -3104,296 +3104,6 @@
<context context-type="linenumber">130</context>
</context-group>
</trans-unit>
<trans-unit id="586a5fd72602b5b14ec0c55f84814de47bb21e3a" datatype="html">
<source>Tasks</source>
<target>Tasques</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/app.component.html</context>
<context context-type="linenumber">47</context>
</context-group>
<note priority="1" from="description">Navigation menu Tasks Page title</note>
</trans-unit>
<trans-unit id="e4c3cd97461b220b9cea67cfe08c5399799cfeed" datatype="html">
<source>Last ran</source>
<target>Última vegada que es va executar</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tasks/tasks.component.html</context>
<context context-type="linenumber">16</context>
</context-group>
<note priority="1" from="description">Last ran</note>
</trans-unit>
<trans-unit id="84a36cb75660b736773fe36ffa3d54f0f0fe363e" datatype="html">
<source>N/A</source>
<target>N/A</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tasks/tasks.component.html</context>
<context context-type="linenumber">19</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tasks/tasks.component.html</context>
<context context-type="linenumber">28</context>
</context-group>
<note priority="1" from="description">N/A</note>
</trans-unit>
<trans-unit id="698f716f927f633b16cbe2308d90b2dba51f7556" datatype="html">
<source>Last confirmed</source>
<target>Últim confirmat</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tasks/tasks.component.html</context>
<context context-type="linenumber">25</context>
</context-group>
<note priority="1" from="description">Last confirmed</note>
</trans-unit>
<trans-unit id="4391397241847e675f6c38bbdec6b2883157fb1a" datatype="html">
<source>Clear duplicate files from DB:</source>
<target>Esborrar els fitxers duplicats a la BD:</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tasks/tasks.component.html</context>
<context context-type="linenumber">60</context>
</context-group>
<note priority="1" from="description">Clear duplicate files from DB</note>
</trans-unit>
<trans-unit id="5ff9ae1f4c26bf2ddf6e9d5e4136916c5ce6a941" datatype="html">
<source>Clear missing files from DB:</source>
<target>Esborrar els fitxers que falten a la BD:</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tasks/tasks.component.html</context>
<context context-type="linenumber">57</context>
</context-group>
<note priority="1" from="description">Clear missing files from DB</note>
</trans-unit>
<trans-unit id="9562dd1e902acc4cc6a6e09cba66a2775daf7794" datatype="html">
<source>Update binary to:</source>
<target>Actualitzar el binari a:</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tasks/tasks.component.html</context>
<context context-type="linenumber">63</context>
</context-group>
<note priority="1" from="description">Update binary to</note>
</trans-unit>
<trans-unit id="9b3d305551358858e1892169a94527e0cc4dbf5b" datatype="html">
<source>Run</source>
<target>Executar</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tasks/tasks.component.html</context>
<context context-type="linenumber">69</context>
</context-group>
<note priority="1" from="description">Run</note>
</trans-unit>
<trans-unit id="4a4f46a2dcec36bd5c8c371ceee55c2226dec27f" datatype="html">
<source>Schedule</source>
<target>Planificació</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tasks/tasks.component.html</context>
<context context-type="linenumber">72</context>
</context-group>
<note priority="1" from="description">Schedule</note>
</trans-unit>
<trans-unit id="40bd7093f5fbd3fbeff9a50baaf5d4c8416add1e" datatype="html">
<source>Restore DB from backup</source>
<target>Restaurar la BD des de la còpia de seguretat</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tasks/tasks.component.html</context>
<context context-type="linenumber">89</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/dialogs/restore-db-dialog/restore-db-dialog.component.html</context>
<context context-type="linenumber">1</context>
</context-group>
<note priority="1" from="description">Restore DB from backup button</note>
</trans-unit>
<trans-unit id="f8a2361f3bd8fb05bf92080e2755bddd56ab64d7" datatype="html">
<source>Reset tasks</source>
<target>Restablir tasques</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tasks/tasks.component.html</context>
<context context-type="linenumber">90</context>
</context-group>
<note priority="1" from="description">Reset tasks button</note>
</trans-unit>
<trans-unit id="5615896113581458384" datatype="html">
<source>Successfully ran task!</source>
<target>S'ha realitzat correctament la tasca!</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tasks/tasks.component.ts</context>
<context context-type="linenumber">78</context>
</context-group>
</trans-unit>
<trans-unit id="2106110452479146311" datatype="html">
<source>Failed to run task!</source>
<target>No s'ha pogut executar la tasca!</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tasks/tasks.component.ts</context>
<context context-type="linenumber">79</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tasks/tasks.component.ts</context>
<context context-type="linenumber">81</context>
</context-group>
</trans-unit>
<trans-unit id="9121124215111024650" datatype="html">
<source>Failed to confirm task!</source>
<target>No s'ha pogut confirmar la tasca!</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tasks/tasks.component.ts</context>
<context context-type="linenumber">90</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tasks/tasks.component.ts</context>
<context context-type="linenumber">92</context>
</context-group>
</trans-unit>
<trans-unit id="5588424857086384816" datatype="html">
<source>Reset tasks</source>
<target>Restablir tasques</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tasks/tasks.component.ts</context>
<context context-type="linenumber">132</context>
</context-group>
</trans-unit>
<trans-unit id="4334913030311371594" datatype="html">
<source>Would you like to reset your tasks? All your schedules will be removed as well.</source>
<target>Vols restablir les teves tasques? També s'eliminaran totes els teves planificacions.</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tasks/tasks.component.ts</context>
<context context-type="linenumber">133</context>
</context-group>
</trans-unit>
<trans-unit id="7808756054397155068" datatype="html">
<source>Reset</source>
<target>Restablir</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tasks/tasks.component.ts</context>
<context context-type="linenumber">134</context>
</context-group>
</trans-unit>
<trans-unit id="7e121a443a8e9d92218f987001b650c59504d815" datatype="html">
<source>Scheduled for</source>
<target>Planificat per a</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tasks/tasks.component.html</context>
<context context-type="linenumber">38</context>
</context-group>
<note priority="1" from="description">Scheduled</note>
</trans-unit>
<trans-unit id="3b7d6ff5d14ab177ce3e2d217b1927fb2e4aefd1" datatype="html">
<source>Not scheduled</source>
<target>No planificat</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tasks/tasks.component.html</context>
<context context-type="linenumber">42</context>
</context-group>
<note priority="1" from="description">Not scheduled</note>
</trans-unit>
<trans-unit id="d5cec7468241d72cafd86ad1af6d55b09a6e3ae5" datatype="html">
<source>Restore</source>
<target>Restaurar</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/dialogs/restore-db-dialog/restore-db-dialog.component.html</context>
<context context-type="linenumber">25</context>
</context-group>
<note priority="1" from="description">Restore button</note>
</trans-unit>
<trans-unit id="f50a33d3c339f8f4a465141f8caa5d2d8c005251" datatype="html">
<source>Enabled</source>
<target>Habilitat</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/dialogs/update-task-schedule-dialog/update-task-schedule-dialog.component.html</context>
<context context-type="linenumber">7</context>
</context-group>
<note priority="1" from="description">Enabled</note>
</trans-unit>
<trans-unit id="67aed6c588eb854f2f30ef642e85147da0027a61" datatype="html">
<source>Recurring</source>
<target>Recurrent</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/dialogs/update-task-schedule-dialog/update-task-schedule-dialog.component.html</context>
<context context-type="linenumber">10</context>
</context-group>
<note priority="1" from="description">Recurring</note>
</trans-unit>
<trans-unit id="047f50bc5b5d17b5bec0196355953e1a5c590ddb" datatype="html">
<source>Update</source>
<target>Actualitzar</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/dialogs/update-task-schedule-dialog/update-task-schedule-dialog.component.html</context>
<context context-type="linenumber">52</context>
</context-group>
<note priority="1" from="description">Update button</note>
</trans-unit>
<trans-unit id="fd374bee82dab66055b933496860f82b7b780159" datatype="html">
<source>Global custom args for downloads on the home page. (Set args for subscriptions for each subscriptions separately!) Args are delimited using two commas like so: ,,</source>
<target>Arguments personalitzats globals per a les baixades a la pàgina d'inici. (Definiu els arguments per a les subscripcions per a cadascuna de les subscripcions per separat!) Els arguments es delimiten mitjançant dues comes, així: ,,</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/settings/settings.component.html</context>
<context context-type="linenumber">128</context>
</context-group>
<note priority="1" from="description">Custom args setting input hint</note>
</trans-unit>
<trans-unit id="d97425ce76bf3df50bcb643b5f409844770458f6" datatype="html">
<source>Busy</source>
<target>Ocupat</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tasks/tasks.component.html</context>
<context context-type="linenumber">36</context>
</context-group>
<note priority="1" from="description">Busy</note>
</trans-unit>
<trans-unit id="81b97b8ea996ad1e4f9fca8415021850214884b1" datatype="html">
<source>Status</source>
<target>Estat</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tasks/tasks.component.html</context>
<context context-type="linenumber">34</context>
</context-group>
<note priority="1" from="description">Status</note>
</trans-unit>
<trans-unit id="1709994363138824316" datatype="html">
<source>Failed to reset tasks!</source>
<target>No s'han pogut restablir les tasques!</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tasks/tasks.component.ts</context>
<context context-type="linenumber">144</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tasks/tasks.component.ts</context>
<context context-type="linenumber">147</context>
</context-group>
</trans-unit>
<trans-unit id="5e96c9d4528bf259da3944daac3171d7462b065a" datatype="html">
<source>No tasks available!</source>
<target>No hi ha tasques disponibles!</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tasks/tasks.component.html</context>
<context context-type="linenumber">94</context>
</context-group>
<note priority="1" from="description">No tasks label</note>
</trans-unit>
<trans-unit id="8612475568724527886" datatype="html">
<source>Tasks successfully reset!</source>
<target>Les tasques s'han restablert correctament!</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tasks/tasks.component.ts</context>
<context context-type="linenumber">142</context>
</context-group>
</trans-unit>
<trans-unit id="4707127982271899773" datatype="html">
<source>Successfully confirmed task!</source>
<target>S'ha confirmat correctament la tasca!</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tasks/tasks.component.ts</context>
<context context-type="linenumber">89</context>
</context-group>
</trans-unit>
<trans-unit id="998793c78895d53576f462054f13d6e515e923d9" datatype="html">
<source>Update task schedule</source>
<target>Actualitzar la planificació de tasques</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/dialogs/update-task-schedule-dialog/update-task-schedule-dialog.component.html</context>
<context context-type="linenumber">1</context>
</context-group>
<note priority="1" from="description">Update task schedule</note>
</trans-unit>
</body>
</file>
</xliff>

File diff suppressed because it is too large Load Diff

View File

@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<?xml version='1.0' encoding='UTF-8'?>
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">
<file source-language="en-US" datatype="plaintext" original="ng2.template" target-language="es">
<body>
@@ -1630,198 +1630,6 @@
<context context-type="linenumber">469</context>
</context-group>
</trans-unit>
<trans-unit id="2f933b826a570836cab04f683970a2d22068458c" datatype="html">
<source>Date</source>
<target>Fecha</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/downloads/downloads.component.html</context>
<context context-type="linenumber">7</context>
</context-group>
<note priority="1" from="description">Date</note>
</trans-unit>
<trans-unit id="fdf7cbdc140d0aab0f0b6c06065a0fd448ed6a2e" datatype="html">
<source>Title</source>
<target>Título</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/downloads/downloads.component.html</context>
<context context-type="linenumber">13</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tasks/tasks.component.html</context>
<context context-type="linenumber">6</context>
</context-group>
<note priority="1" from="description">Title</note>
</trans-unit>
<trans-unit id="47bbc861efa59ba4135e6aa8f63213420e3f3b91" datatype="html">
<source>Subscription</source>
<target>Suscripción</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/downloads/downloads.component.html</context>
<context context-type="linenumber">23</context>
</context-group>
<note priority="1" from="description">Subscription</note>
</trans-unit>
<trans-unit id="15793f4cbc261bedbc60f7105533dde536a3f42b" datatype="html">
<source>Progress</source>
<target>Progreso</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/downloads/downloads.component.html</context>
<context context-type="linenumber">42</context>
</context-group>
<note priority="1" from="description">Progress</note>
</trans-unit>
<trans-unit id="586a5fd72602b5b14ec0c55f84814de47bb21e3a" datatype="html">
<source>Tasks</source>
<target>Tareas</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/app.component.html</context>
<context context-type="linenumber">47</context>
</context-group>
<note priority="1" from="description">Navigation menu Tasks Page title</note>
</trans-unit>
<trans-unit id="73a7ade062c611e4bc92f3a4c672bee29b8aae9d" datatype="html">
<source>Watch content</source>
<target>Ver archivo</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/downloads/downloads.component.html</context>
<context context-type="linenumber">64</context>
</context-group>
<note priority="1" from="description">Watch content</note>
</trans-unit>
<trans-unit id="2827589726081052618" datatype="html">
<source>Creating download</source>
<target>Creando descarga</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/downloads/downloads.component.ts</context>
<context context-type="linenumber">58</context>
</context-group>
</trans-unit>
<trans-unit id="9b2084f9aea764292cf0978cb083907d8be51bf7" datatype="html">
<source>Resume all downloads</source>
<target>Reanudar todas las descargas</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/downloads/downloads.component.html</context>
<context context-type="linenumber">84</context>
</context-group>
<note priority="1" from="description">Resume all downloads</note>
</trans-unit>
<trans-unit id="72c341bca7ebacc66e8a13f1a527d500619e89ff" datatype="html">
<source>Stage</source>
<target>Etapa</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/downloads/downloads.component.html</context>
<context context-type="linenumber">36</context>
</context-group>
<note priority="1" from="description">Stage</note>
</trans-unit>
<trans-unit id="030b4423b92167200e39519599f9b863b4f7c62c" datatype="html">
<source>Actions</source>
<target>Acciones</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/downloads/downloads.component.html</context>
<context context-type="linenumber">55</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tasks/tasks.component.html</context>
<context context-type="linenumber">49</context>
</context-group>
<note priority="1" from="description">Actions</note>
</trans-unit>
<trans-unit id="b2838c6165a9672a17db188f4dd9676574353dd8" datatype="html">
<source>Pause</source>
<target>Pausa</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/downloads/downloads.component.html</context>
<context context-type="linenumber">59</context>
</context-group>
<note priority="1" from="description">Pause</note>
</trans-unit>
<trans-unit id="99ee4faa69cd2ea8e3678c1f557c0ff1f05aae46" datatype="html">
<source>Clear</source>
<target>Quitar</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/downloads/downloads.component.html</context>
<context context-type="linenumber">68</context>
</context-group>
<note priority="1" from="description">Clear</note>
</trans-unit>
<trans-unit id="4cd979821c89535df23df1c8ac8f260673610d90" datatype="html">
<source>Resume</source>
<target>Resumir</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/downloads/downloads.component.html</context>
<context context-type="linenumber">60</context>
</context-group>
<note priority="1" from="description">Resume</note>
</trans-unit>
<trans-unit id="b6d79c6ff771d7b86ce572306867a1705200f957" datatype="html">
<source>Restart</source>
<target>Reanudar</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/downloads/downloads.component.html</context>
<context context-type="linenumber">66</context>
</context-group>
<note priority="1" from="description">Restart</note>
</trans-unit>
<trans-unit id="b36b7458192b833592e13029fa8a0b3555e0d9bd" datatype="html">
<source>Pause all downloads</source>
<target>Pausar todas las descargas</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/downloads/downloads.component.html</context>
<context context-type="linenumber">83</context>
</context-group>
<note priority="1" from="description">Pause all downloads</note>
</trans-unit>
<trans-unit id="7724483709075923163" datatype="html">
<source>Downloading file</source>
<target>Descargando archivo</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/downloads/downloads.component.ts</context>
<context context-type="linenumber">60</context>
</context-group>
</trans-unit>
<trans-unit id="54cb4c7c3a0da911ebda5a07666b448868020308" datatype="html">
<source>Show error</source>
<target>Mostrar error</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/downloads/downloads.component.html</context>
<context context-type="linenumber">65</context>
</context-group>
<note priority="1" from="description">Show error</note>
</trans-unit>
<trans-unit id="601a28988581b5398ca6471027487e098d236e0e" datatype="html">
<source>Clear finished downloads</source>
<target>Quitar descargas finalizadas</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/downloads/downloads.component.html</context>
<context context-type="linenumber">85</context>
</context-group>
<note priority="1" from="description">Clear finished downloads</note>
</trans-unit>
<trans-unit id="4027175717527633324" datatype="html">
<source>Getting info</source>
<target>Cogiendo info</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/downloads/downloads.component.ts</context>
<context context-type="linenumber">59</context>
</context-group>
</trans-unit>
<trans-unit id="8384225360105280028" datatype="html">
<source>Complete</source>
<target>Completo</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/downloads/downloads.component.ts</context>
<context context-type="linenumber">61</context>
</context-group>
</trans-unit>
<trans-unit id="7180002287537831534" datatype="html">
<source>Clear finished downloads</source>
<target>Borrar descargas terminadas</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/downloads/downloads.component.ts</context>
<context context-type="linenumber">129</context>
</context-group>
</trans-unit>
</body>
</file>
</xliff>

View File

@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<?xml version='1.0' encoding='UTF-8'?>
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">
<file source-language="en-US" datatype="plaintext" original="ng2.template" target-language="mk">
<body>
@@ -91,8 +91,8 @@
<note priority="1" from="description">Settings menu label</note>
</trans-unit>
<trans-unit id="7220285196408439810" datatype="html">
<source>Download for <x id="url" equiv-text="url"/> has been queued!</source>
<target>Превземањето за <x id="url" equiv-text="url"/> е ставено во редицата за чекање!</target>
<source>Download for <x id="url" equiv-text="d, cropF"/> has been queued!</source>
<target>Превземањето за <x id="url" equiv-text="d, cropF"/> е ставено во редицата за чекање!</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/main/main.component.ts</context>
<context context-type="linenumber">469</context>
@@ -2496,8 +2496,8 @@
</context-group>
</trans-unit>
<trans-unit id="2560364143605631750" datatype="html">
<source>Error for <x id="url" equiv-text="download['url']"/></source>
<target>Грешка за <x id="url" equiv-text="download['url']"/></target>
<source>Error for <x id="url" equiv-text="}); retu"/></source>
<target>Грешка за <x id="url" equiv-text="}); retu"/></target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/downloads/downloads.component.ts</context>
<context context-type="linenumber">238</context>
@@ -3035,296 +3035,6 @@
</context-group>
<note priority="1" from="description">Video duration label</note>
</trans-unit>
<trans-unit id="e4c3cd97461b220b9cea67cfe08c5399799cfeed" datatype="html">
<source>Last ran</source>
<target>Последно извршување</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tasks/tasks.component.html</context>
<context context-type="linenumber">16</context>
</context-group>
<note priority="1" from="description">Last ran</note>
</trans-unit>
<trans-unit id="84a36cb75660b736773fe36ffa3d54f0f0fe363e" datatype="html">
<source>N/A</source>
<target>N/A</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tasks/tasks.component.html</context>
<context context-type="linenumber">19</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tasks/tasks.component.html</context>
<context context-type="linenumber">28</context>
</context-group>
<note priority="1" from="description">N/A</note>
</trans-unit>
<trans-unit id="698f716f927f633b16cbe2308d90b2dba51f7556" datatype="html">
<source>Last confirmed</source>
<target>Последно потврдено</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tasks/tasks.component.html</context>
<context context-type="linenumber">25</context>
</context-group>
<note priority="1" from="description">Last confirmed</note>
</trans-unit>
<trans-unit id="81b97b8ea996ad1e4f9fca8415021850214884b1" datatype="html">
<source>Status</source>
<target>Статус</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tasks/tasks.component.html</context>
<context context-type="linenumber">34</context>
</context-group>
<note priority="1" from="description">Status</note>
</trans-unit>
<trans-unit id="d97425ce76bf3df50bcb643b5f409844770458f6" datatype="html">
<source>Busy</source>
<target>Зафанато</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tasks/tasks.component.html</context>
<context context-type="linenumber">36</context>
</context-group>
<note priority="1" from="description">Busy</note>
</trans-unit>
<trans-unit id="7e121a443a8e9d92218f987001b650c59504d815" datatype="html">
<source>Scheduled for</source>
<target>Закажано за</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tasks/tasks.component.html</context>
<context context-type="linenumber">38</context>
</context-group>
<note priority="1" from="description">Scheduled</note>
</trans-unit>
<trans-unit id="3b7d6ff5d14ab177ce3e2d217b1927fb2e4aefd1" datatype="html">
<source>Not scheduled</source>
<target>Не закажано</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tasks/tasks.component.html</context>
<context context-type="linenumber">42</context>
</context-group>
<note priority="1" from="description">Not scheduled</note>
</trans-unit>
<trans-unit id="5ff9ae1f4c26bf2ddf6e9d5e4136916c5ce6a941" datatype="html">
<source>Clear missing files from DB:</source>
<target>Исчисти ги непостоечките фајлови од базата со податоци:</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tasks/tasks.component.html</context>
<context context-type="linenumber">57</context>
</context-group>
<note priority="1" from="description">Clear missing files from DB</note>
</trans-unit>
<trans-unit id="9562dd1e902acc4cc6a6e09cba66a2775daf7794" datatype="html">
<source>Update binary to:</source>
<target>Ажурирај ја програмата:</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tasks/tasks.component.html</context>
<context context-type="linenumber">63</context>
</context-group>
<note priority="1" from="description">Update binary to</note>
</trans-unit>
<trans-unit id="4a4f46a2dcec36bd5c8c371ceee55c2226dec27f" datatype="html">
<source>Schedule</source>
<target>Закажи</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tasks/tasks.component.html</context>
<context context-type="linenumber">72</context>
</context-group>
<note priority="1" from="description">Schedule</note>
</trans-unit>
<trans-unit id="9b3d305551358858e1892169a94527e0cc4dbf5b" datatype="html">
<source>Run</source>
<target>Стартувај</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tasks/tasks.component.html</context>
<context context-type="linenumber">69</context>
</context-group>
<note priority="1" from="description">Run</note>
</trans-unit>
<trans-unit id="40bd7093f5fbd3fbeff9a50baaf5d4c8416add1e" datatype="html">
<source>Restore DB from backup</source>
<target>Враќање на базата со податоци од резервна копија</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tasks/tasks.component.html</context>
<context context-type="linenumber">89</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/dialogs/restore-db-dialog/restore-db-dialog.component.html</context>
<context context-type="linenumber">1</context>
</context-group>
<note priority="1" from="description">Restore DB from backup button</note>
</trans-unit>
<trans-unit id="f8a2361f3bd8fb05bf92080e2755bddd56ab64d7" datatype="html">
<source>Reset tasks</source>
<target>Ресетирајте ги задачите</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tasks/tasks.component.html</context>
<context context-type="linenumber">90</context>
</context-group>
<note priority="1" from="description">Reset tasks button</note>
</trans-unit>
<trans-unit id="5e96c9d4528bf259da3944daac3171d7462b065a" datatype="html">
<source>No tasks available!</source>
<target>Нема достапни задачи!</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tasks/tasks.component.html</context>
<context context-type="linenumber">94</context>
</context-group>
<note priority="1" from="description">No tasks label</note>
</trans-unit>
<trans-unit id="5615896113581458384" datatype="html">
<source>Successfully ran task!</source>
<target>Задачата е успешно извршена!</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tasks/tasks.component.ts</context>
<context context-type="linenumber">78</context>
</context-group>
</trans-unit>
<trans-unit id="4707127982271899773" datatype="html">
<source>Successfully confirmed task!</source>
<target>Задачата е успешно потврдена!</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tasks/tasks.component.ts</context>
<context context-type="linenumber">89</context>
</context-group>
</trans-unit>
<trans-unit id="4334913030311371594" datatype="html">
<source>Would you like to reset your tasks? All your schedules will be removed as well.</source>
<target>Дали сакате да ги ресетирате вашите задачи? Сите ваши распореди исто така ќе бидат отстранети.</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tasks/tasks.component.ts</context>
<context context-type="linenumber">133</context>
</context-group>
</trans-unit>
<trans-unit id="7808756054397155068" datatype="html">
<source>Reset</source>
<target>Ресетирај</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tasks/tasks.component.ts</context>
<context context-type="linenumber">134</context>
</context-group>
</trans-unit>
<trans-unit id="8612475568724527886" datatype="html">
<source>Tasks successfully reset!</source>
<target>Задачите успешно се ресетираа!</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tasks/tasks.component.ts</context>
<context context-type="linenumber">142</context>
</context-group>
</trans-unit>
<trans-unit id="1709994363138824316" datatype="html">
<source>Failed to reset tasks!</source>
<target>Не успеа да се ресетираат задачите!</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tasks/tasks.component.ts</context>
<context context-type="linenumber">144</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tasks/tasks.component.ts</context>
<context context-type="linenumber">147</context>
</context-group>
</trans-unit>
<trans-unit id="d5cec7468241d72cafd86ad1af6d55b09a6e3ae5" datatype="html">
<source>Restore</source>
<target>Врати</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/dialogs/restore-db-dialog/restore-db-dialog.component.html</context>
<context context-type="linenumber">25</context>
</context-group>
<note priority="1" from="description">Restore button</note>
</trans-unit>
<trans-unit id="998793c78895d53576f462054f13d6e515e923d9" datatype="html">
<source>Update task schedule</source>
<target>Ажурирајте го распоредот на задачи</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/dialogs/update-task-schedule-dialog/update-task-schedule-dialog.component.html</context>
<context context-type="linenumber">1</context>
</context-group>
<note priority="1" from="description">Update task schedule</note>
</trans-unit>
<trans-unit id="f50a33d3c339f8f4a465141f8caa5d2d8c005251" datatype="html">
<source>Enabled</source>
<target>Овозможено</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/dialogs/update-task-schedule-dialog/update-task-schedule-dialog.component.html</context>
<context context-type="linenumber">7</context>
</context-group>
<note priority="1" from="description">Enabled</note>
</trans-unit>
<trans-unit id="67aed6c588eb854f2f30ef642e85147da0027a61" datatype="html">
<source>Recurring</source>
<target>Повторливи</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/dialogs/update-task-schedule-dialog/update-task-schedule-dialog.component.html</context>
<context context-type="linenumber">10</context>
</context-group>
<note priority="1" from="description">Recurring</note>
</trans-unit>
<trans-unit id="fd374bee82dab66055b933496860f82b7b780159" datatype="html">
<source>Global custom args for downloads on the home page. (Set args for subscriptions for each subscriptions separately!) Args are delimited using two commas like so: ,,</source>
<target>Глобални сопствени аргументи за преземања на почетната страница. (Поставете аргументи за претплати за секоја претплата посебно!) Аргументите се разграничуваат со користење на две запирки, на пример: ,,</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/settings/settings.component.html</context>
<context context-type="linenumber">128</context>
</context-group>
<note priority="1" from="description">Custom args setting input hint</note>
</trans-unit>
<trans-unit id="4391397241847e675f6c38bbdec6b2883157fb1a" datatype="html">
<source>Clear duplicate files from DB:</source>
<target>Исчисти ги дупликат фајловите од базата со податоци:</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tasks/tasks.component.html</context>
<context context-type="linenumber">60</context>
</context-group>
<note priority="1" from="description">Clear duplicate files from DB</note>
</trans-unit>
<trans-unit id="586a5fd72602b5b14ec0c55f84814de47bb21e3a" datatype="html">
<source>Tasks</source>
<target>Задачи</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/app.component.html</context>
<context context-type="linenumber">47</context>
</context-group>
<note priority="1" from="description">Navigation menu Tasks Page title</note>
</trans-unit>
<trans-unit id="5588424857086384816" datatype="html">
<source>Reset tasks</source>
<target>Ресетирајте ги задачите</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tasks/tasks.component.ts</context>
<context context-type="linenumber">132</context>
</context-group>
</trans-unit>
<trans-unit id="2106110452479146311" datatype="html">
<source>Failed to run task!</source>
<target>Не успеа да се изврши задачата!</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tasks/tasks.component.ts</context>
<context context-type="linenumber">79</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tasks/tasks.component.ts</context>
<context context-type="linenumber">81</context>
</context-group>
</trans-unit>
<trans-unit id="9121124215111024650" datatype="html">
<source>Failed to confirm task!</source>
<target>Задачата не успеа да се потврди!</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tasks/tasks.component.ts</context>
<context context-type="linenumber">90</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tasks/tasks.component.ts</context>
<context context-type="linenumber">92</context>
</context-group>
</trans-unit>
<trans-unit id="047f50bc5b5d17b5bec0196355953e1a5c590ddb" datatype="html">
<source>Update</source>
<target>Ажурирање</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/dialogs/update-task-schedule-dialog/update-task-schedule-dialog.component.html</context>
<context context-type="linenumber">52</context>
</context-group>
<note priority="1" from="description">Update button</note>
</trans-unit>
</body>
</file>
</xliff>

View File

@@ -1392,7 +1392,7 @@
<note priority="1" from="description">Allow subscriptions setting</note>
</trans-unit>
<trans-unit id="4bee2a4bef2d26d37c9b353c278e24e5cd309ce3" datatype="html">
<source>Subscriptions base path</source>
<source>Base bath for subscriptions</source>
<target>Abonnementenbasispad</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/settings/settings.component.html</context>
@@ -1545,8 +1545,8 @@
<note priority="1" from="description">Custom args input placeholder</note>
</trans-unit>
<trans-unit id="6b995e7130b4d667eaab6c5f61b362ace486d26d" datatype="html">
<source>Global custom args for downloads on the home page. (Set args for subscriptions for each subscriptions separately!) Args are delimited using two commas like so: ,,</source>
<target>Algemene aanvullende opties voor downloads op de overzichtspagina. (Stel de opties per abonnement in!) Scheidt deze met komma's: ,,</target>
<source>Global custom args for downloads on the home page. Args are delimited using two commas like so: ,,</source>
<target>Algemene aanvullende opties voor downloads op de overzichtspagina. Scheidt deze met komma's: ,,</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/settings/settings.component.html</context>
<context context-type="linenumber">134</context>
@@ -2854,8 +2854,8 @@
</context-group>
</trans-unit>
<trans-unit id="2560364143605631750" datatype="html">
<source>Error for <x id="url" equiv-text="download['url']"/></source>
<target>Foutmelding bij <x id="url" equiv-text="download['url']"/></target>
<source>Error for <x id="url" equiv-text="}); retu"/></source>
<target>Foutmelding bij <x id="url" equiv-text="}); retu"/></target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/downloads/downloads.component.ts</context>
<context context-type="linenumber">238</context>
@@ -3097,303 +3097,13 @@
<note priority="1" from="description">Autoplay checkbox</note>
</trans-unit>
<trans-unit id="7220285196408439810" datatype="html">
<source>Download for <x id="url" equiv-text="url"/> has been queued!</source>
<target><x id="url" equiv-text="url"/> staat in de wachtrij!</target>
<source>Download for <x id="url" equiv-text="d, cropF"/> has been queued!</source>
<target><x id="url" equiv-text="d, cropF"/> staat in de wachtrij!</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/main/main.component.ts</context>
<context context-type="linenumber">469</context>
</context-group>
</trans-unit>
<trans-unit id="586a5fd72602b5b14ec0c55f84814de47bb21e3a" datatype="html">
<source>Tasks</source>
<target>Taken</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/app.component.html</context>
<context context-type="linenumber">47</context>
</context-group>
<note priority="1" from="description">Navigation menu Tasks Page title</note>
</trans-unit>
<trans-unit id="84a36cb75660b736773fe36ffa3d54f0f0fe363e" datatype="html">
<source>N/A</source>
<target>n/b</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tasks/tasks.component.html</context>
<context context-type="linenumber">19</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tasks/tasks.component.html</context>
<context context-type="linenumber">28</context>
</context-group>
<note priority="1" from="description">N/A</note>
</trans-unit>
<trans-unit id="698f716f927f633b16cbe2308d90b2dba51f7556" datatype="html">
<source>Last confirmed</source>
<target>Laatst bevestigd:</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tasks/tasks.component.html</context>
<context context-type="linenumber">25</context>
</context-group>
<note priority="1" from="description">Last confirmed</note>
</trans-unit>
<trans-unit id="81b97b8ea996ad1e4f9fca8415021850214884b1" datatype="html">
<source>Status</source>
<target>Status</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tasks/tasks.component.html</context>
<context context-type="linenumber">34</context>
</context-group>
<note priority="1" from="description">Status</note>
</trans-unit>
<trans-unit id="d97425ce76bf3df50bcb643b5f409844770458f6" datatype="html">
<source>Busy</source>
<target>Bezig</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tasks/tasks.component.html</context>
<context context-type="linenumber">36</context>
</context-group>
<note priority="1" from="description">Busy</note>
</trans-unit>
<trans-unit id="3b7d6ff5d14ab177ce3e2d217b1927fb2e4aefd1" datatype="html">
<source>Not scheduled</source>
<target>Niet ingepland</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tasks/tasks.component.html</context>
<context context-type="linenumber">42</context>
</context-group>
<note priority="1" from="description">Not scheduled</note>
</trans-unit>
<trans-unit id="5ff9ae1f4c26bf2ddf6e9d5e4136916c5ce6a941" datatype="html">
<source>Clear missing files from DB:</source>
<target>Ontbrekende bestanden wissen uit DB:</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tasks/tasks.component.html</context>
<context context-type="linenumber">57</context>
</context-group>
<note priority="1" from="description">Clear missing files from DB</note>
</trans-unit>
<trans-unit id="4391397241847e675f6c38bbdec6b2883157fb1a" datatype="html">
<source>Clear duplicate files from DB:</source>
<target>Gedupliceerde bestanden wissen uit DB:</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tasks/tasks.component.html</context>
<context context-type="linenumber">60</context>
</context-group>
<note priority="1" from="description">Clear duplicate files from DB</note>
</trans-unit>
<trans-unit id="9562dd1e902acc4cc6a6e09cba66a2775daf7794" datatype="html">
<source>Update binary to:</source>
<target>Uitvoerbaar bestand bijwerken naar</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tasks/tasks.component.html</context>
<context context-type="linenumber">63</context>
</context-group>
<note priority="1" from="description">Update binary to</note>
</trans-unit>
<trans-unit id="9b3d305551358858e1892169a94527e0cc4dbf5b" datatype="html">
<source>Run</source>
<target>Uitvoeren</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tasks/tasks.component.html</context>
<context context-type="linenumber">69</context>
</context-group>
<note priority="1" from="description">Run</note>
</trans-unit>
<trans-unit id="4a4f46a2dcec36bd5c8c371ceee55c2226dec27f" datatype="html">
<source>Schedule</source>
<target>Inplannen</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tasks/tasks.component.html</context>
<context context-type="linenumber">72</context>
</context-group>
<note priority="1" from="description">Schedule</note>
</trans-unit>
<trans-unit id="2106110452479146311" datatype="html">
<source>Failed to run task!</source>
<target>De taak kan niet worden uitgevoerd!</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tasks/tasks.component.ts</context>
<context context-type="linenumber">79</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tasks/tasks.component.ts</context>
<context context-type="linenumber">81</context>
</context-group>
</trans-unit>
<trans-unit id="4707127982271899773" datatype="html">
<source>Successfully confirmed task!</source>
<target>De taak is bevestigd!</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tasks/tasks.component.ts</context>
<context context-type="linenumber">89</context>
</context-group>
</trans-unit>
<trans-unit id="9121124215111024650" datatype="html">
<source>Failed to confirm task!</source>
<target>De taak kan niet worden bevestigd!</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tasks/tasks.component.ts</context>
<context context-type="linenumber">90</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tasks/tasks.component.ts</context>
<context context-type="linenumber">92</context>
</context-group>
</trans-unit>
<trans-unit id="4334913030311371594" datatype="html">
<source>Would you like to reset your tasks? All your schedules will be removed as well.</source>
<target>Weet je zeker dat je alle taken wilt herstellen? Alle schema's worden hierdoor gewist.</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tasks/tasks.component.ts</context>
<context context-type="linenumber">133</context>
</context-group>
</trans-unit>
<trans-unit id="7808756054397155068" datatype="html">
<source>Reset</source>
<target>Herstellen</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tasks/tasks.component.ts</context>
<context context-type="linenumber">134</context>
</context-group>
</trans-unit>
<trans-unit id="1709994363138824316" datatype="html">
<source>Failed to reset tasks!</source>
<target>De taken kunnen niet worden hersteld!</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tasks/tasks.component.ts</context>
<context context-type="linenumber">144</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tasks/tasks.component.ts</context>
<context context-type="linenumber">147</context>
</context-group>
</trans-unit>
<trans-unit id="d5cec7468241d72cafd86ad1af6d55b09a6e3ae5" datatype="html">
<source>Restore</source>
<target>Herstellen</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/dialogs/restore-db-dialog/restore-db-dialog.component.html</context>
<context context-type="linenumber">25</context>
</context-group>
<note priority="1" from="description">Restore button</note>
</trans-unit>
<trans-unit id="998793c78895d53576f462054f13d6e515e923d9" datatype="html">
<source>Update task schedule</source>
<target>Taakschema bijwerken</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/dialogs/update-task-schedule-dialog/update-task-schedule-dialog.component.html</context>
<context context-type="linenumber">1</context>
</context-group>
<note priority="1" from="description">Update task schedule</note>
</trans-unit>
<trans-unit id="f50a33d3c339f8f4a465141f8caa5d2d8c005251" datatype="html">
<source>Enabled</source>
<target>Ingeschakeld</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/dialogs/update-task-schedule-dialog/update-task-schedule-dialog.component.html</context>
<context context-type="linenumber">7</context>
</context-group>
<note priority="1" from="description">Enabled</note>
</trans-unit>
<trans-unit id="67aed6c588eb854f2f30ef642e85147da0027a61" datatype="html">
<source>Recurring</source>
<target>Herhalen</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/dialogs/update-task-schedule-dialog/update-task-schedule-dialog.component.html</context>
<context context-type="linenumber">10</context>
</context-group>
<note priority="1" from="description">Recurring</note>
</trans-unit>
<trans-unit id="047f50bc5b5d17b5bec0196355953e1a5c590ddb" datatype="html">
<source>Update</source>
<target>Bijwerken</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/dialogs/update-task-schedule-dialog/update-task-schedule-dialog.component.html</context>
<context context-type="linenumber">52</context>
</context-group>
<note priority="1" from="description">Update button</note>
</trans-unit>
<trans-unit id="e4c3cd97461b220b9cea67cfe08c5399799cfeed" datatype="html">
<source>Last ran</source>
<target>Laatst uitgevoerd:</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tasks/tasks.component.html</context>
<context context-type="linenumber">16</context>
</context-group>
<note priority="1" from="description">Last ran</note>
</trans-unit>
<trans-unit id="7e121a443a8e9d92218f987001b650c59504d815" datatype="html">
<source>Scheduled for</source>
<target>Ingepland om</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tasks/tasks.component.html</context>
<context context-type="linenumber">38</context>
</context-group>
<note priority="1" from="description">Scheduled</note>
</trans-unit>
<trans-unit id="40bd7093f5fbd3fbeff9a50baaf5d4c8416add1e" datatype="html">
<source>Restore DB from backup</source>
<target>DB herstellen uit back-up</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tasks/tasks.component.html</context>
<context context-type="linenumber">89</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/dialogs/restore-db-dialog/restore-db-dialog.component.html</context>
<context context-type="linenumber">1</context>
</context-group>
<note priority="1" from="description">Restore DB from backup button</note>
</trans-unit>
<trans-unit id="5588424857086384816" datatype="html">
<source>Reset tasks</source>
<target>Taken herstellen</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tasks/tasks.component.ts</context>
<context context-type="linenumber">132</context>
</context-group>
</trans-unit>
<trans-unit id="5615896113581458384" datatype="html">
<source>Successfully ran task!</source>
<target>De taak is uitgevoerd!</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tasks/tasks.component.ts</context>
<context context-type="linenumber">78</context>
</context-group>
</trans-unit>
<trans-unit id="f8a2361f3bd8fb05bf92080e2755bddd56ab64d7" datatype="html">
<source>Reset tasks</source>
<target>Taken herstellen</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tasks/tasks.component.html</context>
<context context-type="linenumber">90</context>
</context-group>
<note priority="1" from="description">Reset tasks button</note>
</trans-unit>
<trans-unit id="5e96c9d4528bf259da3944daac3171d7462b065a" datatype="html">
<source>No tasks available!</source>
<target>Er zijn geen taken beschikbaar!</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tasks/tasks.component.html</context>
<context context-type="linenumber">94</context>
</context-group>
<note priority="1" from="description">No tasks label</note>
</trans-unit>
<trans-unit id="8612475568724527886" datatype="html">
<source>Tasks successfully reset!</source>
<target>De taken zijn hersteld!</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tasks/tasks.component.ts</context>
<context context-type="linenumber">142</context>
</context-group>
</trans-unit>
<trans-unit id="fd374bee82dab66055b933496860f82b7b780159" datatype="html">
<source>Global custom args for downloads on the home page. (Set args for subscriptions for each subscriptions separately!) Args are delimited using two commas like so: ,,</source>
<target>Globale aanvullende opties voor downloades. (Stel ze per abonnement in!) Scheid de opties met twee komma's, dus ,,</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/settings/settings.component.html</context>
<context context-type="linenumber">128</context>
</context-group>
<note priority="1" from="description">Custom args setting input hint</note>
</trans-unit>
</body>
</file>
</xliff>

View File

@@ -13,7 +13,7 @@
</trans-unit>
<trans-unit id="cff1428d10d59d14e45edec3c735a27b5482db59" datatype="html">
<source>Name</source>
<target>Название</target>
<target>Имя</target>
<context-group purpose="location">
<context context-type="sourcefile">app/create-playlist/create-playlist.component.html</context>
<context context-type="linenumber">5</context>
@@ -124,7 +124,7 @@
</trans-unit>
<trans-unit id="b2623aee44b70c9a4ba1fce16c8a593b0a4c7974" datatype="html">
<source>Modify</source>
<target>Изменить</target>
<target>Модифицировать</target>
<context-group purpose="location">
<context context-type="sourcefile">app/dialogs/arg-modifier-dialog/arg-modifier-dialog.component.html</context>
<context context-type="linenumber">85</context>
@@ -289,7 +289,7 @@
</trans-unit>
<trans-unit id="19d1ae64d94d28a29b2c57ae8671aace906b5401" datatype="html">
<source>Path is relative to the config download path. Don't include extension.</source>
<target state="needs-translation">Путь является относительным к пути загрузки конфигурации. Не включайте расширение.</target>
<target>Путь является относительным к пути загрузки конфигурации. Не включайте расширение.</target>
<context-group purpose="location">
<context context-type="sourcefile">app/main/main.component.html</context>
<context context-type="linenumber">131</context>
@@ -336,7 +336,9 @@
<note priority="1" from="description">YT Password placeholder</note>
</trans-unit>
<trans-unit id="4a0dada6e841a425de3e5006e6a04df26c644fa5" datatype="html">
<source>Audio</source>
<source>
Audio
</source>
<target/>
<context-group purpose="location">
<context context-type="sourcefile">app/main/main.component.html</context>
@@ -345,7 +347,9 @@
<note priority="1" from="description">Audio files title</note>
</trans-unit>
<trans-unit id="9779715ac05308973d8f1c8658b29b986e92450f" datatype="html">
<source>Your audio files are here</source>
<source>
Your audio files are here
</source>
<target/>
<context-group purpose="location">
<context context-type="sourcefile">app/main/main.component.html</context>
@@ -371,7 +375,9 @@
<note priority="1" from="description">Playlists title</note>
</trans-unit>
<trans-unit id="78bd81adb4609b68cfa4c589222bdc233ba1faaa" datatype="html">
<source>No playlists available. Create one from your downloading audio files by clicking the blue plus button.</source>
<source>
No playlists available. Create one from your downloading audio files by clicking the blue plus button.
</source>
<target/>
<context-group purpose="location">
<context context-type="sourcefile">app/main/main.component.html</context>
@@ -380,7 +386,9 @@
<note priority="1" from="description">No video playlists available text</note>
</trans-unit>
<trans-unit id="9d2b62bb0b91e2e17fb4177a7e3d6756a2e6ee33" datatype="html">
<source>Video</source>
<source>
Video
</source>
<target/>
<context-group purpose="location">
<context context-type="sourcefile">app/main/main.component.html</context>
@@ -389,7 +397,9 @@
<note priority="1" from="description">Video files title</note>
</trans-unit>
<trans-unit id="960582a8b9d7942716866ecfb7718309728f2916" datatype="html">
<source>Your video files are here</source>
<source>
Your video files are here
</source>
<target/>
<context-group purpose="location">
<context context-type="sourcefile">app/main/main.component.html</context>
@@ -398,7 +408,9 @@
<note priority="1" from="description">Video files description</note>
</trans-unit>
<trans-unit id="0f59c46ca29e9725898093c9ea6b586730d0624e" datatype="html">
<source>No playlists available. Create one from your downloading video files by clicking the blue plus button.</source>
<source>
No playlists available. Create one from your downloading video files by clicking the blue plus button.
</source>
<target/>
<context-group purpose="location">
<context context-type="sourcefile">app/main/main.component.html</context>
@@ -421,7 +433,7 @@
</trans-unit>
<trans-unit id="c52db455cca9109ee47e1a612c3f4117c09eb71b" datatype="html">
<source>URL:</source>
<target>Ссылка:</target>
<target>URL-адрес:</target>
<context-group purpose="location">
<context context-type="sourcefile">app/dialogs/video-info-dialog/video-info-dialog.component.html</context>
<context context-type="linenumber">9</context>
@@ -511,7 +523,7 @@
</trans-unit>
<trans-unit id="4f389e41e4592f7f9bb76abdd8af4afdfb13f4f1" datatype="html">
<source>Modify playlist</source>
<target>Изменить плейлист</target>
<target>Изменить список воспроизведения</target>
<context-group purpose="location">
<context context-type="sourcefile">app/dialogs/modify-playlist/modify-playlist.component.html</context>
<context context-type="linenumber">1</context>
@@ -590,7 +602,7 @@
</trans-unit>
<trans-unit id="ebadf946ae90f13ecd0c70f09edbc0f983af8a0f" datatype="html">
<source>Upload new cookies</source>
<target>Загрузка новых cookie</target>
<target>Загрузка новых файлов cookie</target>
<context-group purpose="location">
<context context-type="sourcefile">app/dialogs/cookies-uploader-dialog/cookies-uploader-dialog.component.html</context>
<context context-type="linenumber">1</context>
@@ -630,7 +642,7 @@
</trans-unit>
<trans-unit id="801b98c6f02fe3b32f6afa3ee854c99ed83474e6" datatype="html">
<source>URL</source>
<target>Ссылка</target>
<target>URL-адрес</target>
<context-group purpose="location">
<context context-type="sourcefile">app/settings/settings.component.html</context>
<context context-type="linenumber">18</context>
@@ -732,7 +744,7 @@
<note priority="1" from="description">Allow subscriptions setting</note>
</trans-unit>
<trans-unit id="4bee2a4bef2d26d37c9b353c278e24e5cd309ce3" datatype="html">
<source>Subscriptions base path</source>
<source>Base bath for subscriptions</source>
<target>Базовый путь для подписок</target>
<context-group purpose="location">
<context context-type="sourcefile">app/settings/settings.component.html</context>
@@ -1271,7 +1283,7 @@
</trans-unit>
<trans-unit id="199c17e5d6a419313af3c325f06dcbb9645ca618" datatype="html">
<source>is an open-source YouTube downloader built under Google's Material Design specifications. You can seamlessly download your favorite videos as video or audio files, and even subscribe to your favorite channels and playlists to keep updated with their new videos.</source>
<target>это загрузчик YouTube с открытым исходным кодом, созданный в соответствии со спецификациями Material Design от Google. Вы можете легко загружать любимые видеоролики в виде видео- или аудиофайлов и даже подписываться на любимые каналы и плейлисты, чтобы быть в курсе новых видео.</target>
<target>это загрузчик YouTube с открытым исходным кодом, созданный в соответствии со спецификациями Material Design от Google. Вы можете легко загружать любимые видеоролики в виде видео- или аудиофайлов и даже подписываться на любимые каналы и плейлисты, чтобы быть в курсе их новых видео.</target>
<context-group purpose="location">
<context context-type="sourcefile">app/dialogs/about-dialog/about-dialog.component.html</context>
<context context-type="linenumber">12</context>
@@ -1334,7 +1346,7 @@
</trans-unit>
<trans-unit id="e1f398f38ff1534303d4bb80bd6cece245f24016" datatype="html">
<source>to create an issue!</source>
<target>чтобы описать проблему!</target>
<target>чтобы создать проблему!</target>
<context-group purpose="location">
<context context-type="sourcefile">app/dialogs/about-dialog/about-dialog.component.html</context>
<context context-type="linenumber">25</context>
@@ -1405,7 +1417,7 @@
</trans-unit>
<trans-unit id="a1dbca87b9f36d2b06a5cbcffb5814c4ae9b798a" datatype="html">
<source>Create admin account</source>
<target>Создание учетной записи администратора</target>
<target>Создайте учетную запись администратора</target>
<context-group purpose="location">
<context context-type="sourcefile">app/dialogs/set-default-admin-dialog/set-default-admin-dialog.component.html</context>
<context context-type="linenumber">1</context>
@@ -1414,7 +1426,7 @@
</trans-unit>
<trans-unit id="2d2adf3ca26a676bca2269295b7455a26fd26980" datatype="html">
<source>No default admin account detected. This will create and set the password for an admin account with the user name as 'admin'.</source>
<target state="needs-translation">Учетная запись администратора по умолчанию не обнаружена. Это создаст и установит пароль для учетной записи администратора с именем пользователя 'admin'.</target>
<target>Учетная запись администратора по умолчанию не обнаружена. Это создаст и установит пароль для учетной записи администратора с именем пользователя 'admin'.</target>
<context-group purpose="location">
<context context-type="sourcefile">app/dialogs/set-default-admin-dialog/set-default-admin-dialog.component.html</context>
<context context-type="linenumber">5</context>
@@ -1441,7 +1453,7 @@
</trans-unit>
<trans-unit id="004b222ff9ef9dd4771b777950ca1d0e4cd4348a" datatype="html">
<source>About</source>
<target>О программе</target>
<target>О</target>
<context-group purpose="location">
<context context-type="sourcefile">app/app.component.html</context>
<context context-type="linenumber">32</context>
@@ -1450,7 +1462,7 @@
</trans-unit>
<trans-unit id="92eee6be6de0b11c924e3ab27db30257159c0a7c" datatype="html">
<source>Home</source>
<target>Домашняя страница</target>
<target>Дом</target>
<context-group purpose="location">
<context context-type="sourcefile">app/app.component.html</context>
<context context-type="linenumber">43</context>
@@ -1513,7 +1525,7 @@
</trans-unit>
<trans-unit id="6580b6a950d952df847cb3d8e7176720a740adc8" datatype="html">
<source>Use timestamp</source>
<target>Использовать метку времени</target>
<target>Используйте метку времени</target>
<context-group purpose="location">
<context context-type="sourcefile">app/dialogs/share-media-dialog/share-media-dialog.component.html</context>
<context context-type="linenumber">13</context>
@@ -1607,7 +1619,7 @@
</trans-unit>
<trans-unit id="93efc99ae087fc116de708ecd3ace86ca237cf30" datatype="html">
<source>The playlist or channel URL</source>
<target>Ссылка на плейлист или канал</target>
<target>URL-адрес списка воспроизведения или канала</target>
<context-group purpose="location">
<context context-type="sourcefile">app/dialogs/subscribe-dialog/subscribe-dialog.component.html</context>
<context context-type="linenumber">9</context>
@@ -1625,7 +1637,7 @@
</trans-unit>
<trans-unit id="ea30873bd3f0d5e4fb2378eec3f0a1db77634a28" datatype="html">
<source>Download all uploads</source>
<target state="needs-translation">Загрузить все загруженные файлы</target>
<target>Загрузить все загруженные файлы</target>
<context-group purpose="location">
<context context-type="sourcefile">app/dialogs/subscribe-dialog/subscribe-dialog.component.html</context>
<context context-type="linenumber">23</context>
@@ -1634,7 +1646,7 @@
</trans-unit>
<trans-unit id="28a678e9cabf86e44c32594c43fa0e890135c20f" datatype="html">
<source>Download videos uploaded in the last</source>
<target>Скачать видео, загруженные за последнее время</target>
<target>Скачать видео, загруженное за последние время</target>
<context-group purpose="location">
<context context-type="sourcefile">app/dialogs/subscribe-dialog/subscribe-dialog.component.html</context>
<context context-type="linenumber">26</context>
@@ -1643,7 +1655,7 @@
</trans-unit>
<trans-unit id="c76a955642714b8949ff3e4b4990864a2e2cac95" datatype="html">
<source>Audio-only mode</source>
<target>Только звук</target>
<target>Только аудио режим</target>
<context-group purpose="location">
<context context-type="sourcefile">app/dialogs/subscribe-dialog/subscribe-dialog.component.html</context>
<context context-type="linenumber">38</context>
@@ -1652,7 +1664,7 @@
</trans-unit>
<trans-unit id="408ca4911457e84a348cecf214f02c69289aa8f1" datatype="html">
<source>Streaming-only mode</source>
<target>Только потоковое вещание</target>
<target>Режим только для потокового вещания</target>
<context-group purpose="location">
<context context-type="sourcefile">app/dialogs/subscribe-dialog/subscribe-dialog.component.html</context>
<context context-type="linenumber">43</context>
@@ -1670,7 +1682,7 @@
</trans-unit>
<trans-unit id="98b6ec9ec138186d663e64770267b67334353d63" datatype="html">
<source>Custom file output</source>
<target state="needs-translation">Пользовательский файл для вывода</target>
<target>Пользовательский вывод файлов</target>
<context-group purpose="location">
<context context-type="sourcefile">app/dialogs/subscribe-dialog/subscribe-dialog.component.html</context>
<context context-type="linenumber">57</context>
@@ -1715,7 +1727,7 @@
</trans-unit>
<trans-unit id="3042bd3ad8dffcfeca5fd1ae6159fd1047434e95" datatype="html">
<source>Unsubscribe</source>
<target>Отписаться</target>
<target>Отписаться от рассылки</target>
<context-group purpose="location">
<context context-type="sourcefile">app/dialogs/subscription-info-dialog/subscription-info-dialog.component.html</context>
<context context-type="linenumber">26</context>
@@ -1917,7 +1929,7 @@
</trans-unit>
<trans-unit id="6498fa1b8f563988f769654a75411bb8060134b9" datatype="html">
<source>Set new password</source>
<target>Задать новый пароль</target>
<target>Установите новый пароль</target>
<context-group purpose="location">
<context context-type="sourcefile">app/components/manage-user/manage-user.component.html</context>
<context context-type="linenumber">10</context>
@@ -2033,7 +2045,7 @@
</trans-unit>
<trans-unit id="56a2a773fbd5a6b9ac2e6b89d29d70a2ed0f3227" datatype="html">
<source>See less.</source>
<target>Закрыть.</target>
<target>Смотреть меньше.</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/see-more/see-more.component.html</context>
<context context-type="linenumber">8,9</context>
@@ -2042,7 +2054,7 @@
</trans-unit>
<trans-unit id="ddc31f2885b1b33a7651963254b0c197f2a64086" datatype="html">
<source>See more.</source>
<target>Раскрыть.</target>
<target>См. подробнее.</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/see-more/see-more.component.html</context>
<context context-type="linenumber">5,6</context>
@@ -2087,7 +2099,7 @@
</trans-unit>
<trans-unit id="8a0bda4c47f10b2423ff183acefbf70d4ab52ea2" datatype="html">
<source>Clear logs</source>
<target>Очистить журнал</target>
<target>Очистить журналы</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/logs-viewer/logs-viewer.component.html</context>
<context context-type="linenumber">34</context>
@@ -2392,7 +2404,7 @@
</trans-unit>
<trans-unit id="792dc6a57f28a1066db283f2e736484f066005fd" datatype="html">
<source>Download Twitch Chat</source>
<target>Скачать чат Twitch</target>
<target>Скачать Чат Twitch</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/twitch-chat/twitch-chat.component.html</context>
<context context-type="linenumber">10</context>
@@ -2419,7 +2431,7 @@
</trans-unit>
<trans-unit id="c3b0b86523f1d10e84a71f9b188d54913a11af3b" datatype="html">
<source>Editing category</source>
<target>Редактирование категории</target>
<target>Категория редактирования</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/dialogs/edit-category-dialog/edit-category-dialog.component.html</context>
<context context-type="linenumber">1</context>
@@ -2437,7 +2449,7 @@
</trans-unit>
<trans-unit id="3697f8583ea42868aa269489ad366103d94aece7" datatype="html">
<source>Editing</source>
<target>Правка</target>
<target>Редактирование</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/dialogs/edit-subscription-dialog/edit-subscription-dialog.component.html</context>
<context context-type="linenumber">1</context>
@@ -2482,7 +2494,7 @@
</trans-unit>
<trans-unit id="5caadefa4143cf6766a621b0f54f91f373a1f164" datatype="html">
<source>Add content</source>
<target state="needs-translation">Добавить содержание</target>
<target>Добавить содержание</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/dialogs/modify-playlist/modify-playlist.component.html</context>
<context context-type="linenumber">19</context>
@@ -2491,7 +2503,7 @@
</trans-unit>
<trans-unit id="a8b7b9c168fd936a75e500806a8c0d7755ef1198" datatype="html">
<source>NOTE: Uploading new cookies will override your previous cookies. Also note that cookies are instance-wide, not per-user.</source>
<target state="needs-translation">ПРИМЕЧАНИЕ: Загрузка новых cookie отменяет предыдущие cookie. Также обратите внимание, что cookie используются в масштабах всего экземпляра, а не каждого пользователя.</target>
<target>ПРИМЕЧАНИЕ: Загрузка новых файлов cookie отменяет предыдущие файлы cookie. Также обратите внимание, что файлы cookie используются в масштабах всего экземпляра, а не каждого пользователя.</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/dialogs/cookies-uploader-dialog/cookies-uploader-dialog.component.html</context>
<context context-type="linenumber">20</context>
@@ -2534,7 +2546,7 @@
</trans-unit>
<trans-unit id="d641b8fa5ac5e85114c733b1f7de6976bd091f70" datatype="html">
<source>Max quality</source>
<target>Лучшее качество</target>
<target>Максимальное качество</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/dialogs/subscribe-dialog/subscribe-dialog.component.html</context>
<context context-type="linenumber">40</context>
@@ -2748,8 +2760,8 @@
<note priority="1" from="description">Download rate limit input hint</note>
</trans-unit>
<trans-unit id="7220285196408439810" datatype="html">
<source>Download for <x id="url" equiv-text="url"/> has been queued!</source>
<target>Загрузка для <x id="url" equiv-text="url"/> была добавлена в очередь!</target>
<source>Download for <x id="url" equiv-text="d, cropF"/> has been queued!</source>
<target>Загрузка для <x id="url" equiv-text="d, cropF"/> выла добавлена в очередь!</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/main/main.component.ts</context>
<context context-type="linenumber">469</context>
@@ -2873,7 +2885,7 @@
</trans-unit>
<trans-unit id="4ae1f7f102b455472992ae58bc18426316366760" datatype="html">
<source>Build date:</source>
<target>Дата сборки:</target>
<target>Дата постройки:</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/dialogs/about-dialog/about-dialog.component.html</context>
<context context-type="linenumber">33</context>
@@ -2882,7 +2894,7 @@
</trans-unit>
<trans-unit id="8700121026680200191" datatype="html">
<source>Clear</source>
<target>Очистить</target>
<target>Стереть</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/downloads/downloads.component.ts</context>
<context context-type="linenumber">131</context>
@@ -2890,7 +2902,7 @@
</trans-unit>
<trans-unit id="8384225360105280028" datatype="html">
<source>Complete</source>
<target>Завершено</target>
<target>Закончено</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/downloads/downloads.component.ts</context>
<context context-type="linenumber">61</context>
@@ -2898,7 +2910,7 @@
</trans-unit>
<trans-unit id="7180002287537831534" datatype="html">
<source>Clear finished downloads</source>
<target>Очистить завершённые загрузки</target>
<target>Очистить законченны загрузки</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/downloads/downloads.component.ts</context>
<context context-type="linenumber">129</context>
@@ -2948,7 +2960,7 @@
</trans-unit>
<trans-unit id="99ee4faa69cd2ea8e3678c1f557c0ff1f05aae46" datatype="html">
<source>Clear</source>
<target>Очистить</target>
<target>Стереть</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/downloads/downloads.component.html</context>
<context context-type="linenumber">68</context>
@@ -3021,8 +3033,8 @@
<note priority="1" from="description">Progress</note>
</trans-unit>
<trans-unit id="2560364143605631750" datatype="html">
<source>Error for <x id="url" equiv-text="download['url']"/></source>
<target>Ошибка с <x id="url" equiv-text="download['url']"/></target>
<source>Error for <x id="url" equiv-text="}); retu"/></source>
<target>Ошибка для <x id="url" equiv-text="}); retu"/></target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/downloads/downloads.component.ts</context>
<context context-type="linenumber">238</context>
@@ -3106,7 +3118,7 @@
</trans-unit>
<trans-unit id="17afa163f202c8ee76e5b731f4bbdd9920fc4a18" datatype="html">
<source>Docker tag:</source>
<target>Метка Docker:</target>
<target>Тег Docker:</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/dialogs/about-dialog/about-dialog.component.html</context>
<context context-type="linenumber">28</context>
@@ -3164,296 +3176,6 @@
</context-group>
<note priority="1" from="description">Commit hash</note>
</trans-unit>
<trans-unit id="586a5fd72602b5b14ec0c55f84814de47bb21e3a" datatype="html">
<source>Tasks</source>
<target>Задачи</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/app.component.html</context>
<context context-type="linenumber">47</context>
</context-group>
<note priority="1" from="description">Navigation menu Tasks Page title</note>
</trans-unit>
<trans-unit id="84a36cb75660b736773fe36ffa3d54f0f0fe363e" datatype="html">
<source>N/A</source>
<target>Неизвестно</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tasks/tasks.component.html</context>
<context context-type="linenumber">19</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tasks/tasks.component.html</context>
<context context-type="linenumber">28</context>
</context-group>
<note priority="1" from="description">N/A</note>
</trans-unit>
<trans-unit id="e4c3cd97461b220b9cea67cfe08c5399799cfeed" datatype="html">
<source>Last ran</source>
<target>Последний запуск</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tasks/tasks.component.html</context>
<context context-type="linenumber">16</context>
</context-group>
<note priority="1" from="description">Last ran</note>
</trans-unit>
<trans-unit id="698f716f927f633b16cbe2308d90b2dba51f7556" datatype="html">
<source>Last confirmed</source>
<target>Последние подтверждённые</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tasks/tasks.component.html</context>
<context context-type="linenumber">25</context>
</context-group>
<note priority="1" from="description">Last confirmed</note>
</trans-unit>
<trans-unit id="81b97b8ea996ad1e4f9fca8415021850214884b1" datatype="html">
<source>Status</source>
<target>Статус</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tasks/tasks.component.html</context>
<context context-type="linenumber">34</context>
</context-group>
<note priority="1" from="description">Status</note>
</trans-unit>
<trans-unit id="d97425ce76bf3df50bcb643b5f409844770458f6" datatype="html">
<source>Busy</source>
<target state="needs-translation">Занято</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tasks/tasks.component.html</context>
<context context-type="linenumber">36</context>
</context-group>
<note priority="1" from="description">Busy</note>
</trans-unit>
<trans-unit id="7e121a443a8e9d92218f987001b650c59504d815" datatype="html">
<source>Scheduled for</source>
<target>Отложено для</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tasks/tasks.component.html</context>
<context context-type="linenumber">38</context>
</context-group>
<note priority="1" from="description">Scheduled</note>
</trans-unit>
<trans-unit id="3b7d6ff5d14ab177ce3e2d217b1927fb2e4aefd1" datatype="html">
<source>Not scheduled</source>
<target>Не отложено</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tasks/tasks.component.html</context>
<context context-type="linenumber">42</context>
</context-group>
<note priority="1" from="description">Not scheduled</note>
</trans-unit>
<trans-unit id="5ff9ae1f4c26bf2ddf6e9d5e4136916c5ce6a941" datatype="html">
<source>Clear missing files from DB:</source>
<target>Очистка потерянных файлов из базы данных:</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tasks/tasks.component.html</context>
<context context-type="linenumber">57</context>
</context-group>
<note priority="1" from="description">Clear missing files from DB</note>
</trans-unit>
<trans-unit id="4391397241847e675f6c38bbdec6b2883157fb1a" datatype="html">
<source>Clear duplicate files from DB:</source>
<target>Очистка дубликатов файлов из базы данных:</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tasks/tasks.component.html</context>
<context context-type="linenumber">60</context>
</context-group>
<note priority="1" from="description">Clear duplicate files from DB</note>
</trans-unit>
<trans-unit id="9562dd1e902acc4cc6a6e09cba66a2775daf7794" datatype="html">
<source>Update binary to:</source>
<target>Обновить бинарный файл на:</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tasks/tasks.component.html</context>
<context context-type="linenumber">63</context>
</context-group>
<note priority="1" from="description">Update binary to</note>
</trans-unit>
<trans-unit id="9b3d305551358858e1892169a94527e0cc4dbf5b" datatype="html">
<source>Run</source>
<target>Запустить</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tasks/tasks.component.html</context>
<context context-type="linenumber">69</context>
</context-group>
<note priority="1" from="description">Run</note>
</trans-unit>
<trans-unit id="4a4f46a2dcec36bd5c8c371ceee55c2226dec27f" datatype="html">
<source>Schedule</source>
<target>Отложить</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tasks/tasks.component.html</context>
<context context-type="linenumber">72</context>
</context-group>
<note priority="1" from="description">Schedule</note>
</trans-unit>
<trans-unit id="40bd7093f5fbd3fbeff9a50baaf5d4c8416add1e" datatype="html">
<source>Restore DB from backup</source>
<target>Восстановить базу данных из резервной копии</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tasks/tasks.component.html</context>
<context context-type="linenumber">89</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/dialogs/restore-db-dialog/restore-db-dialog.component.html</context>
<context context-type="linenumber">1</context>
</context-group>
<note priority="1" from="description">Restore DB from backup button</note>
</trans-unit>
<trans-unit id="f8a2361f3bd8fb05bf92080e2755bddd56ab64d7" datatype="html">
<source>Reset tasks</source>
<target>Сбросить задачи</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tasks/tasks.component.html</context>
<context context-type="linenumber">90</context>
</context-group>
<note priority="1" from="description">Reset tasks button</note>
</trans-unit>
<trans-unit id="5e96c9d4528bf259da3944daac3171d7462b065a" datatype="html">
<source>No tasks available!</source>
<target>Нет доступных задач!</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tasks/tasks.component.html</context>
<context context-type="linenumber">94</context>
</context-group>
<note priority="1" from="description">No tasks label</note>
</trans-unit>
<trans-unit id="5615896113581458384" datatype="html">
<source>Successfully ran task!</source>
<target>Задача успешно запущена!</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tasks/tasks.component.ts</context>
<context context-type="linenumber">78</context>
</context-group>
</trans-unit>
<trans-unit id="2106110452479146311" datatype="html">
<source>Failed to run task!</source>
<target>Не удалось запустить задачу!</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tasks/tasks.component.ts</context>
<context context-type="linenumber">79</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tasks/tasks.component.ts</context>
<context context-type="linenumber">81</context>
</context-group>
</trans-unit>
<trans-unit id="4707127982271899773" datatype="html">
<source>Successfully confirmed task!</source>
<target>Задача успешно подтверждена!</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tasks/tasks.component.ts</context>
<context context-type="linenumber">89</context>
</context-group>
</trans-unit>
<trans-unit id="4334913030311371594" datatype="html">
<source>Would you like to reset your tasks? All your schedules will be removed as well.</source>
<target>Хотите ли вы сбросить ваши задачи? Все отложенные задачи также будут удалены.</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tasks/tasks.component.ts</context>
<context context-type="linenumber">133</context>
</context-group>
</trans-unit>
<trans-unit id="d5cec7468241d72cafd86ad1af6d55b09a6e3ae5" datatype="html">
<source>Restore</source>
<target>Восстановить</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/dialogs/restore-db-dialog/restore-db-dialog.component.html</context>
<context context-type="linenumber">25</context>
</context-group>
<note priority="1" from="description">Restore button</note>
</trans-unit>
<trans-unit id="998793c78895d53576f462054f13d6e515e923d9" datatype="html">
<source>Update task schedule</source>
<target>Обновить расписание задачи</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/dialogs/update-task-schedule-dialog/update-task-schedule-dialog.component.html</context>
<context context-type="linenumber">1</context>
</context-group>
<note priority="1" from="description">Update task schedule</note>
</trans-unit>
<trans-unit id="f50a33d3c339f8f4a465141f8caa5d2d8c005251" datatype="html">
<source>Enabled</source>
<target>Включено</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/dialogs/update-task-schedule-dialog/update-task-schedule-dialog.component.html</context>
<context context-type="linenumber">7</context>
</context-group>
<note priority="1" from="description">Enabled</note>
</trans-unit>
<trans-unit id="67aed6c588eb854f2f30ef642e85147da0027a61" datatype="html">
<source>Recurring</source>
<target>Повторяющиеся</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/dialogs/update-task-schedule-dialog/update-task-schedule-dialog.component.html</context>
<context context-type="linenumber">10</context>
</context-group>
<note priority="1" from="description">Recurring</note>
</trans-unit>
<trans-unit id="047f50bc5b5d17b5bec0196355953e1a5c590ddb" datatype="html">
<source>Update</source>
<target>Обновить</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/dialogs/update-task-schedule-dialog/update-task-schedule-dialog.component.html</context>
<context context-type="linenumber">52</context>
</context-group>
<note priority="1" from="description">Update button</note>
</trans-unit>
<trans-unit id="fd374bee82dab66055b933496860f82b7b780159" datatype="html">
<source>Global custom args for downloads on the home page. (Set args for subscriptions for each subscriptions separately!) Args are delimited using two commas like so: ,,</source>
<target>Глобальные пользовательские аргументы для загрузок на домашней странице. (Установите аргументы подписок для каждой подписки отдельно!) Аргументы разделяются, используя две запятые, как здесь: ,,</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/settings/settings.component.html</context>
<context context-type="linenumber">128</context>
</context-group>
<note priority="1" from="description">Custom args setting input hint</note>
</trans-unit>
<trans-unit id="5588424857086384816" datatype="html">
<source>Reset tasks</source>
<target>Сбросить задачи</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tasks/tasks.component.ts</context>
<context context-type="linenumber">132</context>
</context-group>
</trans-unit>
<trans-unit id="9121124215111024650" datatype="html">
<source>Failed to confirm task!</source>
<target>Не удалось подтвердить задачу!</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tasks/tasks.component.ts</context>
<context context-type="linenumber">90</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tasks/tasks.component.ts</context>
<context context-type="linenumber">92</context>
</context-group>
</trans-unit>
<trans-unit id="7808756054397155068" datatype="html">
<source>Reset</source>
<target>Сбросить</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tasks/tasks.component.ts</context>
<context context-type="linenumber">134</context>
</context-group>
</trans-unit>
<trans-unit id="1709994363138824316" datatype="html">
<source>Failed to reset tasks!</source>
<target>Не удалось сбросить задачи!</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tasks/tasks.component.ts</context>
<context context-type="linenumber">144</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tasks/tasks.component.ts</context>
<context context-type="linenumber">147</context>
</context-group>
</trans-unit>
<trans-unit id="8612475568724527886" datatype="html">
<source>Tasks successfully reset!</source>
<target>Задачи успешно сброшены!</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tasks/tasks.component.ts</context>
<context context-type="linenumber">142</context>
</context-group>
</trans-unit>
</body>
</file>
</xliff>

View File

@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<?xml version='1.0' encoding='UTF-8'?>
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">
<file source-language="en-US" datatype="plaintext" original="ng2.template" target-language="zh-Hans">
<body>
@@ -733,7 +733,7 @@
</trans-unit>
<trans-unit id="4bee2a4bef2d26d37c9b353c278e24e5cd309ce3" datatype="html">
<source>Subscriptions base path</source>
<target>订阅路径</target>
<target>订阅文件路径</target>
<context-group purpose="location">
<context context-type="sourcefile">app/settings/settings.component.html</context>
<context context-type="linenumber">72</context>
@@ -902,8 +902,8 @@
<note priority="1" from="description">Video path setting input hint</note>
</trans-unit>
<trans-unit id="6b995e7130b4d667eaab6c5f61b362ace486d26d" datatype="html">
<source>Global custom args for downloads on the home page. (Set args for subscriptions for each subscriptions separately!) Args are delimited using two commas like so: ,,</source>
<target>开始页面上用于下载的全局自定义参数。(单独为每个订阅设置订阅参数!) 参数由两个逗号分隔:,,</target>
<source>Global custom args for downloads on the home page. Args are delimited using two commas like so: ,,</source>
<target>开始页面上用于下载的全局自定义参数。参数由两个逗号分隔:,,</target>
<context-group purpose="location">
<context context-type="sourcefile">app/settings/settings.component.html</context>
<context context-type="linenumber">146</context>

Binary file not shown.