Compare commits

...

34 Commits

Author SHA1 Message Date
J. Lavoie
53bd699e8d Translated using Weblate (French)
Currently translated at 100.0% (978 of 978 strings)

Co-authored-by: J. Lavoie <j.lavoie@net-c.ca>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/fr/
Translation: FreeTube/Translations
2025-10-25 22:02:48 +00:00
ℂ𝕠𝕠𝕠𝕝 (𝕘𝕚𝕥𝕙𝕦𝕓.𝕔𝕠𝕞/ℂ𝕠𝕠𝕠𝕝)
8fc7b357c6 Translated using Weblate (Latvian)
Currently translated at 56.2% (550 of 978 strings)

Co-authored-by: ℂ𝕠𝕠𝕠𝕝 (𝕘𝕚𝕥𝕙𝕦𝕓.𝕔𝕠𝕞/ℂ𝕠𝕠𝕠𝕝) <coool@mail.lv>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/lv/
Translation: FreeTube/Translations
2025-10-25 17:02:49 +02:00
ℂ𝕠𝕠𝕠𝕝 (𝕘𝕚𝕥𝕙𝕦𝕓.𝕔𝕠𝕞/ℂ𝕠𝕠𝕠𝕝)
78624fde9c Translated using Weblate (Latvian)
Currently translated at 56.3% (551 of 978 strings)

Co-authored-by: ℂ𝕠𝕠𝕠𝕝 (𝕘𝕚𝕥𝕙𝕦𝕓.𝕔𝕠𝕞/ℂ𝕠𝕠𝕠𝕝) <coool@mail.lv>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/lv/
Translation: FreeTube/Translations
2025-10-25 15:02:42 +02:00
danssmnt
8714cff13b Translated using Weblate (Portuguese (Portugal))
Currently translated at 100.0% (978 of 978 strings)

Co-authored-by: danssmnt <danimunt07@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/pt_PT/
Translation: FreeTube/Translations
2025-10-25 03:03:03 +02:00
dependabot[bot]
46da1cf840 Bump lefthook from 1.13.6 to 2.0.0 (#8166)
Bumps [lefthook](https://github.com/evilmartians/lefthook) from 1.13.6 to 2.0.0.
- [Release notes](https://github.com/evilmartians/lefthook/releases)
- [Changelog](https://github.com/evilmartians/lefthook/blob/master/CHANGELOG.md)
- [Commits](https://github.com/evilmartians/lefthook/compare/v1.13.6...v2.0.0)

---
updated-dependencies:
- dependency-name: lefthook
  dependency-version: 2.0.0
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-22 11:40:03 +02:00
dependabot[bot]
ade259b9bc Bump the eslint group with 4 updates (#8158)
Bumps the eslint group with 4 updates: [@eslint/js](https://github.com/eslint/eslint/tree/HEAD/packages/js), [eslint](https://github.com/eslint/eslint), [eslint-plugin-jsdoc](https://github.com/gajus/eslint-plugin-jsdoc) and [eslint-plugin-vue](https://github.com/vuejs/eslint-plugin-vue).


Updates `@eslint/js` from 9.37.0 to 9.38.0
- [Release notes](https://github.com/eslint/eslint/releases)
- [Commits](https://github.com/eslint/eslint/commits/v9.38.0/packages/js)

Updates `eslint` from 9.37.0 to 9.38.0
- [Release notes](https://github.com/eslint/eslint/releases)
- [Commits](https://github.com/eslint/eslint/compare/v9.37.0...v9.38.0)

Updates `eslint-plugin-jsdoc` from 61.1.1 to 61.1.4
- [Release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases)
- [Changelog](https://github.com/gajus/eslint-plugin-jsdoc/blob/main/.releaserc)
- [Commits](https://github.com/gajus/eslint-plugin-jsdoc/compare/v61.1.1...v61.1.4)

Updates `eslint-plugin-vue` from 10.5.0 to 10.5.1
- [Release notes](https://github.com/vuejs/eslint-plugin-vue/releases)
- [Changelog](https://github.com/vuejs/eslint-plugin-vue/blob/master/CHANGELOG.md)
- [Commits](https://github.com/vuejs/eslint-plugin-vue/compare/v10.5.0...v10.5.1)

---
updated-dependencies:
- dependency-name: "@eslint/js"
  dependency-version: 9.38.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: eslint
- dependency-name: eslint
  dependency-version: 9.38.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: eslint
- dependency-name: eslint-plugin-jsdoc
  dependency-version: 61.1.4
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: eslint
- dependency-name: eslint-plugin-vue
  dependency-version: 10.5.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: eslint
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-21 06:28:11 +08:00
ColorfulRhino
a29031faec Translated using Weblate (German)
Currently translated at 100.0% (978 of 978 strings)

Co-authored-by: ColorfulRhino <131405023+ColorfulRhino@users.noreply.github.com>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/de/
Translation: FreeTube/Translations
2025-10-21 00:02:46 +02:00
dependabot[bot]
c718ab2a3f Bump shaka-player from 4.16.4 to 4.16.6 (#8167)
* Bump shaka-player from 4.16.4 to 4.16.6

Bumps [shaka-player](https://github.com/shaka-project/shaka-player) from 4.16.4 to 4.16.6.
- [Release notes](https://github.com/shaka-project/shaka-player/releases)
- [Changelog](https://github.com/shaka-project/shaka-player/blob/v4.16.6/CHANGELOG.md)
- [Commits](https://github.com/shaka-project/shaka-player/compare/v4.16.4...v4.16.6)

---
updated-dependencies:
- dependency-name: shaka-player
  dependency-version: 4.16.6
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* Revert "Fix playback rate reset when video ends (#7718)"

This reverts commit d4117344e4.

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: efb4f5ff-1298-471a-8973-3d47447115dc <73130443+efb4f5ff-1298-471a-8973-3d47447115dc@users.noreply.github.com>
2025-10-20 19:50:04 +00:00
dependabot[bot]
963f42825d Bump marked from 16.4.0 to 16.4.1 (#8159)
Bumps [marked](https://github.com/markedjs/marked) from 16.4.0 to 16.4.1.
- [Release notes](https://github.com/markedjs/marked/releases)
- [Changelog](https://github.com/markedjs/marked/blob/master/.releaserc.json)
- [Commits](https://github.com/markedjs/marked/compare/v16.4.0...v16.4.1)

---
updated-dependencies:
- dependency-name: marked
  dependency-version: 16.4.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-20 15:29:21 +02:00
dependabot[bot]
8b63948bbb Bump electron from 38.2.2 to 38.3.0 (#8161)
Bumps [electron](https://github.com/electron/electron) from 38.2.2 to 38.3.0.
- [Release notes](https://github.com/electron/electron/releases)
- [Changelog](https://github.com/electron/electron/blob/main/docs/breaking-changes.md)
- [Commits](https://github.com/electron/electron/compare/v38.2.2...v38.3.0)

---
updated-dependencies:
- dependency-name: electron
  dependency-version: 38.3.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-20 14:30:39 +02:00
dependabot[bot]
e6599cfb30 Bump actions/setup-node from 5 to 6 (#8162)
Bumps [actions/setup-node](https://github.com/actions/setup-node) from 5 to 6.
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](https://github.com/actions/setup-node/compare/v5...v6)

---
updated-dependencies:
- dependency-name: actions/setup-node
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-20 14:29:51 +02:00
dependabot[bot]
c5b0be28c4 Bump youtubei.js from 16.0.0 to 16.0.1 (#8163)
Bumps [youtubei.js](https://github.com/LuanRT/YouTube.js) from 16.0.0 to 16.0.1.
- [Release notes](https://github.com/LuanRT/YouTube.js/releases)
- [Changelog](https://github.com/LuanRT/YouTube.js/blob/main/CHANGELOG.md)
- [Commits](https://github.com/LuanRT/YouTube.js/compare/v16.0.0...v16.0.1)

---
updated-dependencies:
- dependency-name: youtubei.js
  dependency-version: 16.0.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-20 18:12:40 +08:00
KING APPS
1baa962201 Translated using Weblate (Persian)
Currently translated at 99.0% (969 of 978 strings)

Co-authored-by: KING APPS <kiperking1@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/fa/
Translation: FreeTube/Translations
2025-10-20 04:50:45 +00:00
Fjuro
960677aabc Translated using Weblate (Czech)
Currently translated at 100.0% (978 of 978 strings)

Co-authored-by: Fjuro <fjuro@alius.cz>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/cs/
Translation: FreeTube/Translations
2025-10-20 04:50:42 +00:00
Rusi Dimitrov
f0a49c6bd5 Translated using Weblate (Bulgarian)
Currently translated at 100.0% (978 of 978 strings)

Co-authored-by: Rusi Dimitrov <astral_86@mail.bg>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/bg/
Translation: FreeTube/Translations
2025-10-20 04:50:40 +00:00
absidue
6628c3e4ba Add missing IS_ELECTRON and SUPPORTS_LOCAL_API checks (#8147) 2025-10-17 07:11:00 +08:00
absidue
d170945d11 Simplify the NATIVE_THEME_UPDATE event handler (#8140) 2025-10-16 18:21:55 -04:00
efb4f5ff-1298-471a-8973-3d47447115dc
e46bdedb75 Bump package version from 0.23.11 to 0.23.12 (#8138) 2025-10-16 06:35:47 +08:00
absidue
8799b4990a Add error handling to the deciphering code (#8139) 2025-10-15 18:22:01 -04:00
PikachuEXE
fd96c7ad6f Fix video playback by using video ID bound poToken (#8137)
* ! Fix video playback by using video ID bound poToken

* Clean up now unused session PO token code

---------

Co-authored-by: absidue <48293849+absidue@users.noreply.github.com>
2025-10-15 22:01:43 +00:00
Adrián Gelmotto Ruiz
03d44792a7 Hide subscriptions wrapper on mobile and center bottom SideNav items (#8133) 2025-10-15 21:11:29 +02:00
PikachuEXE
95ec469d72 ! Fix sigFrameScript on dev in windows (#8134) 2025-10-15 06:04:01 -04:00
Priit Jõerüüt
3e395f9586 Translated using Weblate (Estonian)
Currently translated at 100.0% (978 of 978 strings)

Co-authored-by: Priit Jõerüüt <jrthwlate@users.noreply.hosted.weblate.org>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/et/
Translation: FreeTube/Translations
2025-10-14 20:43:02 +00:00
dependabot[bot]
7d0b48c27c Bump github/codeql-action from 3 to 4 (#8124)
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3 to 4.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/v3...v4)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-version: '4'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-14 18:36:51 +02:00
Rhoslyn Prys
19600d7076 Translated using Weblate (Welsh)
Currently translated at 100.0% (978 of 978 strings)

Co-authored-by: Rhoslyn Prys <rprys@posteo.net>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/cy/
Translation: FreeTube/Translations
2025-10-14 12:07:29 +00:00
dependabot[bot]
15d0e644e5 Bump mikefarah/yq from 4.47.2 to 4.48.1 (#8123)
Bumps [mikefarah/yq](https://github.com/mikefarah/yq) from 4.47.2 to 4.48.1.
- [Release notes](https://github.com/mikefarah/yq/releases)
- [Changelog](https://github.com/mikefarah/yq/blob/master/release_notes.txt)
- [Commits](https://github.com/mikefarah/yq/compare/v4.47.2...v4.48.1)

---
updated-dependencies:
- dependency-name: mikefarah/yq
  dependency-version: 4.48.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-14 08:44:00 +00:00
dependabot[bot]
52660a8f2b Bump stefanzweifel/git-auto-commit-action from 6 to 7 (#8125)
Bumps [stefanzweifel/git-auto-commit-action](https://github.com/stefanzweifel/git-auto-commit-action) from 6 to 7.
- [Release notes](https://github.com/stefanzweifel/git-auto-commit-action/releases)
- [Changelog](https://github.com/stefanzweifel/git-auto-commit-action/blob/master/CHANGELOG.md)
- [Commits](https://github.com/stefanzweifel/git-auto-commit-action/compare/v6...v7)

---
updated-dependencies:
- dependency-name: stefanzweifel/git-auto-commit-action
  dependency-version: '7'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-14 07:21:15 +00:00
efb4f5ff-1298-471a-8973-3d47447115dc
279f3bd7b3 Bump package version from 0.23.10 to 0.23.11 (#8126) 2025-10-14 07:46:39 +02:00
Ettore Atalan
03e0c47a3b Translated using Weblate (German)
Currently translated at 100.0% (978 of 978 strings)

Co-authored-by: Ettore Atalan <atalanttore@googlemail.com>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/de/
Translation: FreeTube/Translations
2025-10-13 21:07:28 +00:00
absidue
76522d2685 Fix importing and exporting data after the Electron 38.2.0 update (#8106) 2025-10-13 18:10:07 +00:00
Florent
b47aaa6563 Translated using Weblate (Breton)
Currently translated at 100.0% (978 of 978 strings)

Co-authored-by: Florent <florent.grouin+osmand@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/br/
Translation: FreeTube/Translations
2025-10-13 18:07:31 +00:00
Grzegorz Wójcicki
cab43cbbdb Translated using Weblate (Polish)
Currently translated at 100.0% (978 of 978 strings)

Co-authored-by: Grzegorz Wójcicki <terkaz@gmx.com>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/pl/
Translation: FreeTube/Translations
2025-10-13 18:07:30 +00:00
Grzegorz Wójcicki
b024a16deb Translated using Weblate (Polish)
Currently translated at 98.7% (966 of 978 strings)

Co-authored-by: Grzegorz Wójcicki <terkaz@gmx.com>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/pl/
Translation: FreeTube/Translations
2025-10-13 16:07:28 +00:00
Sveinn í Felli
f151e17efb Translated using Weblate (Icelandic)
Currently translated at 100.0% (978 of 978 strings)

Co-authored-by: Sveinn í Felli <sv1@fellsnet.is>
Translate-URL: https://hosted.weblate.org/projects/free-tube/translations/is/
Translation: FreeTube/Translations
2025-10-13 08:07:29 +00:00
35 changed files with 464 additions and 407 deletions

View File

@@ -53,7 +53,7 @@ jobs:
run: yarn config set cache-folder D:\ft_yarn_cache
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v5
uses: actions/setup-node@v6
with:
node-version: ${{ matrix.node-version }}
cache: "yarn"

View File

@@ -31,7 +31,7 @@ jobs:
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v3
uses: github/codeql-action/init@v4
with:
languages: ${{ matrix.language }}
# If you wish to specify custom queries, you can do so here or in a config file.
@@ -44,7 +44,7 @@ jobs:
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
# If this step fails, then you should remove it and run the build manually (see below)
- name: Autobuild
uses: github/codeql-action/autobuild@v3
uses: github/codeql-action/autobuild@v4
# Command-line programs to run using the OS shell.
# 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun
@@ -57,6 +57,6 @@ jobs:
# ./location_of_script_within_repo/buildscript.sh
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v3
uses: github/codeql-action/analyze@v4
with:
category: "/language:${{matrix.language}}"

View File

@@ -76,22 +76,22 @@ jobs:
date +"%Y-%m-%d" >> $GITHUB_ENV
echo 'EOF' >> $GITHUB_ENV
- name: Update x64 File Location in yml File
uses: mikefarah/yq@v4.47.2
uses: mikefarah/yq@v4.48.1
with:
# The Command which should be run
cmd: yq -i '.modules[0].sources[0].url = "https://github.com/FreeTubeApp/FreeTube/releases/download/v${{ steps.sub.outputs.result }}-beta/freetube-${{ steps.sub.outputs.result }}-beta-linux-x64-portable.zip"' io.freetubeapp.FreeTube.yml
- name: Update x64 Hash in yml File
uses: mikefarah/yq@v4.47.2
uses: mikefarah/yq@v4.48.1
with:
# The Command which should be run
cmd: yq -i '.modules[0].sources[0].sha256 = "${{ env.HASH_X64 }}"' io.freetubeapp.FreeTube.yml
- name: Update ARM File Location in yml File
uses: mikefarah/yq@v4.47.2
uses: mikefarah/yq@v4.48.1
with:
# The Command which should be run
cmd: yq -i '.modules[0].sources[1].url = "https://github.com/FreeTubeApp/FreeTube/releases/download/v${{ steps.sub.outputs.result }}-beta/freetube-${{ steps.sub.outputs.result }}-beta-linux-arm64-portable.zip"' io.freetubeapp.FreeTube.yml
- name: Update ARM Hash in yml File
uses: mikefarah/yq@v4.47.2
uses: mikefarah/yq@v4.48.1
with:
# The Command which should be run
cmd: yq -i '.modules[0].sources[1].sha256 = "${{ env.HASH_ARM64 }}"' io.freetubeapp.FreeTube.yml
@@ -102,7 +102,7 @@ jobs:
rm freetube-${{ steps.sub.outputs.result }}-beta-linux-x64-portable.zip
rm freetube-${{ steps.sub.outputs.result }}-beta-linux-arm64-portable.zip
- name: Commit Files
uses: stefanzweifel/git-auto-commit-action@v6
uses: stefanzweifel/git-auto-commit-action@v7
with:
# Optional but recommended
# Defaults to "Apply automatic changes"

View File

@@ -19,7 +19,7 @@ jobs:
steps:
- uses: actions/checkout@v5
- name: Use Node.js 22.x
uses: actions/setup-node@v5
uses: actions/setup-node@v6
with:
node-version: 22.x
cache: "yarn"

View File

@@ -58,7 +58,7 @@ jobs:
run: yarn config set cache-folder D:\ft_yarn_cache
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v5
uses: actions/setup-node@v6
with:
node-version: ${{ matrix.node-version }}
cache: "yarn"

View File

@@ -54,7 +54,7 @@ jobs:
run: |
sed -i 's/${{ steps.previous.outputs.result }}/${{ steps.current.outputs.result }}/g' src/index.php
- name: Commit Files
uses: stefanzweifel/git-auto-commit-action@v6
uses: stefanzweifel/git-auto-commit-action@v7
with:
# Optional but recommended
# Defaults to "Apply automatic changes"

View File

@@ -5,9 +5,7 @@ const { readFileSync } = require('fs')
const path = join(__dirname, '../src/renderer/sigFrameScript.js')
const rawScript = readFileSync(path, 'utf8')
const script = process.env.NODE_ENV === 'development'
? rawScript
: require('terser').minify_sync({ [path]: rawScript }).code
const script = require('terser').minify_sync({ [path]: rawScript }).code
module.exports.sigFrameTemplateParameters = {
sigFrameSrc: `data:text/html,${encodeURIComponent(`<!doctype html><script>${script}</script>`)}`,

View File

@@ -2,7 +2,7 @@
"name": "freetube",
"productName": "FreeTube",
"description": "A private YouTube client",
"version": "0.23.10",
"version": "0.23.12",
"license": "AGPL-3.0-or-later",
"main": "./dist/main.js",
"private": true,
@@ -63,42 +63,42 @@
"autolinker": "^4.1.5",
"bgutils-js": "^3.2.0",
"electron-context-menu": "^4.1.1",
"marked": "^16.4.0",
"marked": "^16.4.1",
"portal-vue": "^2.1.7",
"process": "^0.11.10",
"shaka-player": "^4.16.4",
"shaka-player": "^4.16.6",
"swiper": "^12.0.2",
"vue": "^2.7.16",
"vue-i18n": "^8.28.2",
"vue-observe-visibility": "^1.0.0",
"vue-router": "^3.6.5",
"vuex": "^3.6.2",
"youtubei.js": "^16.0.0"
"youtubei.js": "^16.0.1"
},
"devDependencies": {
"@babel/core": "^7.28.4",
"@babel/preset-env": "^7.28.3",
"@double-great/stylelint-a11y": "^3.4.0",
"@eslint/js": "^9.37.0",
"@eslint/js": "^9.38.0",
"@intlify/eslint-plugin-vue-i18n": "^3.2.0",
"babel-loader": "^10.0.0",
"copy-webpack-plugin": "^13.0.1",
"css-loader": "^7.1.2",
"css-minimizer-webpack-plugin": "^7.0.2",
"electron": "^38.2.2",
"electron": "^38.3.0",
"electron-builder": "^26.1.0",
"eslint": "^9.37.0",
"eslint-plugin-jsdoc": "^61.1.1",
"eslint": "^9.38.0",
"eslint-plugin-jsdoc": "^61.1.5",
"eslint-plugin-jsonc": "^2.21.0",
"eslint-plugin-unicorn": "^61.0.2",
"eslint-plugin-vue": "^10.5.0",
"eslint-plugin-vue": "^10.5.1",
"eslint-plugin-vuejs-accessibility": "^2.4.1",
"eslint-plugin-yml": "^1.19.0",
"globals": "^16.4.0",
"html-webpack-plugin": "^5.6.4",
"js-yaml": "^4.1.0",
"json-minimizer-webpack-plugin": "^5.0.1",
"lefthook": "^1.13.6",
"lefthook": "^2.0.0",
"mini-css-extract-plugin": "^2.9.4",
"neostandard": "^0.12.2",
"npm-run-all2": "^8.0.4",

View File

@@ -6,10 +6,9 @@ import { BG, buildURL, GOOG_API_KEY } from 'bgutils-js'
/**
* Based on: https://github.com/LuanRT/BgUtils/blob/main/examples/node/innertube-challenge-fetcher-example.ts
* @param {string} videoId
* @param {string} visitorData
* @param {import('youtubei.js').Session['context']} context
*/
export default async function (videoId, visitorData, context) {
export default async function (videoId, context) {
const requestKey = 'O43z0dpjhgX20SCx4KAo'
const challengeResponse = await fetch(
@@ -19,7 +18,7 @@ export default async function (videoId, visitorData, context) {
headers: {
Accept: '*/*',
'Content-Type': 'application/json',
'X-Goog-Visitor-Id': visitorData,
'X-Goog-Visitor-Id': context.client.visitorData,
'X-Youtube-Client-Version': context.client.clientVersion,
'X-Youtube-Client-Name': '1'
},
@@ -83,8 +82,5 @@ export default async function (videoId, visitorData, context) {
const integrityTokenBasedMinter = await BG.WebPoMinter.create({ integrityToken: response[0] }, webPoSignalOutput)
const contentPoToken = await integrityTokenBasedMinter.mintAsWebsafeString(videoId)
const sessionPoToken = await integrityTokenBasedMinter.mintAsWebsafeString(visitorData)
return { contentPoToken, sessionPoToken }
return await integrityTokenBasedMinter.mintAsWebsafeString(videoId)
}

View File

@@ -40,7 +40,7 @@ const IpcChannels = {
SET_INVIDIOUS_AUTHORIZATION: 'set-invidious-authorization',
GENERATE_PO_TOKENS: 'generate-po-tokens',
GENERATE_PO_TOKEN: 'generate-po-token',
GET_SCREENSHOT_FALLBACK_FOLDER: 'get-screenshot-fallback-folder',
CHOOSE_DEFAULT_FOLDER: 'choose-default-folder',

View File

@@ -13,7 +13,7 @@
<body>
<div id="app"></div>
<% if (process.env.SUPPORTS_LOCAL_API) { %>
<% if (process.env.IS_ELECTRON) { %>
<iframe
id="sigFrame"
src="<%= sigFrameSrc %>"
@@ -24,8 +24,7 @@
style="display: none; pointer-events: none"
tabindex="-1"
></iframe>
<% } %>
<% if (!process.env.IS_ELECTRON) { %>
<% } else { %>
<script>
// This is the service worker with the Advanced caching

View File

@@ -425,23 +425,43 @@ function runApp() {
// FreeTube needs the following permissions:
// - "fullscreen": So that the video player can enter full screen
// - "clipboard-sanitized-write": To allow the user to copy video URLs and error messages
// - "fileSystem" Needed for the Web File System API (e.g. importing and exporting data)
session.defaultSession.setPermissionCheckHandler((webContents, permission, requestingOrigin) => {
session.defaultSession.setPermissionCheckHandler((webContents, permission, requestingOrigin, details) => {
if (!isFreeTubeUrl(requestingOrigin)) {
return false
}
return permission === 'fullscreen' || permission === 'clipboard-sanitized-write'
return (
permission === 'fullscreen' ||
permission === 'clipboard-sanitized-write' ||
(permission === 'fileSystem' && !details.isDirectory)
)
})
session.defaultSession.setPermissionRequestHandler((webContents, permission, callback) => {
session.defaultSession.setPermissionRequestHandler((webContents, permission, callback, details) => {
if (!isFreeTubeUrl(webContents.getURL())) {
// eslint-disable-next-line n/no-callback-literal
callback(false)
return
}
callback(permission === 'fullscreen' || permission === 'clipboard-sanitized-write')
callback(
permission === 'fullscreen' ||
permission === 'clipboard-sanitized-write' ||
(permission === 'fileSystem' && !details.isDirectory)
)
})
session.defaultSession.on('file-system-access-restricted', (event, details, callback) => {
if (!isFreeTubeUrl(details.origin)) {
// eslint-disable-next-line n/no-callback-literal
callback('deny')
return
}
// eslint-disable-next-line n/no-callback-literal
callback(details.isDirectory ? 'deny' : 'allow')
})
let docArray
@@ -839,7 +859,7 @@ function runApp() {
if (process.env.NODE_ENV === 'development') {
return url_ !== null && url_.protocol === 'http:' && url_.host === 'localhost:9080' && (url_.pathname === '/' || url_.pathname === '/index.html')
} else {
return url_ !== null && url_.protocol === 'app:' && url_.host === 'bundle' && url_.pathname === '/index.html'
return url_ !== null && url_.protocol === 'app:' && url_.host === 'bundle' && (url_.pathname === '/' || url_.pathname === '/index.html')
}
}
@@ -1176,8 +1196,8 @@ function runApp() {
})
})
ipcMain.handle(IpcChannels.GENERATE_PO_TOKENS, (_, videoId, visitorData, context) => {
return generatePoToken(videoId, visitorData, context, proxyUrl)
ipcMain.handle(IpcChannels.GENERATE_PO_TOKEN, (_, videoId, context) => {
return generatePoToken(videoId, context, proxyUrl)
})
ipcMain.on(IpcChannels.ENABLE_PROXY, (_, url) => {

View File

@@ -3,19 +3,18 @@ import { readFile } from 'fs/promises'
import { join } from 'path'
/**
* Generates a poToken (proof of origin token) using `bgutils-js`.
* Generates a content-bound poToken (proof of origin token) using `bgutils-js`.
* The script to generate it is `src/botGuardScript.js`
*
* This is intentionally split out into it's own thing, with it's own temporary in-memory session,
* as the BotGuard stuff accesses the global `document` and `window` objects and also requires making some requests.
* So we definitely don't want it running in the same places as the rest of the FreeTube code with the user data.
* @param {string} videoId
* @param {string} visitorData
* @param {string} context
* @param {string|undefined} proxyUrl
* @returns {Promise<{ contentPoToken: string, sessionPoToken: string }>}
* @returns {Promise<string>}
*/
export async function generatePoToken(videoId, visitorData, context, proxyUrl) {
export async function generatePoToken(videoId, context, proxyUrl) {
const sessionUuid = crypto.randomUUID()
const theSession = session.fromPartition(`potoken-${sessionUuid}`, { cache: false })
@@ -97,7 +96,7 @@ export async function generatePoToken(videoId, visitorData, context, proxyUrl) {
}
})
const script = await getScript(videoId, visitorData, context)
const script = await getScript(videoId, context)
const response = await webContentsView.webContents.executeJavaScript(script)
@@ -111,10 +110,9 @@ let cachedScript
/**
* @param {string} videoId
* @param {string} visitorData
* @param {string} context
*/
async function getScript(videoId, visitorData, context) {
async function getScript(videoId, context) {
if (!cachedScript) {
const pathToScript = process.env.NODE_ENV === 'development'
? join(__dirname, '../../dist/botGuardScript.js')
@@ -129,5 +127,5 @@ async function getScript(videoId, visitorData, context) {
cachedScript = content.replace(match[0], `;${functionName}(FT_PARAMS)`)
}
return cachedScript.replace('FT_PARAMS', `"${videoId}","${visitorData}",${context}`)
return cachedScript.replace('FT_PARAMS', `"${videoId}",${context}`)
}

View File

@@ -6,7 +6,7 @@ import { IpcChannels } from '../constants.js'
* all systems running the electron app.
*/
ipcRenderer.on(IpcChannels.NATIVE_THEME_UPDATE, (_, shouldUseDarkColors) => {
webFrame.executeJavaScript(`document.body.dataset.systemTheme = "${shouldUseDarkColors ? 'dark' : 'light'}"`).catch()
document.body.dataset.systemTheme = shouldUseDarkColors ? 'dark' : 'light'
})
let currentUpdateSearchInputTextListener
@@ -100,12 +100,11 @@ export default {
/**
* @param {string} videoId
* @param {string} visitorData
* @param {string} context
* @returns {Promise<{ contentPoToken: string, sessionPoToken: string }>}
* @returns {Promise<string>}
*/
generatePoTokens: (videoId, visitorData, context) => {
return ipcRenderer.invoke(IpcChannels.GENERATE_PO_TOKENS, videoId, visitorData, context)
generatePoToken: (videoId, context) => {
return ipcRenderer.invoke(IpcChannels.GENERATE_PO_TOKEN, videoId, context)
},
/**

View File

@@ -200,6 +200,7 @@
<hr>
<div
v-if="!hideActiveSubscriptions"
class="mobileHidden"
>
<router-link
v-for="channel in activeSubscriptions"

View File

@@ -2504,14 +2504,6 @@ export default defineComponent({
// #region setup
onMounted(async () => {
watch(() => props.currentPlaybackRate,
(newRate) => {
if (video.value) {
video.value.playbackRate = newRate
video.value.defaultPlaybackRate = newRate
}
}
)
const videoElement = video.value
const volume = sessionStorage.getItem('volume')

View File

@@ -24,6 +24,7 @@ export default defineComponent({
data: function () {
return {
usingElectron: process.env.IS_ELECTRON,
supportsLocalAPI: process.env.SUPPORTS_LOCAL_API,
backendValues: process.env.SUPPORTS_LOCAL_API
? [
'invidious',

View File

@@ -11,6 +11,7 @@
@change="updateCheckForUpdates"
/>
<ft-toggle-switch
v-if="supportsLocalAPI"
:label="$t('Settings.General Settings.Fallback to Non-Preferred Backend on Failure')"
:default-value="backendFallback"
:compact="true"
@@ -46,6 +47,7 @@
@change="updateEnableSearchSuggestions"
/>
<ft-toggle-switch
v-if="usingElectron"
:label="$t('Settings.General Settings.Open Deep Links In New Window')"
:default-value="openDeepLinksInNewWindow"
:compact="true"

View File

@@ -127,6 +127,11 @@ export default defineComponent({
'scroll-to-info-area',
'save-watched-progress',
],
data: function () {
return {
usingElectron: process.env.IS_ELECTRON
}
},
computed: {
hideSharingActions: function() {
return this.$store.getters.getHideSharingActions

View File

@@ -119,7 +119,7 @@
</span>
<span class="videoOptionsMobileRow">
<ft-icon-button
v-if="externalPlayer !== ''"
v-if="usingElectron && externalPlayer !== ''"
:title="$t('Video.External Player.OpenInTemplate', { externalPlayer })"
:icon="['fas', 'external-link-alt']"
theme="secondary"

View File

@@ -22,7 +22,7 @@ const TRACKING_PARAM_NAMES = [
if (process.env.SUPPORTS_LOCAL_API) {
Platform.shim.eval = (data, env) => {
return new Promise((resolve) => {
return new Promise((resolve, reject) => {
const properties = []
if (env.n) {
@@ -43,23 +43,31 @@ if (process.env.SUPPORTS_LOCAL_API) {
? crypto.randomUUID()
: `${Date.now()}-${Math.floor(Math.random() * 10000)}`
const iframe = document.getElementById('sigFrame')
if (process.env.IS_ELECTRON) {
const iframe = document.getElementById('sigFrame')
/** @param {MessageEvent} event */
const listener = (event) => {
if (event.source === iframe.contentWindow && typeof event.data === 'string') {
const data = JSON.parse(event.data)
/** @param {MessageEvent} event */
const listener = (event) => {
if (event.source === iframe.contentWindow && typeof event.data === 'string') {
const data = JSON.parse(event.data)
if (data.id === messageId) {
window.removeEventListener('message', listener)
if (data.id === messageId) {
window.removeEventListener('message', listener)
resolve(data.result)
if (data.error) {
reject(data.error)
} else {
resolve(data.result)
}
}
}
}
}
window.addEventListener('message', listener)
iframe.contentWindow.postMessage(JSON.stringify({ id: messageId, code }), '*')
window.addEventListener('message', listener)
iframe.contentWindow.postMessage(JSON.stringify({ id: messageId, code }), '*')
} else {
reject(new Error('Please setup the eval function for the n/sig deciphering'))
}
})
}
}
@@ -424,20 +432,17 @@ export async function getLocalSearchContinuation(continuationData) {
export async function getLocalVideoInfo(id) {
const webInnertube = await createInnertube({ withPlayer: true, generateSessionLocally: false })
// based on the videoId (added to the body of the /player request and to caption URLs)
// based on the videoId
let contentPoToken
// based on the visitor data (added to the streaming URLs)
let sessionPoToken
if (process.env.IS_ELECTRON) {
try {
({ contentPoToken, sessionPoToken } = await window.ftElectron.generatePoTokens(
contentPoToken = await window.ftElectron.generatePoToken(
id,
webInnertube.session.context.client.visitorData,
JSON.stringify(webInnertube.session.context)
))
)
webInnertube.session.player.po_token = sessionPoToken
webInnertube.session.player.po_token = contentPoToken
} catch (error) {
console.error('Local API, poToken generation failed', error)
throw error
@@ -537,9 +542,9 @@ export async function getLocalVideoInfo(id) {
let url = info.streaming_data.dash_manifest_url
if (url.includes('?')) {
url += `&pot=${encodeURIComponent(sessionPoToken)}&mpd_version=7`
url += `&pot=${encodeURIComponent(contentPoToken)}&mpd_version=7`
} else {
url += `${url.endsWith('/') ? '' : '/'}pot/${encodeURIComponent(sessionPoToken)}/mpd_version/7`
url += `${url.endsWith('/') ? '' : '/'}pot/${encodeURIComponent(contentPoToken)}/mpd_version/7`
}
info.streaming_data.dash_manifest_url = url

View File

@@ -3,9 +3,16 @@
window.addEventListener('message', (event) => {
const data = JSON.parse(event.data)
window.parent.postMessage(JSON.stringify({
id: data.id,
// eslint-disable-next-line no-new-func
result: new Function(data.code)()
}), '*')
try {
window.parent.postMessage(JSON.stringify({
id: data.id,
// eslint-disable-next-line no-new-func
result: new Function(data.code)()
}), '*')
} catch (error) {
window.parent.postMessage(JSON.stringify({
id: data.id,
error
}), '*')
}
})

View File

@@ -161,14 +161,14 @@ User Playlists:
Playlist Description: Описание
Cancel: Отказ
Sort By:
LatestCreatedFirst: Наскоро създадени
EarliestCreatedFirst: Най-рано създадени
EarliestPlayedFirst: Най-рано възпроизведени
LatestCreatedFirst: Дата на създаване (най-нови)
EarliestCreatedFirst: Дата на създаване (най-стари)
EarliestPlayedFirst: Дата на възпроизвеждане (най-стари)
NameAscending: A-Z
NameDescending: Z-A
LatestUpdatedFirst: Наскоро обновени
EarliestUpdatedFirst: Най-рано обновени
LatestPlayedFirst: Наскоро възпроизведени
LatestUpdatedFirst: Дата на обновяване (най-нови)
EarliestUpdatedFirst: Дата на обновяване (най-стари)
LatestPlayedFirst: Дата на възпроизвеждане (най-нови)
AddVideoPrompt:
Search in Playlists: Търсене в плейлисти
Select a playlist to add your N videos to: Изберете плейлист, в който да добавите своето видео | Изберете плейлист, в който да добавите своите {videoCount} видеа
@@ -201,6 +201,7 @@ User Playlists:
Export Playlist: Изнасяне на плейлиста
The playlist has been successfully exported: Плейлистът е изнесен успешно
TotalTimePlaylist: 'Общо време: {duration}'
Export list of URLs: Изнасяне на списък с URL адреси
History:
# On History Page
History: 'История'
@@ -209,8 +210,8 @@ History:
Search bar placeholder: Търсене в историята
Empty Search Message: В историята няма видеа, които да отговарят на търсенето ви
Case Sensitive Search: Главни / малки букви
DateOldestHistory: Първо най-новите
DateNewestHistory: Първо най-старите
DateOldestHistory: Дата на гледане (най-стари)
DateNewestHistory: Дата на гледане (най-нови)
Settings:
# On Settings Page
Settings: 'Настройки'
@@ -558,12 +559,14 @@ Settings:
Your Info: Вашата информация
Test Proxy: Тестване на прокси
Clicking on Test Proxy will send a request to: Щракването върху "Тестване на прокси" ще изпрати заявка до
Proxy Port Number: Номер на прокси порта
Proxy Host: Прокси хост
Proxy Protocol: Прокси протокол
Proxy Port Number: Порт
Proxy Host: Хост
Proxy Protocol: Протокол
Enable Tor / Proxy: Активиране на Tor / Proxy
Proxy Settings: Прокси
Proxy Warning: FreeTube не разполага с вграден прокси сървър, но може да се свърже с външен, например такъв, който работи на вашата машина, като Tor или SOCKS5 прокси сървър, предоставян от някои VPN услуги. Ако е активирано, уверете се, че прокси сървърът/Tor е конфигуриран правилно, тъй като FreeTube няма да може да извлича данни.
Proxy Username: Потребителско име
Proxy Password: Парола
SponsorBlock Settings:
Notify when sponsor segment is skipped: Известие при пропускане на спонсориран сегмент
Enable SponsorBlock: Активиране на SponsorBlock
@@ -873,17 +876,17 @@ Playlist:
#& Views
Playlist: Плейлист
Sort By:
DateAddedNewest: Първо най-новите
DateAddedOldest: Първо най-старите
DateAddedNewest: Дата на добавяне (най-нови)
DateAddedOldest: Дата на добавяне (най-стари)
AuthorAscending: Автор (A-Z)
AuthorDescending: Автор (Z-A)
VideoTitleAscending: Заглавие (A-Z)
Custom: Потребителски
VideoTitleDescending: Заглавие (Z-A)
VideoDurationAscending: Първо най-кратките
VideoDurationDescending: Първо най-дългите
PublishedNewest: Първо най-новите публикувани
PublishedOldest: Първо най-старите публикувани
VideoDurationAscending: Продължителност (най-кратки)
VideoDurationDescending: Продължителност (най-дълги)
PublishedNewest: Дата на публикуване (най-нови)
PublishedOldest: Дата на публикуване (най-стари)
Change Format:
Change Media Formats: 'Смяна видео формати'
Use Dash Formats: 'Използване на DASH формати'

View File

@@ -195,14 +195,14 @@ User Playlists:
NameAscending: 'A-Z'
NameDescending: 'Z-A'
LatestCreatedFirst: 'Krouet nevez ''zo'
EarliestCreatedFirst: 'Krouet pell ''zo'
LatestCreatedFirst: 'Deiziad Krouet (Nevez ''zo)'
EarliestCreatedFirst: 'Deiziad Krouet (Pell ''zo)'
LatestUpdatedFirst: 'Kemmet nevez ''zo'
EarliestUpdatedFirst: 'Kemmet pell ''zo'
LatestUpdatedFirst: 'Deiziad Hizivaat (Nevez ''zo)'
EarliestUpdatedFirst: 'Deiziad Hizivaat (Pell ''zo)'
LatestPlayedFirst: 'Lennet nevez ''zo'
EarliestPlayedFirst: 'Lennet pell ''zo'
LatestPlayedFirst: 'Deiziad Lennet (Nevez ''zo)'
EarliestPlayedFirst: 'Deiziad Lennet (Pell ''zo)'
SinglePlaylistView:
Search for Videos: 'Klask Videoioù'
@@ -265,8 +265,8 @@ History:
Empty Search Message: 'N''eus video ebet e-barzh ho roll istor o klotañ gant ho klask'
Search bar placeholder: "Klask e-barzh ar roll istor"
Case Sensitive Search: 'Klask o toujañ d''ar pennlizherennoù'
DateNewestHistory: Sellet da Ziwezhañ da Gentañ
DateOldestHistory: Sellet Pell 'zo da Gentañ
DateNewestHistory: Deiziad Sellet (Nevez 'zo)
DateOldestHistory: Deiziad Sellet (Pell 'zo)
Settings:
# On Settings Page
Settings: 'Arventennoù'
@@ -938,21 +938,21 @@ Playlist:
Views: ''
Last Updated On: 'Hizivadenn ziwezhañ'
Sort By:
DateAddedNewest: 'Ouzhpennet diwezhañ da gentañ'
DateAddedOldest: 'Ouzhpennet abretañ da gentañ'
DateAddedNewest: 'Deiziad Ouzhpennet (Nevez ''zo)'
DateAddedOldest: 'Deiziad Ouzhpennet (Pell ''zo)'
AuthorAscending: 'Aozer (A-Z)'
AuthorDescending: 'Aozer (Z-A)'
VideoTitleAscending: 'Titl (A-Z)'
VideoTitleDescending: 'Titl (Z-A)'
VideoDurationAscending: 'Padelezh (Berrañ da gentañ)'
VideoDurationDescending: 'Padelezh (Hirañ da gentañ)'
VideoDurationAscending: 'Padelezh (Berrañ)'
VideoDurationDescending: 'Padelezh (Hirañ)'
Custom: 'Personelaat'
# On Video Watch Page
#* Published
#& Views
PublishedNewest: Embannet diwezhañ da gentañ
PublishedOldest: Embannet abretañ da gentañ
PublishedNewest: Deiziad Embannet (Nevez 'zo)
PublishedOldest: Deiziad embannet (Pell 'zo)
Toggle Theatre Mode: ''
Change Format:
Change Media Formats: 'Cheñch furmad ar video'

View File

@@ -159,13 +159,13 @@ User Playlists:
Search for Videos: Hledat videa
Are you sure you want to delete this playlist? This cannot be undone: Opravdu chcete odstranit tento playlist? Tato akce je nevratná.
Sort By:
LatestPlayedFirst: Nejnověji přehrané
EarliestCreatedFirst: Nejdéle vytvořené
LatestCreatedFirst: Nejnověji vytvořené
EarliestUpdatedFirst: Nejdéle bez aktualizace
LatestPlayedFirst: Datum přehrání (nejnovější)
EarliestCreatedFirst: Datum vytvoření (nejstarší)
LatestCreatedFirst: Datum vytvoření (nejnovější)
EarliestUpdatedFirst: Datum úpravy (nejstarší)
NameDescending: Z-A
EarliestPlayedFirst: Nejdéle bez přehrání
LatestUpdatedFirst: Nejnověji aktualizované
EarliestPlayedFirst: Datum přehrání (nejstarší)
LatestUpdatedFirst: Datum úpravy (nejnovější)
NameAscending: A-Z
You have no playlists. Click on the create new playlist button to create a new one.: Nemáte žádné playlisty. Klikněte na tlačítko pro vytvoření nového playlistu.
Remove from Playlist: Odebrat z playlistu
@@ -210,8 +210,8 @@ History:
Empty Search Message: Ve vaší historii nejsou žádná videa, která by odpovídala vašemu vyhledávání
Search bar placeholder: Hledat v historii
Case Sensitive Search: Vyhledávání citlivé na velikost písmen
DateOldestHistory: Nejprve nejdříve zhlédnuté
DateNewestHistory: Nejprve naposledy zhlédnuté
DateOldestHistory: Datum zhlédnutí (nejstarší)
DateNewestHistory: Datum zhlédnutí (nejnovější)
Settings:
# On Settings Page
Settings: 'Nastavení'
@@ -876,17 +876,17 @@ Playlist:
#& Views
Playlist: Playlist
Sort By:
DateAddedNewest: Naposledy přidáno
DateAddedOldest: Nejdříve přidáno
DateAddedNewest: Datum přidání (nejnovější)
DateAddedOldest: Datum přidání (nejstarší)
AuthorAscending: Autor (A-Z)
AuthorDescending: Autor (Z-A)
VideoTitleDescending: Název (Z-A)
VideoTitleAscending: Název (A-Z)
Custom: Vlastní
VideoDurationAscending: Doba trvání (od nejkratších)
VideoDurationDescending: Doba trvání (od nejdelších)
PublishedOldest: Od nejstarších
PublishedNewest: Od nejnovějších
VideoDurationAscending: Doba trvání (nejkratší)
VideoDurationDescending: Doba trvání (nejdelší)
PublishedOldest: Datum zveřejnění (nejstarší)
PublishedNewest: Datum zveřejnění (nejnovější)
Change Format:
Change Media Formats: 'Změnit formát videa'
Use Dash Formats: 'Použít formáty DASH'

View File

@@ -161,14 +161,14 @@ User Playlists:
Quick Bookmark Enabled: Nod Tudalen Cyflym wedi'i Galluogi
Are you sure you want to remove {playlistItemCount} watched videos from this playlist? This cannot be undone: Ydych chi'n siŵr eich bod am dynnu 1 fideo a wyliwyd o'r rhestr chwarae hon? Nid oes modd dadwneud hyn. | A ydych yn siŵr eich bod am ddileu {playlistItemCount} fideo a wyliwyd o'r rhestr chwarae hon? Nid oes modd dadwneud hyn.
Sort By:
LatestCreatedFirst: Crëwyd yn Ddiweddar
LatestCreatedFirst: Dyddiad Crëwyd (Diweddaraf)
NameAscending: A-Z
EarliestCreatedFirst: Crëwyd Gynharaf
LatestUpdatedFirst: Diweddarwyd yn Ddiweddar
EarliestCreatedFirst: Dyddiad Crëwyd (Hynaf)
LatestUpdatedFirst: Dyddiad Diweddarwyd (Mwyaf Newydd)
NameDescending: Z-A
LatestPlayedFirst: Chwaraewyd yn Ddiweddar
EarliestPlayedFirst: Chwaraewyd Cynharaf
EarliestUpdatedFirst: Diweddarwyd Cynharaf
LatestPlayedFirst: Dyddiad Chwaraewyd (Mwyaf Newydd)
EarliestPlayedFirst: Dyddiad Chwaraewyd (Hynaf)
EarliestUpdatedFirst: Dyddiad Diweddarwyd (Hynaf)
SinglePlaylistView:
Toast:
Some videos in the playlist are not loaded yet. Click here to copy anyway.: Nid yw rhai fideos yn y rhestr chwarae wedi'u llwytho eto. Cliciwch yma i gopïo beth bynnag.
@@ -227,8 +227,8 @@ History:
Empty Search Message: 'Nid oes unrhyw fideos yn eich hanes sy''n cyfateb i''ch chwilio'
Search bar placeholder: "Chwilio yn eich Hanes"
Case Sensitive Search: Chwilio Nodau Mawr neu Fach
DateOldestHistory: Cynharaf ei Wylio'n Gyntaf
DateNewestHistory: Diweddaraf ei Wylio'n Gyntaf
DateOldestHistory: Dyddiad Gwyliwyd (Hynaf)
DateNewestHistory: Dyddiad Gwyliwyd (Mwyaf Newydd)
Settings:
# On Settings Page
Settings: 'Gosodiadau'
@@ -896,13 +896,13 @@ Playlist:
AuthorDescending: Awdur (Z-A)
VideoTitleAscending: Teitl (A-Z)
VideoTitleDescending: Teitl (Z-A)
VideoDurationDescending: Hyd (Hiraf gyntaf)
DateAddedNewest: Y diweddaraf wedi'i ychwanegu gyntaf
VideoDurationDescending: Hyd (Hiraf)
DateAddedNewest: Dyddiad ychwanegwyd (Mwyaf Newydd)
AuthorAscending: Awdur (A-Z)
VideoDurationAscending: Hyd (Byrraf gyntaf)
DateAddedOldest: Ychwanegwyd yn gyntaf yn gyntaf
PublishedNewest: Cyhoeddwyd diwethaf gyntaf
PublishedOldest: Cyhoeddwyd gyntaf yn gyntaf
VideoDurationAscending: Hyd (Byrraf)
DateAddedOldest: Dyddiad ychwanegwyd (Hynaf)
PublishedNewest: Dyddiad cyhoeddwyd (Mwyaf Newydd)
PublishedOldest: Dyddiad cyhoeddwyd (Hynaf)
Change Format:
Change Media Formats: 'Newid Fformatau Cyfryngau'
Use Dash Formats: 'Defnyddio Fformatau DASH'

View File

@@ -132,12 +132,12 @@ User Playlists:
Sort By:
NameAscending: A-Z
NameDescending: Z-A
LatestCreatedFirst: Kürzlich erstellt
EarliestCreatedFirst: Am frühesten erstellt
LatestUpdatedFirst: Kürzlich aktualisiert
EarliestUpdatedFirst: Am frühesten aktualisiert
LatestPlayedFirst: Kürzlich abgespielt
EarliestPlayedFirst: Am frühesten abgespielt
LatestCreatedFirst: Erstellungsdatum (neueste)
EarliestCreatedFirst: Erstellungsdatum (älteste)
LatestUpdatedFirst: Aktualisierungsdatum (neueste)
EarliestUpdatedFirst: Aktualisierungsdatum (älteste)
LatestPlayedFirst: Abspieldatum (neueste)
EarliestPlayedFirst: Abspieldatum (älteste)
SinglePlaylistView:
Toast:
This video cannot be moved up.: Dieses Video kann nicht nach oben verschoben werden.
@@ -203,8 +203,8 @@ History:
Search bar placeholder: Im Verlauf suchen
Empty Search Message: Es gibt keine Videos in deinem Verlauf, die deiner Suche entsprechen
Case Sensitive Search: Groß- und Kleinschreibung bei der Suche beachten
DateOldestHistory: Älteste gesehene zuerst
DateNewestHistory: Zuletzt gesehene zuerst
DateOldestHistory: Wiedergabedatum (älteste)
DateNewestHistory: Wiedergabedatum (neueste)
Settings:
# On Settings Page
Settings: Einstellungen
@@ -831,16 +831,16 @@ Playlist:
#& Views
Sort By:
VideoTitleDescending: Titel (Z-A)
DateAddedNewest: Zuletzt hinzugefügt zuerst
DateAddedOldest: Am frühesten hinzugefügt zuerst
DateAddedNewest: Hinzugefügt am (neueste)
DateAddedOldest: Hinzugefügt am (älteste)
AuthorAscending: Autor (A-Z)
AuthorDescending: Autor (Z-A)
VideoTitleAscending: Titel (A-Z)
Custom: Benutzerdefiniert
VideoDurationAscending: Dauer (Kürzeste zuerst)
VideoDurationDescending: Dauer (Längste zuerst)
PublishedNewest: Zuletzt veröffentlicht zuerst
PublishedOldest: Älteste veröffentlicht zuerst
VideoDurationAscending: Dauer (kürzeste)
VideoDurationDescending: Dauer (längste)
PublishedNewest: Veröffentlichungsdatum (neueste)
PublishedOldest: Veröffentlichungsdatum (älteste)
Change Format:
Change Media Formats: Medienformate ändern
Use Dash Formats: DASH-Formate verwenden

View File

@@ -174,13 +174,13 @@ User Playlists:
Search for Videos: Otsi videoid
Are you sure you want to delete this playlist? This cannot be undone: Kas sa oled kindel, et soovid selle esitusloendi kustutada? Seda tegevust ei saa tagasi pöörata.
Sort By:
LatestPlayedFirst: Hiljuti esitatud esimesena
EarliestCreatedFirst: Varem loodud esimesena
LatestCreatedFirst: Loodud hiljuti esimesena
EarliestUpdatedFirst: Varem uuendatud esimesena
LatestPlayedFirst: Esitamiskuupäev (viimatine esimesena)
EarliestCreatedFirst: Loomisaeg (vanim esimesena)
LatestCreatedFirst: Loomisaeg (viimatine esimesena)
EarliestUpdatedFirst: Uuendamisaeg (vanim esimesena)
NameDescending: Z-A
EarliestPlayedFirst: Varem esitatud esimesena
LatestUpdatedFirst: Hiljuti uuendatud esimesena
EarliestPlayedFirst: Esitamiskuupäev (vanim esimesena)
LatestUpdatedFirst: Uuendamisaeg (viimatine esimesena)
NameAscending: A-Z
CreatePlaylistPrompt:
Create: Loo uus esitusloend
@@ -210,8 +210,8 @@ History:
Search bar placeholder: Otsi ajaloost
Empty Search Message: Sinu ajaloos pole sinu otsingule vastavaid videosid
Case Sensitive Search: Tõstutundlik otsing
DateOldestHistory: Esmalt varemvaadatu
DateNewestHistory: Esmalt hiljemvaadatu
DateOldestHistory: Vaatamisaeg (vanim esimesena)
DateNewestHistory: Vaatamisaeg (viimatine esimesena)
Settings:
# On Settings Page
Settings: 'Seadistused'
@@ -876,16 +876,16 @@ Playlist:
Playlist: Esitusloend
Sort By:
Custom: Kohandatud
DateAddedNewest: Esmalt viimatilisatud
DateAddedOldest: Esmalt ammu lisatud
DateAddedNewest: Lisamisaeg (viimatine esimesena)
DateAddedOldest: Lisamisaeg (vanim esimesena)
AuthorAscending: Autori alusel (A-Z)
AuthorDescending: Autori alusel (Z-A)
VideoTitleAscending: Pealkirja alusel (A-Z)
VideoTitleDescending: Pealkirja alusel (Z-A)
VideoDurationAscending: Kestuse alusel (esmalt lühemad)
VideoDurationDescending: Kestuse alusel (esmalt pikemad)
PublishedOldest: Esmalt varaseimalt avaldatu
PublishedNewest: Esmalt viimatiavaldatu
VideoDurationAscending: Kestus (esmalt lühemad)
VideoDurationDescending: Kestus (esmalt pikemad)
PublishedOldest: Avaldamisaeg (vanim esimesena)
PublishedNewest: Avaldamisaeg (viimatine esimesena)
Change Format:
Change Media Formats: 'Muuda videovorminguid'
Use Dash Formats: 'Kasuta DASH-vorminguid'

View File

@@ -155,14 +155,14 @@ User Playlists:
Video has been removed. Click here to undo.: ویدیو حذف شد. برای لغو اینجا کلیک کنید.
Search for Videos: جستجوی ویدئوها
Sort By:
EarliestUpdatedFirst: اولین به روز شده
LatestUpdatedFirst: به تازگی به روز شده
EarliestUpdatedFirst: تاریخ بهروزرسانی (قدیمی‌ترین)
LatestUpdatedFirst: تاریخ بهروزرسانی (جدیدترین)
NameAscending: آ-ی
NameDescending: ی-آ
LatestCreatedFirst: به تازگی ایجاد شده
LatestPlayedFirst: اخیراً پخش شده
EarliestPlayedFirst: اولین پخش شده
EarliestCreatedFirst: قدیمی ترین ایجاد شده
LatestCreatedFirst: تاریخ ایجاد (جدیدترین)
LatestPlayedFirst: تاریخ پخش (جدیدترین)
EarliestPlayedFirst: تاریخ پخش (قدیمی‌ترین)
EarliestCreatedFirst: تاریخ ایجاد (قدیمی‌ترین)
CreatePlaylistPrompt:
Toast:
Playlist {playlistName} has been successfully created.: لیست پخش {playlistName} با موفقیت ایجاد شد.
@@ -182,6 +182,7 @@ User Playlists:
Quick Bookmark Enabled: نشانک سریع فعال شد
Delete Playlist: حذف لیست پخش
TotalTimePlaylist: 'زمان کل: {duration}'
Export list of URLs: صادرات فهرست نشانی اینترنتی
History:
# On History Page
History: 'تاریخچه'
@@ -554,6 +555,8 @@ Settings:
Clicking on Test Proxy will send a request to: با کلیک بر روی تست پروکسی یک درخواست ارسال می شود
Your Info: اطلاعات شما
Proxy Warning: FreeTube یک پروکسی داخلی ندارد اما می‌تواند به یک پروکسی خارجی مانند پروکسی که روی دستگاه شما اجرا می‌شود مانند تور یا یک پراکسی خارجی مثل یک پراکسی SOCKS5 که توسط برخی VPNها ارائه می‌شود، متصل شود. در صورت فعال بودن، مطمئن شوید که پروکسی/تور شما به درستی پیکربندی شده است، در غیر این صورت FreeTube نمی تواند هیچ داده ای را واکشی کند.
Proxy Username: نام کاربری پروکسی
Proxy Password: رمز عبور پراکسی
SponsorBlock Settings:
Skip Options:
Skip Option: گزینه پرش

View File

@@ -34,7 +34,7 @@ Global:
# Search Bar
Counts:
Video Count: 1 vidéo | {count} vidéos
Channel Count: 1 chaine | {count} chaines
Channel Count: 1 chaîne | {count} chaînes
View Count: 1 vue | {count} vues
Subscriber Count: 1 abonné | {count} abonnés
Watching Count: 1 spectateur | {count} spectateurs
@@ -61,7 +61,7 @@ Search Filters:
Type: 'Type'
All Types: 'Tous les types'
Videos: 'Vidéos'
Channels: 'Chaines'
Channels: 'Chaînes'
#& Playlists
Movies: Films
Duration:
@@ -92,16 +92,16 @@ Search Filters:
Subscriptions:
# On Subscriptions Page
Subscriptions: 'Abonnements'
'Your Subscription list is currently empty. Start adding subscriptions to see them here.': 'Votre liste dabonnements est actuellement vide. Si vous souhaitez importer vos abonnements, vous pouvez aller dans Paramètres des données et sélectionner Importer des abonnements ou vous pouvez rechercher une chaine et vous y abonner.'
'Your Subscription list is currently empty. Start adding subscriptions to see them here.': 'Votre liste dabonnements est actuellement vide. Si vous souhaitez importer vos abonnements, vous pouvez aller dans Paramètres des données et sélectionner Importer des abonnements ou vous pouvez rechercher une chaîne et vous y abonner.'
This profile has a large number of subscriptions. Forcing RSS to avoid rate limiting: Ce profil comporte un grand nombre d'abonnements. Le flux RSS dépassera la limite fixée
Load More Videos: Charger plus de vidéos
Error Channels: Chaines avec des erreurs
Error Channels: Chaînes avec des erreurs
Disabled Automatic Fetching: Vous avez désactivé la récupération automatique des abonnements. Actualisez les abonnements pour les voir ici.
Empty Channels: Les chaines auxquelles vous êtes abonné(e) ne contiennent actuellement aucune vidéo.
Empty Channels: Les chaînes auxquelles vous êtes abonné(e) ne contiennent actuellement aucune vidéo.
Subscriptions Tabs: Onglets Abonnements
All Subscription Tabs Hidden: Tous les onglets dabonnement sont cachés. Pour voir le contenu ici, veuillez désactiver certains onglets dans la section « {subsection} » dans « {settingsSection} ».
Load More Posts: Charger plus de billets
Empty Posts: Les chaines auxquelles vous êtes abonné(e) ne contiennent actuellement aucun billet.
Empty Posts: Les chaînes auxquelles vous êtes abonné(e) ne contiennent actuellement aucun billet.
Trending:
Trending: 'Tendance'
Trending Tabs: Onglets des Tendances
@@ -457,7 +457,7 @@ Settings:
Never: Jamais
Auto: Automatique
Semi-auto: Semi-automatique
Tooltip: Automatique = Enregistre en quittant le page de chaque vidéo, quand la vidéo s'est terminée ou en cas d'erreur (par ex. taux limité ou session de visionnage expirée. Semi-automatique = Comme automatique sauf en quittant la page d'une vidéo et vous pouvez enregistrer manuellement avec le bouton "Enregistrer l'état de visionnage" situé en-dessous du lecteur vidéo.
Tooltip: Automatique = Enregistre en quittant le page de chaque vidéo, quand la vidéo s'est terminée ou en cas d'erreur (par ex. taux limité ou session de visionnage expirée. Semi-automatique = Comme automatique sauf en quittant la page d'une vidéo et vous pouvez enregistrer manuellement avec le bouton « Enregistrer l'état de visionnage » situé en-dessous du lecteur vidéo.
Data Settings:
How do I import my subscriptions?: Comment importer mes abonnements ?
Subscriptions have been successfully exported: Les abonnements ont été exportés avec succès
@@ -497,7 +497,7 @@ Settings:
Distraction Free Settings:
Hide Video Likes And Dislikes: Masquer les Jaime et Je naime pas des vidéos
Hide Comment Likes: Masquer les Jaime dans les commentaires
Hide Channel Subscribers: Masquer le nombre dabonnés des chaines
Hide Channel Subscribers: Masquer le nombre dabonnés des chaînes
Hide Video Views: Masquer les vues des vidéos
Hide Live Chat: Masquer le chat en direct
Hide Popular Videos: Masquer les vidéos populaires
@@ -516,30 +516,30 @@ Settings:
Hide Channels: Masquer les vidéos des chaînes
Hide Channels Placeholder: Identifiant de la chaîne
Display Titles Without Excessive Capitalisation: Afficher les titres sans majuscules ni ponctuation excessives
Hide Channel Playlists: Masquer longlet « Listes de lecture » de la chaine
Hide Featured Channels: Masquer les chaines en vedette
Hide Channel Shorts: Masquer longlet « Shorts » de la chaine
Hide Channel Playlists: Masquer longlet « Listes de lecture » de la chaîne
Hide Featured Channels: Masquer les chaînes en vedette
Hide Channel Shorts: Masquer longlet « Shorts » de la chaîne
Sections:
Channel Page: Page de la chaine
Channel Page: Page de la chaîne
Side Bar: Barre latérale
Watch Page: Page de lecture
General: Général
Subscriptions Page: Page Abonnements
Hide Channel Podcasts: Masquer longlet « Podcasts » de la chaine
Hide Channel Releases: Masquer longlet « Publications » de la chaine
Hide Channel Podcasts: Masquer longlet « Podcasts » de la chaîne
Hide Channel Releases: Masquer longlet « Publications » de la chaîne
Hide Subscriptions Videos: Masquer les vidéos des abonnements
Hide Subscriptions Shorts: Masquer les shorts des abonnements
Hide Subscriptions Live: Masquer les diffusions en direct des abonnements
Hide Profile Pictures in Comments: Masquer les photos de profil dans les commentaires
Hide Channels Invalid: Lidentifiant de chaine fourni nest pas valide
Hide Channels Disabled Message: Certaines chaines ont été bloquées à laide dun identifiant et nont pas été traitées. La fonctionnalité est bloquée le temps que ces identifiants se mettent à jour
Hide Channels Already Exists: Lidentifiant de chaine existe déjà
Hide Channels Invalid: Lidentifiant de chaîne fourni nest pas valide
Hide Channels Disabled Message: Certaines chaînes ont été bloquées à laide dun identifiant et nont pas été traitées. La fonctionnalité est bloquée le temps que ces identifiants se mettent à jour
Hide Channels Already Exists: Lidentifiant de chaîne existe déjà
Hide Channels API Error: Erreur de récupération de l'utilisateur portant l'identifiant fourni. Veuillez vérifier à nouveau si l'ID est correct.
Hide Videos and Playlists Containing Text: Masquer les vidéos et les listes de lecture contenant du texte
Hide Videos and Playlists Containing Text Placeholder: Mot, fragment de mot ou phrase
Hide Channel Home: Masquer longlet « Accueil » de la chaine
Hide Channel Home: Masquer longlet « Accueil » de la chaîne
Show Added Items: Afficher les éléments ajoutés
Hide Channel Courses: Masquer longlet « Cours » de la chaine
Hide Channel Courses: Masquer longlet « Cours » de la chaîne
Hide Channel Posts: Masquer longlet « Posts » de la chaîne
Hide Subscriptions Posts: Masquer les posts des abonnements
The app needs to restart for changes to take effect. Restart and apply change?: L'application doit être redémarrée pour que les changements prennent effet. Redémarrer et appliquer les changements ?
@@ -645,7 +645,7 @@ About:
Channel:
Subscribe: 'Sabonner'
Unsubscribe: 'Se désabonner'
Search Channel: 'Chercher dans la chaine'
Search Channel: 'Chercher dans la chaîne'
Your search results have returned 0 results: 'Les résultats de votre recherche ont donné 0 résultat'
Videos:
Videos: 'Vidéos'
@@ -656,7 +656,7 @@ Channel:
Most Popular: 'Les plus populaires'
Playlists:
Playlists: 'Listes de lecture'
This channel does not currently have any playlists: 'Cette chaine na pas encore de liste de lecture'
This channel does not currently have any playlists: 'Cette chaîne na pas encore de liste de lecture'
Sort Types:
Last Video Added: 'Dernière vidéo ajoutée'
Newest: 'Les plus récentes'
@@ -688,15 +688,15 @@ Channel:
Viewing Posts Only Supported By Invidious: L'affichage des messages n'est possible qu'avec Indivious. Allez dans l'onglet communauté de la chaîne pour visualiser le contenu sans Indivious.
Live:
Live: En direct
This channel does not currently have any live streams: Cette chaine na pas encore de flux en direct
This channel does not currently have any live streams: Cette chaîne na pas encore de flux en direct
Shorts:
This channel does not currently have any shorts: Cette chaine na pas encore de shorts
This channel does not currently have any shorts: Cette chaîne na pas encore de shorts
Releases:
Releases: Publications
This channel does not currently have any releases: Cette chaine na actuellement aucune publication
This channel does not currently have any releases: Cette chaîne na actuellement aucune publication
Podcasts:
Podcasts: Podcasts
This channel does not currently have any podcasts: Cette chaine na pas encore de podcast
This channel does not currently have any podcasts: Cette chaîne na pas encore de podcast
Home:
Home: Accueil
View Playlist: Afficher la liste de lecture
@@ -927,9 +927,9 @@ Profile:
Edit Profile: Modifier le profil
Create New Profile: Créer un nouveau profil
Profile Manager: Gestionnaire de profil
All Channels: Toutes les chaines
All Channels: Toutes les chaînes
Profile Select: Sélection du profil
Are you sure you want to delete the selected channels? This will not delete the channel from any other profile.: Êtes-vous sûr(e) de vouloir supprimer les chaines sélectionnées? Ceci ne supprimera pas la chaine de tout autre profil.
Are you sure you want to delete the selected channels? This will not delete the channel from any other profile.: Êtes-vous sûr(e) de vouloir supprimer les chaînes sélectionnées? Ceci ne supprimera pas la chaîne de tout autre profil.
Subscription List: Liste des abonnements
? This is your primary profile. Are you sure you want to delete the selected channels? The same channels will be deleted in any profile they are found in.
: Ceci est votre profil principal. Êtes-vous sûr(e) de vouloir supprimer les chaînes sélectionnées ? Les mêmes chaînes seront supprimées dans tous les profils où elles se trouvent.
@@ -983,7 +983,7 @@ Tooltips:
Hide Channels: Entrez un identifiant de chaîne pour empêcher toutes les vidéos, les listes de lecture et la chaîne elle-même d'apparaître dans les recherches, dans les catégories Tendances, Plus populaires et Recommandés. L'identifiant de la chaîne entré doit correspondre exactement et est sensible aux majuscules.
Hide Subscriptions Live: Ce paramètre est remplacé par le paramètre « {appWideSetting} » applicable à l'ensemble de l'application, dans la section « {subsection} » de la section « {settingsSection} »
Hide Videos and Playlists Containing Text: Saisissez un mot, un fragment de mot ou une phrase (insensible à la casse) pour masquer toutes les vidéos et sélections dont le titre original contient ce mot ou cette phrase dans l'ensemble de FreeTube, à l'exception de l'historique, de vos listes de lecture et des vidéos contenues dans les listes de lecture.
Hide Videos on Watch: Masque les vidéos visionnées des onglets Vidéos, Shorts, En direct des pages Abonnements et Chaines. Cela n'a pas d'effet sur l'onglet Accueil des pages Chaines
Hide Videos on Watch: Masque les vidéos visionnées des onglets Vidéos, Shorts, En direct des pages Abonnements et Chaînes. Ceci n'a pas d'effet sur l'onglet Accueil des pages Chaînes
SponsorBlock Settings:
UseDeArrowTitles: Remplacer les titres des vidéos par des titres proposés par les utilisateurs de DeArrow.
UseDeArrowThumbnails: Remplacer les miniatures des vidéos par les miniatures de DeArrow.
@@ -1008,9 +1008,9 @@ Screenshot Error: La capture décran a échoué. {error}
New Window: Nouvelle fenêtre
Channels:
Channels: Chaînes
Title: Liste des chaines
Title: Liste des chaînes
Empty: Votre liste de chaînes est actuellement vide.
Search bar placeholder: Rechercher des chaines
Search bar placeholder: Rechercher des chaînes
Count: '{number} chaîne(s) trouvée(s).'
Unsubscribe Prompt: Êtes-vous sûr(e) de vouloir vous désabonner de « {channelName} » ?
Clipboard:

View File

@@ -133,13 +133,13 @@ User Playlists:
Edit Playlist Info: Breyta upplýsingum spilunarlista
Sort By:
NameDescending: Ö-A
LatestCreatedFirst: Nýlega útbúið
EarliestCreatedFirst: Fyrst búið til
LatestUpdatedFirst: Nýlega uppfært
EarliestPlayedFirst: Fyrst spilað
LatestCreatedFirst: Dags. útbúið (nýjast)
EarliestCreatedFirst: Dags. útbúið (elst)
LatestUpdatedFirst: Dags. uppfært (nýjast)
EarliestPlayedFirst: Dags. spilað (elst)
NameAscending: A-Ö
EarliestUpdatedFirst: Fyrst uppfært
LatestPlayedFirst: Nýlega spilað
EarliestUpdatedFirst: Dags. uppfært (elst)
LatestPlayedFirst: Dags. spilað (nýjast)
SinglePlaylistView:
Toast:
This video cannot be moved up.: Ekki er hægt að færa þetta myndskeið upp.
@@ -211,8 +211,8 @@ History:
Search bar placeholder: Leita í áhorfsferli
Empty Search Message: Það eru engin myndskeið í ferlinum þínum sem samsvara leitinni þinni
Case Sensitive Search: Leit háð há-/lágstöfum
DateOldestHistory: Fyrst horft á fremst
DateNewestHistory: Síðast horft á fremst
DateOldestHistory: Dags. horft á (elst)
DateNewestHistory: Dags. horft á (nýjast)
Settings:
# On Settings Page
Settings: 'Stillingar'
@@ -877,16 +877,16 @@ Playlist:
Playlist: Spilunarlisti
Sort By:
AuthorAscending: Höfundur (A-Ö)
DateAddedNewest: Nýlegast bætt við fyrst
DateAddedNewest: Dags. bætt við (nýjast)
AuthorDescending: Höfundur (Ö-A)
VideoTitleAscending: Titill (A-Ö)
VideoTitleDescending: Titill (Ö-A)
Custom: Sérsniðið
DateAddedOldest: Elsta bætt við fyrst
VideoDurationAscending: Tímalengd (stysta fyrst)
VideoDurationDescending: Tímalengd (lengsta fyrst)
PublishedOldest: Elsta útgefna myndskeið fyrst
PublishedNewest: Síðast útgefna myndskeið fyrst
DateAddedOldest: Dags. bætt við (elst)
VideoDurationAscending: Tímalengd (styst)
VideoDurationDescending: Tímalengd (lengst)
PublishedOldest: Dags. gefið út (elst)
PublishedNewest: Dags. gefið út (nýjast)
Change Format:
Change Media Formats: 'Skipta um myndskeiðasnið'
Use Dash Formats: 'Nota DASH-skráasnið'

View File

@@ -7,7 +7,7 @@ New Window: 'Jauns logs'
Preferences: 'Iestatījumi'
Quit: 'Iziet'
Edit: 'Rediģēt'
Undo: 'Atcelt'
Undo: 'Atsaukt'
Redo: 'Darīt vēlreiz'
Cut: 'Izgriezt'
Copy: 'Kopēt'
@@ -60,14 +60,14 @@ Search Filters:
Search Filters: 'Meklēšanas atlase'
Sort By:
Most Relevant: 'Visatbilstošākie'
Rating: 'Vērtējums'
Rating: 'Vērtējuma'
Upload Date: 'Augšuplādes datums'
View Count: 'Skatījumi'
Time:
Time: 'Laiks'
Time: 'Vecums'
Any Time: 'Jebkurā laikā'
Last Hour: 'Pēdējā stundā'
Today: 'Šodien'
Today: 'Šodienas'
This Week: 'Šonedēļ'
This Month: 'Šomēnes'
This Year: 'Šogad'
@@ -125,8 +125,8 @@ Channels:
Empty: 'Tavs kanālu saraksts pašreiz ir tukšs.'
Unsubscribe Prompt: 'Vai esi drošs, ka vēlies atcelt abonementu no "{channelName}"?'
Trending:
Trending: 'Tendences'
Default: 'Noklusējuma'
Trending: 'Pašlaik topā'
Default: 'Viss'
Music: 'Mūzika'
Gaming: 'Spēles'
Movies: 'Filmas'
@@ -214,7 +214,7 @@ Settings:
Settings: 'Iestatījumi'
The app needs to restart for changes to take effect. Restart and apply change?: ''
General Settings:
General Settings: 'Galvenie'
General Settings: 'Vispārīgie'
Check for Updates: 'Pārbaudīt atjauninājumus'
Check for Latest Blog Posts: 'Skatīt jaunākos bloga ierakstus'
Fallback to Non-Preferred Backend on Failure: ''
@@ -255,7 +255,7 @@ Settings:
Auto Load Next Page:
Label: Autoielādē nākamo lapu
Theme Settings:
Theme Settings: 'Izskats'
Theme Settings: 'Izskata'
Match Top Bar with Main Color: 'Saskaņo augšmalu ar galveno krāsu'
Expand Side Bar by Default: 'Izvērs sānu malu pēc noklusējuma'
Disable Smooth Scrolling: 'Atspējot plūdeno ritināšanu'
@@ -282,13 +282,13 @@ Settings:
Indigo: 'Indigo'
Blue: 'Zils'
Light Blue: 'Gaiši zils'
Cyan: ''
Teal: ''
Cyan: 'Ciānzaļš, zilzaļš'
Teal: 'Tirkīza zaļš'
Green: 'Zaļš'
Light Green: 'Gaiši zaļš'
Lime: 'Laims'
Lime: 'Laima zaļš, dzeltenzaļš'
Yellow: 'Dzeltens'
Amber: 'Dzintars'
Amber: 'Dzintara (oranži) dzeltens'
Orange: 'Oranžs'
Deep Orange: 'Dziļi oranžs'
Dracula Cyan: ''
@@ -340,16 +340,16 @@ Settings:
Audio Formats: 'Audio formāti'
Default Quality:
Default Quality: 'Noklusējuma kvalitāte'
Auto: 'Auto'
Auto: 'Automātiski atlasīt'
144p: '144p'
240p: '240p'
360p: '360p'
480p: '480p'
720p: '720p'
1080p: '1080p'
1440p: '1440p'
4k: '4k'
8k: '8k'
480p: '480p (SD)'
720p: '720p (HD)'
1080p: '1080p (Full HD)'
1440p: '1440p (2.5K)'
4k: '2160p (4K)'
8k: '4320p (8K)'
Screenshot:
Enable: 'Iespējot ekrānšāviņu'
Format Label: 'Ekrānšāviņa formāti'
@@ -398,7 +398,7 @@ Settings:
Subscriptions Page: 'Abonementu lapa'
Channel Page: 'Kanāla lapa'
Watch Page: 'Skatīšanās lapa'
General: 'Galvenais'
General: 'Vispārīgie'
Hide Video Views: 'Paslēpt video skatījumus'
Hide Video Likes And Dislikes: 'Paslēpt video novērtējuma atzīmes'
Hide Channel Subscribers: 'Paslēpt kanāla abonentus'
@@ -466,7 +466,7 @@ Settings:
How do I import my subscriptions?: ''
Manage Subscriptions: 'Pārvaldīt abonementus'
Proxy Settings:
Proxy Settings: 'Starpniekserveru'
Proxy Settings: 'Starpniekservera'
Enable Tor / Proxy: 'Iespējot Tor / starpniekserveri'
Proxy Protocol: 'Starpniekservera protokols'
Proxy Host: 'Starpniekservera saimnieks'
@@ -589,8 +589,8 @@ Profile:
Profile Name: Profila vārds
Edit Profile Name: Rediģē profila vārdu
Channel:
Subscribe: 'Abonē'
Unsubscribe: 'Atabonē'
Subscribe: 'Abonēt'
Unsubscribe: 'Pārtraukt abonēt'
Channel has been removed from your subscriptions: ''
Removed subscription from {count} other channel(s): ''
Added channel to your subscriptions: ''
@@ -604,8 +604,8 @@ Channel:
Videos: 'Video'
This channel does not currently have any videos: 'Šajā kanāla pašlaik nav video'
Sort Types:
Newest: 'Jaunākie'
Oldest: 'Vecākie'
Newest: 'Jaunākie augšgalā'
Oldest: 'Vecākie augšgalā'
Most Popular: 'Populārākie'
Shorts:
This channel does not currently have any shorts: 'Šajā kanālā pašlaik nav īso'
@@ -617,8 +617,8 @@ Channel:
This channel does not currently have any playlists: 'Šajā kanālā pašlaik nav sarakstu'
Sort Types:
Last Video Added: 'Pēdējais pievienotais video'
Newest: 'Jaunākās'
Oldest: 'Vecākās'
Newest: 'Jaunākie augšgalā'
Oldest: 'Vecākie augšgalā'
Podcasts:
Podcasts: 'Podkāsti'
This channel does not currently have any podcasts: 'Šajā kanālā pašlaik nav podkāstu'
@@ -631,9 +631,9 @@ Channel:
Tags:
Tags: 'Birkas'
Search for: ''
Details: 'Detaļas'
Details: 'Informācija'
Joined: 'Pievienojās'
Location: 'Vieta'
Location: 'Atrašanās vieta'
Featured Channels: 'Izceltie kanāli'
Posts:
This channel currently does not have any posts: 'Šajā kanālā pašlaik nav ierakstu'

View File

@@ -152,13 +152,13 @@ User Playlists:
Search for Videos: Szukaj filmów
Are you sure you want to delete this playlist? This cannot be undone: Czy na pewno chcesz usunąć tę playlistę? Nie można cofnąć tej czynności.
Sort By:
LatestPlayedFirst: Odtwarzane ostatnio
EarliestCreatedFirst: Utworzone najdawniej
LatestCreatedFirst: Utworzone ostatnio
EarliestUpdatedFirst: Zmieniane najdawniej
LatestPlayedFirst: Daty odtworzenia (od najświeższej)
EarliestCreatedFirst: Daty utworzenia (od najdawniejszej)
LatestCreatedFirst: Daty utworzenia (od najświeższej)
EarliestUpdatedFirst: Daty ostatniej zmiany (od najdawniejszej)
NameDescending: Z-A
EarliestPlayedFirst: Odtwarzane najdawniej
LatestUpdatedFirst: Zmieniane ostatnio
EarliestPlayedFirst: Daty odtworzenia (od najdawniejszej)
LatestUpdatedFirst: Daty ostatniej zmiany (od najświeższej)
NameAscending: A-Z
You have no playlists. Click on the create new playlist button to create a new one.: Nie masz żadnych playlist. Kliknij na przycisk „Utwórz nową playlistę”, by dodać jedną.
Remove from Playlist: Usuń z playlisty
@@ -203,8 +203,8 @@ History:
Search bar placeholder: Przeszukaj historię
Empty Search Message: W historii nie ma filmów, które pasowałyby do Twojego zapytania
Case Sensitive Search: Rozróżniaj wielkość liter
DateOldestHistory: Od obejrzanych najdawniej
DateNewestHistory: Od obejrzanych ostatnio
DateOldestHistory: Daty obejrzenia (od najdawniejszej)
DateNewestHistory: Daty obejrzenia (od najświeższej)
Settings:
# On Settings Page
Settings: 'Ustawienia'
@@ -828,17 +828,17 @@ Playlist:
#& Views
Playlist: Playlista
Sort By:
VideoTitleDescending: Po tytule (Z-A)
VideoTitleAscending: Po tytule (A-Z)
VideoTitleDescending: Tytułu (Z-A)
VideoTitleAscending: Tytułu (A-Z)
Custom: Własny porządek
DateAddedOldest: Od dodanych najdawniej
DateAddedNewest: Od dodanych ostatnio
DateAddedOldest: Daty dodania (od najdawniejszej)
DateAddedNewest: Daty dodania (od najświeższej)
AuthorAscending: Po autorze (A-Z)
AuthorDescending: Po autorze (Z-A)
VideoDurationDescending: Czas trwania (od najdłuższych)
VideoDurationAscending: Czas trwania (od najkrótszych)
PublishedNewest: Od opublikowanych ostatnio
PublishedOldest: Od opublikowanych najdawniej
VideoDurationDescending: Czasu trwania (od najdłuższych)
VideoDurationAscending: Czasu trwania (od najkrótszych)
PublishedNewest: Daty publikacji (od najświeższej)
PublishedOldest: Daty publikacji (od najdawniejszej)
Change Format:
Change Media Formats: 'Zmień formaty wideo'
Use Dash Formats: 'Użyj formatów DASH'

View File

@@ -44,7 +44,7 @@ Global:
Comment Count: 1 comentários | {count} comentários
Version {versionNumber} is now available! Click for more details: A versão {versionNumber} está disponível! Clique aqui para mais informações.
Download From Site: Descarregar do site
A new blog is now available, {blogTitle}. Click to view more: 'Está disponível um novo blogue, {blogTitle}. Clique para ver mais.'
A new blog is now available, {blogTitle}. Click to view more: 'Está disponível um novo blogue, {blogTitle}. Clique para ver mais'
# Search Bar
Search / Go to URL: Pesquisar / ir para o URL
@@ -79,7 +79,7 @@ Search Filters:
# On Search Page
Medium (4 - 20 minutes): Média (4 - 20 minutos)
Search Results: Resultados
Fetching results. Please wait: A procurar. Por favor aguarde.
Fetching results. Please wait: A procurar. Por favor aguarde
Fetch more results: Obter mais resultados
There are no more results for this search: Não existem mais resultados
# Sidebar
@@ -95,6 +95,7 @@ Search Filters:
HDR: HDR
360 Video: Vídeo 360
VR180: VR180
Clear Filters: Limpar Filtros
Subscriptions:
# On Subscriptions Page
Subscriptions: Subscrições
@@ -148,14 +149,14 @@ User Playlists:
Remove from Playlist: Remover da lista de reprodução
Save Changes: Guardar alterações
Sort By:
LatestCreatedFirst: Criado recentemente
LatestCreatedFirst: Data de Criação (Mais Recente)
NameDescending: Z-A
LatestUpdatedFirst: Atualizado recentemente
LatestUpdatedFirst: Data de Atualização (Mais Recente)
NameAscending: A-Z
EarliestCreatedFirst: Criação mais antiga
EarliestUpdatedFirst: Atualização mais antiga
LatestPlayedFirst: Reproduzido recentemente
EarliestPlayedFirst: Reprodução mais antiga
EarliestCreatedFirst: Data de Criação (Mais Antigo)
EarliestUpdatedFirst: Data de Atualização (Mais Antigo)
LatestPlayedFirst: Data de Reprodução (Mais Recente)
EarliestPlayedFirst: Data de Reprodução (Mais Antigo)
This playlist currently has no videos.: Esta lista de reprodução não tem vídeos atualmente.
Add to Playlist: Adicionar à lista de reprodução
Move Video Down: Mover vídeo para baixo
@@ -200,6 +201,7 @@ User Playlists:
Are you sure you want to remove {playlistItemCount} duplicate videos from this playlist? This cannot be undone: Tem a certeza de que pretende remover 1 vídeo duplicado desta lista de reprodução? Esta remoção não pode ser revertida. | Tem a certeza de que pretende remover {playlistItemCount} vídeos duplicados desta lista de reprodução? Esta remoção não pode ser revertida.
Cannot delete the quick bookmark target playlist.: Não é possível eliminar a lista de reprodução de destino do marcador rápido.
TotalTimePlaylist: 'Duração total: {duration}'
Export list of URLs: Exportar lista de URLs
History:
# On History Page
History: Histórico
@@ -208,6 +210,8 @@ History:
Search bar placeholder: Procurar no histórico
Empty Search Message: Não há vídeos no histórico que coincidam com a sua pesquisa
Case Sensitive Search: Diferenciar maiúsculas e minúsculas
DateOldestHistory: Data de Visualização (Mais Antigo)
DateNewestHistory: Data de Visualização (Mais Recente)
Settings:
# On Settings Page
Settings: Definições
@@ -255,6 +259,7 @@ Settings:
Tooltip: Carrega as páginas e comentários automaticamente.
Label: Carregar seguinte automaticamente
Open Deep Links In New Window: Abrir URLs passados para o FreeTube numa nova janela
Minimize to system tray: Minimizar para o Tabuleiro do Sistema
Theme Settings:
Theme Settings: Tema
Match Top Bar with Main Color: Utilizar cor principal na barra superior
@@ -452,6 +457,7 @@ Settings:
Never: Nunca
Auto: Automático
Semi-auto: Semiautomático
Tooltip: 'Automático = Guarda sempre: ao sair da página do vídeo, quando o vídeo termina ou se ocorrer algum erro (por ex.: limite de taxa atingido ou sessão expirada). Semiautomático = Igual ao modo Automático, exceto ao sair da página do vídeo, permite guardar o progresso manualmente através do botão "Guardar progresso de reprodução", que se encontra em baixo do reprodutor.'
Subscription Settings:
Subscription Settings: Subscrição
Fetch Feeds from RSS: Obter subscrições através de RSS
@@ -505,6 +511,8 @@ Settings:
Hide Channel Home: Ocultar o separador “Página inicial” do canal
Show Added Items: Mostrar itens adicionados
Hide Channel Courses: Ocultar o separador “Cursos” do canal
Hide Channel Posts: Ocultar separador de "Publicações" nos canais
Hide Subscriptions Posts: Ocultar Publicações de Subscrições
Data Settings:
Data Settings: Dados
Select Export Type: Selecione o tipo de exportação
@@ -556,6 +564,8 @@ Settings:
City: Cidade
Error getting network information. Is your proxy configured properly?: Erro ao obter informações da rede. O seu proxy está configurado corretamente?
Proxy Warning: O FreeTube não tem um proxy incorporado, mas pode conectar-se a um proxy externo, como um que esteja a ser executado na sua máquina, como o Tor, ou um proxy externo, como um proxy SOCKS5 fornecido por algumas VPNs. Se estiver ativado, certifique-se de que o seu proxy / Tor está configurado corretamente, ou o FreeTube não conseguirá obter quaisquer dados.
Proxy Username: Nome de Utilizador da Proxy
Proxy Password: Palavra-passe da Proxy
SponsorBlock Settings:
Notify when sponsor segment is skipped: Notificar se um anúncio for ignorado
'SponsorBlock API Url (Default is https://sponsor.ajay.app)': URL da API SponsorBlock (padrão é https://sponsor.ajay.app)
@@ -586,6 +596,7 @@ Settings:
Hide Search Bar: Ocultar barra de pesquisa
Hide Unsubscribe Button: Ocultar botão "Cancelar subscrição"
Show Family Friendly Only: Mostrar apenas "Para famílias"
Hide Uploader on Watch page: Ocultar Nome do Autor na página de Reprodução de Vídeo
Download Settings:
Open in web browser: Abrir no navegador de Internet
Ask Download Path: Perguntar local para guardar
@@ -613,7 +624,7 @@ About:
Beta: Beta
Source code: Código-fonte
Downloads / Changelog: Descargas / alterações
GitHub releases: Versões no GitHub
GitHub releases: Versões do GitHub
Help: Ajuda
FreeTube Wiki: Wiki FreeTube
FAQ: FAQ
@@ -852,6 +863,7 @@ Video:
Show Original Details: Mostrar detalhes originais
DRMProtected: Os vídeos protegidos por DRM não podem ser reproduzidos no FreeTube, uma vez que requerem componentes proprietários e de código fechado. Se quiser ver este vídeo, veja-o no sítio Web oficial do YouTube num navegador Web com DRM.
Save Watched Progress: Gravar progresso de visualização
Watched Progress Saved: O Progresso de Visualização foi gravado
Playlist:
#& About
View Full Playlist: Ver lista de reprodução completa
@@ -862,17 +874,17 @@ Playlist:
#& Views
Playlist: Lista de reprodução
Sort By:
DateAddedOldest: Primeiras adições primeiro
DateAddedNewest: Últimas adições primeiro
DateAddedOldest: Data de Adição (Mais Antigo)
DateAddedNewest: Data de Adição (Mais Recente)
AuthorAscending: Autor (A-Z)
VideoTitleDescending: Título (Z-A)
Custom: Personalizado
AuthorDescending: Autor (Z-A)
VideoTitleAscending: Título (A-Z)
PublishedOldest: Mais antigo publicado primeiro
PublishedNewest: Última publicação primeiro
VideoDurationAscending: Duração (curtos primeiro)
VideoDurationDescending: Duração (longos primeiro)
PublishedOldest: Data de Publicação (Mais Antigo)
PublishedNewest: Data de Publicação (Mais Recente)
VideoDurationAscending: Duração (Mais Curto)
VideoDurationDescending: Duração (Mais Longo)
Change Format:
Change Media Formats: Alterar formatos multimédia
Use Dash Formats: Utilizar formatos DASH
@@ -930,21 +942,21 @@ Tooltips:
General Settings:
Preferred API Backend: Escolha o sistema que o FreeTube usa para se ligar ao YouTube. A API local é um extrator incorporado. A API Invidious requer um servidor Invidious para fazer a ligação.
Fallback to Non-Preferred Backend on Failure: Se a sua API preferida tiver um problema, FreeTube tentará usar automaticamente a API secundária, caso esta opção esteja ativada.
Thumbnail Preference: Todas as miniaturas dos vídeos no FreeTube serão substituídas por um fotograma do vídeo em vez da miniatura original.
Thumbnail Preference: Todas as miniaturas dos vídeos no FreeTube serão substituídas por um quadro borrado ou escondido do vídeo em vez da miniatura original.
Invidious Instance: A instância Invidious à qual o FreeTube se irá ligar para invocar a API.
Region for Trending: A região permite-lhe escolher de que país virão os vídeos na secção de tendências.
External Link Handling: "Escolha o comportamento padrão quando uma hiperligação, que não pode ser aberta no FreeTube, é clicada.\nPor definição, o FreeTube abrirá a hiperligação no seu navegador de Internet.\n"
Open Deep Links In New Window: Os URLs passados para o FreeTube, como por extensões de navegador de redirecionamento ou argumentos de linha de comando, são abertos numa nova janela.
Player Settings:
Proxy Videos Through Invidious: Estabelece uma conexão ao Invidious para obter vídeos em vez de fazer uma conexão direta ao YouTube.
Default Video Format: Define os formatos usados quando um vídeo é reproduzido. Os formatos DASH podem reproduzir qualidades mais altas. Os formatos antigos estão limitados a um máximo de 720p, mas usam menos largura de banda. Os formatos de áudio são apenas para emissões sem vídeo.
Default Video Format: Define os formatos usados quando um vídeo é reproduzido. Os formatos DASH podem reproduzir em qualidades mais altas. Os formatos antigos estão limitados a um máximo de 360p, mas usam menos largura de banda. Os formatos de áudio são apenas para reproduções de áudio (sem vídeo).
Scroll Playback Rate Over Video Player: Com o cursor sobre o vídeo, prima e mantenha premida a tecla Ctrl (tecla Comando em Mac) e desloque a roda do rato para controlar a velocidade de reprodução. Prima e mantenha premida a tecla Ctrl (tecla Comando em Mac) e clique com o botão esquerdo do rato para voltar rapidamente à velocidade de reprodução padrão (1 a não ser que tenha sido alterada nas definições).
Skip by Scrolling Over Video Player: Utilizar roda do rato para avançar ou recuar o vídeo, estilo MPV.
Subscription Settings:
Fetch Feeds from RSS: Se ativa, FreeTube irá obter as subscrições através de RSS em vez do método normal. O formato RSS é mais rápido e não é bloqueado pelo YouTube, mas não disponibiliza certas informações como, por exemplo, a duração dos vídeos, se são emissões em direto e as publicações da comunidade
Fetch Feeds from RSS: Se ativa, o FreeTube irá obter as subscrições através de RSS em vez do método normal. O formato RSS é mais rápido e não é bloqueado pelo YouTube, mas não disponibiliza certas informações como, por exemplo, a duração dos vídeos, se são emissões em direto e publicações
# Toast Messages
Fetch Automatically: Se ativado, o FreeTube irá obter automaticamente as subscrições ao abrir uma nova janela e/ou quando trocar de perfil.
Fetch Automatically: Se ativado, o FreeTube irá obter automaticamente as subscrições ao iniciar e ao abrir uma nova janela.
External Player Settings:
Custom External Player Arguments: Quaisquer argumentos de linha de comando, que quiser passar ao reprodutor externo.
Ignore Warnings: Ignorar avisos quando o reprodutor externo escolhido não suporte uma ação (por exemplo, inverter listas de reprodução).
@@ -958,6 +970,7 @@ Tooltips:
Hide Channels: Introduza o ID de um canal para impedir que os vídeos, listas de reprodução e o próprio canal apareçam na pesquisa, tendências, mais populares e recomendados. O nome do canal introduzido tem que ser uma correspondência exata e diferencia maiúsculas de minúsculas.
Hide Subscriptions Live: Esta definição é substituída pela definição global "{appWideSetting}", existente na secção "{subsection}" de "{settingsSection}"
Hide Videos and Playlists Containing Text: Introduza uma palavra, fragmento de palavra ou frase (sem distinção entre maiúsculas e minúsculas) para ocultar todos os vídeos e listas de reprodução cujos títulos originais a contenham em todo o FreeTube, excluindo apenas o histórico, as suas listas de reprodução e os vídeos dentro das listas de reprodução.
Hide Videos on Watch: Oculta os vídeos já reproduzidos dos separadores "Vídeos", "Shorts" e "Em direto" nas páginas "Subscrições" e "Canais". Não afeta o separador "Início" nas páginas "Canais"
SponsorBlock Settings:
UseDeArrowTitles: Substituir títulos de vídeo por títulos enviados pelo utilizador a partir do DeArrow.
UseDeArrowThumbnails: Substituir miniaturas do vídeo por miniaturas DeArrow.
@@ -1092,6 +1105,10 @@ KeyboardShortcutPrompt:
Last Frame: Fotograma anterior (durante a pausa)
Volume Up: Aumentar volume
Skip by Tenths: Avançar ou recuar o vídeo por percentagem (3 saltos para 30% da duração)
Home: Voltar ao início do vídeo
End: Avançar para o final do vídeo
Skip to Next Video: Avançar para o próximo vídeo da lista de reprodução atual ou para o próximo vídeo recomendado
Skip to Previous Video: Voltar para o vídeo anterior da lista de reprodução atual
shortcutLabelSeparator:
Keys:
arrowdown: Seta para baixo

241
yarn.lock
View File

@@ -1009,19 +1009,19 @@
resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.12.1.tgz#cfc6cffe39df390a3841cde2abccf92eaa7ae0e0"
integrity sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==
"@eslint/config-array@^0.21.0":
version "0.21.0"
resolved "https://registry.yarnpkg.com/@eslint/config-array/-/config-array-0.21.0.tgz#abdbcbd16b124c638081766392a4d6b509f72636"
integrity sha512-ENIdc4iLu0d93HeYirvKmrzshzofPw6VkZRKQGe9Nv46ZnWUzcF1xV01dcvEg/1wXUR61OmmlSfyeyO7EvjLxQ==
"@eslint/config-array@^0.21.1":
version "0.21.1"
resolved "https://registry.yarnpkg.com/@eslint/config-array/-/config-array-0.21.1.tgz#7d1b0060fea407f8301e932492ba8c18aff29713"
integrity sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA==
dependencies:
"@eslint/object-schema" "^2.1.6"
"@eslint/object-schema" "^2.1.7"
debug "^4.3.1"
minimatch "^3.1.2"
"@eslint/config-helpers@^0.4.0":
version "0.4.0"
resolved "https://registry.yarnpkg.com/@eslint/config-helpers/-/config-helpers-0.4.0.tgz#e9f94ba3b5b875e32205cb83fece18e64486e9e6"
integrity sha512-WUFvV4WoIwW8Bv0KeKCIIEgdSiFOsulyN0xrMu+7z43q/hkOLXjvb5u7UC9jDxvRzcrbEmuZBX5yJZz1741jog==
"@eslint/config-helpers@^0.4.1":
version "0.4.1"
resolved "https://registry.yarnpkg.com/@eslint/config-helpers/-/config-helpers-0.4.1.tgz#7d173a1a35fe256f0989a0fdd8d911ebbbf50037"
integrity sha512-csZAzkNhsgwb0I/UAV6/RGFTbiakPCf0ZrGmrIxQpYvGZ00PhTkSnyKNolphgIvmnJeGw6rcGVEXfTzUnFuEvw==
dependencies:
"@eslint/core" "^0.16.0"
@@ -1054,15 +1054,15 @@
minimatch "^3.1.2"
strip-json-comments "^3.1.1"
"@eslint/js@9.37.0", "@eslint/js@^9.37.0":
version "9.37.0"
resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.37.0.tgz#0cfd5aa763fe5d1ee60bedf84cd14f54bcf9e21b"
integrity sha512-jaS+NJ+hximswBG6pjNX0uEJZkrT0zwpVi3BA3vX22aFGjJjmgSTSmPpZCRKmoBL5VY/M6p0xsSJx7rk7sy5gg==
"@eslint/js@9.38.0", "@eslint/js@^9.38.0":
version "9.38.0"
resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.38.0.tgz#f7aa9c7577577f53302c1d795643589d7709ebd1"
integrity sha512-UZ1VpFvXf9J06YG9xQBdnzU+kthors6KjhMAl6f4gH4usHyh31rUf2DLGInT8RFYIReYXNSydgPY0V2LuWgl7A==
"@eslint/object-schema@^2.1.6":
version "2.1.6"
resolved "https://registry.yarnpkg.com/@eslint/object-schema/-/object-schema-2.1.6.tgz#58369ab5b5b3ca117880c0f6c0b0f32f6950f24f"
integrity sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==
"@eslint/object-schema@^2.1.7":
version "2.1.7"
resolved "https://registry.yarnpkg.com/@eslint/object-schema/-/object-schema-2.1.7.tgz#6e2126a1347e86a4dedf8706ec67ff8e107ebbad"
integrity sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==
"@eslint/plugin-kit@^0.3.3":
version "0.3.5"
@@ -1507,6 +1507,11 @@
resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.27.8.tgz#6667fac16c436b5434a387a34dedb013198f6e6e"
integrity sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==
"@sindresorhus/base62@^1.0.0":
version "1.0.0"
resolved "https://registry.yarnpkg.com/@sindresorhus/base62/-/base62-1.0.0.tgz#c47c42410e5212e4fa4657670e118ddfba39acd6"
integrity sha512-TeheYy0ILzBEI/CO55CP6zJCSdSWeRtGnHy8U8dWSUH4I68iqTsy7HkMktR4xakThc9jotkPQUXT4ITdbV7cHA==
"@sindresorhus/is@^4.0.0":
version "4.6.0"
resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-4.6.0.tgz#3c7c9c46e678feefe7a2e5bb609d3dbd665ffb3f"
@@ -3676,10 +3681,10 @@ electron-to-chromium@^1.5.227:
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.230.tgz#06ddb4a6302a78b2a3e8dcf1dd2563bcfdd546c9"
integrity sha512-A6A6Fd3+gMdaed9wX83CvHYJb4UuapPD5X5SLq72VZJzxHSY0/LUweGXRWmQlh2ln7KV7iw7jnwXK7dlPoOnHQ==
electron@^38.2.2:
version "38.2.2"
resolved "https://registry.yarnpkg.com/electron/-/electron-38.2.2.tgz#117a516fa2215604e35a60f3cc2543f3f5404a16"
integrity sha512-OXSaVNXDlonXDjMRsFNQo1j5tzTKwKXh5/m46IjAFccBcZJZMISI+EjSI07oexIuhvKM8AZLuFuihVn4YjWWrA==
electron@^38.3.0:
version "38.3.0"
resolved "https://registry.yarnpkg.com/electron/-/electron-38.3.0.tgz#5f8c8bc3153555832a465cbe271b0ae8117f4145"
integrity sha512-Wij4AzX4SAV0X/ktq+NrWrp5piTCSS8F6YWh1KAcG+QRtNzyns9XLKERP68nFHIwfprhxF2YCN2uj7nx9DaeJw==
dependencies:
"@electron/get" "^2.0.0"
"@types/node" "^22.7.7"
@@ -4000,10 +4005,10 @@ eslint-plugin-import-x@^4.16.1:
stable-hash-x "^0.2.0"
unrs-resolver "^1.9.2"
eslint-plugin-jsdoc@^61.1.1:
version "61.1.1"
resolved "https://registry.yarnpkg.com/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-61.1.1.tgz#341b67039b3e814f2df08a454569dd1e18d23bb0"
integrity sha512-3kp6+C0KVPY7crmB/ymV28bPvam1x7+yXgCzEi91WGRWxdEdDhTa5yR79tpgbMFi5ns5TEOS27aTluS/2jMz+g==
eslint-plugin-jsdoc@^61.1.5:
version "61.1.5"
resolved "https://registry.yarnpkg.com/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-61.1.5.tgz#a846ee9424d6667974b4446755c8c85f22ceaa32"
integrity sha512-UZ+7M6WVFBVRTxHZURxYP7M++M+ZEjxPGB/CScdrKAhzpf/LWS1HaNRHMOkISkOTTggMhwRwgKmVlTLQryXV2Q==
dependencies:
"@es-joy/jsdoccomment" "~0.76.0"
are-docs-informative "^0.0.2"
@@ -4013,10 +4018,11 @@ eslint-plugin-jsdoc@^61.1.1:
espree "^10.4.0"
esquery "^1.6.0"
html-entities "^2.6.0"
object-deep-merge "^1.0.5"
object-deep-merge "^2.0.0"
parse-imports-exports "^0.2.4"
semver "^7.7.3"
spdx-expression-parse "^4.0.0"
to-valid-identifier "^1.0.0"
eslint-plugin-jsonc@^2.21.0:
version "2.21.0"
@@ -4103,10 +4109,10 @@ eslint-plugin-unicorn@^61.0.2:
semver "^7.7.2"
strip-indent "^4.0.0"
eslint-plugin-vue@^10.5.0:
version "10.5.0"
resolved "https://registry.yarnpkg.com/eslint-plugin-vue/-/eslint-plugin-vue-10.5.0.tgz#61566528a85e2546b50534914cb44a077983c49f"
integrity sha512-7BZHsG3kC2vei8F2W8hnfDi9RK+cv5eKPMvzBdrl8Vuc0hR5odGQRli8VVzUkrmUHkxFEm4Iio1r5HOKslO0Aw==
eslint-plugin-vue@^10.5.1:
version "10.5.1"
resolved "https://registry.yarnpkg.com/eslint-plugin-vue/-/eslint-plugin-vue-10.5.1.tgz#b172bab0b78100484e21726af138debb998a369f"
integrity sha512-SbR9ZBUFKgvWAbq3RrdCtWaW0IKm6wwUiApxf3BVTNfqUIo4IQQmreMg2iHFJJ6C/0wss3LXURBJ1OwS/MhFcQ==
dependencies:
"@eslint-community/eslint-utils" "^4.4.0"
natural-compare "^1.4.0"
@@ -4170,24 +4176,23 @@ eslint-visitor-keys@^4.2.0, eslint-visitor-keys@^4.2.1:
resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz#4cfea60fe7dd0ad8e816e1ed026c1d5251b512c1"
integrity sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==
eslint@^9.37.0:
version "9.37.0"
resolved "https://registry.yarnpkg.com/eslint/-/eslint-9.37.0.tgz#ac0222127f76b09c0db63036f4fe289562072d74"
integrity sha512-XyLmROnACWqSxiGYArdef1fItQd47weqB7iwtfr9JHwRrqIXZdcFMvvEcL9xHCmL0SNsOvF0c42lWyM1U5dgig==
eslint@^9.38.0:
version "9.38.0"
resolved "https://registry.yarnpkg.com/eslint/-/eslint-9.38.0.tgz#3957d2af804e5cf6cc503c618f60acc71acb2e7e"
integrity sha512-t5aPOpmtJcZcz5UJyY2GbvpDlsK5E8JqRqoKtfiKE3cNh437KIqfJr3A3AKf5k64NPx6d0G3dno6XDY05PqPtw==
dependencies:
"@eslint-community/eslint-utils" "^4.8.0"
"@eslint-community/regexpp" "^4.12.1"
"@eslint/config-array" "^0.21.0"
"@eslint/config-helpers" "^0.4.0"
"@eslint/config-array" "^0.21.1"
"@eslint/config-helpers" "^0.4.1"
"@eslint/core" "^0.16.0"
"@eslint/eslintrc" "^3.3.1"
"@eslint/js" "9.37.0"
"@eslint/js" "9.38.0"
"@eslint/plugin-kit" "^0.4.0"
"@humanfs/node" "^0.16.6"
"@humanwhocodes/module-importer" "^1.0.1"
"@humanwhocodes/retry" "^0.4.2"
"@types/estree" "^1.0.6"
"@types/json-schema" "^7.0.15"
ajv "^6.12.4"
chalk "^4.0.0"
cross-spawn "^7.0.6"
@@ -5726,71 +5731,71 @@ lazy-val@^1.0.5:
resolved "https://registry.yarnpkg.com/lazy-val/-/lazy-val-1.0.5.tgz#6cf3b9f5bc31cee7ee3e369c0832b7583dcd923d"
integrity sha512-0/BnGCCfyUMkBpeDgWihanIAF9JmZhHBgUhEqzvf+adhNGLoP6TaiI5oF8oyb3I45P+PcnrqihSf01M0l0G5+Q==
lefthook-darwin-arm64@1.13.6:
version "1.13.6"
resolved "https://registry.yarnpkg.com/lefthook-darwin-arm64/-/lefthook-darwin-arm64-1.13.6.tgz#8b07763fc93aa3dc4d0744337f2dcbb3b87a496f"
integrity sha512-m6Lb77VGc84/Qo21Lhq576pEvcgFCnvloEiP02HbAHcIXD0RTLy9u2yAInrixqZeaz13HYtdDaI7OBYAAdVt8A==
lefthook-darwin-arm64@2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/lefthook-darwin-arm64/-/lefthook-darwin-arm64-2.0.0.tgz#f13dc103df1a73bfe8d4db7f41ef9c20b45e84e0"
integrity sha512-0p614LKJA1XZjw1m8WA0emK5kDDHwpiVzNWQBwM/kyY9dxDOV1ixRqm36J0fpshaoSFcwucma5xA3HTK1A23Dg==
lefthook-darwin-x64@1.13.6:
version "1.13.6"
resolved "https://registry.yarnpkg.com/lefthook-darwin-x64/-/lefthook-darwin-x64-1.13.6.tgz#454e09ff19b837de1346c6c64d53c4aa8795a68e"
integrity sha512-CoRpdzanu9RK3oXR1vbEJA5LN7iB+c7hP+sONeQJzoOXuq4PNKVtEaN84Gl1BrVtCNLHWFAvCQaZPPiiXSy8qg==
lefthook-darwin-x64@2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/lefthook-darwin-x64/-/lefthook-darwin-x64-2.0.0.tgz#59023a365e5f1911e911b415d4acbee4eb6f3229"
integrity sha512-IcixMsdUijl/NyKHapqA/MtNrrtm/WjhezikWSzCJc1dPy+aE8PYeZoBzNFIJJgB6zavO+sUxam10Zx/70AUHw==
lefthook-freebsd-arm64@1.13.6:
version "1.13.6"
resolved "https://registry.yarnpkg.com/lefthook-freebsd-arm64/-/lefthook-freebsd-arm64-1.13.6.tgz#873ad77e0f041fa13c541964505a5af028cc7f62"
integrity sha512-X4A7yfvAJ68CoHTqP+XvQzdKbyd935sYy0bQT6Ajz7FL1g7hFiro8dqHSdPdkwei9hs8hXeV7feyTXbYmfjKQQ==
lefthook-freebsd-arm64@2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/lefthook-freebsd-arm64/-/lefthook-freebsd-arm64-2.0.0.tgz#8cdda888c48afb0eec44653cb6a5dbe8fab5b30e"
integrity sha512-APWEKechR2Gp5/rcf7QLkVqswShesnBZrMGmBnFh/nAtvWkkPVdBEc0VDFlU+ViUqHFepuQOSZD/G68F6NVStg==
lefthook-freebsd-x64@1.13.6:
version "1.13.6"
resolved "https://registry.yarnpkg.com/lefthook-freebsd-x64/-/lefthook-freebsd-x64-1.13.6.tgz#bc04ad430fe45eaa1b5282639d435605921e374b"
integrity sha512-ai2m+Sj2kGdY46USfBrCqLKe9GYhzeq01nuyDYCrdGISePeZ6udOlD1k3lQKJGQCHb0bRz4St0r5nKDSh1x/2A==
lefthook-freebsd-x64@2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/lefthook-freebsd-x64/-/lefthook-freebsd-x64-2.0.0.tgz#9e10a7019b39599abb7a3a42c6ec62325ff00941"
integrity sha512-J7F/zKBgx5gJm2/EgKxqckzJRPaIHGZnKUY2h9MeKr4LBMk5kt+hwH9OeokGvGvPzLE4rEdUoFhJnmceyY4ZsA==
lefthook-linux-arm64@1.13.6:
version "1.13.6"
resolved "https://registry.yarnpkg.com/lefthook-linux-arm64/-/lefthook-linux-arm64-1.13.6.tgz#efbe267da03a634a28ff273b1b4cfa784b9c9bee"
integrity sha512-cbo4Wtdq81GTABvikLORJsAWPKAJXE8Q5RXsICFUVznh5PHigS9dFW/4NXywo0+jfFPCT6SYds2zz4tCx6DA0Q==
lefthook-linux-arm64@2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/lefthook-linux-arm64/-/lefthook-linux-arm64-2.0.0.tgz#5cf1122a1ab25a74ab0d3d98a7285c2ebc72a43d"
integrity sha512-Olilio7szMSFkfYFf7vW+JltTOpq4ZFgvqQ+nKv4NKrKH55Ax+JmK69j/VvJ/8vgks55mMQmfCuukbt2PjeG3Q==
lefthook-linux-x64@1.13.6:
version "1.13.6"
resolved "https://registry.yarnpkg.com/lefthook-linux-x64/-/lefthook-linux-x64-1.13.6.tgz#32fc5398f21e220f8ea6223e7434392d41d54afc"
integrity sha512-uJl9vjCIIBTBvMZkemxCE+3zrZHlRO7Oc+nZJ+o9Oea3fu+W82jwX7a7clw8jqNfaeBS+8+ZEQgiMHWCloTsGw==
lefthook-linux-x64@2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/lefthook-linux-x64/-/lefthook-linux-x64-2.0.0.tgz#3772f925feb2a02cc35c819feddb9e0cb64edf54"
integrity sha512-QOMRJ1paWjjTPPrGy8gf+8hmtXa3m63rOUeJUQo3N1xUL94NkKtqOCKz1qSmMuYW00clTGM27HdujNE+CSy5Iw==
lefthook-openbsd-arm64@1.13.6:
version "1.13.6"
resolved "https://registry.yarnpkg.com/lefthook-openbsd-arm64/-/lefthook-openbsd-arm64-1.13.6.tgz#2294ca7378e4455e8325f873b520de53939b84e2"
integrity sha512-7r153dxrNRQ9ytRs2PmGKKkYdvZYFPre7My7XToSTiRu5jNCq++++eAKVkoyWPduk97dGIA+YWiEr5Noe0TK2A==
lefthook-openbsd-arm64@2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/lefthook-openbsd-arm64/-/lefthook-openbsd-arm64-2.0.0.tgz#320851edc835ac21eb55921afe639a6703c1b7f9"
integrity sha512-o99K0OuYgb4SfsqQQUwuxiAfgHhAnA/9eBDFVdUhGO69y7HenyXwaE52iaRiP64KH8TKMGJe+hiztmBrwOM5nA==
lefthook-openbsd-x64@1.13.6:
version "1.13.6"
resolved "https://registry.yarnpkg.com/lefthook-openbsd-x64/-/lefthook-openbsd-x64-1.13.6.tgz#19216354cddbce1e7f84045cc473d5a808357306"
integrity sha512-Z+UhLlcg1xrXOidK3aLLpgH7KrwNyWYE3yb7ITYnzJSEV8qXnePtVu8lvMBHs/myzemjBzeIr/U/+ipjclR06g==
lefthook-openbsd-x64@2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/lefthook-openbsd-x64/-/lefthook-openbsd-x64-2.0.0.tgz#72fbb871bd6c07a1b38483d20413dbfe11fb99b2"
integrity sha512-hKFieYnE1V+EWgh5eBo/5Aj+TaYOal3lJ39OO/c61MZVbD6iOaQpZVAaQWmiVUo8p1bOK+0OjeeYfEF1OJ5IAg==
lefthook-windows-arm64@1.13.6:
version "1.13.6"
resolved "https://registry.yarnpkg.com/lefthook-windows-arm64/-/lefthook-windows-arm64-1.13.6.tgz#e7c92dd0cabf7d7e1e50d11532e61efe9f76c629"
integrity sha512-Uxef6qoDxCmUNQwk8eBvddYJKSBFglfwAY9Y9+NnnmiHpWTjjYiObE9gT2mvGVpEgZRJVAatBXc+Ha5oDD/OgQ==
lefthook-windows-arm64@2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/lefthook-windows-arm64/-/lefthook-windows-arm64-2.0.0.tgz#8539fde52d0d7deebc3d4a21b0aefcb1e9338a49"
integrity sha512-Xzyr83kFVzjbRNzDMmlU1z5wtPXKWriPrRf3vwoVdsvHi/yvxNy9+ZH1LF0wXnH5agTgMMag/37XA+hZ/5cfmA==
lefthook-windows-x64@1.13.6:
version "1.13.6"
resolved "https://registry.yarnpkg.com/lefthook-windows-x64/-/lefthook-windows-x64-1.13.6.tgz#f9654bcef01597ff45cc616864e7e2505902e108"
integrity sha512-mOZoM3FQh3o08M8PQ/b3IYuL5oo36D9ehczIw1dAgp1Ly+Tr4fJ96A+4SEJrQuYeRD4mex9bR7Ps56I73sBSZA==
lefthook-windows-x64@2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/lefthook-windows-x64/-/lefthook-windows-x64-2.0.0.tgz#5c94c879af8cbe609cb32b557efb6d8e31a0b7ef"
integrity sha512-r8p2nMht/gAgZHqNdysUAyealFOyozbI1W+fU/L4thFdZzWGVesP+Vd0hvvS1MDwTxbGkqP7vCvCurll64vggg==
lefthook@^1.13.6:
version "1.13.6"
resolved "https://registry.yarnpkg.com/lefthook/-/lefthook-1.13.6.tgz#880484d4ee13900ce75bfb7ec204bbbfd611f7fa"
integrity sha512-ojj4/4IJ29Xn4drd5emqVgilegAPN3Kf0FQM2p/9+lwSTpU+SZ1v4Ig++NF+9MOa99UKY8bElmVrLhnUUNFh5g==
lefthook@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/lefthook/-/lefthook-2.0.0.tgz#2da2e777bd6c17c4c3f9282421a9a3287d554490"
integrity sha512-iR7cwnlojpRW/ixaE9d8lGSp+Twv2Sbg/1rlWX8WL/J1sn9xWcII8ddeBaY+6n6bWVPYBQfxc5uhd77efGzUfA==
optionalDependencies:
lefthook-darwin-arm64 "1.13.6"
lefthook-darwin-x64 "1.13.6"
lefthook-freebsd-arm64 "1.13.6"
lefthook-freebsd-x64 "1.13.6"
lefthook-linux-arm64 "1.13.6"
lefthook-linux-x64 "1.13.6"
lefthook-openbsd-arm64 "1.13.6"
lefthook-openbsd-x64 "1.13.6"
lefthook-windows-arm64 "1.13.6"
lefthook-windows-x64 "1.13.6"
lefthook-darwin-arm64 "2.0.0"
lefthook-darwin-x64 "2.0.0"
lefthook-freebsd-arm64 "2.0.0"
lefthook-freebsd-x64 "2.0.0"
lefthook-linux-arm64 "2.0.0"
lefthook-linux-x64 "2.0.0"
lefthook-openbsd-arm64 "2.0.0"
lefthook-openbsd-x64 "2.0.0"
lefthook-windows-arm64 "2.0.0"
lefthook-windows-x64 "2.0.0"
levn@^0.4.1:
version "0.4.1"
@@ -5958,10 +5963,10 @@ make-fetch-happen@^14.0.3:
promise-retry "^2.0.1"
ssri "^12.0.0"
marked@^16.4.0:
version "16.4.0"
resolved "https://registry.yarnpkg.com/marked/-/marked-16.4.0.tgz#b0c22707a3add380827a75437131801cd54bf425"
integrity sha512-CTPAcRBq57cn3R8n3hwc2REddc28hjR7RzDXQ+lXLmMJYqn20BaI2cGw6QjgZGIgVfp2Wdfw4aMzgNteQ6qJgQ==
marked@^16.4.1:
version "16.4.1"
resolved "https://registry.yarnpkg.com/marked/-/marked-16.4.1.tgz#db37c878cfa28fa57b8dd471fe92a83282911052"
integrity sha512-ntROs7RaN3EvWfy3EZi14H4YxmT6A5YvywfhO+0pm+cH/dnSQRmdAmoFIc3B9aiwTehyk7pESH4ofyBY+V5hZg==
matcher@^3.0.0:
version "3.0.0"
@@ -6397,12 +6402,10 @@ object-assign@^4.1.1:
resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==
object-deep-merge@^1.0.5:
version "1.0.5"
resolved "https://registry.yarnpkg.com/object-deep-merge/-/object-deep-merge-1.0.5.tgz#a5aed81ba02563f6632ea3496451f2b987619538"
integrity sha512-3DioFgOzetbxbeUq8pB2NunXo8V0n4EvqsWM/cJoI6IA9zghd7cl/2pBOuWRf4dlvA+fcg5ugFMZaN2/RuoaGg==
dependencies:
type-fest "4.2.0"
object-deep-merge@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/object-deep-merge/-/object-deep-merge-2.0.0.tgz#94d24cf713d4a7a143653500ff4488a2d494681f"
integrity sha512-3DC3UMpeffLTHiuXSy/UG4NOIYTLlY9u3V82+djSCLYClWobZiS4ivYzpIUWrRY/nfsJ8cWsKyG3QfyLePmhvg==
object-inspect@^1.13.3, object-inspect@^1.13.4:
version "1.13.4"
@@ -7368,6 +7371,11 @@ resedit@^1.7.0:
dependencies:
pe-library "^0.4.1"
reserved-identifiers@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/reserved-identifiers/-/reserved-identifiers-1.0.0.tgz#a4878ea2b5130ec2bf5aba40074edcb9704d2623"
integrity sha512-h0bP2Katmvf3hv4Z3WtDl4+6xt/OglQ2Xa6TnhZ/Rm9/7IH1crXQqMwD4J2ngKBonVv+fB55zfGgNDAmsevLVQ==
resolve-alpn@^1.0.0:
version "1.2.1"
resolved "https://registry.yarnpkg.com/resolve-alpn/-/resolve-alpn-1.2.1.tgz#b7adbdac3546aaaec20b45e7d8265927072726f9"
@@ -7685,10 +7693,10 @@ setprototypeof@1.2.0:
resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424"
integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==
shaka-player@^4.16.4:
version "4.16.4"
resolved "https://registry.yarnpkg.com/shaka-player/-/shaka-player-4.16.4.tgz#4666998d89b97a6418154b568c14610e8975885c"
integrity sha512-jlsmZzR5sPpUUS+6G9wCZJjv0hqaP52xQSw4w+in9hfw+kOI44X/vx+YcsKNKlYixxFvPd+XBgtZJunjNP3xOg==
shaka-player@^4.16.6:
version "4.16.6"
resolved "https://registry.yarnpkg.com/shaka-player/-/shaka-player-4.16.6.tgz#c3862da6de5ee2868010a9596a7d761ca8878144"
integrity sha512-NTWjcXe1OBuZOczQ0QYn7Ib2bYJebbuyFdN06cMytA2wO2SQsilcZ2WYlyon+4Ni/Etw6Y2ee6KaQsaubzvFZA==
shallow-clone@^3.0.0:
version "3.0.1"
@@ -8373,6 +8381,14 @@ to-regex-range@^5.0.1:
dependencies:
is-number "^7.0.0"
to-valid-identifier@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/to-valid-identifier/-/to-valid-identifier-1.0.0.tgz#27337955333c3c517feb60bea533cf27ce54b79f"
integrity sha512-41wJyvKep3yT2tyPqX/4blcfybknGB4D+oETKLs7Q76UiPqRpUJK3hr1nxelyYO0PHKVzJwlu0aCeEAsGI6rpw==
dependencies:
"@sindresorhus/base62" "^1.0.0"
reserved-identifiers "^1.0.0"
toidentifier@1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35"
@@ -8414,11 +8430,6 @@ type-check@^0.4.0, type-check@~0.4.0:
dependencies:
prelude-ls "^1.2.1"
type-fest@4.2.0:
version "4.2.0"
resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-4.2.0.tgz#e259430307710e77721ecf6f545840acad72195f"
integrity sha512-5zknd7Dss75pMSED270A1RQS3KloqRJA9XbXLe0eCxyw7xXFb3rd+9B0UQ/0E+LQT6lnrLviEolYORlRWamn4w==
type-fest@^0.13.1:
version "0.13.1"
resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.13.1.tgz#0172cb5bce80b0bd542ea348db50c7e21834d934"
@@ -9089,10 +9100,10 @@ yocto-queue@^0.1.0:
resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b"
integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==
youtubei.js@^16.0.0:
version "16.0.0"
resolved "https://registry.yarnpkg.com/youtubei.js/-/youtubei.js-16.0.0.tgz#b88537c4d89468216c50058cd295ce3c1da8adf2"
integrity sha512-aMx+ulnrxzsgVsxTr7gbBVnIjti2NQUlMwCoo1/MzICCJS3iMLOPUFdo7bSpwskL6ljzQ/LxmmB4WQC3FtkBlA==
youtubei.js@^16.0.1:
version "16.0.1"
resolved "https://registry.yarnpkg.com/youtubei.js/-/youtubei.js-16.0.1.tgz#b1fb7d42f36e4d355ba3ca2c93605a0572fe0c9b"
integrity sha512-3802bCAGkBc2/G5WUTc0l/bO5mPYJbQAHL04d9hE9PnrDHoBUT8MN721Yqt4RCNncAXdHcfee9VdJy3Fhq1r5g==
dependencies:
"@bufbuild/protobuf" "^2.0.0"
meriyah "^6.1.4"