mirror of
https://github.com/FreeTubeApp/FreeTube.git
synced 2025-12-05 01:10:31 +00:00
Compare commits
34 Commits
dependabot
...
53bd699e8d
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
53bd699e8d | ||
|
|
8fc7b357c6 | ||
|
|
78624fde9c | ||
|
|
8714cff13b | ||
|
|
46da1cf840 | ||
|
|
ade259b9bc | ||
|
|
a29031faec | ||
|
|
c718ab2a3f | ||
|
|
963f42825d | ||
|
|
8b63948bbb | ||
|
|
e6599cfb30 | ||
|
|
c5b0be28c4 | ||
|
|
1baa962201 | ||
|
|
960677aabc | ||
|
|
f0a49c6bd5 | ||
|
|
6628c3e4ba | ||
|
|
d170945d11 | ||
|
|
e46bdedb75 | ||
|
|
8799b4990a | ||
|
|
fd96c7ad6f | ||
|
|
03d44792a7 | ||
|
|
95ec469d72 | ||
|
|
3e395f9586 | ||
|
|
7d0b48c27c | ||
|
|
19600d7076 | ||
|
|
15d0e644e5 | ||
|
|
52660a8f2b | ||
|
|
279f3bd7b3 | ||
|
|
03e0c47a3b | ||
|
|
76522d2685 | ||
|
|
b47aaa6563 | ||
|
|
cab43cbbdb | ||
|
|
b024a16deb | ||
|
|
f151e17efb |
2
.github/workflows/build.yml
vendored
2
.github/workflows/build.yml
vendored
@@ -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"
|
||||
|
||||
6
.github/workflows/codeql.yml
vendored
6
.github/workflows/codeql.yml
vendored
@@ -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}}"
|
||||
|
||||
10
.github/workflows/flatpak.yml
vendored
10
.github/workflows/flatpak.yml
vendored
@@ -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"
|
||||
|
||||
2
.github/workflows/linter.yml
vendored
2
.github/workflows/linter.yml
vendored
@@ -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"
|
||||
|
||||
2
.github/workflows/release.yml
vendored
2
.github/workflows/release.yml
vendored
@@ -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"
|
||||
|
||||
2
.github/workflows/updateSite.yml
vendored
2
.github/workflows/updateSite.yml
vendored
@@ -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"
|
||||
|
||||
@@ -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>`)}`,
|
||||
|
||||
20
package.json
20
package.json
@@ -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",
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
@@ -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',
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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) => {
|
||||
|
||||
@@ -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}`)
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
},
|
||||
|
||||
/**
|
||||
|
||||
@@ -200,6 +200,7 @@
|
||||
<hr>
|
||||
<div
|
||||
v-if="!hideActiveSubscriptions"
|
||||
class="mobileHidden"
|
||||
>
|
||||
<router-link
|
||||
v-for="channel in activeSubscriptions"
|
||||
|
||||
@@ -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')
|
||||
|
||||
@@ -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',
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
}), '*')
|
||||
}
|
||||
})
|
||||
|
||||
@@ -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 формати'
|
||||
|
||||
@@ -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'
|
||||
|
||||
@@ -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'
|
||||
|
||||
@@ -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'
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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'
|
||||
|
||||
@@ -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: گزینه پرش
|
||||
|
||||
@@ -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 d’abonnements 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 d’abonnements 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 d’abonnement 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 J’aime et Je n’aime pas des vidéos
|
||||
Hide Comment Likes: Masquer les J’aime dans les commentaires
|
||||
Hide Channel Subscribers: Masquer le nombre d’abonnés des chaines
|
||||
Hide Channel Subscribers: Masquer le nombre d’abonné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 l’onglet « Listes de lecture » de la chaine
|
||||
Hide Featured Channels: Masquer les chaines en vedette
|
||||
Hide Channel Shorts: Masquer l’onglet « Shorts » de la chaine
|
||||
Hide Channel Playlists: Masquer l’onglet « Listes de lecture » de la chaîne
|
||||
Hide Featured Channels: Masquer les chaînes en vedette
|
||||
Hide Channel Shorts: Masquer l’onglet « 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 l’onglet « Podcasts » de la chaine
|
||||
Hide Channel Releases: Masquer l’onglet « Publications » de la chaine
|
||||
Hide Channel Podcasts: Masquer l’onglet « Podcasts » de la chaîne
|
||||
Hide Channel Releases: Masquer l’onglet « 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: L’identifiant de chaine fourni n’est pas valide
|
||||
Hide Channels Disabled Message: Certaines chaines ont été bloquées à l’aide d’un identifiant et n’ont pas été traitées. La fonctionnalité est bloquée le temps que ces identifiants se mettent à jour
|
||||
Hide Channels Already Exists: L’identifiant de chaine existe déjà
|
||||
Hide Channels Invalid: L’identifiant de chaîne fourni n’est pas valide
|
||||
Hide Channels Disabled Message: Certaines chaînes ont été bloquées à l’aide d’un identifiant et n’ont pas été traitées. La fonctionnalité est bloquée le temps que ces identifiants se mettent à jour
|
||||
Hide Channels Already Exists: L’identifiant 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 l’onglet « Accueil » de la chaine
|
||||
Hide Channel Home: Masquer l’onglet « Accueil » de la chaîne
|
||||
Show Added Items: Afficher les éléments ajoutés
|
||||
Hide Channel Courses: Masquer l’onglet « Cours » de la chaine
|
||||
Hide Channel Courses: Masquer l’onglet « Cours » de la chaîne
|
||||
Hide Channel Posts: Masquer l’onglet « 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: 'S’abonner'
|
||||
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 n’a pas encore de liste de lecture'
|
||||
This channel does not currently have any playlists: 'Cette chaîne n’a 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 n’a pas encore de flux en direct
|
||||
This channel does not currently have any live streams: Cette chaîne n’a pas encore de flux en direct
|
||||
Shorts:
|
||||
This channel does not currently have any shorts: Cette chaine n’a pas encore de shorts
|
||||
This channel does not currently have any shorts: Cette chaîne n’a pas encore de shorts
|
||||
Releases:
|
||||
Releases: Publications
|
||||
This channel does not currently have any releases: Cette chaine n’a actuellement aucune publication
|
||||
This channel does not currently have any releases: Cette chaîne n’a actuellement aucune publication
|
||||
Podcasts:
|
||||
Podcasts: Podcasts
|
||||
This channel does not currently have any podcasts: Cette chaine n’a pas encore de podcast
|
||||
This channel does not currently have any podcasts: Cette chaîne n’a 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:
|
||||
|
||||
@@ -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ð'
|
||||
|
||||
@@ -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'
|
||||
|
||||
@@ -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'
|
||||
|
||||
@@ -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
241
yarn.lock
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user