Merge branch 'development'

This commit is contained in:
Preston 2021-01-22 13:35:28 -05:00
commit cc780fa7cf
34 changed files with 1421 additions and 368 deletions

View File

@ -107,7 +107,8 @@ const config = {
fs: 'empty',
net: 'empty',
tls: 'empty',
child_process: 'empty'
child_process: 'empty',
dns: 'empty'
},
plugins: [
// new WriteFilePlugin(),

396
package-lock.json generated
View File

@ -1,6 +1,6 @@
{
"name": "freetube",
"version": "0.11.1",
"version": "0.11.2",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
@ -1287,19 +1287,20 @@
}
},
"@electron/get": {
"version": "1.12.2",
"resolved": "https://registry.npmjs.org/@electron/get/-/get-1.12.2.tgz",
"integrity": "sha512-vAuHUbfvBQpYTJ5wB7uVIDq5c/Ry0fiTBMs7lnEYAo/qXXppIVcWdfBr57u6eRnKdVso7KSiH6p/LbQAG6Izrg==",
"version": "1.12.3",
"resolved": "https://registry.npmjs.org/@electron/get/-/get-1.12.3.tgz",
"integrity": "sha512-NFwSnVZQK7dhOYF1NQCt+HGqgL1aNdj0LUSx75uCqnZJqyiWCVdAMFV4b4/kC8HjUJAnsvdSEmjEt4G2qNQ9+Q==",
"dev": true,
"requires": {
"debug": "^4.1.1",
"env-paths": "^2.2.0",
"filenamify": "^4.1.0",
"fs-extra": "^8.1.0",
"global-agent": "^2.0.2",
"global-tunnel-ng": "^2.7.1",
"got": "^9.6.0",
"progress": "^2.0.3",
"sanitize-filename": "^1.6.2",
"semver": "^6.2.0",
"sumchecker": "^3.0.1"
},
"dependencies": {
@ -1317,6 +1318,12 @@
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
"dev": true
},
"semver": {
"version": "6.3.0",
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
"integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
"dev": true
}
}
},
@ -1387,9 +1394,9 @@
}
},
"@eslint/eslintrc": {
"version": "0.2.2",
"resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.2.2.tgz",
"integrity": "sha512-EfB5OHNYp1F4px/LI/FEnGylop7nOqkQ1LRzCM0KccA2U8tvV8w01KBv37LbO7nW4H+YhKyo2LcJhRwjjV17QQ==",
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.3.0.tgz",
"integrity": "sha512-1JTKgrOKAHVivSvOYw+sJOunkBjUOvjqWk1DPja7ZFhIS2mX/4EgTT8M7eTK9jrKhL/FvXXEbQwIs3pg1xp3dg==",
"dev": true,
"requires": {
"ajv": "^6.12.4",
@ -1399,7 +1406,7 @@
"ignore": "^4.0.6",
"import-fresh": "^3.2.1",
"js-yaml": "^3.13.1",
"lodash": "^4.17.19",
"lodash": "^4.17.20",
"minimatch": "^3.0.4",
"strip-json-comments": "^3.1.1"
},
@ -1957,28 +1964,28 @@
}
},
"@nodelib/fs.scandir": {
"version": "2.1.3",
"resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz",
"integrity": "sha512-eGmwYQn3gxo4r7jdQnkrrN6bY478C3P+a/y72IJukF8LjB6ZHeB3c+Ehacj3sYeSmUXGlnA67/PmbM9CVwL7Dw==",
"version": "2.1.4",
"resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.4.tgz",
"integrity": "sha512-33g3pMJk3bg5nXbL/+CY6I2eJDzZAni49PfJnL5fghPTggPvBd/pFNSgJsdAgWptuFu7qq/ERvOYFlhvsLTCKA==",
"dev": true,
"requires": {
"@nodelib/fs.stat": "2.0.3",
"@nodelib/fs.stat": "2.0.4",
"run-parallel": "^1.1.9"
}
},
"@nodelib/fs.stat": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz",
"integrity": "sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA==",
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.4.tgz",
"integrity": "sha512-IYlHJA0clt2+Vg7bccq+TzRdJvv19c2INqBSsoOLp1je7xjtr7J26+WXR72MCdvU9q1qTzIWDfhMf+DRvQJK4Q==",
"dev": true
},
"@nodelib/fs.walk": {
"version": "1.2.4",
"resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.4.tgz",
"integrity": "sha512-1V9XOY4rDW0rehzbrcqAmHnz8e7SKvX27gh8Gt2WgB0+pdzdiLV83p72kZPU+jvMbS1qU5mauP2iOvO8rhmurQ==",
"version": "1.2.6",
"resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.6.tgz",
"integrity": "sha512-8Broas6vTtW4GIXTAHDoE32hnN2M5ykgCpWGbuXHQ15vEMqr23pB76e/GZcYsZCHALv50ktd24qhEyKr6wBtow==",
"dev": true,
"requires": {
"@nodelib/fs.scandir": "2.1.3",
"@nodelib/fs.scandir": "2.1.4",
"fastq": "^1.6.0"
}
},
@ -2041,6 +2048,11 @@
"defer-to-connect": "^1.0.1"
}
},
"@tootallnate/once": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz",
"integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw=="
},
"@types/anymatch": {
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/@types/anymatch/-/anymatch-1.3.1.tgz",
@ -2316,13 +2328,13 @@
"dev": true
},
"@typescript-eslint/eslint-plugin": {
"version": "4.13.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.13.0.tgz",
"integrity": "sha512-ygqDUm+BUPvrr0jrXqoteMqmIaZ/bixYOc3A4BRwzEPTZPi6E+n44rzNZWaB0YvtukgP+aoj0i/fyx7FkM2p1w==",
"version": "4.14.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.14.0.tgz",
"integrity": "sha512-IJ5e2W7uFNfg4qh9eHkHRUCbgZ8VKtGwD07kannJvM5t/GU8P8+24NX8gi3Hf5jST5oWPY8kyV1s/WtfiZ4+Ww==",
"dev": true,
"requires": {
"@typescript-eslint/experimental-utils": "4.13.0",
"@typescript-eslint/scope-manager": "4.13.0",
"@typescript-eslint/experimental-utils": "4.14.0",
"@typescript-eslint/scope-manager": "4.14.0",
"debug": "^4.1.1",
"functional-red-black-tree": "^1.0.1",
"lodash": "^4.17.15",
@ -2358,28 +2370,28 @@
}
},
"@typescript-eslint/experimental-utils": {
"version": "4.13.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.13.0.tgz",
"integrity": "sha512-/ZsuWmqagOzNkx30VWYV3MNB/Re/CGv/7EzlqZo5RegBN8tMuPaBgNK6vPBCQA8tcYrbsrTdbx3ixMRRKEEGVw==",
"version": "4.14.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.14.0.tgz",
"integrity": "sha512-6i6eAoiPlXMKRbXzvoQD5Yn9L7k9ezzGRvzC/x1V3650rUk3c3AOjQyGYyF9BDxQQDK2ElmKOZRD0CbtdkMzQQ==",
"dev": true,
"requires": {
"@types/json-schema": "^7.0.3",
"@typescript-eslint/scope-manager": "4.13.0",
"@typescript-eslint/types": "4.13.0",
"@typescript-eslint/typescript-estree": "4.13.0",
"@typescript-eslint/scope-manager": "4.14.0",
"@typescript-eslint/types": "4.14.0",
"@typescript-eslint/typescript-estree": "4.14.0",
"eslint-scope": "^5.0.0",
"eslint-utils": "^2.0.0"
}
},
"@typescript-eslint/parser": {
"version": "4.13.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.13.0.tgz",
"integrity": "sha512-KO0J5SRF08pMXzq9+abyHnaGQgUJZ3Z3ax+pmqz9vl81JxmTTOUfQmq7/4awVfq09b6C4owNlOgOwp61pYRBSg==",
"version": "4.14.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.14.0.tgz",
"integrity": "sha512-sUDeuCjBU+ZF3Lzw0hphTyScmDDJ5QVkyE21pRoBo8iDl7WBtVFS+WDN3blY1CH3SBt7EmYCw6wfmJjF0l/uYg==",
"dev": true,
"requires": {
"@typescript-eslint/scope-manager": "4.13.0",
"@typescript-eslint/types": "4.13.0",
"@typescript-eslint/typescript-estree": "4.13.0",
"@typescript-eslint/scope-manager": "4.14.0",
"@typescript-eslint/types": "4.14.0",
"@typescript-eslint/typescript-estree": "4.14.0",
"debug": "^4.1.1"
},
"dependencies": {
@ -2401,29 +2413,29 @@
}
},
"@typescript-eslint/scope-manager": {
"version": "4.13.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.13.0.tgz",
"integrity": "sha512-UpK7YLG2JlTp/9G4CHe7GxOwd93RBf3aHO5L+pfjIrhtBvZjHKbMhBXTIQNkbz7HZ9XOe++yKrXutYm5KmjWgQ==",
"version": "4.14.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.14.0.tgz",
"integrity": "sha512-/J+LlRMdbPh4RdL4hfP1eCwHN5bAhFAGOTsvE6SxsrM/47XQiPSgF5MDgLyp/i9kbZV9Lx80DW0OpPkzL+uf8Q==",
"dev": true,
"requires": {
"@typescript-eslint/types": "4.13.0",
"@typescript-eslint/visitor-keys": "4.13.0"
"@typescript-eslint/types": "4.14.0",
"@typescript-eslint/visitor-keys": "4.14.0"
}
},
"@typescript-eslint/types": {
"version": "4.13.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.13.0.tgz",
"integrity": "sha512-/+aPaq163oX+ObOG00M0t9tKkOgdv9lq0IQv/y4SqGkAXmhFmCfgsELV7kOCTb2vVU5VOmVwXBXJTDr353C1rQ==",
"version": "4.14.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.14.0.tgz",
"integrity": "sha512-VsQE4VvpldHrTFuVPY1ZnHn/Txw6cZGjL48e+iBxTi2ksa9DmebKjAeFmTVAYoSkTk7gjA7UqJ7pIsyifTsI4A==",
"dev": true
},
"@typescript-eslint/typescript-estree": {
"version": "4.13.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.13.0.tgz",
"integrity": "sha512-9A0/DFZZLlGXn5XA349dWQFwPZxcyYyCFX5X88nWs2uachRDwGeyPz46oTsm9ZJE66EALvEns1lvBwa4d9QxMg==",
"version": "4.14.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.14.0.tgz",
"integrity": "sha512-wRjZ5qLao+bvS2F7pX4qi2oLcOONIB+ru8RGBieDptq/SudYwshveORwCVU4/yMAd4GK7Fsf8Uq1tjV838erag==",
"dev": true,
"requires": {
"@typescript-eslint/types": "4.13.0",
"@typescript-eslint/visitor-keys": "4.13.0",
"@typescript-eslint/types": "4.14.0",
"@typescript-eslint/visitor-keys": "4.14.0",
"debug": "^4.1.1",
"globby": "^11.0.1",
"is-glob": "^4.0.1",
@ -2459,12 +2471,12 @@
}
},
"@typescript-eslint/visitor-keys": {
"version": "4.13.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.13.0.tgz",
"integrity": "sha512-6RoxWK05PAibukE7jElqAtNMq+RWZyqJ6Q/GdIxaiUj2Ept8jh8+FUVlbq9WxMYxkmEOPvCE5cRSyupMpwW31g==",
"version": "4.14.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.14.0.tgz",
"integrity": "sha512-MeHHzUyRI50DuiPgV9+LxcM52FCJFYjJiWHtXlbyC27b80mfOwKeiKI+MHOTEpcpfmoPFm/vvQS88bYIx6PZTA==",
"dev": true,
"requires": {
"@typescript-eslint/types": "4.13.0",
"@typescript-eslint/types": "4.14.0",
"eslint-visitor-keys": "^2.0.0"
}
},
@ -2848,6 +2860,29 @@
"pkcs7": "^1.0.4"
}
},
"agent-base": {
"version": "6.0.2",
"resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
"integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
"requires": {
"debug": "4"
},
"dependencies": {
"debug": {
"version": "4.3.1",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz",
"integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==",
"requires": {
"ms": "2.1.2"
}
},
"ms": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
}
}
},
"aggregate-error": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz",
@ -7102,13 +7137,13 @@
}
},
"eslint": {
"version": "7.17.0",
"resolved": "https://registry.npmjs.org/eslint/-/eslint-7.17.0.tgz",
"integrity": "sha512-zJk08MiBgwuGoxes5sSQhOtibZ75pz0J35XTRlZOk9xMffhpA9BTbQZxoXZzOl5zMbleShbGwtw+1kGferfFwQ==",
"version": "7.18.0",
"resolved": "https://registry.npmjs.org/eslint/-/eslint-7.18.0.tgz",
"integrity": "sha512-fbgTiE8BfUJZuBeq2Yi7J3RB3WGUQ9PNuNbmgi6jt9Iv8qrkxfy19Ds3OpL1Pm7zg3BtTVhvcUZbIRQ0wmSjAQ==",
"dev": true,
"requires": {
"@babel/code-frame": "^7.0.0",
"@eslint/eslintrc": "^0.2.2",
"@eslint/eslintrc": "^0.3.0",
"ajv": "^6.10.0",
"chalk": "^4.0.0",
"cross-spawn": "^7.0.2",
@ -7132,7 +7167,7 @@
"js-yaml": "^3.13.1",
"json-stable-stringify-without-jsonify": "^1.0.1",
"levn": "^0.4.1",
"lodash": "^4.17.19",
"lodash": "^4.17.20",
"minimatch": "^3.0.4",
"natural-compare": "^1.4.0",
"optionator": "^0.9.1",
@ -7250,9 +7285,9 @@
}
},
"eslint-config-prettier": {
"version": "7.1.0",
"resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-7.1.0.tgz",
"integrity": "sha512-9sm5/PxaFG7qNJvJzTROMM1Bk1ozXVTKI0buKOyb0Bsr1hrwi0H/TzxF/COtf1uxikIK8SwhX7K6zg78jAzbeA==",
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-7.2.0.tgz",
"integrity": "sha512-rV4Qu0C3nfJKPOAhFujFxB7RMP+URFyQqqOZW9DMRD7ZDTFyjaIlETU3xzHELt++4ugC0+Jm084HQYkkJe+Ivg==",
"dev": true
},
"eslint-config-standard": {
@ -7992,9 +8027,9 @@
"dev": true
},
"fast-glob": {
"version": "3.2.4",
"resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.4.tgz",
"integrity": "sha512-kr/Oo6PX51265qeuCYsyGypiO5uJFgBS0jksyG7FUeCyQzNwYnzrNIMR1NXfkZXsMYXYLRAHgISHBz8gQcxKHQ==",
"version": "3.2.5",
"resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.5.tgz",
"integrity": "sha512-2DtFcgT68wiTTiwZ2hNdJfcHNke9XOfnwmBRWXhmeKM8rF0TGwmC/Qto3S7RoZKp5cilZbxzO5iTNTQsJ+EeDg==",
"dev": true,
"requires": {
"@nodelib/fs.stat": "^2.0.2",
@ -8017,9 +8052,9 @@
"dev": true
},
"fastq": {
"version": "1.8.0",
"resolved": "https://registry.npmjs.org/fastq/-/fastq-1.8.0.tgz",
"integrity": "sha512-SMIZoZdLh/fgofivvIkmknUXyPnvxRE3DhtZ5Me3Mrsk5gyPL42F0xr51TdRXskBxHfMp+07bcYzfsYEsSQA9Q==",
"version": "1.10.0",
"resolved": "https://registry.npmjs.org/fastq/-/fastq-1.10.0.tgz",
"integrity": "sha512-NL2Qc5L3iQEsyYzweq7qfgy5OtXCmGzGvhElGEd/SoFWEMOEczNh5s5ocaF01HDetxz+p8ecjNPA6cZxxIHmzA==",
"dev": true,
"requires": {
"reusify": "^1.0.4"
@ -8115,6 +8150,23 @@
"minimatch": "^3.0.4"
}
},
"filename-reserved-regex": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz",
"integrity": "sha1-q/c9+rc10EVECr/qLZHzieu/oik=",
"dev": true
},
"filenamify": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/filenamify/-/filenamify-4.2.0.tgz",
"integrity": "sha512-pkgE+4p7N1n7QieOopmn3TqJaefjdWXwEkj2XLZJLKfOgcQKkn11ahvGNgTD8mLggexLiDFQxeTs14xVU22XPA==",
"dev": true,
"requires": {
"filename-reserved-regex": "^2.0.0",
"strip-outer": "^1.0.1",
"trim-repeated": "^1.0.0"
}
},
"fill-range": {
"version": "7.0.1",
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
@ -8298,9 +8350,9 @@
}
},
"flatted": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/flatted/-/flatted-3.1.0.tgz",
"integrity": "sha512-tW+UkmtNg/jv9CSofAKvgVcO7c2URjhTdW1ZTkcAritblu8tajiYy7YisnIflEwtKssCtOxpnBRoCB7iap0/TA==",
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/flatted/-/flatted-3.1.1.tgz",
"integrity": "sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA==",
"dev": true
},
"flush-write-stream": {
@ -8666,9 +8718,9 @@
},
"dependencies": {
"core-js": {
"version": "3.8.2",
"resolved": "https://registry.npmjs.org/core-js/-/core-js-3.8.2.tgz",
"integrity": "sha512-FfApuSRgrR6G5s58casCBd9M2k+4ikuu4wbW6pJyYU7bd9zvFc9qf7vr5xmrZOhT9nn+8uwlH1oRR9jTnFoA3A==",
"version": "3.8.3",
"resolved": "https://registry.npmjs.org/core-js/-/core-js-3.8.3.tgz",
"integrity": "sha512-KPYXeVZYemC2TkNEkX/01I+7yd+nX3KddKwZ1Ww7SKWdI2wQprSgLmrTddT8nw92AjEklTsPBoSdQBhbI1bQ6Q==",
"dev": true,
"optional": true
},
@ -8986,8 +9038,7 @@
"he": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz",
"integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==",
"dev": true
"integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw=="
},
"highlight.js": {
"version": "9.18.3",
@ -9139,11 +9190,6 @@
"util.promisify": "1.0.0"
}
},
"html2json": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/html2json/-/html2json-1.0.2.tgz",
"integrity": "sha1-ydbSAvplQCOGwgKzRc9RvOgO0e8="
},
"htmlparser2": {
"version": "3.10.1",
"resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz",
@ -9236,6 +9282,31 @@
"requires-port": "^1.0.0"
}
},
"http-proxy-agent": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz",
"integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==",
"requires": {
"@tootallnate/once": "1",
"agent-base": "6",
"debug": "4"
},
"dependencies": {
"debug": {
"version": "4.3.1",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz",
"integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==",
"requires": {
"ms": "2.1.2"
}
},
"ms": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
}
}
},
"http-proxy-middleware": {
"version": "0.19.1",
"resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz",
@ -9379,6 +9450,30 @@
"integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=",
"dev": true
},
"https-proxy-agent": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz",
"integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==",
"requires": {
"agent-base": "6",
"debug": "4"
},
"dependencies": {
"debug": {
"version": "4.3.1",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz",
"integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==",
"requires": {
"ms": "2.1.2"
}
},
"ms": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
}
}
},
"human-signals": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz",
@ -9387,7 +9482,7 @@
},
"humanize-plus": {
"version": "1.8.2",
"resolved": "http://registry.npmjs.org/humanize-plus/-/humanize-plus-1.8.2.tgz",
"resolved": "https://registry.npmjs.org/humanize-plus/-/humanize-plus-1.8.2.tgz",
"integrity": "sha1-pls0RZrWNnrbs3B6gqPJ+RYWcDA=",
"dev": true
},
@ -9572,8 +9667,7 @@
"ip": {
"version": "1.1.5",
"resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz",
"integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=",
"dev": true
"integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo="
},
"ip-regex": {
"version": "2.1.0",
@ -12510,6 +12604,14 @@
}
}
},
"node-html-parser": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/node-html-parser/-/node-html-parser-2.0.2.tgz",
"integrity": "sha512-N2000Ho9dkabvRZcyiwm6zOpdiAzxAxcJ0Z0WNoh/yXHG0YCuiK2WpNQfN+9vheLNY/h/It11Gk7uwT4QTfk9Q==",
"requires": {
"he": "1.2.0"
}
},
"node-int64": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz",
@ -14703,9 +14805,9 @@
"dev": true
},
"run-parallel": {
"version": "1.1.9",
"resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.9.tgz",
"integrity": "sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q==",
"version": "1.1.10",
"resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.10.tgz",
"integrity": "sha512-zb/1OuZ6flOlH6tQyMPUrE3x3Ulxjlo9WIVXR4yVYi4H9UXQaeIsPbLn2R3O3vQCnDKkAl2qHiuocKKX4Tz/Sw==",
"dev": true
},
"run-queue": {
@ -14740,7 +14842,7 @@
},
"safe-regex": {
"version": "1.1.0",
"resolved": "http://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz",
"resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz",
"integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=",
"dev": true,
"requires": {
@ -14903,9 +15005,9 @@
}
},
"sass": {
"version": "1.32.4",
"resolved": "https://registry.npmjs.org/sass/-/sass-1.32.4.tgz",
"integrity": "sha512-N0BT0PI/t3+gD8jKa83zJJUb7ssfQnRRfqN+GIErokW6U4guBpfYl8qYB+OFLEho+QvnV5ZH1R9qhUC/Z2Ch9w==",
"version": "1.32.5",
"resolved": "https://registry.npmjs.org/sass/-/sass-1.32.5.tgz",
"integrity": "sha512-kU1yJ5zUAmPxr7f3q0YXTAd1oZjSR1g3tYyv+xu0HZSl5JiNOaE987eiz7wCUvbm4I9fGWGU2TgApTtcP4GMNQ==",
"dev": true,
"requires": {
"chokidar": ">=2.0.0 <4.0.0"
@ -15267,6 +15369,11 @@
"is-fullwidth-code-point": "^3.0.0"
}
},
"smart-buffer": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.1.0.tgz",
"integrity": "sha512-iVICrxOzCynf/SNaBQCw34eM9jROU/s5rzIhpOvzhzuYHfJR/DhZfDkXiZSgKXfgv26HT3Yni3AV/DGw0cGnnw=="
},
"snapdragon": {
"version": "0.8.2",
"resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz",
@ -15425,6 +15532,40 @@
}
}
},
"socks": {
"version": "2.5.1",
"resolved": "https://registry.npmjs.org/socks/-/socks-2.5.1.tgz",
"integrity": "sha512-oZCsJJxapULAYJaEYBSzMcz8m3jqgGrHaGhkmU/o/PQfFWYWxkAaA0UMGImb6s6tEXfKi959X6VJjMMQ3P6TTQ==",
"requires": {
"ip": "^1.1.5",
"smart-buffer": "^4.1.0"
}
},
"socks-proxy-agent": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-5.0.0.tgz",
"integrity": "sha512-lEpa1zsWCChxiynk+lCycKuC502RxDWLKJZoIhnxrWNjLSDGYRFflHA1/228VkRcnv9TIb8w98derGbpKxJRgA==",
"requires": {
"agent-base": "6",
"debug": "4",
"socks": "^2.3.3"
},
"dependencies": {
"debug": {
"version": "4.3.1",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz",
"integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==",
"requires": {
"ms": "2.1.2"
}
},
"ms": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
}
}
},
"sort-keys": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz",
@ -15923,6 +16064,15 @@
"integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=",
"dev": true
},
"strip-outer": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-1.0.1.tgz",
"integrity": "sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==",
"dev": true,
"requires": {
"escape-string-regexp": "^1.0.2"
}
},
"style-loader": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/style-loader/-/style-loader-2.0.0.tgz",
@ -16491,6 +16641,15 @@
"integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==",
"dev": true
},
"trim-repeated": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz",
"integrity": "sha1-42RqLqTokTEr9+rObPsFOAvAHCE=",
"dev": true,
"requires": {
"escape-string-regexp": "^1.0.2"
}
},
"truncate-utf8-bytes": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz",
@ -17228,9 +17387,9 @@
"integrity": "sha1-55jgMYC4kzU53v4x+S5TuSQrlAY="
},
"vue-eslint-parser": {
"version": "7.3.0",
"resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-7.3.0.tgz",
"integrity": "sha512-n5PJKZbyspD0+8LnaZgpEvNCrjQx1DyDHw8JdWwoxhhC+yRip4TAvSDpXGf9SWX6b0umeB5aR61gwUo6NVvFxw==",
"version": "7.4.1",
"resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-7.4.1.tgz",
"integrity": "sha512-AFvhdxpFvliYq1xt/biNBslTHE/zbEvSnr1qfHA/KxRIpErmEDrQZlQnvEexednRHmLfDNOMuDYwZL5xkLzIXQ==",
"dev": true,
"requires": {
"debug": "^4.1.1",
@ -17288,9 +17447,9 @@
"dev": true
},
"vue-i18n": {
"version": "8.22.3",
"resolved": "https://registry.npmjs.org/vue-i18n/-/vue-i18n-8.22.3.tgz",
"integrity": "sha512-Vhyx7sZEmmW/aZLkzSlXei08Rv3hTondx4J9wbOjnThocTIK1QiXV6QRdT4BTnhT24JixDSf6kGkxqCXSaJ3Jw=="
"version": "8.22.4",
"resolved": "https://registry.npmjs.org/vue-i18n/-/vue-i18n-8.22.4.tgz",
"integrity": "sha512-XLI5s0AdqMP2Lf4I4CmdmOq8kjb5DDFGR77wAuxCfpEuYSfhTRyyx6MetgZMiL6Lxa0DasjBOiOcciU3NkL3/Q=="
},
"vue-loader": {
"version": "15.9.6",
@ -19076,12 +19235,12 @@
}
},
"yt-comment-scraper": {
"version": "1.3.11",
"resolved": "https://registry.npmjs.org/yt-comment-scraper/-/yt-comment-scraper-1.3.11.tgz",
"integrity": "sha512-F7a1/BAjASsX3MheAqO1uvY0sPfstLKmkHETiFyDe3Hp+qUMyniuPmAvXrZPOanvBHyb6sH5+d3wVj/S9dD/ug==",
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/yt-comment-scraper/-/yt-comment-scraper-2.0.0.tgz",
"integrity": "sha512-goa9Z5REPXRKddKO6MJUzaa/cBgdQPj/akIGbyb1R5KnOgl4bLy6d4nD1pVUhLkP0Z8aEqwJAMmYpPBjeXTOIg==",
"requires": {
"axios": "^0.21.1",
"html2json": "^1.0.2"
"node-html-parser": "^2.0.2"
},
"dependencies": {
"axios": {
@ -19127,11 +19286,26 @@
}
},
"yt-trending-scraper": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/yt-trending-scraper/-/yt-trending-scraper-1.0.4.tgz",
"integrity": "sha512-RWNHDP0Gx1cKBGy0229jG8XzunsGXF4ZPG1gOtbFF54oF+smahCeWmsuYlmzr+5MwTWzq2s968spTGVgpkNjTA==",
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/yt-trending-scraper/-/yt-trending-scraper-1.1.0.tgz",
"integrity": "sha512-9QCSbzKFMTHyvj9y8oRnRZcLH9aVK/8GcPWSAiayfOfswXDnLZYONqavy/04kz/nXZfZQeuIGMsxCW2RxokWlQ==",
"requires": {
"axios": "^0.19.2"
"axios": "^0.21.1"
},
"dependencies": {
"axios": {
"version": "0.21.1",
"resolved": "https://registry.npmjs.org/axios/-/axios-0.21.1.tgz",
"integrity": "sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA==",
"requires": {
"follow-redirects": "^1.10.0"
}
},
"follow-redirects": {
"version": "1.13.1",
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.13.1.tgz",
"integrity": "sha512-SSG5xmZh1mkPGyKzjZP8zLjltIfpW32Y5QpdNJyjcfGxK3qo3NDDkZOZSFiGn1A6SclQxY9GzEwAHQ3dmYRWpg=="
}
}
},
"yt-xml2vtt": {
@ -19140,9 +19314,9 @@
"integrity": "sha512-4ZzqHIUfdPFa0Xb+8M3vsbokXooOhQuFuXa8bw4CJ5V0xWjRA/CPlZ3u0VTYoce4sUmMgoOVN7Xcj8NpUNujXA=="
},
"ytdl-core": {
"version": "4.4.3",
"resolved": "https://registry.npmjs.org/ytdl-core/-/ytdl-core-4.4.3.tgz",
"integrity": "sha512-0GexY2dMk0pvIE0UAB5GPiyaNjiawqDi5eUCUHW7CP1ZNyEco8Lct8/3AsI6aO0EQLGK774ocDvWxOE7W0qrTg==",
"version": "4.4.4",
"resolved": "https://registry.npmjs.org/ytdl-core/-/ytdl-core-4.4.4.tgz",
"integrity": "sha512-/IFJTM5RjN20q6RVaE/9rv9tKoBtx95lKZCI/pUPDiDzu9fXyuPbkVzEQJmsYEwzi0zdv4d6iJy0gHWz49o6mw==",
"requires": {
"m3u8stream": "^0.8.3",
"miniget": "^4.0.0",
@ -19186,9 +19360,9 @@
}
},
"ytsr": {
"version": "3.2.1",
"resolved": "https://registry.npmjs.org/ytsr/-/ytsr-3.2.1.tgz",
"integrity": "sha512-iN2woG5bfXiAWs9Tv6MPVGx3f1zdpeshyevGAbm0ggCYLmOnSNIA3lkgqlkfa0CH5WKIB/yjwRPU1hc49AUN+g==",
"version": "3.2.2",
"resolved": "https://registry.npmjs.org/ytsr/-/ytsr-3.2.2.tgz",
"integrity": "sha512-0Yt00R/LfP2tlPos6xCLazdkSJYfTD15VY/2oqbZvS0Ym8+4rMyXRg0AWJlmCJIhPsTPzc1nDjZvhDo/6A0/WA==",
"requires": {
"miniget": "^4.1.0"
},

View File

@ -17,6 +17,8 @@
"bulma-pro": "^0.2.0",
"dateformat": "^4.4.1",
"electron-context-menu": "^2.4.0",
"http-proxy-agent": "^4.0.1",
"https-proxy-agent": "^5.0.0",
"jquery": "^3.5.1",
"js-yaml": "^4.0.0",
"lodash.debounce": "^4.0.8",
@ -27,6 +29,7 @@
"nedb": "^1.8.0",
"opml-to-json": "1.0.1",
"rss-parser": "^3.10.0",
"socks-proxy-agent": "^5.0.0",
"video.js": "7.10.2",
"videojs-abloop": "^1.2.0",
"videojs-contrib-quality-levels": "^2.0.9",
@ -36,7 +39,7 @@
"videojs-vtt-thumbnails-freetube": "0.0.15",
"vue": "^2.6.12",
"vue-electron": "^1.0.6",
"vue-i18n": "^8.22.3",
"vue-i18n": "^8.22.4",
"vue-observe-visibility": "^1.0.0",
"vue-router": "^3.4.9",
"vuex": "^3.6.0",
@ -44,13 +47,13 @@
"youtube-chat": "^1.1.0",
"youtube-suggest": "^1.1.0",
"yt-channel-info": "^1.2.0",
"yt-comment-scraper": "^1.3.11",
"yt-dash-manifest-generator": "^1.1.0",
"yt-trending-scraper": "1.0.4",
"yt-comment-scraper": "^2.0.0",
"yt-dash-manifest-generator": "1.1.0",
"yt-trending-scraper": "1.1.0",
"yt-xml2vtt": "^1.2.0",
"ytdl-core": "^4.4.3",
"ytdl-core": "^4.4.4",
"ytpl": "^2.0.4",
"ytsr": "^3.2.1"
"ytsr": "^3.2.2"
},
"description": "A private YouTube client",
"devDependencies": {
@ -59,21 +62,21 @@
"@babel/plugin-proposal-object-rest-spread": "^7.12.1",
"@babel/preset-env": "^7.12.11",
"@babel/preset-typescript": "^7.12.7",
"@typescript-eslint/eslint-plugin": "^4.13.0",
"@typescript-eslint/parser": "^4.13.0",
"@typescript-eslint/eslint-plugin": "^4.14.0",
"@typescript-eslint/parser": "^4.14.0",
"acorn": "^8.0.4",
"babel-eslint": "^10.1.0",
"babel-loader": "^8.2.2",
"copy-webpack-plugin": "6.4.0",
"css-loader": "^5.0.1",
"devtron": "^1.4.0",
"electron": "^11.1.1",
"electron": "11.1.1",
"electron-builder": "^22.9.1",
"electron-builder-squirrel-windows": "^22.10.4",
"electron-debug": "^3.2.0",
"electron-rebuild": "^2.3.4",
"eslint": "^7.17.0",
"eslint-config-prettier": "^7.1.0",
"eslint": "^7.18.0",
"eslint-config-prettier": "^7.2.0",
"eslint-config-standard": "^16.0.2",
"eslint-plugin-import": "^2.22.1",
"eslint-plugin-node": "^11.1.0",
@ -81,7 +84,7 @@
"eslint-plugin-promise": "^4.2.1",
"eslint-plugin-standard": "^5.0.0",
"eslint-plugin-vue": "^7.4.1",
"fast-glob": "^3.2.4",
"fast-glob": "^3.2.5",
"file-loader": "^6.2.0",
"html-webpack-plugin": "^4.5.1",
"jest": "^26.6.3",
@ -90,14 +93,14 @@
"node-loader": "^1.0.2",
"npm-run-all": "^4.1.5",
"prettier": "^2.2.1",
"sass": "^1.32.4",
"sass": "^1.32.5",
"sass-loader": "^10.1.1",
"style-loader": "^2.0.0",
"tree-kill": "1.2.2",
"typescript": "^4.1.3",
"url-loader": "^4.1.1",
"vue-devtools": "^5.1.4",
"vue-eslint-parser": "^7.3.0",
"vue-eslint-parser": "^7.4.1",
"vue-loader": "^15.9.6",
"vue-style-loader": "^4.1.2",
"vue-template-compiler": "^2.6.12",
@ -143,5 +146,5 @@
"test": "run-s rebuild:node pack:workers jest",
"test:watch": "run-s rebuild:node pack:workers jest:watch"
},
"version": "0.11.1"
"version": "0.11.2"
}

View File

@ -8,7 +8,7 @@ import FtPrompt from '../ft-prompt/ft-prompt.vue'
import { remote } from 'electron'
import fs from 'fs'
import opmlToJson from 'opml-to-json'
import { opmlToJSON } from 'opml-to-json'
import ytch from 'yt-channel-info'
const app = remote.app
@ -357,17 +357,7 @@ export default Vue.extend({
return
}
opmlToJson(data, async (err, json) => {
if (err) {
console.log(err)
console.log('error reading')
const message = this.$t('Settings.Data Settings.Invalid subscriptions file')
this.showToast({
message: `${message}: ${err}`
})
return
}
opmlToJSON(data).then((json) => {
let feedData = json.children[0].children
if (typeof feedData === 'undefined') {
@ -442,6 +432,13 @@ export default Vue.extend({
this.updateShowProgressBar(false)
}
})
}).catch((err) => {
console.log(err)
console.log('error reading')
const message = this.$t('Settings.Data Settings.Invalid subscriptions file')
this.showToast({
message: `${message}: ${err}`
})
})
})
})

View File

@ -76,6 +76,8 @@ export default Vue.extend({
maxFramerate: 0,
activeSourceList: [],
mouseTimeout: null,
touchTimeout: null,
lastTouchTime: null,
dataSetup: {
fluid: true,
nativeTextTracks: false,
@ -116,7 +118,6 @@ export default Vue.extend({
2.25,
2.5,
2.75,
2.75,
3
]
}
@ -284,7 +285,7 @@ export default Vue.extend({
return
}
if (videoWidth < videoHeight) {
if ((videoWidth - videoHeight) <= 240) {
this.player.fluid(false)
this.player.aspectRatio('16:9')
}
@ -719,6 +720,25 @@ export default Vue.extend({
}
},
handleTouchStart: function (event) {
const v = this
this.touchPauseTimeout = setTimeout(() => {
v.togglePlayPause()
}, 1000)
const touchTime = new Date()
if (this.lastTouchTime !== null && (touchTime.getTime() - this.lastTouchTime.getTime()) < 250) {
this.toggleFullscreen()
}
this.lastTouchTime = touchTime
},
handleTouchEnd: function (event) {
clearTimeout(this.touchPauseTimeout)
},
keyboardShortcutHandler: function (event) {
const activeInputs = $('.ft-input')

View File

@ -7,6 +7,8 @@
controls
preload="auto"
:data-setup="JSON.stringify(dataSetup)"
@touchstart="handleTouchStart"
@touchend="handleTouchEnd"
>
<source
v-for="(source, index) in activeSourceList"

View File

@ -138,7 +138,7 @@ export default Vue.extend({
}
},
mounted: function () {
const requestUrl = 'https://instances.invidio.us/instances.json'
const requestUrl = 'https://api.invidious.io/instances.json'
$.getJSON(requestUrl, (response) => {
console.log(response)
const instances = response.filter((instance) => {

View File

@ -97,6 +97,13 @@
@input="handleInvidiousInstanceInput"
/>
</ft-flex-box>
<ft-flex-box>
<a
href="https://api.invidious.io"
>
{{ $t('Settings.General Settings.View all Invidious instance information') }}
</a>
</ft-flex-box>
</ft-card>
</template>

View File

@ -5,10 +5,7 @@ import FtLoader from '../../components/ft-loader/ft-loader.vue'
import FtSelect from '../../components/ft-select/ft-select.vue'
import FtTimestampCatcher from '../../components/ft-timestamp-catcher/ft-timestamp-catcher.vue'
import autolinker from 'autolinker'
import { fork } from 'child_process'
import path from 'path'
// eslint-disable-next-line
import commentControllerRelativePath from 'file-loader!../../../process/comment-module-controller.js'
import ytcm from 'yt-comment-scraper'
export default Vue.extend({
name: 'WatchVideoComments',
@ -93,8 +90,9 @@ export default Vue.extend({
this.sortNewest = !this.sortNewest
switch (this.backendPreference) {
case 'local':
console.log('In handle')
this.sortingChanged = true
this.isLoading = true
this.commentData = []
this.nextPageToken = undefined
this.getCommentDataLocal()
break
case 'invidious':
@ -122,7 +120,6 @@ export default Vue.extend({
this.showToast({
message: this.$t('Comments.There are no more comments for this video')
})
this.getCommentData()
} else {
this.getCommentData()
}
@ -144,90 +141,72 @@ export default Vue.extend({
},
getCommentDataLocal: function () {
// we need the path from the working directory to fork correctly
if (this.commentProcess === null) {
let modulePath
if (this.isDev) {
modulePath = '../../../process/comment-module-controller.js'
} else {
modulePath = commentControllerRelativePath
}
this.commentProcess = fork(path.join(__dirname, modulePath), ['args'], {
stdio: ['pipe', 'pipe', 'pipe', 'ipc']
})
this.commentProcess.on('message', (msg) => {
if (msg.error === null) {
const commentJSON = JSON.parse(msg.comments)
if (commentJSON === null) {
this.showToast({
message: this.$t('Comments.No more comments available'),
time: 7000,
action: () => {
}
})
this.isLoading = false
} else {
// console.log(msg.comments)
const commentData = commentJSON.map((comment) => {
comment.showReplies = false
comment.dataType = 'local'
this.toLocalePublicationString({
publishText: (comment.time + ' ago'),
templateString: this.$t('Video.Publicationtemplate'),
timeStrings: this.$t('Video.Published'),
liveStreamString: this.$t('Video.Watching'),
upcomingString: this.$t('Video.Published.Upcoming'),
isLive: false,
isUpcoming: false,
isRSS: false
}).then((data) => {
comment.time = data
}).catch((error) => {
console.error(error)
})
if (this.hideCommentLikes) {
comment.likes = null
}
comment.text = autolinker.link(comment.text)
comment.replies.forEach((reply) => {
reply.text = autolinker.link(reply.text)
})
return comment
})
if (this.sortingChanged) {
this.commentData = []
this.sortingChanged = false
}
this.commentData = this.commentData.concat(commentData)
this.isLoading = false
this.showComments = true
this.nextPageToken = ''
}
} else {
console.log(msg.error)
const errorMessage = this.$t('Local API Error (Click to copy)')
this.showToast({
message: `${errorMessage}: ${msg.error}`,
time: 10000,
action: () => {
navigator.clipboard.writeText(msg.error)
}
})
if (this.backendFallback && this.backendPreference === 'local') {
this.showToast({
message: this.$t('Falling back to Invidious API')
})
this.getCommentDataInvidious()
} else {
this.isLoading = false
}
}
})
const payload = {
videoId: this.id,
setCookie: false,
sortByNewest: this.sortNewest,
continuation: this.nextPageToken ? this.nextPageToken : undefined
}
this.commentProcess.send({ id: this.id, sortNewest: this.sortNewest })
ytcm.getComments(payload).then((response) => {
console.log(response)
const commentData = response.comments.map((comment) => {
comment.showReplies = false
comment.dataType = 'local'
this.toLocalePublicationString({
publishText: (comment.time + ' ago'),
templateString: this.$t('Video.Publicationtemplate'),
timeStrings: this.$t('Video.Published'),
liveStreamString: this.$t('Video.Watching'),
upcomingString: this.$t('Video.Published.Upcoming'),
isLive: false,
isUpcoming: false,
isRSS: false
}).then((data) => {
comment.time = data
}).catch((error) => {
console.error(error)
})
if (this.hideCommentLikes) {
comment.likes = null
}
comment.text = autolinker.link(comment.text)
if (comment.numReplies > 0) {
comment.replies.forEach((reply) => {
reply.text = autolinker.link(reply.text)
})
}
return comment
})
if (this.sortingChanged) {
this.commentData = []
this.sortingChanged = false
}
this.commentData = this.commentData.concat(commentData)
this.isLoading = false
this.showComments = true
this.nextPageToken = response.continuation
}).catch((err) => {
console.log(err)
const errorMessage = this.$t('Local API Error (Click to copy)')
this.showToast({
message: `${errorMessage}: ${err}`,
time: 10000,
action: () => {
navigator.clipboard.writeText(err)
}
})
if (this.backendFallback && this.backendPreference === 'local') {
this.showToast({
message: this.$t('Falling back to Invidious API')
})
this.getCommentDataInvidious()
} else {
this.isLoading = false
}
})
},
getCommentDataInvidious: function () {
@ -269,7 +248,6 @@ export default Vue.extend({
return comment
})
console.log(commentData)
this.commentData = this.commentData.concat(commentData)
this.nextPageToken = response.continuation
this.isLoading = false
@ -329,7 +307,6 @@ export default Vue.extend({
return comment
})
console.log(commentData)
this.commentData[index].replies = commentData
this.commentData[index].showReplies = true
this.isLoading = false

View File

@ -1,8 +1,5 @@
<template>
<ft-card>
<ft-loader
v-if="isLoading"
/>
<h4
v-if="commentData.length === 0 && !isLoading"
class="getCommentsTitle"
@ -148,6 +145,9 @@
>
{{ $t("Comments.Load More Comments") }}
</h4>
<ft-loader
v-if="isLoading"
/>
</ft-card>
</template>

View File

@ -3,6 +3,9 @@ import ytsr from 'ytsr'
import ytpl from 'ytpl'
import IsEqual from 'lodash.isequal'
import { SocksProxyAgent } from 'socks-proxy-agent'
import { HttpsProxyAgent } from 'https-proxy-agent'
import { HttpProxyAgent } from 'http-proxy-agent'
const state = {
main: 0,
@ -38,6 +41,47 @@ const actions = {
duration: ''
}
let agent = {}
const settings = rootState.settings
const useProxy = settings.useProxy
if (useProxy) {
const proxyProtocol = settings.proxyProtocol
const proxyHostname = settings.proxyHostname
const proxyPort = settings.proxyPort
switch (proxyProtocol) {
case 'http':
agent = new HttpProxyAgent({
host: proxyHostname,
port: proxyPort
})
break
case 'https':
agent = new HttpsProxyAgent({
host: proxyHostname,
port: proxyPort
})
break
case 'socks4':
agent = new SocksProxyAgent({
host: proxyHostname,
port: proxyPort,
type: 4
})
break
case 'socks5':
agent = new SocksProxyAgent({
host: proxyHostname,
port: proxyPort,
type: 5
})
break
}
payload.options.requestOptions = { agent }
}
commit('toggleIsYtSearchRunning')
if (!IsEqual(defaultFilters, rootState.utils.searchSettings)) {
@ -79,7 +123,51 @@ const actions = {
},
async ytSearchGetFilters ({ rootState }, payload) {
let filter = await ytsr.getFilters(payload.query)
let options = null
let agent = null
const settings = rootState.settings
const useProxy = settings.useProxy
if (useProxy) {
const proxyProtocol = settings.proxyProtocol
const proxyHostname = settings.proxyHostname
const proxyPort = settings.proxyPort
switch (proxyProtocol) {
case 'http':
agent = new HttpProxyAgent({
host: proxyHostname,
port: proxyPort
})
break
case 'https':
agent = new HttpsProxyAgent({
host: proxyHostname,
port: proxyPort
})
break
case 'socks4':
agent = new SocksProxyAgent({
host: proxyHostname,
port: proxyPort,
type: 4
})
break
case 'socks5':
agent = new SocksProxyAgent({
host: proxyHostname,
port: proxyPort,
type: 5
})
break
}
}
options = {
requestOptions: { agent }
}
let filter = await ytsr.getFilters(payload.query, options)
let filterUrl = null
let searchSettings = payload.searchSettings
@ -104,7 +192,7 @@ const actions = {
break
}
filterUrl = filter.get('Sort by').get(filterValue).url
filter = await ytsr.getFilters(filterUrl)
filter = await ytsr.getFilters(filterUrl, options)
}
console.log(`Current ref: ${filterUrl}`)
@ -118,7 +206,7 @@ const actions = {
}
filterUrl = filter.get('Duration').get(filterValue).url
filter = await ytsr.getFilters(filterUrl)
filter = await ytsr.getFilters(filterUrl, options)
}
console.log(`Current ref: ${filterUrl}`)
@ -145,7 +233,7 @@ const actions = {
}
filterUrl = filter.get('Upload date').get(filterValue).url
filter = await ytsr.getFilters(filterUrl)
filter = await ytsr.getFilters(filterUrl, options)
}
console.log(`Current ref: ${filterUrl}`)
@ -153,7 +241,7 @@ const actions = {
if (searchSettings.type !== 'all') {
const filterValue = searchSettings.type.charAt(0).toUpperCase() + searchSettings.type.slice(1)
filterUrl = filter.get('Type').get(filterValue).url
filter = await ytsr.getFilters(filterUrl)
filter = await ytsr.getFilters(filterUrl, options)
}
console.log(`Current ref: ${filterUrl}`)
@ -163,11 +251,52 @@ const actions = {
})
},
ytGetPlaylistInfo (_, playlistId) {
ytGetPlaylistInfo ({ rootState }, playlistId) {
return new Promise((resolve, reject) => {
console.log(playlistId)
console.log('Getting playlist info please wait...')
ytpl(playlistId, { limit: 'Infinity' }).then((result) => {
let agent = null
const settings = rootState.settings
const useProxy = settings.useProxy
if (useProxy) {
const proxyProtocol = settings.proxyProtocol
const proxyHostname = settings.proxyHostname
const proxyPort = settings.proxyPort
switch (proxyProtocol) {
case 'http':
agent = new HttpProxyAgent({
host: proxyHostname,
port: proxyPort
})
break
case 'https':
agent = new HttpsProxyAgent({
host: proxyHostname,
port: proxyPort
})
break
case 'socks4':
agent = new SocksProxyAgent({
host: proxyHostname,
port: proxyPort,
type: 4
})
break
case 'socks5':
agent = new SocksProxyAgent({
host: proxyHostname,
port: proxyPort,
type: 5
})
break
}
}
ytpl(playlistId, {
limit: 'Infinity',
requestOptions: { agent }
}).then((result) => {
resolve(result)
}).catch((err) => {
reject(err)
@ -175,11 +304,51 @@ const actions = {
})
},
ytGetVideoInformation (_, videoId) {
ytGetVideoInformation ({ rootState }, videoId) {
return new Promise((resolve, reject) => {
console.log('Getting video info please wait...')
let agent = null
const settings = rootState.settings
const useProxy = settings.useProxy
if (useProxy) {
const proxyProtocol = settings.proxyProtocol
const proxyHostname = settings.proxyHostname
const proxyPort = settings.proxyPort
switch (proxyProtocol) {
case 'http':
agent = new HttpProxyAgent({
host: proxyHostname,
port: proxyPort
})
break
case 'https':
agent = new HttpsProxyAgent({
host: proxyHostname,
port: proxyPort
})
break
case 'socks4':
agent = new SocksProxyAgent({
host: proxyHostname,
port: proxyPort,
type: 4
})
break
case 'socks5':
agent = new SocksProxyAgent({
host: proxyHostname,
port: proxyPort,
type: 5
})
break
}
}
ytdl.getInfo(videoId, {
lang: localStorage.getItem('locale')
lang: localStorage.getItem('locale'),
requestOptions: { agent }
}).then((result) => {
resolve(result)
}).catch((err) => {

View File

@ -16,6 +16,8 @@ export default Vue.extend({
data: function () {
return {
isLoading: false,
apiUsed: 'local',
amountOfResults: 0,
query: '',
searchPage: 1,
nextPageRef: '',
@ -122,6 +124,10 @@ export default Vue.extend({
return
}
this.apiUsed = 'local'
this.amountOfResults = result.results
const returnData = result.items.filter((item) => {
if (typeof item !== 'undefined') {
return item.type === 'video' || item.type === 'channel' || item.type === 'playlist'
@ -179,7 +185,8 @@ export default Vue.extend({
query: payload.query,
data: this.shownResults,
searchSettings: this.searchSettings,
nextPageRef: result.continuation
nextPageRef: result.continuation,
amountOfResults: result.results
}
this.$store.commit('addToSessionSearchHistory', historyPayload)
@ -228,6 +235,8 @@ export default Vue.extend({
return
}
this.apiUsed = 'invidious'
console.log(result)
const returnData = result.filter((item) => {
@ -287,13 +296,21 @@ export default Vue.extend({
console.log(payload)
this.showToast({
message: this.$t('Search Filters["Fetching results. Please wait"]')
})
if (this.nextPageRef !== '') {
this.performSearchLocal(payload)
if (this.apiUsed === 'local') {
if (this.amountOfResults <= this.shownResults.length) {
this.showToast({
message: this.$t('Search Filters.There are no more results for this search')
})
} else {
this.showToast({
message: this.$t('Search Filters["Fetching results. Please wait"]')
})
this.performSearchLocal(payload)
}
} else {
this.showToast({
message: this.$t('Search Filters["Fetching results. Please wait"]')
})
this.performSearchInvidious(payload)
}
},
@ -302,6 +319,7 @@ export default Vue.extend({
this.query = history.query
this.shownResults = history.data
this.searchSettings = history.searchSettings
this.amountOfResults = history.amountOfResults
if (typeof (history.nextPageRef) !== 'undefined') {
this.nextPageRef = history.nextPageRef

View File

@ -3,6 +3,7 @@ import FtCard from '../../components/ft-card/ft-card.vue'
import FtFlexBox from '../../components/ft-flex-box/ft-flex-box.vue'
import FtTooltip from '../../components/ft-tooltip/ft-tooltip.vue'
import FtLoader from '../../components/ft-loader/ft-loader.vue'
import FtButton from '../../components/ft-button/ft-button.vue'
import FtElementList from '../../components/ft-element-list/ft-element-list.vue'
export default Vue.extend({
@ -12,6 +13,7 @@ export default Vue.extend({
'ft-flex-box': FtFlexBox,
'ft-tooltip': FtTooltip,
'ft-loader': FtLoader,
'ft-button': FtButton,
'ft-element-list': FtElementList
},
data: function () {
@ -26,10 +28,11 @@ export default Vue.extend({
},
activeData: function () {
const data = [].concat(this.favoritesPlaylist.videos).reverse()
if (this.favoritesPlaylist.videos.length < this.dataLimit) {
return this.favoritesPlaylist.videos
return data
} else {
return this.favoritesPlaylist.videos.slice(0, this.dataLimit)
return data.slice(0, this.dataLimit)
}
}
},

View File

@ -864,12 +864,16 @@ export default Vue.extend({
console.log('update watch progress')
this.updateWatchProgress(payload)
}
}
if (!this.isUpcoming && !this.isLoading) {
const player = this.$refs.videoPlayer.player
if (player !== null && !player.paused() && player.isInPictureInPicture()) {
const playerId = this.videoId
setTimeout(() => {
player.play()
player.on('leavepictureinpicture', () => {
player.on('leavepictureinpicture', (event) => {
const watchTime = player.currentTime()
if (this.$route.fullPath.includes('/watch')) {
const routeId = this.$route.params.id

View File

@ -266,6 +266,7 @@ Settings:
One or more subscriptions were unable to be imported: تعذر استيراد واحد أو أكثر
من الاشتراكات
Check for Legacy Subscriptions: تحقق من وجود اشتراك قديم
Manage Subscriptions: إدارة الإشتراكات
Distraction Free Settings:
Hide Live Chat: اخفي الدردشة المباشرة
Hide Popular Videos: اخفي الفيديوهات الأكثر شعبية
@ -278,6 +279,18 @@ Settings:
Distraction Free Settings: إعدادات عدم الإزعاج
The app needs to restart for changes to take effect. Restart and apply change?: البرنامج
يحتاج لإعادة التشغيل كي يسري مفعول التغييرات. هل تريد إعادة التشغيل و تطبيق التغييرات؟
Proxy Settings:
City: المدينة
Region: المنطقة
Country: البلد
Ip: عنوان الإيبي
Your Info: معلوماتك
Test Proxy: اختبار البروكسي
Proxy Port Number: رقم منفذ البروكسي
Proxy Host: خادوم البروكسي
Proxy Protocol: بروتوكول البروكسي
Enable Tor / Proxy: تفعيل تور / البروكسي
Proxy Settings: خيارات البروكسي
About:
#On About page
About: 'حول'
@ -309,6 +322,19 @@ About:
Latest FreeTube News: 'آخر أخبار FreeTube'
Donate: التبرع
Translate: ساعدنا في ترجمة Freetube
Chat on Matrix: الدردشة على ماتريكس
Mastodon: ماستدون
Email: البريد الإلكتروني
Blog: المدوّنة
Website: موقع الويب
Report a problem: الإبلاغ عن مشكلة
FAQ: الأسئلة المتداولة
Help: المساعدة
View License: اعرض الرخصة
Source code: الشفرة المصدرية
Beta: تجريبي
Profile:
All Channels: 'جميع القنوات'
Profile Manager: 'مدير الملف الشخصي'
@ -466,6 +492,8 @@ Video:
Open Channel in Invidious: افتح القناة على انفيديوس
Copy YouTube Channel Link: انسخ رابط قناة اليوتيوب
Open Channel in YouTube: افتح القناة على يوتيوب
Video has been saved: تم حفظ الفيديو
Save Video: احفظ الفيديو
Videos:
#& Sort By
Sort By:

View File

@ -88,6 +88,13 @@ Most Popular: 'Най-популярни'
Playlists: 'Плейлисти'
User Playlists:
Your Playlists: 'Вашите плейлисти'
Your saved videos are empty. Click on the save button on the corner of a video to have it listed here: Запазените
ви видеоклипове са празни. Кликнете върху бутона за запазване в ъгъла на видеоклипа,
за да го добавите тук
Playlist Message: Тази страница не отразява напълно работещи плейлисти. В него са
изброени само видеоклипове, които сте запазили или избрали за любими. Когато работата
приключи, всички видеоклипове, които в момента са тук, ще бъдат мигрирани в плейлист
„Любими“.
History:
# On History Page
History: 'История'
@ -243,6 +250,7 @@ Settings:
Unknown data key: 'Непознат ключ данни'
How do I import my subscriptions?: 'Как да внеса абонаментите си?'
Check for Legacy Subscriptions: Проверка за стари абонаменти
Manage Subscriptions: Управление на абонаменти
Advanced Settings:
Advanced Settings: 'Разширени настройки'
Enable Debug Mode (Prints data to the console): 'Активиране на режим за дебъгване
@ -280,8 +288,26 @@ Settings:
Hide Video Likes And Dislikes: Скриване оценките на видеата
Hide Video Views: Скриване броя показвания на видеата
Distraction Free Settings: Настройки за неразсейване
Hide Active Subscriptions: Скриване на активни абонаменти
The app needs to restart for changes to take effect. Restart and apply change?: Приложението
трябва да се рестартира за да се приложат промените. Рестартиране?
Proxy Settings:
Error getting network information. Is your proxy configured properly?: Грешка
при получаване на информация за мрежата. Правилно ли е конфигуриран вашият прокси
сървър?
City: Град
Region: Регион
Country: Държава
Ip: Ip
Your Info: Вашата информация
Test Proxy: Тестово прокси
Clicking on Test Proxy will send a request to: Кликването върху тестово прокси
ще изпрати заявка до
Proxy Port Number: Номер на прокси порта
Proxy Host: Прокси хост
Proxy Protocol: Прокси протокол
Enable Tor / Proxy: Активирайте Tor / Proxy
Proxy Settings: Настройки на прокси
About:
#On About page
About: 'Относно'
@ -313,6 +339,29 @@ About:
Latest FreeTube News: 'Последни FreeTube новини'
Donate: Дарете
these people and projects: тези хора и проекти
FreeTube is made possible by: FreeTube е възможен чрез
Translate: Превод
room rules: правилата за стаите
Please read the: Моля, прочетете
Chat on Matrix: Чат в Matrix
Mastodon: Mastodon
Email: Имейл
Blog: Блог
Website: Уебсайт
Please check for duplicates before posting: Моля, проверете за дубликати преди публикуване
GitHub issues: GitHub проблеми
Report a problem: Съобщете за проблем
FAQ: ЧЗВ
FreeTube Wiki: FreeTube Wiki
Help: Помощ
GitHub releases: GitHub издания
Downloads / Changelog: Изтегляния / Дневник с промени
View License: Преглед на лиценза
Licensed under the AGPLv3: Лицензиран съгласно AGPLv3
Source code: Програмен код
Beta: Бета
Profile:
Profile Select: 'Избор на профил'
All Channels: 'Всички канали'
@ -473,6 +522,10 @@ Video:
Open Channel in YouTube: Отваряне на канала в YouTube
Started streaming on: Начало на излъчването
Streamed on: Излъчване
Video has been removed from your saved list: Видеоклипът е премахнат от вашия запазен
списък
Video has been saved: Видеото е запазено
Save Video: Запазване на видео
Videos:
#& Sort By
Sort By:

View File

@ -70,6 +70,8 @@ Search Filters:
Fetching results. Please wait: 'Načítání výsledků. Prosím, čekejte'
Fetch more results: 'Načíst více výsledků'
# Sidebar
There are no more results for this search: Pro toto hledání nejsou k dispozici žádné
další výsledky
Subscriptions:
# On Subscriptions Page
Subscriptions: 'Odběry'
@ -86,6 +88,12 @@ Most Popular: 'Nejpopulárnější'
Playlists: 'Playlisty'
User Playlists:
Your Playlists: 'Vaše playlisty'
Your saved videos are empty. Click on the save button on the corner of a video to have it listed here: Vaše
uložená videa jsou prázdná. Kliknutím na tlačítko Uložit v rohu videa jej zobrazíte
zde
Playlist Message: Tato stránka neodráží plně funkční seznamy skladeb. Uvádí pouze
videa, která jste uložili nebo zařadili mezi oblíbená. Po dokončení práce budou
všechna aktuálně zde umístěná videa přenesena do seznamu „Oblíbené“.
History:
# On History Page
History: 'Historie'
@ -123,6 +131,8 @@ Settings:
instance (Výchozí je https://invidious.snopyta.org)'
Region for Trending: 'Region pro trendy'
#! List countries
View all Invidious instance information: Zobrazit všechny informace o instanci
Invidious
Theme Settings:
Theme Settings: 'Nastavení motivu'
Match Top Bar with Main Color: 'Přizpůsobit hlavní lištu hlavní barvě'
@ -251,6 +261,7 @@ Settings:
Unable to write file: 'Soubor nelze uložit'
Unknown data key: 'Neznámý datový klíč'
How do I import my subscriptions?: 'Jak mohu importovat své odebírané kanály?'
Manage Subscriptions: Spravovat odběry
Advanced Settings:
Advanced Settings: 'Rozšířené nastavení'
Enable Debug Mode (Prints data to the console): 'Povolit režim ladění (výstup
@ -277,6 +288,22 @@ Settings:
#& Yes
#& No
Proxy Settings:
Proxy Settings: Nastavení proxy
City: Město
Ip: IP
Your Info: Vaše informace
Enable Tor / Proxy: Povolit Tor / Proxy
Region: Region
Country: Země
Test Proxy: Otestovat proxy
Clicking on Test Proxy will send a request to: Kliknutím na Otestovat proxy se
odešle dotaz na
Proxy Port Number: Port proxy
Proxy Host: Adresa proxy
Proxy Protocol: Protokol proxy
Error getting network information. Is your proxy configured properly?: Chyba při
získávání informací o síti. Je vaše proxy správně nakonfigurována?
About:
#On About page
About: 'O aplikaci'
@ -308,6 +335,30 @@ About:
Latest FreeTube News: 'Nejnovější zprávy z FreeTube'
Licensed under the AGPLv3: Licencováno pod licencí AGPLv3
Source code: Zdrojový kód
Beta: Beta
Donate: Přispět
Credits: Poděkování
room rules: pravidla místnosti
Please read the: Prosím, přečtěte si
Chat on Matrix: Chat na síti Matrix
Mastodon: mastodon
Email: Email
Blog: Blog
Website: Webová stránka
FAQ: Často kladné dotazy
FreeTube Wiki: FreeTube Wiki
Downloads / Changelog: Ke stažení / Seznam změn
View License: Zobrazit licenci
Translate: Překlady
these people and projects: těmto lidem a projektům
FreeTube is made possible by: FreeTube je možné udělat díky
Please check for duplicates before posting: Před odesláním zkontrolujte duplicity
GitHub issues: Chyby na GitHub
Report a problem: Nahlásit problém
Help: Pomoc
GitHub releases: Vydaní na GitHub
Profile:
Profile Select: 'Výběr profilu'
All Channels: 'Všechny kanály'
@ -441,20 +492,20 @@ Video:
Oct: 'Říjen'
Nov: 'Listopad'
Dec: 'Prosinec'
Second: 'Sekunda'
Seconds: 'Sekundy'
Minute: 'Minuta'
Minutes: 'Minuty'
Hour: 'Hodina'
Hours: 'Hodiny'
Day: 'Den'
Days: 'Dny'
Week: 'Týden'
Weeks: 'Týdny'
Month: 'Měsíc'
Months: 'Měsíce'
Year: 'Rok'
Years: 'Roky'
Second: 'sekundou'
Seconds: 'sekundami'
Minute: 'minutou'
Minutes: 'minutami'
Hour: 'hodinou'
Hours: 'hodinami'
Day: 'dnem'
Days: 'dny'
Week: 'týdnem'
Weeks: 'týdny'
Month: 'měsícem'
Months: 'měsíci'
Year: 'rokem'
Years: 'lety'
Ago: 'Před'
Upcoming: 'Premiéra'
Published on: 'Publikováno'
@ -463,6 +514,10 @@ Video:
#& Videos
Started streaming on: Začátek vysílání
Streamed on: Vysíláno
Video has been saved: Video bylo uloženo
Save Video: Uložit video
Video has been removed from your saved list: Video bylo odstraněno z vašeho uloženého
seznamu
Videos:
#& Sort By
Sort By:

View File

@ -82,6 +82,13 @@ Most Popular: Am beliebtesten
Playlists: Wiedergabelisten
User Playlists:
Your Playlists: Deine Wiedergabelisten
Your saved videos are empty. Click on the save button on the corner of a video to have it listed here: Deine
gespeicherten Videos sind leer. Klicken Sie auf die Schaltfläche "Speichern" in
der Ecke eines Videos, damit es hier aufgelistet wird
Playlist Message: Diese Seite spiegelt nicht die vollständig funktionierenden Wiedergabelisten
wider. Sie listet nur Videos auf, die Sie gespeichert oder favorisiert haben.
Wenn die Arbeiten abgeschlossen sind, werden alle Videos, die sich derzeit hier
befinden, in eine Wiedergabeliste "Favoriten" migriert.
History:
# On History Page
History: Verlauf
@ -272,6 +279,7 @@ Settings:
Select Import Type: Wähle Importtyp
Data Settings: Dateneinstellungen
Check for Legacy Subscriptions: Prüfung auf Altabonnements
Manage Subscriptions: Abonnements verwalten
Distraction Free Settings:
Hide Live Chat: Live-Chat verbergen
Hide Popular Videos: Beliebte Videos verbergen
@ -286,6 +294,22 @@ Settings:
The app needs to restart for changes to take effect. Restart and apply change?: Um
die Änderungen anzuwenden muss die Anwendung neustarten. Jetzt neustarten und
Änderungen aktivieren?
Proxy Settings:
Ip: IP-Adresse
Error getting network information. Is your proxy configured properly?: Fehler
beim Abrufen von Netzwerkinformationen. Ist dein Proxy richtig konfiguriert?
City: Stadt
Region: Region / Bundesland
Country: Land / Nation
Your Info: Deine Info
Test Proxy: Proxy testen
Clicking on Test Proxy will send a request to: In dem du auf Proxy Testen klickst,
schickst du eine Anfrage an
Proxy Port Number: Proxy-Portnummer
Proxy Host: Proxy-Host
Proxy Protocol: Proxy-Protokoll
Enable Tor / Proxy: Tor / Proxy aktivieren
Proxy Settings: Proxy-Einstellungen
About:
#On About page
About: Über
@ -338,12 +362,29 @@ About:
Useful Links: Nützliche Links
Help: Hilfe
Contact: Kontakt
these people and projects: diesen Menschen und Projekten
FreeTube is made possible by: FreeTube wird ermöglicht von
Translate: Übersetzen
room rules: Raum-Regeln
Please read the: Bitte lese die
Chat on Matrix: Chatten bei Matrix
Mastodon: Mastodon
Please check for duplicates before posting: Bitte überprüfe vor dem absenden, ob
es Duplikate gibt
GitHub issues: GitHub Issues
Report a problem: Problem melden
FreeTube Wiki: FreeTube Wiki
GitHub releases: GitHub Veröffentlichungen
Downloads / Changelog: Downloads / Änderungsverlauf
View License: Lizenz einsehen
Licensed under the AGPLv3: Lizensiert unter der AGPLv3
Source code: Quellcode
Channel:
Subscriber: Abonnement
Subscribers: Abonnements
Subscribe: Abonnieren
Unsubscribe: Deabonnieren
Search Channel: Suche Kanal
Search Channel: Durchsuche Kanal
Your search results have returned 0 results: Deine Suche hat 0 Ergebnisse geliefert
Sort By: Sortiere nach
Videos:
@ -455,6 +496,10 @@ Video:
Open Channel in YouTube: Kanal auf YouTube öffnen
Started streaming on: Streaming angefangen am
Streamed on: Gestreamt am
Video has been removed from your saved list: Video wurde aus der Liste der gespeicherten
Videos entfernt
Video has been saved: Video wurde gespeichert
Save Video: Video speichern
Videos:
#& Sort By
Sort By:

View File

@ -69,6 +69,7 @@ Search Filters:
Search Results: Search Results
Fetching results. Please wait: Fetching results. Please wait
Fetch more results: Fetch more results
There are no more results for this search: There are no more results for this search
# Sidebar
Subscriptions:
# On Subscriptions Page
@ -86,8 +87,11 @@ Most Popular: Most Popular
Playlists: Playlists
User Playlists:
Your Playlists: Your Playlists
Playlist Message: This page is not reflective of fully working playlists. It only lists videos that you have saved or favorited. When the work has finished, all videos currently here will be migrated to a 'Favorites' playlist.
Your saved videos are empty. Click on the save button on the corner of a video to have it listed here: Your saved videos are empty. Click on the save button on the corner of a video to have it listed here
Playlist Message: This page is not reflective of fully working playlists. It only
lists videos that you have saved or favorited. When the work has finished, all
videos currently here will be migrated to a 'Favorites' playlist.
Your saved videos are empty. Click on the save button on the corner of a video to have it listed here: Your saved videos are empty. Click on the save button on the corner of a video to have
it listed here
History:
# On History Page
History: History
@ -123,6 +127,7 @@ Settings:
End: End
'Invidious Instance (Default is https://invidious.snopyta.org)': Invidious Instance
(Default is https://invidious.snopyta.org)
View all Invidious instance information: View all Invidious instance information
Region for Trending: Region for Trending
#! List countries
Theme Settings:

View File

@ -80,6 +80,11 @@ Most Popular: 'Más populares'
Playlists: 'Playlists'
User Playlists:
Your Playlists: 'Tus listas de reproducción'
Your saved videos are empty. Click on the save button on the corner of a video to have it listed here: Tus
favoritos están vacios. Haz click en la estrella de cada video para añadirlo aquí
Playlist Message: Esta página no refleja el estado final de las playlists, solo
muestra los videos guardados. En futuras actualizaciones, estos videos migrarán
a la playlist "Favoritos".
History:
# On History Page
History: 'Historial'
@ -233,6 +238,7 @@ Settings:
One or more subscriptions were unable to be imported: Una o varias de las suscripciones
no han podido ser importadas
Check for Legacy Subscriptions: Comprobar suscripciones Legacy
Manage Subscriptions: Administrar suscripciones
Advanced Settings:
Advanced Settings: 'Ajustes avanzados'
Enable Debug Mode (Prints data to the console): 'Activar modo de depuración (muestra
@ -273,6 +279,22 @@ Settings:
Hide Active Subscriptions: Ocultar suscripciones activas
The app needs to restart for changes to take effect. Restart and apply change?: ¿Quieres
reiniciar FreeTube ahora para aplicar los cambios?
Proxy Settings:
Error getting network information. Is your proxy configured properly?: Error al
obtener información sobre la red. ¿Has configurado el Proxy correctamente?
City: Ciudad
Region: Región
Country: País
Ip: IP
Your Info: Tu información
Test Proxy: Probar Proxy
Clicking on Test Proxy will send a request to: Al cliquear en "Probar Proxy" se
enviará una solicitud a
Proxy Port Number: Número de puerto del Proxy
Proxy Host: Host del Proxy
Proxy Protocol: Protocolo Proxy
Enable Tor / Proxy: Habilitar Tor / Proxy
Proxy Settings: Proxy
About:
#On About page
About: 'Acerca de'
@ -304,6 +326,31 @@ About:
Latest FreeTube News: 'Últimas noticias de FreeTube'
Donate: Donar
these people and projects: estas personas y proyectos
FreeTube is made possible by: FreeTube es posible gracias a
Credits: Créditos
Translate: Traducir
room rules: reglas de la sala
Please read the: Por favor, lee el
Chat on Matrix: Chat en Matrix
Mastodon: Mastodon
Email: Correo electrónico
Blog: Blog
Website: Página web
Please check for duplicates before posting: Por favor, antes de publicar asegúrate
de no duplicar temas
GitHub issues: Sugerencias en GitHub
Report a problem: Informar de un problema
FAQ: Preguntas frecuentes
FreeTube Wiki: Wiki de FreeTube
Help: Ayuda
GitHub releases: Lanzamientos de GitHub
Downloads / Changelog: Descargas / Changelog
View License: Ver licencia
Licensed under the AGPLv3: Licencia AGPLv3
Source code: Código fuente
Beta: Beta
Profile:
All Channels: 'Todos los canales'
Profile Manager: 'Administrador de perfiles'
@ -464,6 +511,10 @@ Video:
Open Channel in YouTube: Visitar canal en YouTube
Started streaming on: Comenzó a transmitir en
Streamed on: Transmitido en
Video has been removed from your saved list: El video ha sido eliminado de tu lista
de guardados
Video has been saved: El video ha sido guardado
Save Video: Guardiar video
Videos:
#& Sort By
Sort By:

View File

@ -63,6 +63,8 @@ Search Filters:
Fetching results. Please wait: 'Récupération des résultats. Veuillez patienter'
Fetch more results: 'Montrer plus de résultats'
# Sidebar
There are no more results for this search: Il n'y a plus de résultats pour cette
recherche
Subscriptions:
# On Subscriptions Page
Subscriptions: 'Abonnements'
@ -83,6 +85,13 @@ Most Popular: 'Les plus populaires'
Playlists: 'Listes de lecture'
User Playlists:
Your Playlists: 'Vos listes de lecture'
Your saved videos are empty. Click on the save button on the corner of a video to have it listed here: Vous
n'avez enregistré aucune vidéo. Cliquez sur le bouton Enregistrer dans le coin
d'une vidéo pour l'afficher ici
Playlist Message: Cette page ne reflète pas les listes de lecture entièrement fonctionnelles.
Elle ne répertorie que les vidéos que vous avez enregistrées ou mises en favoris.
Une fois le travail terminé, toutes les vidéos actuellement présentes ici seront
migrées vers une liste de lecture «Favoris».
History:
# On History Page
History: 'Historique'
@ -300,8 +309,8 @@ Settings:
Ip: Ip
Your Info: Vos informations
Test Proxy: Test du Proxy
Clicking on Test Proxy will send a request to: En cliquant sur Test Proxy, une
demande sera envoyée à
Clicking on Test Proxy will send a request to: En cliquant sur Test du Proxy,
une demande sera envoyée à
Proxy Port Number: Numéro de port du proxy
Proxy Host: Hôte du proxy
Proxy Protocol: Protocole du proxy
@ -358,13 +367,23 @@ About:
Beta: Bêta
Donate: Faire un don
Useful Links: Liens utiles
Translate: Traduire
Translate: Aidez-nous à traduire FreeTube
Chat on Matrix: Chatter sur Matrix
Mastodon: Mastodon
Report a problem: Signaler un problème
View License: Voir la license
Licensed under the AGPLv3: Sous licence AGPLv3
Source code: Code source
these people and projects: ces personnes et projets
FreeTube is made possible by: FreeTube est rendu possible par
room rules: règles du salon
Please read the: Veuillez lire les
Please check for duplicates before posting: Veuillez vérifier s'il y a des doublons
avant de poster
GitHub issues: Les problèmes identifiés par la communauté sur GitHub
FreeTube Wiki: Wiki de FreeTube
GitHub releases: Les différentes versions de FreeTube disponibles sur GitHub
Downloads / Changelog: Téléchargements / Journal des modifications
Channel:
Subscriber: 'Abonnement'
Subscribers: 'Abonnements'
@ -484,6 +503,10 @@ Video:
Open Channel in YouTube: Ouvrir la chaîne sur YouTube
Started streaming on: Diffusion lancée le
Streamed on: Diffusé le
Video has been removed from your saved list: La vidéo a été supprimée de votre liste
enregistrée
Video has been saved: La vidéo a été enregistrée
Save Video: Enregistrer la vidéo
Videos:
#& Sort By
Sort By:

View File

@ -70,6 +70,7 @@ Search Filters:
Fetching results. Please wait: 'נאספות תוצאות. נא להמתין'
Fetch more results: 'חיפוש תוצאות נוספות'
# Sidebar
There are no more results for this search: אין תוצאות נוספות לחיפוש הזה
Subscriptions:
# On Subscriptions Page
Subscriptions: 'מינויים'
@ -103,13 +104,12 @@ Settings:
General Settings: 'הגדרות כלליות'
Check for Updates: 'בדוק אם קיימים עדכונים'
Check for Latest Blog Posts: 'בדוק אם קיימים פוסטים חדשים בבלוג'
Fallback to Non-Preferred Backend on Failure: 'לסגת לממשק נסתר שאינו מועדף בעת
כשל'
Fallback to Non-Preferred Backend on Failure: 'נסיגה למנגנון שאינו מועדף בעת כשל'
Enable Search Suggestions: 'אפשר הצעות לחיפוש'
Default Landing Page: 'דף נחיתה כבררת מחדל'
Locale Preference: 'העדפת שפה'
Preferred API Backend:
Preferred API Backend: משק API נסתר מועדף'
Preferred API Backend: נגנון API מועדף'
Local API: 'API מקומי'
Invidious API: 'API של Invidious'
Video View Type:
@ -126,6 +126,7 @@ Settings:
(ברירת המחדל היא https://invidious.snopyta.org)'
Region for Trending: 'אזור לסרטונים חמים'
#! List countries
View all Invidious instance information: הצגת כל פרטי העותק של Invidious
Theme Settings:
Theme Settings: 'הגדרת מראה'
Match Top Bar with Main Color: 'התאמת האזור העליון לצבע הראשי'
@ -159,7 +160,7 @@ Settings:
Disable Smooth Scrolling: השבתת גלילה חלקה
Player Settings:
Player Settings: 'הגדרת נגן'
Force Local Backend for Legacy Formats: 'לכפות את הממשק הנסתר המקומי לתצורות המיושנות'
Force Local Backend for Legacy Formats: 'כפיית המנגנון לניגון בפורמטים ישנים'
Play Next Video: 'ניגון הסרטון הבא'
Turn on Subtitles by Default: 'הפעלת כתוביות כברירת מחדל'
Autoplay Videos: 'הפעלה אוטומטית לסרטונים'
@ -272,8 +273,8 @@ Settings:
Distraction Free Settings:
Hide Live Chat: הסתרת צ׳אט חי
Hide Popular Videos: הסתרת סרטונים נפוצים
Hide Trending Videos: הסתרת סרטונים חמים
Hide Recommended Videos: הסתרת סרטונים מומלצים
Hide Trending Videos: הסתרת הסרטונים החמים
Hide Recommended Videos: הסתרת הסרטונים המומלצים
Hide Comment Likes: הסתרת לייקים על תגובות
Hide Channel Subscribers: הסתרת מנויי הערוץ
Hide Video Likes And Dislikes: הסתרת לייקים ודיסלייקים לסרטון
@ -344,6 +345,22 @@ About:
Useful Links: קישורים שימושיים
Help: עזרה
Contact: יצירת קשר
these people and projects: האנשים והמיזמים האלו
FreeTube is made possible by: FreeTube זמין לך בזכות
Translate: תרגום
room rules: כללי החדר
Please read the: נא לקרוא את
Chat on Matrix: צ׳אט ב־Matrix
Mastodon: Mastodon
Please check for duplicates before posting: נא לבדוק כפילויות בטרם פרסום תקלה
GitHub issues: תקלות ב־GitHub
Report a problem: דיווח על תקלה
FreeTube Wiki: הוויקי של FreeTube
GitHub releases: מהדורות ב־GitHub
Downloads / Changelog: הורדות / יומן שינויים
View License: הצגת הרישיון
Licensed under the AGPLv3: בכפוף לרישיון AGPLv3
Source code: קוד מקור
Profile:
Profile Select: 'בחירת פרופיל'
All Channels: 'כל הערוצים'
@ -444,7 +461,7 @@ Video:
Enable Live Chat: 'אפשר צ''אט'
Live Chat is currently not supported in this build.: 'הצ''אט כרגע לא נתמך בגרסה
זו.'
'Chat is disabled or the Live Stream has ended.': 'הצ''אט נחסם או שהשידור החי נגמר.'
'Chat is disabled or the Live Stream has ended.': 'הצ׳אט נחסם או שהשידור החי נגמר.'
Live chat is enabled. Chat messages will appear here once sent.: 'הצ''אט מופעל.
ההודעות יופיעו פה כאשר יישלחו.'
'Live Chat is currently not supported with the Invidious API. A direct connection to YouTube is required.': 'מנגנון
@ -594,8 +611,8 @@ Tooltips:
Fallback to Non-Preferred Backend on Failure: כאשר ל־API המועדף עליך יש בעיה,
FreeTube ינסה להשתמש ב־API בעדיפות הנמוכה יותר באופן אוטומטי כשיטת נסיגה כאשר
האפשרות פעילה
Preferred API Backend: נא לבחור את המנגנון בו ישתמש FreeTube כדי לקבל נתונים.
ה־API המקומי הוא מחלץ מובנה. ה־API של Invidious דורש התחברות לשרת Invidious.
Preferred API Backend: נא לבחור את המנגנון לשימוש FreeTube כדי לקבל נתונים. ה־API
המקומי הוא מחלץ מובנה. ה־API של Invidious דורש התחברות לשרת Invidious.
Region for Trending: מגמות אזוריות מאפשר לך לבחור סרטונים חמים של איזו מדינה מעניין
אותך לראות. לא כל המדינות שמוצגות אכן נתמכות על ידי YouTube
Invidious Instance: העותק של Invidious שאליו FreeTube יתחבר לפניות API. מחיקת
@ -603,7 +620,7 @@ Tooltips:
Thumbnail Preference: כל התמונות הייצוגיות ברחבי FreeTube תוחלפנה בתמונית מתוך
הסרטון במקום התמונה הייצוגית כבררת המחדל
Player Settings:
Force Local Backend for Legacy Formats: עובד רק כאשר ה־API של Invidious הוא בררת
Force Local Backend for Legacy Formats: עובד רק כאשר ה־API של Invidious הוא ברירת
המחדל שלך. כאשר האפשרות פעילה, ה־API המקומי יופעל וישתמש בתצורות המיושנות שהוחזרו
על ידיו במקום באלו שהוחזרו על ידי Invidious. מועיל כאשר הסרטונים שמוחזרים על
ידי Invidious לא מתנגנים עקב מגבלות חוקיות במדינה

View File

@ -3,7 +3,7 @@ Locale Name: 'Hrvatski'
FreeTube: 'FreeTube'
# Currently on Subscriptions, Playlists, and History
'This part of the app is not ready yet. Come back later when progress has been made.': >-
Ovaj dio programa još nije spreman. Navrati kasnije.
Ovaj dio programa još nije gotov. Navrati kasnije.
# Webkit Menu Bar
File: 'Datoteka'
@ -33,7 +33,7 @@ Forward: 'Naprijed'
Search / Go to URL: 'Pretraži / Idi na URL'
# In Filter Button
Search Filters:
Search Filters: 'Filtri za pretraživanje'
Search Filters: 'Filtri pretrage'
Sort By:
Sort By: 'Redoslijed'
Most Relevant: 'Najrelevantniji'
@ -60,7 +60,7 @@ Search Filters:
Short (< 4 minutes): 'Kratko (< 4 min)'
Long (> 20 minutes): 'Dugo (> 20 min)'
# On Search Page
Search Results: 'Rezultati pretraživanja'
Search Results: 'Rezultati pretrage'
Fetching results. Please wait: 'Rezultati se dohvaćaju. Pričekaj'
Fetch more results: 'Dohvati još rezultata'
# Sidebar
@ -82,6 +82,12 @@ Most Popular: 'Najpopularniji'
Playlists: 'Zbirke'
User Playlists:
Your Playlists: 'Tvoje zbirke'
Your saved videos are empty. Click on the save button on the corner of a video to have it listed here: Nemaš
spremljenih videa. Pritisni gumb za spremanje u sličici videa, kako bi se video
ovdje prikazao
Playlist Message: Ova stranica ne odražava potpuno funkcionalne zbirke. Prikazuje
samo spremljena ili označena videa. Kad posao završi, svi trenutačno ovdje prisutni
videi premjestit će se u zbirku „Favoriti”.
History:
# On History Page
History: 'Povijest'
@ -94,7 +100,7 @@ Settings:
General Settings: 'Opće postavke'
Fallback to Non-Preferred Backend on Failure: 'U slučaju problema koristi sekundarni
pozadinski sustav'
Enable Search Suggestions: 'Aktiviraj prijedloge pretraživanja'
Enable Search Suggestions: 'Aktiviraj prijedloge pretrage'
Default Landing Page: 'Standardna odredišna stranica'
Locale Preference: 'Jezik'
Preferred API Backend:
@ -145,7 +151,7 @@ Settings:
Deep Orange: 'Tamnonarančasta'
Secondary Color Theme: 'Sekundarna boja teme'
#* Main Color Theme
UI Scale: Skaliranje korisničkog sučelja
UI Scale: Uvećanje korisničkog sučelja
Disable Smooth Scrolling: Deaktiviraj neisprekidano klizanje
Expand Side Bar by Default: Standardno proširi bočnu traku
Player Settings:
@ -181,10 +187,10 @@ Settings:
Privacy Settings: 'Postavke privatnosti'
Remember History: 'Zapamti povijest'
Save Watched Progress: 'Spremi napredak gledanja'
Clear Search Cache: 'Isprazni predmemoriju pretraživanja'
Clear Search Cache: 'Isprazni predmemoriju pretrage'
Are you sure you want to clear out your search cache?: 'Stvarno želiš isprazniti
predmemoriju pretraživanja?'
Search cache has been cleared: 'Predmemorija pretraživanja je ispražnjena'
predmemoriju pretrage?'
Search cache has been cleared: 'Predmemorija pretrage je ispražnjena'
Remove Watch History: 'Ukloni povijest gledanja'
Are you sure you want to remove your entire watch history?: 'Stvarno želiš ukloniti
cijelu povijest gledanja?'
@ -267,19 +273,36 @@ Settings:
One or more subscriptions were unable to be imported: Neuspio uvoz jedne ili više
pretplata
Check for Legacy Subscriptions: Potraži stare pretplate
Manage Subscriptions: Upravljaj pretplatama
Distraction Free Settings:
Hide Trending Videos: Sakrij videa u trendu
Hide Recommended Videos: Sakrij preporučena videa
Hide Channel Subscribers: Sakrij pretplatnike na kanal
Hide Live Chat: Sakrij chat u živo
Hide Live Chat: Sakrij razgovor uživo
Hide Popular Videos: Sakrij popularna videa
Hide Comment Likes: Sakrij ocjene komentara
Hide Video Likes And Dislikes: Sakrij ocjenjivanje videa
Hide Video Views: Sakrij broj gledanja videa
Distraction Free Settings: Postavke za nesmetan rad
Hide Active Subscriptions: Sakrij aktivne pretplate
The app needs to restart for changes to take effect. Restart and apply change?: Za
primjenu promjena, program se mora ponovo pokrenuti. Ponovo pokrenuti program?
The app needs to restart for changes to take effect. Restart and apply change?: Promjene
će se primijeniti nakon ponovnog pokeretanja programa. Ponovo pokrenuti program?
Proxy Settings:
Country: Zemlja
Error getting network information. Is your proxy configured properly?: Greška
pri dohvaćanju mrežnih podataka. Je li tvoj posrednik pravilno konfiguriran?
City: Grad
Region: Regija
Ip: IP
Your Info: Tvoji podaci
Test Proxy: Provjeri posrednika
Clicking on Test Proxy will send a request to: Pritiskom gumba „Provjeri posrednika”
šalje se zahtjev na
Proxy Port Number: Broj priključka posrednika
Proxy Host: Računalo posrednika
Proxy Protocol: Protokol posrednika
Enable Tor / Proxy: Aktiviraj Tor/Posrednik
Proxy Settings: Postavke posrednika
About:
#On About page
About: 'Informacije'
@ -328,6 +351,23 @@ About:
Useful Links: Korisne poveznice
Help: Pomoć
Contact: Kontakt
Chat on Matrix: Razgovaraj na Matrixu
Please check for duplicates before posting: Prije slanja greške, provjeri, je li
ista greška već prijavljena
these people and projects: ovi ljudi i projekti
FreeTube is made possible by: FreeTube omogućuju
Translate: Prevodi
room rules: pravila sobe
Please read the: Pročitaj
Mastodon: Mastodon
GitHub issues: GitHub problemi
Report a problem: Prijavi grešku
FreeTube Wiki: FreeTube Wiki
GitHub releases: GitHub izdanja
Downloads / Changelog: Preuzimanja/dnevnik promjena
View License: Pogledaj licencu
Licensed under the AGPLv3: AGPLv3 licenca
Source code: Izvorni kod
Profile:
All Channels: 'Svi kanali'
Profile Manager: 'Upravljač profila'
@ -418,15 +458,15 @@ Video:
# As in a Live Video
Live: 'Uživo'
Live Now: 'Sada uživo'
Live Chat: 'Chat uživo'
Enable Live Chat: 'Aktiviraj chat uživo'
Live Chat is currently not supported in this build.: 'Chat uživo trenutačno nije
podržan u ovoj verziji.'
'Chat is disabled or the Live Stream has ended.': 'Chat je deaktiviran ili je prijenos
uživo završio.'
Live chat is enabled. Chat messages will appear here once sent.: 'Chat uživo je
aktiviran. Poruke chata pojavit će se ovdje nakon slanja.'
'Live Chat is currently not supported with the Invidious API. A direct connection to YouTube is required.': 'Chat
Live Chat: 'Razgovor uživo'
Enable Live Chat: 'Aktiviraj razgovor uživo'
Live Chat is currently not supported in this build.: 'Razgovor uživo trenutačno
nije podržan u ovoj verziji.'
'Chat is disabled or the Live Stream has ended.': 'Razgovor je deaktiviran ili je
prijenos uživo završio.'
Live chat is enabled. Chat messages will appear here once sent.: 'Razgovor uživo
je aktiviran. Poruke razgovora pojavit će se ovdje nakon slanja.'
'Live Chat is currently not supported with the Invidious API. A direct connection to YouTube is required.': 'Razgovor
uživo trenutačno nije podržan s Invidious sučeljem. Potrebna je izravna veza s
YouTubeom.'
Published:
@ -484,6 +524,10 @@ Video:
Open Channel in YouTube: 'Otvori kanal na YouTube stranici'
Started streaming on: Početak prijenosa
Streamed on: Prijenos
Video has been removed from your saved list: Video je uklonjen iz tvojeg popisa
spremljenih
Video has been saved: Video je spremljen
Save Video: Spremi video
Videos:
#& Sort By
Sort By:
@ -588,10 +632,10 @@ Tooltips:
Player Settings:
Default Video Format: Postavi formate za reprodukciju videa. Dash formati mogu
reproducirati višu kvalitetu slike. Stari formati su ograničeni na 720 p, ali
su zato brži. Prijenosi audioformata sadrže samo audiosnimke
su zato brži. Audioformati sadrže samo audiosnimke
Proxy Videos Through Invidious: Za reprodukciju videa povezat će se s Invidiousom
umjesto izravnog povezivanja s YouTubeom. Zanemaruje postavke sučelja
Force Local Backend for Legacy Formats: Radi samo, kad postaviš Invidious kao
Force Local Backend for Legacy Formats: Radi samo, kad se Invidious postavi kao
standardno sučelje. Kad je aktivirano, lokalno sučelje će pokretati i koristiti
stare formate umjesto onih koje dostavlja Invidious. Pomaže u slučajevima, kad
je reprodukcija videa koje dostavlja Invidious u zemlji zabranjena/ograničena

View File

@ -71,6 +71,7 @@ Search Filters:
Fetching results. Please wait: 'Eredmények lekérése. Kis türelmet kérünk'
Fetch more results: 'További eredmények lekérése'
# Sidebar
There are no more results for this search: Nincs több találat erre a keresésre
Subscriptions:
# On Subscriptions Page
Subscriptions: 'Feliratkozások'
@ -90,6 +91,13 @@ Most Popular: 'Legnépszerűbbek'
Playlists: 'Lejátszási listák'
User Playlists:
Your Playlists: 'A lejátszási listáid'
Your saved videos are empty. Click on the save button on the corner of a video to have it listed here: A
mentett videók üresek. Kattintson a videó sarkában található mentés gombra, hogy
itt szerepeljen
Playlist Message: Ez az oldal nem tükrözi a teljesen működő lejátszási listákat.
Csak azokat a videókat sorolja fel, amelyeket Ön elmentett vagy a kedvencek közé
helyezett. A munka befejezése után az összes itt található videó átkerül a „Kedvencek”
lejátszási listára.
History:
# On History Page
History: 'Előzmények'
@ -125,6 +133,8 @@ Settings:
(Alapértelmezés: https://invidious.snopyta.org)'
Region for Trending: 'Népszerű területe'
#! List countries
View all Invidious instance information: Az Invidious példány összes tájékoztatásának
megtekintése
Theme Settings:
Theme Settings: 'Téma beállítások'
Match Top Bar with Main Color: 'Illessze a felső sávot a fő színnel'
@ -242,6 +252,7 @@ Settings:
Unknown data key: 'Ismeretlen adatkulcs'
How do I import my subscriptions?: 'Hogyan lehet importálni feliratkozásaimmal?'
Check for Legacy Subscriptions: Örökölt feliratkozások keresése
Manage Subscriptions: Feliratkozások kezelése
Advanced Settings:
Advanced Settings: 'További beállítások'
Enable Debug Mode (Prints data to the console): 'Hibakeresési mód engedélyezése
@ -284,6 +295,20 @@ Settings:
The app needs to restart for changes to take effect. Restart and apply change?: Az
alkalmazásnak újra kell indulnia, hogy a változtatások életbe lépjenek. Indítsa
újra és alkalmazza a módosítást?
Proxy Settings:
City: Helység
Region: Körzet
Country: Ország
Ip: IP-cím
Your Info: Az Ön adatai
Clicking on Test Proxy will send a request to: 'A Meghatalmazás-ellenőrzés gombra
kattintva kérést küld a következő címre:'
Test Proxy: Meghatalmazás-ellenőrzés
Proxy Port Number: Meghatalmazás kikötőszáma
Proxy Host: Meghatalmazás gazdaszámítógép
Proxy Protocol: Meghatalmazás protokoll
Enable Tor / Proxy: Tor/meghatalmazás engedélyezése
Proxy Settings: Meghatalmazás beállításai
About:
#On About page
About: 'Névjegy'

View File

@ -70,6 +70,8 @@ Search Filters:
Fetching results. Please wait: 'Mengambil hasil. Silakan tunggu'
Fetch more results: 'Ambil lebih banyak hasil'
# Sidebar
There are no more results for this search: Tidak ada hasil lagi untuk pencarian
ini
Subscriptions:
# On Subscriptions Page
Subscriptions: 'Langganan'
@ -87,6 +89,8 @@ Most Popular: 'Paling Populer'
Playlists: 'Daftar Putar'
User Playlists:
Your Playlists: 'Daftar Putar anda'
Your saved videos are empty. Click on the save button on the corner of a video to have it listed here: Penyimpanan
video Anda kosong. Klik tombol simpan pada pojok video untuk menyimpannya di sini
History:
# On History Page
History: 'Riwayat'
@ -122,6 +126,7 @@ Settings:
(Bawaan: https://invidious.snopyta.org)'
Region for Trending: 'Wilayah untuk Sedang Tren'
#! List countries
View all Invidious instance information: Lihat semua informasi situs Invidious
Theme Settings:
Theme Settings: 'Pengaturan Tema'
Match Top Bar with Main Color: 'Samakan Bilah Atas dengan Warna Utama'

View File

@ -62,6 +62,7 @@ Search Filters:
Fetching results. Please wait: '結果の取得中。お待ちください'
Fetch more results: 'もっと見る'
# Sidebar
There are no more results for this search: 検索結果は、これ以上ありません
Subscriptions:
# On Subscriptions Page
Subscriptions: '登録チャンネル'
@ -78,6 +79,8 @@ Most Popular: '人気'
Playlists: '再生リスト'
User Playlists:
Your Playlists: 'あなたの再生リスト'
Your saved videos are empty. Click on the save button on the corner of a video to have it listed here: 保存した動画はありません。一覧に表示させるには、ビデオの角にある保存ボタンをクリックする
Playlist Message: このページは、完全に動作するプレイリストではありません。保存またはお気に入りと設定した動画のみが表示されます。操作が完了すると、現在ここにあるすべての動画は「お気に入り」のプレイリストに移動します。
History:
# On History Page
History: '履歴'
@ -112,6 +115,7 @@ Settings:
#! List countries
Check for Latest Blog Posts: 新着ブログの確認
Check for Updates: 最新版の確認
View all Invidious instance information: すべての Invidious インスタンス情報の表示
Theme Settings:
Theme Settings: 'テーマの設定'
Match Top Bar with Main Color: '上部バーをメイン カラーと同じにする'
@ -250,6 +254,7 @@ Settings:
Data Settings: データ設定
One or more subscriptions were unable to be imported: いくつかの登録チャンネルはインポートできませんでした
Check for Legacy Subscriptions: 旧型式の登録チャンネルの確認
Manage Subscriptions: 登録チャンネルの管理
Distraction Free Settings:
Hide Live Chat: ライブチャットの非表示
Hide Popular Videos: 人気動画の非表示
@ -262,6 +267,20 @@ Settings:
Distraction Free Settings: 集中モード
Hide Active Subscriptions: 使用中の登録チャンネルの非表示
The app needs to restart for changes to take effect. Restart and apply change?: 変更の反映には、アプリの再起動が必要です。再起動して変更を適用しますか?
Proxy Settings:
Error getting network information. Is your proxy configured properly?: ネットワーク情報の取得中にエラーが発生しました。プロキシーを正しく設定してますか?
City: 都市名
Region: 地域
Country: 国名
Ip: Ip
Your Info: あなたの情報
Test Proxy: テスト プロキシー
Clicking on Test Proxy will send a request to: テスト プロキシーをクリックして、送信するリクエスト先は
Proxy Port Number: プロキシーのポート番号
Proxy Host: プロキシーのホスト
Proxy Protocol: プロキシーのプロトコル
Enable Tor / Proxy: Tor / プロキシーの有効化
Proxy Settings: プロキシーの設定
About:
#On About page
About: 'About'
@ -290,6 +309,30 @@ About:
Latest FreeTube News: 'FreeTube 新着情報'
#On Channel Page
Donate: 寄付
FreeTube is made possible by: FreeTube が実現できているのは
these people and projects: これらの人々とプロジェクト
Credits: クレジット
Translate: 翻訳
room rules: ルームの規則
Please read the: ご覧ください
Chat on Matrix: Matrix でチャット
Mastodon: Mastodon
Email: メール アドレス
Blog: ブログ
Website: WEB サイト
Please check for duplicates before posting: 投稿する前に重複を確認してください
GitHub issues: GitHub の課題ツール
Report a problem: 問題の報告
FAQ: よくある質問
FreeTube Wiki: FreeTube の Wiki
Help: ヘルプ
GitHub releases: GitHub リリース
Downloads / Changelog: ダウンロード / 変更ログ
View License: ライセンスの表示
Licensed under the AGPLv3: AGPLv3 の下でライセンス供与
Source code: ソースコード
Beta: ベータ
Channel:
Subscriber: '人の登録者'
Subscribers: '人の登録者'
@ -399,6 +442,9 @@ Video:
Open Channel in YouTube: YouTube でチャンネル表示
Started streaming on: ライブ配信の開始
Streamed on: ライブ配信
Video has been removed from your saved list: 動画を保存一覧から削除しました
Video has been saved: ビデオを保存しました
Save Video: 動画の保存
Videos:
#& Sort By
Sort By:

View File

@ -74,20 +74,22 @@ Subscriptions:
Subscriptions: '구독'
Latest Subscriptions: '최근 구독'
This profile has a large number of subscriptions. Forcing RSS to avoid rate limiting: '이
프로필에서 너무 많이 구독했습니다. RSS가 제한을 피할 수 있게 강제합니다'
프로필에서 최대 구독 제한을 초과 하였습니다. RSS 피드 구독 수신으로 전환 합니다.'
'Your Subscription list is currently empty. Start adding subscriptions to see them here.': '구독한
채널이 없습니다. 여기서 채널을 보려면 구독을 추가하세요.'
'Getting Subscriptions. Please wait.': '구독중입니다. 잠시만 기다려주세요.'
Refresh Subscriptions: '구독 새로고침'
채널이 없습니다. 구독 피드를 보려면 원하시는 채널을 구독하세요'
'Getting Subscriptions. Please wait.': '구독 목록을 가져오는 중입니다. 잠시만 기다려 주세요.'
Refresh Subscriptions: '구독 피드 새로 고침'
Load More Videos: '더 많은 동영상 불러오기'
Trending: '트렌'
Trending: '트렌'
Most Popular: '인기 동영상'
Playlists: '플레이리스트'
Playlists: '재생 목록'
User Playlists:
Your Playlists: '나의 플레이리스트'
Your Playlists: '나의 재생 목록'
Your saved videos are empty. Click on the save button on the corner of a video to have it listed here: 재생
목록이 없습니다. 영상의 오른쪽 아래에 있는 저장 버튼을 사용하여 재생 목록에 영상을 추가하세요
History:
# On History Page
History: '기록'
History: '재생 기록'
Watch History: '시청 기록'
Your history list is currently empty.: '기록이 없습니다.'
Settings:

View File

@ -1,5 +1,5 @@
# Put the name of your locale in the same language
Locale Name: 'کوردی'
Locale Name: 'kur-ckb'
FreeTube: 'فریتیوب'
# Currently on Subscriptions, Playlists, and History
'This part of the app is not ready yet. Come back later when progress has been made.': >-
@ -33,7 +33,7 @@ Forward: 'چونەپێشەوە'
Version $ is now available! Click for more details: 'ڤێرژنی $ ئێستا بەردەستە! کلیک
بکە بۆ زانیاری زیاتر'
Download From Site: 'دایبەزێنە لە سایتەکەوە'
A new blog is now available, $. Click to view more: 'بڵۆگێکە نوێ بەردەستە، $. کلیک
A new blog is now available, $. Click to view more: 'بڵۆگێکی نوێ بەردەستە، $. کلیک
بکە بۆ بینینی زیاتر'
# Search Bar
@ -43,7 +43,7 @@ Search Filters:
Search Filters: 'فیلتەری گەڕان'
Sort By:
Sort By: 'بگەڕی بە'
Most Relevant: ''
Most Relevant: 'گرنگترین'
Rating: 'ڕەیتینگ'
Upload Date: 'کاتی بڵاوکردنەوە'
View Count: 'ژماری بینراو'
@ -80,25 +80,35 @@ Subscriptions:
'Getting Subscriptions. Please wait.': 'بەشداریکراوەکان وەردەگیرێن. تکایە چاوەڕوان
بە.'
Refresh Subscriptions: 'بەشداریکراوەکان تازە بکەرەوە'
Trending: ''
Most Popular: ''
Playlists: ''
Load More Videos: ڤیدیۆی زیاتر بهێنە
This profile has a large number of subscriptions. Forcing RSS to avoid rate limiting: .ئەم
پرۆفایلە ژمارەیەکی زۆری هەیە لە سەبسکریپشن. بۆ دورکەوتنەوە لە سنوور دانان (رسس)
بەکاردەهێندرێت
Trending: 'زۆر باسکراو'
Most Popular: 'بەناوبانگترین'
Playlists: 'پلەیلیست'
User Playlists:
Your Playlists: ''
Your Playlists: 'پلیەلیستەکانت'
Your saved videos are empty. Click on the save button on the corner of a video to have it listed here: ڤیدیۆ
سەڤکراوەکانت بەتاڵن. کلیک لە دوگمەی سەیڤ کە لە سووچی ڤیدیۆیەک بۆ ئەوەی لێرە لیستکرێت
Playlist Message: ئەم پەیجە شێوەی کۆتایی پلەیلیستەکە دەرناخات. تەنها ڤیدیۆت پیشان
دەدات کە سیڤت کردووە یان فەیڤرتت کردووە. کاتێک کارەکە تەواو بووە، گشت ئەم ڤیدیۆیانەی
لێرەدان دەبرێنە لیستی 'فەیڤرتەکان'.
History:
# On History Page
History: ''
Watch History: ''
Your history list is currently empty.: ''
History: 'مێژوو'
Watch History: 'لیستی سەیرکراو'
Your history list is currently empty.: 'لیستی سەیرکراوەکانت بەتاڵە.'
Settings:
# On Settings Page
Settings: ''
Settings: 'دەستکاریکردن'
General Settings:
General Settings: ''
Check for Updates: ''
Check for Latest Blog Posts: ''
Fallback to Non-Preferred Backend on Failure: ''
Enable Search Suggestions: ''
General Settings: 'دەستکاریکردنی گشتی'
Check for Updates: 'بزانە تازەکاری هاتووە'
Check for Latest Blog Posts: 'چێکی تازەترین بلۆگ بکە'
Fallback to Non-Preferred Backend on Failure: 'گەڕانەوە بۆ سیستەمە ناخوازراوەکە
لەکاتی فەشەلدا'
Enable Search Suggestions: 'پێشنیارکردن بەکاربخە لەکاتی گەڕاندا'
Default Landing Page: ''
Locale Preference: ''
Preferred API Backend:
@ -216,10 +226,11 @@ Settings:
History object has insufficient data, skipping item: ''
All watched history has been successfully imported: ''
All watched history has been successfully exported: ''
Unable to read file: ''
Unable to write file: ''
Unknown data key: ''
How do I import my subscriptions?: ''
Unable to read file: 'ناتواندرێت فایلەکە بخوێندرێتەوە'
Unable to write file: 'ناتواندریت فایلەکە بنوسرێت'
Unknown data key: 'کلیلی داتای نەناسراو'
How do I import my subscriptions?: 'چۆن بەشدارییەکانم داخڵ بکەم؟'
Manage Subscriptions: بەشدارییەکانت رێکبخە
Advanced Settings:
Advanced Settings: ''
Enable Debug Mode (Prints data to the console): ''
@ -242,9 +253,28 @@ Settings:
#& Yes
#& No
Proxy Settings:
Error getting network information. Is your proxy configured properly?: کێشە لە
وەرگرتنی زانیاری نێتۆرک. ئایە پرۆکسێکەت بە رێکوپێکی رێکخراوە؟
City: شار
Region: ناوچە
Country: وڵات
Ip: ئەدرێسی ئەلکترۆنی
Your Info: زانیاریت
Test Proxy: تاقیکردنەوەی پرۆکسی
Clicking on Test Proxy will send a request to: کلیکردن لەسەر تێستی پرۆکسی داواکارییەک
دەنێریت بۆ
Proxy Port Number: ژمارەی پۆرتی پرۆکسی
Proxy Host: پرۆکسی بڵاوکەر
Proxy Protocol: پرۆتۆکۆڵی پڕۆکسی
Enable Tor / Proxy: تۆر/پرۆکسی بەکاربخە
Proxy Settings: گۆڕانکاری پرۆکسی
The app needs to restart for changes to take effect. Restart and apply change?: ئەم
ئەپڵیکەیشنە دەبێت دووبارە بکرێتەوە بۆ ئەوەی گۆڕانکارێکان بگانە ئەنجام. دووبارە
کردنەوە و چەسپکردنی گۆڕانکارێکان؟
About:
#On About page
About: ''
About: 'دەربارە'
#& About
'This software is FOSS and released under the GNU Affero General Public License v3.0.': ''
@ -264,27 +294,51 @@ About:
Latest FreeTube News: ''
Donate: دۆنەیشن
these people and projects: ئەم کەسانە و پڕۆژانە
FreeTube is made possible by: فریتوب بونی هەیە بەهۆی
Translate: تەرجومە
room rules: یاسای ژوورەکە
Please read the: تکایە شتەکە بخوێنەوە
Chat on Matrix: Matrix موناقەشە کە لە
Mastodon: ماستۆدۆن
Email: نامەی ئەلکترۆنی
Blog: بلۆگ
Website: وێبسایت
Please check for duplicates before posting: تکایە چێک بکە بۆ دووبارە پێش پۆستکردن
GitHub issues: GitHub کێشاکانی
Report a problem: کێشەیەک ڕاگەیەنە
FAQ: پرسیارانەی زۆر دەکرێن
FreeTube Wiki: ویکی فریتیوب
Help: یارمەتی
GitHub releases: GitHub دەرچونەکانی
Downloads / Changelog: دابەزاندنەکان / لیستی گۆڕانکاری
View License: قەیدەکە پیشاندە
Licensed under the AGPLv3: AGPLv3 دەرکراوە لەژیر
Source code: سەرچاوەی کۆد
Beta: تاقیکارییە
Profile:
Profile Select: ''
All Channels: ''
Profile Manager: ''
Create New Profile: ''
Edit Profile: ''
Color Picker: ''
Custom Color: ''
Profile Preview: ''
Create Profile: ''
Update Profile: ''
Make Default Profile: ''
Delete Profile: ''
Are you sure you want to delete this profile?: ''
All subscriptions will also be deleted.: ''
Profile could not be found: ''
Your profile name cannot be empty: ''
Profile has been created: ''
Profile has been updated: ''
Your default profile has been set to $: ''
Removed $ from your profiles: ''
Profile Select: 'پرۆفایلەکە دیاریکە'
All Channels: 'هەموو کەناڵەکان'
Profile Manager: 'ڕێخەری پڕۆفایل'
Create New Profile: 'پڕۆفایلێکی نوێ دروستبکە'
Edit Profile: 'پڕۆفایل دەستکاری بکە'
Color Picker: 'ڕەنگ هەڵبژاردەر'
Custom Color: 'رەنگی تایبەت'
Profile Preview: 'پڕۆفایل بیشاندە'
Create Profile: 'پرۆفایل دروستبکە'
Update Profile: 'پرۆفایل تازەبکەرەوە'
Make Default Profile: 'بیکە بە پڕۆفایلی ئەسایی'
Delete Profile: 'پڕۆفایلەکە بسڕەوە'
Are you sure you want to delete this profile?: 'ئایە دڵنیایت کە دەتەوێت ئەم پڕۆفایلە
بسڕیتەوە؟'
All subscriptions will also be deleted.: 'هەموو بەشداریکردنەکانیش بە هامەنشێوە دەسڕێنەوە.'
Profile could not be found: 'پڕۆفایلەکە ناتواندرێت بدۆزرێتەوە'
Your profile name cannot be empty: 'ناوی پڕۆفایلەکەت نابێت بەتاڵبێت'
Profile has been created: 'پڕۆفایلەکە دروستکرا'
Profile has been updated: 'پرۆفایلەکە تازەکرایەوە'
Your default profile has been set to $: 'پرۆفایلە ئاساییەکەت دانراوە بۆ $'
Removed $ from your profiles: 'سڕاوەتەوە لە پرۆفایلەکانت $'
Your default profile has been changed to your primary profile: ''
$ is now the active profile: ''
Subscription List: ''

View File

@ -83,6 +83,13 @@ Most Popular: 'Populair'
Playlists: 'Afspeellijsten'
User Playlists:
Your Playlists: 'Uw afspeellijsten'
Your saved videos are empty. Click on the save button on the corner of a video to have it listed here: Je
opgeslagen video's is leeg. Klik op de video opslaan knop in de hoek van een video
om het hier in de lijst te plaatsen
Playlist Message: Deze pagina is niet reflectief van volledig functionele afspeellijst.
Er worden alleen video's weergegeven die jij hebt opgeslagen of gefavoriet. Wanneer
we klaar zijn met de ontwikkeling van deze feature zullen al deze video's worden
gemigreerd naar de 'favorieten' afspeellijst.
History:
# On History Page
History: 'Geschiedenis'
@ -95,7 +102,7 @@ Settings:
General Settings: 'Algemene instellingen'
Fallback to Non-Preferred Backend on Failure: 'Val terug op een Niet-Voorkeur
Backend bij falen'
Enable Search Suggestions: 'Schakel Zoek Suggesties in'
Enable Search Suggestions: 'Zoeksuggesties Inschakelen'
Default Landing Page: 'Standaard Landingspagina'
Locale Preference: 'Locale Voorkeur'
Preferred API Backend:
@ -270,6 +277,7 @@ Settings:
All watched history has been successfully imported: De bekeken geschiedenis is
met succes geïmporteerd
Check for Legacy Subscriptions: Controleer op Legacy Abonnementen
Manage Subscriptions: Beheer Abonnementen
Distraction Free Settings:
Hide Live Chat: Verberg Live Chat
Hide Popular Videos: Verberg Populaire Video's
@ -284,6 +292,22 @@ Settings:
The app needs to restart for changes to take effect. Restart and apply change?: De
applicatie moet opnieuw opstarten om de veranderingen aan te brengen. Wilt u opnieuw
opstarten?
Proxy Settings:
Error getting network information. Is your proxy configured properly?: Fout bij
het opvragen van netwerk informatie. Is uw proxy correct geconfigureerd?
City: Stad
Region: Regio
Country: Land
Ip: Ip
Your Info: Uw Informatie
Test Proxy: Test Proxy
Clicking on Test Proxy will send a request to: Door op Test Proxy te klikken zal
er een request worden verstuurd naar
Proxy Port Number: Proxy Poortnummer
Proxy Host: Proxy Host
Proxy Protocol: Proxy Protocol
Enable Tor / Proxy: Tor / Proxy Inschakelen
Proxy Settings: Proxy Instellingen
About:
#On About page
About: 'Over'
@ -316,6 +340,31 @@ About:
Latest FreeTube News: 'Laatste FreeTube nieuws'
#On Channel Page
Donate: Doneer
these people and projects: deze mensen en project
FreeTube is made possible by: FreeTube is mogelijk gemaakt door
Credits: Met dank aan
Translate: Vertalen
room rules: room regels
Please read the: Lees alstublieft de
Chat on Matrix: Chat op Matrix
Mastodon: Mastodon
Email: Email
Blog: Blog
Website: Website
Please check for duplicates before posting: Controleer op duplicaten voordat u een
issue post
GitHub issues: GitHub issues
Report a problem: Rapporteer een probleem
FAQ: Veelgestelde vragen
FreeTube Wiki: FreeTube Wiki
Help: Hulp
GitHub releases: GitHub releases
Downloads / Changelog: Downloads / Changelog
View License: Bekijk Licentie
Licensed under the AGPLv3: Vrijgegeven onder de AGPLv3 licentie
Source code: Broncode
Beta: Beta
Channel:
Subscriber: 'Abonnee'
Subscribers: 'Abonnees'
@ -433,6 +482,10 @@ Video:
Open Channel in YouTube: Open Kanaal op YouTube
Started streaming on: Gestart met streamen op
Streamed on: Gestreamd op
Video has been removed from your saved list: Video is verwijderd uit uw opgeslagen
video's lijst
Video has been saved: Video is opgeslagen
Save Video: Video Opslaan
Videos:
#& Sort By
Sort By:

View File

@ -82,6 +82,13 @@ Most Popular: 'Popularne'
Playlists: 'Playlisty'
User Playlists:
Your Playlists: 'Twoje playlisty'
Your saved videos are empty. Click on the save button on the corner of a video to have it listed here: Nie
masz zachowanych filmów. Kliknij przycisk „Zachowaj” w rogu filmu, aby został
tu wymieniony.
Playlist Message: Ta strona nie odzwierciedla w pełni działających playlist. Są
tu jedynie wymienione filmy, które zachowałeś lub oznaczyłeś jako ulubione. Kiedy
prace nad tą stroną zostaną zakończone, wszystkie filmy tu obecne zostaną przeniesione
do playlisty „Ulubione”.
History:
# On History Page
History: 'Historia'
@ -269,7 +276,7 @@ Settings:
Select Import Type: Wybierz typ importu
Data Settings: Ustawienia danych
One or more subscriptions were unable to be imported: Nie można było zaimportować
conajmniej jednej subskrypcji
co najmniej jednej subskrypcji
Check for Legacy Subscriptions: Sprawdź subskrypcje ze starej wersji
Manage Subscriptions: Zarządzaj subskrypcjami
Distraction Free Settings:
@ -351,6 +358,22 @@ About:
Useful Links: Przydatne linki
Help: Pomoc
Contact: Kontakt
these people and projects: tym ludziom i projektom
Translate: Przetłumacz
room rules: zasady pokoju
Chat on Matrix: Czat na Matrix
Mastodon: Mastodon
Please read the: Proszę przeczytać
Please check for duplicates before posting: Proszę poszukać duplikatów przed wysłaniem
GitHub issues: problemy na GitHub
Report a problem: Zgłoś problem
FreeTube Wiki: Wiki FreeTube
GitHub releases: wydania na GitHub
Downloads / Changelog: Wydania / Lista zmian
View License: Zobacz licencję
Licensed under the AGPLv3: Na licencji AGPLv3
Source code: Kod źródłowy
FreeTube is made possible by: FreeTube powstał dzięki
Channel:
Subscriber: 'Subskrybent/ka'
Subscribers: 'subskrybentów'
@ -469,6 +492,10 @@ Video:
Open Channel in YouTube: Otwórz kanał na stronie YouTube
Started streaming on: Rozpoczęto transmitowanie dnia
Streamed on: Transmitowane dnia
Video has been removed from your saved list: Film został usunięty z twojej listy
zachowanych
Video has been saved: Film został zachowany
Save Video: Zachowaj film
Videos:
#& Sort By
Sort By:

View File

@ -63,6 +63,8 @@ Search Filters:
Fetching results. Please wait: 'Načítavajú sa výsledky. Prosím čakajte'
Fetch more results: 'Načítať viac výsledkov'
# Sidebar
There are no more results for this search: Pre toto hľadanie nie sú k dispozícii
žiadne ďalšie výsledky
Subscriptions:
# On Subscriptions Page
Subscriptions: 'Odbery'
@ -80,6 +82,11 @@ Most Popular: 'Najpopulárnejšie'
Playlists: 'Zoznamy'
User Playlists:
Your Playlists: 'Vaše zoznamy'
Your saved videos are empty. Click on the save button on the corner of a video to have it listed here: Vaše
uložené videá sú prázdne. Kliknutím na tlačidlo uložiť v rohu videa ho tu zobrazíte
Playlist Message: Táto stránka neodráža plne funkčné zoznamy videí. Uvádza iba zoznam
videí, ktoré ste uložili alebo zaradili medzi obľúbené. Po dokončení práce sa
všetky videá, ktoré sa tu nachádzajú, migrujú do zoznamu „Obľúbené“.
History:
# On History Page
History: 'História'
@ -252,6 +259,7 @@ Settings:
Select Export Type: Vybrať typ exportu
Select Import Type: Vybrať typ importu
Data Settings: Nastavenia dát
Manage Subscriptions: Spravovať odbery
Distraction Free Settings:
Hide Live Chat: Skryť živý chat
Hide Popular Videos: Skryť populárne videá
@ -262,6 +270,7 @@ Settings:
Hide Video Likes And Dislikes: Skryť palce hore a dolu na videách
Hide Video Views: Skryť počet zhliadnutí
Distraction Free Settings: Nastavenia nerušenia
Hide Active Subscriptions: Skryť aktívne odbery
Privacy Settings:
Are you sure you want to remove all subscriptions and profiles? This cannot be undone.: Naozaj
chcete odstrániť všetky odbery a profily? Toto je nenávratná akcia.
@ -279,6 +288,22 @@ Settings:
Search cache has been cleared: Vyrovnávacia pamäť vyhľadávania bola vymazaná
The app needs to restart for changes to take effect. Restart and apply change?: Aplikácia
požaduje reštartovanie aby sa prejavili zmeny. Reštartovať a aplikovať zmeny?
Proxy Settings:
Error getting network information. Is your proxy configured properly?: Chyba pri
získavaní informácií o sieti. Je váš server proxy správne nakonfigurovaný?
City: Mesto
Region: Región
Country: Krajina
Ip: Internetový Protokol
Your Info: Informácie o Vás
Test Proxy: Vyskúšať proxy
Clicking on Test Proxy will send a request to: Kliknutím na "Vyskúšať Proxy" pošlete
žiadosť do
Proxy Port Number: Číslo portu proxy servera
Proxy Host: Proxy Hosť
Proxy Protocol: Proxy Protokol
Enable Tor / Proxy: Povoliť Tor / server Proxy
Proxy Settings: Nastavenia servera proxy
About:
#On About page
About: 'O FreeTube'
@ -311,6 +336,31 @@ About:
Latest FreeTube News: 'Najnovšie správy o FreeTube'
#On Channel Page
FreeTube Wiki: Wiki FreeTube
Help: Pomoc
GitHub releases: Vydania na GitHube
Downloads / Changelog: Súbory na stiahnutie / Zoznam zmien
View License: Zobraziť licenciu
Licensed under the AGPLv3: Na základe licencie AGPLv3
Beta: Testovacia verzia
Source code: Zdrojový kód
GitHub issues: Problémy z GitHubu
Report a problem: Nahlásiť problém
FAQ: Otázky a odpovede
Donate: Darujte
FreeTube is made possible by: FreeTube umožňujú
these people and projects: títo ľudia a projekty
Credits: Zásluhy
Translate: Preložiť
room rules: pravidlá miestností
Please read the: Prečítajte si
Chat on Matrix: Napíšte nám na Matrix-e
Mastodon: Mastodon
Email: Elektronická pošta
Blog: Blog
Website: Webstránka
Please check for duplicates before posting: Pred odoslaním prosím skontrolujte duplicitné
otázky
Channel:
Subscriber: 'Odberateľ'
Subscribers: 'Odberateľov'
@ -341,6 +391,7 @@ Channel:
Added channel to your subscriptions: Kanál bol pridaný k vašim odberom
Channel has been removed from your subscriptions: Kanál bol odstránený z vašich
odberov
Removed subscription from $ other channel(s): Odstránené predplatné z $ iných kanálov
Video:
Mark As Watched: 'Označiť ako zhliadnuté'
Remove From History: 'Vymazať z histórie'
@ -352,7 +403,7 @@ Video:
Copy YouTube Embedded Player Link: 'Skopírovať link na vložený prehrávač Youtube'
Open in Invidious: 'Otvoriť v Invidious'
Copy Invidious Link: 'Skopírovať Invidious linku'
View: ''
View: 'Pozrieť'
Views: 'Zhliadnutí'
# Context is "X People Watching"
Watching: 'Sleduje'
@ -426,6 +477,9 @@ Video:
Open Channel in Invidious: Otvoriť kanál v Invidious
Copy YouTube Channel Link: Skopírovať Youtube link na kanál
Open Channel in YouTube: Otvoriť kanál v Youtube
Video has been removed from your saved list: Video odstránené z uložených
Video has been saved: Video uložené
Save Video: Uložiť Video
Videos:
#& Sort By
Sort By:

View File

@ -87,6 +87,12 @@ Most Popular: 'Mest populära'
Playlists: 'Spellistor'
User Playlists:
Your Playlists: 'Dina spellistor'
Your saved videos are empty. Click on the save button on the corner of a video to have it listed here: Dina
sparade videor är tomma. Klicka på sparknappen på hörnet av en video för att få
den listad här
Playlist Message: Den här sidan är inte reflekterande av fullt fungerande spellistor.
Den listar bara videor som du har sparat eller favorited. När arbetet är klart
kommer alla videor som för närvarande här att migreras till en spellista för 'Favoriter'.
History:
# On History Page
History: 'Historik'
@ -237,6 +243,7 @@ Settings:
Unknown data key: 'Okänd datanyckel'
How do I import my subscriptions?: 'Hur importerar jag mina prenumerationer?'
Check for Legacy Subscriptions: Sök efter Legacy prenumerationer
Manage Subscriptions: Hantera prenumerationer
Advanced Settings:
Advanced Settings: 'Avancerade inställningar'
Enable Debug Mode (Prints data to the console): 'Aktivera felsökningsläge (Skriver
@ -274,8 +281,25 @@ Settings:
Hide Channel Subscribers: Dölj kanalprenumeranter
Hide Video Views: Dölj videovisningar
Distraction Free Settings: Distraktionsfri
Hide Active Subscriptions: Dölj aktiva prenumerationer
The app needs to restart for changes to take effect. Restart and apply change?: Starta
om FreeTube nu för att tillämpa ändringarna?
Proxy Settings:
Error getting network information. Is your proxy configured properly?: Fel uppstod
när nätverksinformationen skulle komma. Är din proxy konfigurerad på rätt sätt?
City: Stad
Region: Område
Country: Land
Ip: IP
Your Info: Din info
Test Proxy: Testa proxy
Clicking on Test Proxy will send a request to: Om du klickar på TestProxy skickas
en begäran till
Proxy Port Number: Proxy-portnummer
Proxy Host: Proxy Host
Proxy Protocol: Proxy-protokoll
Enable Tor / Proxy: Aktivera Tor / Proxy
Proxy Settings: Proxy
About:
#On About page
About: 'Om'
@ -307,6 +331,31 @@ About:
Latest FreeTube News: 'Senaste FreeTube Nyheter'
Donate: Donera
these people and projects: dessa människor och projekt
FreeTube is made possible by: FreeTube möjliggörs av
Credits: Krediter
Translate: Översätta
room rules: rumsregler
Please read the: Vänligen läs
Chat on Matrix: Chatta på Matrix
Mastodon: Mastodon
Email: E-post
Blog: Blogg
Website: Webbsida
Please check for duplicates before posting: Vänligen kontrollera om dubbletter innan
du postar
GitHub issues: GitHub-problem
Report a problem: Rapportera ett problem
FAQ: Frågor och svar
FreeTube Wiki: FreeTube Wiki
Help: Hjälp
GitHub releases: GitHub releases
Downloads / Changelog: Nedladdningar / Changelog
View License: Visa licens
Licensed under the AGPLv3: Licensierad under AGPLv3
Source code: källkod
Beta: Beta
Profile:
Profile Select: 'Välj profil'
All Channels: 'Alla kanaler'
@ -463,6 +512,12 @@ Video:
Open Channel in Invidious: Öppna kanalen i Invidious
Copy YouTube Channel Link: Kopiera YouTube-kanallänk
Open Channel in YouTube: Öppna kanal i YouTube
Started streaming on: Började streamas på
Streamed on: Strömmas på
Video has been removed from your saved list: Videon har tagits bort från din sparade
lista
Video has been saved: Videon har sparats
Save Video: Spara video
Videos:
#& Sort By
Sort By:

View File

@ -70,6 +70,7 @@ Search Filters:
Fetching results. Please wait: 'Sonuçlar yükleniyor. Lütfen bekleyin'
Fetch more results: 'Daha fazla sonuç yükle'
# Sidebar
There are no more results for this search: Bu arama için başka sonuç yok
Subscriptions:
# On Subscriptions Page
Subscriptions: 'Abonelikler'
@ -124,10 +125,11 @@ Settings:
Beginning: 'Başlangıç'
Middle: 'Orta'
End: 'Bitiş'
'Invidious Instance (Default is https://invidious.snopyta.org)': 'Invidious Oluşumu
'Invidious Instance (Default is https://invidious.snopyta.org)': 'Invidious Örneği
(Varsayılan https://invidious.snopyta.org)'
Region for Trending: 'Trendler İçin Ülke Tercihi'
Region for Trending: 'Trendler İçin Bölge Tercihi'
#! List countries
View all Invidious instance information: Tüm Invidious örnek bilgilerini görüntüle
Theme Settings:
Theme Settings: 'Tema Ayarları'
Match Top Bar with Main Color: 'Üst Barı Ana Renk ile Eşleştir'
@ -135,9 +137,9 @@ Settings:
Base Theme: 'Uygulama Teması'
Black: 'Siyah'
Dark: 'Koyu'
Light: 'Aydınlık'
Light: 'Açık'
Main Color Theme:
Main Color Theme: 'Ana Renk'
Main Color Theme: 'Ana Renk Teması'
Red: 'Kırmızı'
Pink: 'Pembe'
Purple: 'Mor'
@ -154,7 +156,7 @@ Settings:
Amber: 'Kehribar Rengi'
Orange: 'Turuncu'
Deep Orange: 'Koyu Turuncu'
Secondary Color Theme: 'İkincil Renk'
Secondary Color Theme: 'İkincil Renk Teması'
#* Main Color Theme
UI Scale: Kullanıcı Arayüzü Ölçeği
Expand Side Bar by Default: Yan Çubuğu Öntanımlı Olarak Genişlet
@ -173,7 +175,7 @@ Settings:
Default Playback Rate: 'Varsayılan Oynatma Hızı'
Default Video Format:
Default Video Format: 'Varsayılan Video Biçimi'
Dash Formats: 'Dash Biçimi'
Dash Formats: 'Dash Biçimleri'
Legacy Formats: 'Eski Biçimler'
Audio Formats: 'Ses Biçimi'
Default Quality:
@ -352,6 +354,23 @@ About:
Useful Links: Faydalı Bağlantılar
Help: Yardım
Contact: İletişim
these people and projects: bu kişiler ve projeler
FreeTube is made possible by: FreeTube'e katkıda bulunanlar
Translate: Çevir
room rules: oda kuralları
Please read the: Lütfen okuyun
Chat on Matrix: Matrix'te sohbet et
Mastodon: Mastodon
Please check for duplicates before posting: Lütfen göndermeden önce yinelenmeleri
denetleyin
GitHub issues: GitHub sorunları
Report a problem: Sorun bildir
FreeTube Wiki: FreeTube Wiki
GitHub releases: GitHub yayınları
Downloads / Changelog: İndirmeler / Değişiklikler
View License: Lisansı Görüntüle
Licensed under the AGPLv3: AGPLv3 altında lisanslanmıştır
Source code: Kaynak kodları
Profile:
Profile Select: 'Profil Seçimi'
All Channels: 'Tüm Kanallar'
@ -625,9 +644,9 @@ Tooltips:
tarafından döndürülen videolar ülke kısıtlamaları nedeniyle oynatılmadığında
yardımcı olur
General Settings:
Invidious Instance: FreeTube'un API çağrıları için bağlanacağı Invidious sunucusu.
Aralarından seçim yapabileceğiniz herkese açık sunucuların bir listesini görmek
için geçerli sunucuyu temizleyin
Invidious Instance: FreeTube'un API çağrıları için bağlanacağı Invidious örneği.
Aralarından seçim yapabileceğiniz herkese açık örneklerin bir listesini görmek
için geçerli örneği temizleyin
Thumbnail Preference: FreeTube'daki tüm küçük resimler, öntanımlı küçük resim
yerine videonun bir karesiyle değiştirilecektir
Fallback to Non-Preferred Backend on Failure: Etkinleştirildiğinde, tercih ettiğiniz

View File

@ -62,6 +62,7 @@ Search Filters:
Fetching results. Please wait: '擷取結果中。請稍候'
Fetch more results: '擷取更多結果'
# Sidebar
There are no more results for this search: 此搜尋無更多結果
Subscriptions:
# On Subscriptions Page
Subscriptions: '訂閱'
@ -319,6 +320,22 @@ About:
Useful Links: 有用連結
Help: 說明
Contact: 聯絡
these people and projects: 這些人與專案
FreeTube is made possible by: FreeTube 被做出來是因為
Translate: 翻譯
room rules: 聊天室規則
Please read the: 請閱讀
Chat on Matrix: 在 Matrix 上聊天
Mastodon: Mastodon
Please check for duplicates before posting: 張貼前請檢查有無重複
GitHub issues: GitHub 議題
Report a problem: 回報問題
FreeTube Wiki: FreeTube Wiki
GitHub releases: GitHub 版本
Downloads / Changelog: 下載 / 變更紀錄
View License: 檢視授權條款
Licensed under the AGPLv3: 以 AGPLv3 授權
Source code: 原始碼
Channel:
Subscriber: '訂閱者'
Subscribers: '訂閱者'