@@ -0,0 +1,25 @@
|
||||
A Materialious egy kliens az <a href='https://github.com/iv-org'>Invidious</a> számára, amely anyagszerű tervezést (material design) használ.
|
||||
Lehetővé teszi a videók böngészését és megtekintését, a lejátszási listák kezelését és a csatornák használatát.
|
||||
|
||||
<b>Funkciók:</b>
|
||||
<ul>
|
||||
<li>Invidious társalkalmazás támogatása</li>
|
||||
<li>Invidious API kiterjesztett integrációja</li>
|
||||
<li>YouTube.js visszaállítás, ha az Invidious nem tudja betölteni a videókat számítógépen és Androidon</li>
|
||||
<li>Támogatja a tanúsítvány-ellenőrzés letiltását homelab felhasználók számára</li>
|
||||
<li>Szinkronizálhatja a megtekintési előrehaladást az Invidious munkamenetek között</li>
|
||||
<li>Szinkronizált csoportok</li>
|
||||
<li>Beépített Sponsorblock</li>
|
||||
<li>Beépített YouTube dislike visszaállítás</li>
|
||||
<li>Beépített DeArrow (helyi feldolgozási visszaállítással)</li>
|
||||
<li>Nincsenek hirdetések</li>
|
||||
<li>Nincs nyomkövetés</li>
|
||||
<li>Világos/ Sötét témák</li>
|
||||
<li>Egyedi színválasztási témák</li>
|
||||
<li>Integrálódik az Invidious feliratkozásokkal, megtekintési előzményekkel és egyebekkel</li>
|
||||
<li>Élő közvetítések támogatása</li>
|
||||
<li>Dash támogatása</li>
|
||||
<li>Fejezetek</li>
|
||||
<li>Csak hang mód</li>
|
||||
<li>Lejátszási listák</li>
|
||||
</ul>
|
||||
@@ -0,0 +1 @@
|
||||
Modern és anyagszerű megjelenés az Invidious előtétprogramhoz
|
||||
@@ -14,4 +14,5 @@ vite.config.js.timestamp-*
|
||||
vite.config.ts.timestamp-*
|
||||
resources/android/**/*
|
||||
android/release.jks*
|
||||
.electron-cache
|
||||
.electron-cache
|
||||
**/.settings/**
|
||||
|
||||
+2
-2
@@ -4,10 +4,10 @@
|
||||
<selectionStates>
|
||||
<SelectionState runConfigName="app">
|
||||
<option name="selectionMode" value="DROPDOWN" />
|
||||
<DropdownSelection timestamp="2025-08-06T02:18:44.007250537Z">
|
||||
<DropdownSelection timestamp="2025-08-11T07:20:32.362551415Z">
|
||||
<Target type="DEFAULT_BOOT">
|
||||
<handle>
|
||||
<DeviceId pluginId="LocalEmulator" identifier="path=/home/ward/.android/avd/Television_4K.avd" />
|
||||
<DeviceId pluginId="LocalEmulator" identifier="path=/home/ward/.android/avd/Pixel_7_Pro.avd" />
|
||||
</handle>
|
||||
</Target>
|
||||
</DropdownSelection>
|
||||
|
||||
@@ -7,8 +7,8 @@ android {
|
||||
applicationId "us.materialio.app"
|
||||
minSdkVersion rootProject.ext.minSdkVersion
|
||||
targetSdkVersion rootProject.ext.targetSdkVersion
|
||||
versionCode 143
|
||||
versionName "1.10.2"
|
||||
versionCode 144
|
||||
versionName "1.10.3"
|
||||
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
||||
aaptOptions {
|
||||
// Files and dirs to omit from the packaged assets dir, modified to accommodate modern web apps.
|
||||
|
||||
@@ -9,12 +9,11 @@ android {
|
||||
|
||||
apply from: "../capacitor-cordova-android-plugins/cordova.variables.gradle"
|
||||
dependencies {
|
||||
implementation project(':capacitor-community-safe-area')
|
||||
implementation project(':capacitor-app')
|
||||
implementation project(':capacitor-browser')
|
||||
implementation project(':capacitor-clipboard')
|
||||
implementation project(':capacitor-screen-orientation')
|
||||
implementation project(':capacitor-status-bar')
|
||||
implementation project(':hugotomazi-capacitor-navigation-bar')
|
||||
implementation project(':capacitor-nodejs')
|
||||
|
||||
}
|
||||
|
||||
@@ -2,6 +2,9 @@
|
||||
include ':capacitor-android'
|
||||
project(':capacitor-android').projectDir = new File('../node_modules/@capacitor/android/capacitor')
|
||||
|
||||
include ':capacitor-community-safe-area'
|
||||
project(':capacitor-community-safe-area').projectDir = new File('../node_modules/@capacitor-community/safe-area/android')
|
||||
|
||||
include ':capacitor-app'
|
||||
project(':capacitor-app').projectDir = new File('../node_modules/@capacitor/app/android')
|
||||
|
||||
@@ -14,11 +17,5 @@ project(':capacitor-clipboard').projectDir = new File('../node_modules/@capacito
|
||||
include ':capacitor-screen-orientation'
|
||||
project(':capacitor-screen-orientation').projectDir = new File('../node_modules/@capacitor/screen-orientation/android')
|
||||
|
||||
include ':capacitor-status-bar'
|
||||
project(':capacitor-status-bar').projectDir = new File('../node_modules/@capacitor/status-bar/android')
|
||||
|
||||
include ':hugotomazi-capacitor-navigation-bar'
|
||||
project(':hugotomazi-capacitor-navigation-bar').projectDir = new File('../node_modules/@hugotomazi/capacitor-navigation-bar/android')
|
||||
|
||||
include ':capacitor-nodejs'
|
||||
project(':capacitor-nodejs').projectDir = new File('../node_modules/capacitor-nodejs/android')
|
||||
|
||||
@@ -60,7 +60,11 @@
|
||||
|
||||
|
||||
|
||||
<release version="1.10.2" date="2025-8-06">
|
||||
|
||||
<release version="1.10.3" date="2025-8-11">
|
||||
<url>https://github.com/Materialious/Materialious/releases/tag/1.10.3</url>
|
||||
</release>
|
||||
<release version="1.10.2" date="2025-8-06">
|
||||
<url>https://github.com/Materialious/Materialious/releases/tag/1.10.2</url>
|
||||
</release>
|
||||
<release version="1.10.1" date="2025-8-06">
|
||||
|
||||
Generated
+13
-13
@@ -1,12 +1,12 @@
|
||||
{
|
||||
"name": "Materialious",
|
||||
"version": "1.10.2",
|
||||
"version": "1.10.3",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "Materialious",
|
||||
"version": "1.10.2",
|
||||
"version": "1.10.3",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@capacitor-community/electron": "^5.0.0",
|
||||
@@ -22,10 +22,10 @@
|
||||
"jsonfile": "^6.1.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"electron": "^37.2.3",
|
||||
"electron": "^37.2.5",
|
||||
"electron-builder": "^26.0.12",
|
||||
"electron-rebuild": "^3.2.9",
|
||||
"typescript": "^5.7.3"
|
||||
"typescript": "^5.9.2"
|
||||
}
|
||||
},
|
||||
"node_modules/@asamuzakjp/css-color": {
|
||||
@@ -2492,9 +2492,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/electron": {
|
||||
"version": "37.2.3",
|
||||
"resolved": "https://registry.npmjs.org/electron/-/electron-37.2.3.tgz",
|
||||
"integrity": "sha512-JRKKn8cRDXDfkC+oWISbYs+c+L6RA776JM0NiB9bn2yV8H/LnBUlVPzKKfsXgrUIokN4YcbCw694vfAdEJwtGw==",
|
||||
"version": "37.2.5",
|
||||
"resolved": "https://registry.npmjs.org/electron/-/electron-37.2.5.tgz",
|
||||
"integrity": "sha512-719ZqEp43rj6xDJMICm4CIXl8keFFgvVNO9Ix6OtjNjrh9HtYlP/1WiYeRohnXj06aLyGx5NCzrHbG7j3BxO9w==",
|
||||
"dev": true,
|
||||
"hasInstallScript": true,
|
||||
"license": "MIT",
|
||||
@@ -5605,9 +5605,9 @@
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/tmp": {
|
||||
"version": "0.2.3",
|
||||
"resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.3.tgz",
|
||||
"integrity": "sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==",
|
||||
"version": "0.2.4",
|
||||
"resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.4.tgz",
|
||||
"integrity": "sha512-UdiSoX6ypifLmrfQ/XfiawN6hkjSBpCjhKxxZcWlUUmoXLaCKQU0bx4HF/tdDK2uzRuchf1txGvrWBzYREssoQ==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
@@ -5686,9 +5686,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/typescript": {
|
||||
"version": "5.8.3",
|
||||
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz",
|
||||
"integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==",
|
||||
"version": "5.9.2",
|
||||
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.2.tgz",
|
||||
"integrity": "sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A==",
|
||||
"dev": true,
|
||||
"license": "Apache-2.0",
|
||||
"bin": {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "Materialious",
|
||||
"version": "1.10.2",
|
||||
"version": "1.10.3",
|
||||
"description": "Modern material design for Invidious.",
|
||||
"author": {
|
||||
"name": "Ward Pearce",
|
||||
@@ -35,10 +35,10 @@
|
||||
"jsonfile": "^6.1.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"electron": "^37.2.3",
|
||||
"electron": "^37.2.5",
|
||||
"electron-builder": "^26.0.12",
|
||||
"electron-rebuild": "^3.2.9",
|
||||
"typescript": "^5.7.3"
|
||||
"typescript": "^5.9.2"
|
||||
},
|
||||
"keywords": [
|
||||
"capacitor",
|
||||
|
||||
Generated
+12
-22
@@ -1,23 +1,22 @@
|
||||
{
|
||||
"name": "materialious",
|
||||
"version": "1.10.1",
|
||||
"version": "1.10.3",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "materialious",
|
||||
"version": "1.10.1",
|
||||
"version": "1.10.3",
|
||||
"hasInstallScript": true,
|
||||
"dependencies": {
|
||||
"@capacitor-community/electron": "^5.0.1",
|
||||
"@capacitor-community/safe-area": "^7.0.0-alpha.1",
|
||||
"@capacitor/android": "^7.0.0",
|
||||
"@capacitor/app": "^7.0.0",
|
||||
"@capacitor/browser": "^7.0.0",
|
||||
"@capacitor/clipboard": "^7.0.0",
|
||||
"@capacitor/core": "^7.0.0",
|
||||
"@capacitor/screen-orientation": "^7.0.0",
|
||||
"@capacitor/status-bar": "^7.0.0",
|
||||
"@hugotomazi/capacitor-navigation-bar": "https://github.com/NYPL/capacitor-navigation-bar/releases/download/v4.1.0-fix.1/hugotomazi-capacitor-navigation-bar-4.1.0-fix.1.tgz",
|
||||
"beercss": "^3.8.0",
|
||||
"bgutils-js": "^3.2.0",
|
||||
"capacitor-nodejs": "https://github.com/hampoelz/capacitor-nodejs/releases/download/v1.0.0-beta.9/capacitor-nodejs.tgz",
|
||||
@@ -1777,6 +1776,15 @@
|
||||
"ora": "^5.4.1"
|
||||
}
|
||||
},
|
||||
"node_modules/@capacitor-community/safe-area": {
|
||||
"version": "7.0.0-alpha.1",
|
||||
"resolved": "https://registry.npmjs.org/@capacitor-community/safe-area/-/safe-area-7.0.0-alpha.1.tgz",
|
||||
"integrity": "sha512-N6ktkRiofqrt+N/vQzh4jcWY8IzJ4TVw1tKAPssvbddWFTyZzXzSdBeX/l/nracJF0PZqmLdA7JYTBfnOxXQYw==",
|
||||
"license": "MIT",
|
||||
"peerDependencies": {
|
||||
"@capacitor/core": ">=7.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@capacitor/android": {
|
||||
"version": "7.4.2",
|
||||
"resolved": "https://registry.npmjs.org/@capacitor/android/-/android-7.4.2.tgz",
|
||||
@@ -2146,15 +2154,6 @@
|
||||
"@capacitor/core": ">=7.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@capacitor/status-bar": {
|
||||
"version": "7.0.2",
|
||||
"resolved": "https://registry.npmjs.org/@capacitor/status-bar/-/status-bar-7.0.2.tgz",
|
||||
"integrity": "sha512-fYYkkdzCbQV+MjZVnaQTFl5I4bddnFW8ZrPVxDjNoGVPTUG7H58Ij1+NcuNxHLXjJvZOoZeYJ3w3I16Wb2zssw==",
|
||||
"license": "MIT",
|
||||
"peerDependencies": {
|
||||
"@capacitor/core": ">=7.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@cspotcode/source-map-support": {
|
||||
"version": "0.8.1",
|
||||
"resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz",
|
||||
@@ -2300,15 +2299,6 @@
|
||||
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@hugotomazi/capacitor-navigation-bar": {
|
||||
"version": "4.1.0-fix.1",
|
||||
"resolved": "https://github.com/NYPL/capacitor-navigation-bar/releases/download/v4.1.0-fix.1/hugotomazi-capacitor-navigation-bar-4.1.0-fix.1.tgz",
|
||||
"integrity": "sha512-m3J5yxI4PFFZSf3E4V3g/ohqOEPFqCvtKmhDAsWW0ielDLtdJ2gM8RmO7a5jpsJJJHIYs4ZCydm9AZe9d9IBQw==",
|
||||
"license": "MIT",
|
||||
"peerDependencies": {
|
||||
"@capacitor/core": ">=7.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@humanwhocodes/config-array": {
|
||||
"version": "0.13.0",
|
||||
"resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "materialious",
|
||||
"version": "1.10.2",
|
||||
"version": "1.10.3",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"dev": "vite dev",
|
||||
@@ -42,14 +42,13 @@
|
||||
"type": "module",
|
||||
"dependencies": {
|
||||
"@capacitor-community/electron": "^5.0.1",
|
||||
"@capacitor-community/safe-area": "^7.0.0-alpha.1",
|
||||
"@capacitor/android": "^7.0.0",
|
||||
"@capacitor/app": "^7.0.0",
|
||||
"@capacitor/browser": "^7.0.0",
|
||||
"@capacitor/clipboard": "^7.0.0",
|
||||
"@capacitor/core": "^7.0.0",
|
||||
"@capacitor/screen-orientation": "^7.0.0",
|
||||
"@capacitor/status-bar": "^7.0.0",
|
||||
"@hugotomazi/capacitor-navigation-bar": "https://github.com/NYPL/capacitor-navigation-bar/releases/download/v4.1.0-fix.1/hugotomazi-capacitor-navigation-bar-4.1.0-fix.1.tgz",
|
||||
"beercss": "^3.8.0",
|
||||
"bgutils-js": "^3.2.0",
|
||||
"capacitor-nodejs": "https://github.com/hampoelz/capacitor-nodejs/releases/download/v1.0.0-beta.9/capacitor-nodejs.tgz",
|
||||
@@ -70,4 +69,4 @@
|
||||
"svelte-persisted-store": "^0.12.0",
|
||||
"youtubei.js": "^15.0.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,10 +4,9 @@
|
||||
import { getBestThumbnail } from '$lib/images';
|
||||
import { padTime, videoLength } from '$lib/numbers';
|
||||
import { type PhasedDescription } from '$lib/timestamps';
|
||||
import { SafeArea } from '@capacitor-community/safe-area';
|
||||
import { Capacitor } from '@capacitor/core';
|
||||
import { ScreenOrientation, type ScreenOrientationResult } from '@capacitor/screen-orientation';
|
||||
import { StatusBar, Style } from '@capacitor/status-bar';
|
||||
import { NavigationBar } from '@hugotomazi/capacitor-navigation-bar';
|
||||
import { error, type Page } from '@sveltejs/kit';
|
||||
import { HttpFetchPlugin } from '$lib/sabr/shakaHttpPlugin';
|
||||
import ui from 'beercss';
|
||||
@@ -223,11 +222,15 @@
|
||||
|
||||
if (isFullScreen) {
|
||||
// Ensure bar color is black while in fullscreen
|
||||
await StatusBar.setBackgroundColor({ color: '#000000' });
|
||||
await NavigationBar.setColor({
|
||||
color: '#000000'
|
||||
await SafeArea.enable({
|
||||
config: {
|
||||
customColorsForSystemBars: true,
|
||||
statusBarColor: '#00000000',
|
||||
statusBarContent: 'light',
|
||||
navigationBarColor: '#00000000',
|
||||
navigationBarContent: 'light'
|
||||
}
|
||||
});
|
||||
await StatusBar.setStyle({ style: Style.Dark });
|
||||
} else {
|
||||
await setStatusBarColor();
|
||||
}
|
||||
@@ -733,7 +736,6 @@
|
||||
onDestroy(async () => {
|
||||
if (Capacitor.getPlatform() === 'android' && !$isAndroidTvStore) {
|
||||
if (originalOrigination) {
|
||||
await StatusBar.show();
|
||||
await ScreenOrientation.lock({
|
||||
orientation: originalOrigination.type
|
||||
});
|
||||
|
||||
@@ -148,7 +148,7 @@
|
||||
<div class="max">
|
||||
<div>{$_('layout.allowInsecureRequests')}</div>
|
||||
</div>
|
||||
<label class="switch">
|
||||
<label class="switch" tabindex="0">
|
||||
<input
|
||||
type="checkbox"
|
||||
bind:checked={$interfaceAllowInsecureRequests}
|
||||
|
||||
@@ -223,19 +223,19 @@
|
||||
data-sveltekit-preload-data="off"
|
||||
href={watchUrl.toString()}
|
||||
>
|
||||
<span class="bold">{letterCase(truncate(video.title.trimEnd(), sideways ? 40 : 80))}</span>
|
||||
<span class="bold">{letterCase(video.title.trimEnd())}</span>
|
||||
</a>
|
||||
|
||||
<div>
|
||||
<a tabindex="-1" class:author={!sideways} href={`/channel/${video.authorId}`}
|
||||
>{video.author}</a
|
||||
>
|
||||
{#if !('publishedText' in video) && 'viewCountText' in video}
|
||||
<span style="margin-top: 1em;">
|
||||
• {video.viewCountText}
|
||||
{$_('views')}
|
||||
</span>
|
||||
{/if}
|
||||
>{video.author}
|
||||
{#if !('publishedText' in video) && 'viewCountText' in video}
|
||||
<span>
|
||||
• {video.viewCountText}
|
||||
{$_('views')}
|
||||
</span>
|
||||
{/if}
|
||||
</a>
|
||||
|
||||
{#if 'publishedText' in video}
|
||||
<div class="max">
|
||||
|
||||
@@ -10,13 +10,31 @@
|
||||
margin: 1em 0;
|
||||
}
|
||||
|
||||
nav.top {
|
||||
padding-top: calc(var(--safe-area-inset-top) + 1rem) !important;
|
||||
height: 100px;
|
||||
padding-bottom: 1em;
|
||||
}
|
||||
|
||||
nav.bottom {
|
||||
padding-bottom: var(--safe-area-inset-bottom) !important;
|
||||
}
|
||||
|
||||
main.root {
|
||||
padding-top: 6em !important;
|
||||
padding-top: 7em !important;
|
||||
padding-bottom: 5em !important;
|
||||
max-height: 100vh;
|
||||
overflow-y: auto;
|
||||
}
|
||||
|
||||
nav.left {
|
||||
padding-top: 2em;
|
||||
}
|
||||
|
||||
dialog {
|
||||
padding-top: calc(var(--safe-area-inset-top) + 1rem) !important;
|
||||
}
|
||||
|
||||
.root-not-tv {
|
||||
padding-left: 7em !important;
|
||||
}
|
||||
@@ -63,10 +81,5 @@ button.row:hover {
|
||||
dialog.right {
|
||||
width: 100% !important;
|
||||
border-radius: 0 !important;
|
||||
padding-top: 2em;
|
||||
}
|
||||
|
||||
nav.top {
|
||||
height: 110px;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,7 +20,8 @@ const resources: Record<string, () => Promise<Record<string, any>>> = {
|
||||
'pt-BR': () => import('./locales/pt-BR.json'),
|
||||
lv: () => import('./locales/lv.json'),
|
||||
ja: () => import('./locales/ja.json'),
|
||||
mi: () => import('./locales/mi.json')
|
||||
mi: () => import('./locales/mi.json'),
|
||||
'hu-HU': () => import('./locales/hu.json')
|
||||
};
|
||||
|
||||
function getUserLocale(): string {
|
||||
@@ -30,9 +31,9 @@ function getUserLocale(): string {
|
||||
return lang;
|
||||
}
|
||||
// In case of a regional code (e.g. 'de-CH'), fallback to the more general lang
|
||||
const baseLang = lang.split('-')[0]
|
||||
const baseLang = lang.split('-')[0];
|
||||
if (resources[baseLang]) {
|
||||
return baseLang
|
||||
return baseLang;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,189 @@
|
||||
{
|
||||
"create": "Létrehozás",
|
||||
"searchPlaceholder": "Keresés",
|
||||
"deleteAllHistory": "Összes előzmény törlése",
|
||||
"disabled": "Letiltva",
|
||||
"isUpcoming": "A videó még nem tekinthető meg.",
|
||||
"copyUrl": "Webcím másolása",
|
||||
"loadMore": "Továbbiak betöltése",
|
||||
"views": "megtekintések",
|
||||
"login": "Bejelentkezés",
|
||||
"recommendedVideos": "Ajánlott videók",
|
||||
"playlistVideos": "Videók lejátszási listázása",
|
||||
"invidiousLogin": "Jelentkezzen be az Invidious-fiókjával",
|
||||
"comments": "hozzászólások",
|
||||
"reply": "válasz",
|
||||
"replies": "válaszok",
|
||||
"region": "Régió",
|
||||
"noResult": "Nincs találat",
|
||||
"channels": "csatornák",
|
||||
"noCaptionData": "A feliratok nem tartalmaznak adatokat.",
|
||||
"selectLang": "Nyelv kiválasztása",
|
||||
"hideVideo": "Videó elrejtése",
|
||||
"syncParty": {
|
||||
"userLeft": "A felhasználó elhagyta a nézőcsoportot.",
|
||||
"userOnPrivatePage": "A felhasználó jelenleg egy privát oldalt néz, a szinkronizálás hamarosan folytatódik.",
|
||||
"userJoined": "A felhasználó csatlakozott a nézőcsoporthoz."
|
||||
},
|
||||
"videoTabs": {
|
||||
"shorts": "Rövidek",
|
||||
"streams": "Közvetítések",
|
||||
"all": "Összes",
|
||||
"playlists": "Lejátszási listák",
|
||||
"videos": "Videók",
|
||||
"channels": "Csatornák"
|
||||
},
|
||||
"layout": {
|
||||
"sponsors": {
|
||||
"disableToast": "Toast letiltása",
|
||||
"sponsor": "Szponzor",
|
||||
"disableTimeline": "Szegmensek letiltása az idővonalon",
|
||||
"Catagories": "Kategóriák",
|
||||
"unpaidSelfPromotion": "Nem fizetett/önreklámozás",
|
||||
"interactionReminder": "Interakciós emlékeztető (Feliratkozás)",
|
||||
"intermissionIntroAnimation": "Szünet/bevezető animáció",
|
||||
"credits": "Végképernyő/köszönet",
|
||||
"preViewRecapHook": "Bevezető/összegzés/figyelemfelketés",
|
||||
"tangentJokes": "Kitöltő mellékvágányok/poénok"
|
||||
},
|
||||
"syncPartyWarning": "Vegye figyelembe, hogy IP-címe látható lesz az Ön által meghívott felhasználók számára.",
|
||||
"expandDescription": "Leírás kibontása alapértelmezetten",
|
||||
"interface": "Kezelőfelület",
|
||||
"star": "Csillagozás a Githubon!",
|
||||
"syncParty": "Csoport szinkronizálása",
|
||||
"startSyncParty": "Csoport szinkronizációjának indítása",
|
||||
"endSyncParty": "Csoport szinkornizációjának megállítása",
|
||||
"notifications": "Értesítések",
|
||||
"noNewNotifications": "Nincs új értesítés itt",
|
||||
"settings": "Beállítások",
|
||||
"login": "Bejelentkezés",
|
||||
"customize": "Személyre szabás",
|
||||
"lowBandwidthMode": "Alacsony adatforgalmú mód",
|
||||
"searchHistory": "Előzmények keresése",
|
||||
"theme": {
|
||||
"theme": "Téma",
|
||||
"darkMode": "Sötét mód",
|
||||
"lightMode": "Világos mód",
|
||||
"AmoledTheme": "Amoled téma",
|
||||
"color": "Szín"
|
||||
},
|
||||
"searchSuggestions": "Keresési javaslatok",
|
||||
"previewVideoOnHover": "Videó előnézete az egérmutatóval",
|
||||
"expandChapters": "Fejezetek kibontása alapértelmezetten",
|
||||
"expandComments": "Hozzászólások kibontása alapértelmezetten",
|
||||
"allowInsecureRequests": "Nem biztonságos kérések engedélyezése",
|
||||
"disableAutoUpdate": "Automatikus frissítések letiltása",
|
||||
"dataPreferences": {
|
||||
"dataPreferences": "Adatbeállítások",
|
||||
"content": "Szeretne feliratkozásokat importálni/exportálni, jelszót módosítani vagy fiókot törölni? Kattintson ide, és görgessen az oldal aljára."
|
||||
},
|
||||
"player": {
|
||||
"title": "Lejátszó",
|
||||
"autoPlay": "Videók automatikus lejátszása",
|
||||
"alwaysLoopVideo": "Mindig ismételje a videót",
|
||||
"listenByDefault": "Hallgatás alapértelmezetten",
|
||||
"ccByDefault": "Feliratok bekapcsolása alapértelmezetten",
|
||||
"autoPlayNextByDefault": "Következő lejátszása alapértelmezetten",
|
||||
"miniPlayer": "Minilejátszó",
|
||||
"proxyVideos": "Videók proxyzása",
|
||||
"backgroundPlay": "Hang lejátszása a háttérben",
|
||||
"dash": "Dash",
|
||||
"silenceSkipper": "Csend kihagyása (Kísérleti)",
|
||||
"youtubeJsAlways": "Mindig használja",
|
||||
"lockOrientation": "Képarányhoz rögzített tájolás",
|
||||
"defaultPlaybackSpeed": "Alapértelmezett lejátszási sebesség",
|
||||
"playerStatistics": "Lejátszási statisztikák megjelenítése alapértelmezetten",
|
||||
"savePlaybackPosition": "Lejátszási pozíció mentése",
|
||||
"localVideoFallback": "Helyi videó visszatérés",
|
||||
"theatreModeByDefault": "Szélesvásznú mód alapértelmezetten",
|
||||
"youtubeJsFallback": "Helyi videó visszatérés feldolgozása"
|
||||
},
|
||||
"bookmarklet": "Bookmarklet",
|
||||
"instanceUrl": "Példány webcíme",
|
||||
"displayThumbnailAvatars": "Profilképek (Lassú)",
|
||||
"deArrow": {
|
||||
"title": "DeArrow",
|
||||
"thumbnailInstanceUrl": "Példány borítóképének webcíme",
|
||||
"titleOnly": "Csak cím"
|
||||
},
|
||||
"logout": "Kijelentkezés",
|
||||
"companionUrl": "Kiegészítő webcím"
|
||||
},
|
||||
"enabled": "Engedélyezve",
|
||||
"donate": "Adományozás",
|
||||
"hideReplies": "Válaszok elrejtése",
|
||||
"defaultPage": "Alapértelmezett oldal",
|
||||
"player": {
|
||||
"youtubeJsFallBack": "Helyi videó visszatérés van használatban",
|
||||
"preferredQuality": "Előnyben részesített minőség",
|
||||
"share": {
|
||||
"includeTimestamp": "Időbélyeggel ellátott",
|
||||
"title": "Megosztás",
|
||||
"materialiousLink": "Materialious-hivatkozás megosztása",
|
||||
"youtubeLink": "Youtube-hivatkozás másolása",
|
||||
"invidiousRedirect": "Invidious átirányítási hivatkozás másolása"
|
||||
},
|
||||
"audioOnly": "Csak hang",
|
||||
"theatreMode": "Szélesvásznú mód",
|
||||
"pauseTimer": "Időzítő szünteltetése",
|
||||
"pauseVideoIn": "Videó szünteltetése ekkor ",
|
||||
"chapters": "Fejezetek",
|
||||
"download": "Letöltés",
|
||||
"downloadSteps": {
|
||||
"merging": "Videó és hang összefűzése",
|
||||
"video": "Videó letöltése",
|
||||
"audio": "Hang letöltése",
|
||||
"classWorker": "FFmpeg class worker letöltése",
|
||||
"core": "FFmpeg core letöltése",
|
||||
"wasm": "FFmpeg wasm letöltése",
|
||||
"worker": "FFmpeg worker letöltése",
|
||||
"ffmpeg": "Az FFmpeg könyvtár és komponensek letöltése"
|
||||
},
|
||||
"noPlaylists": "Nincsenek lejátszási listák",
|
||||
"unableToLoadComments": "Nem lehet betölteni a hozzászólásokat",
|
||||
"addToPlaylist": "Hozzáadás a lejátszási listához",
|
||||
"defaultLanguage": "Alapértelmezett nyelv",
|
||||
"enableYoutubejsTemp": "Helyi videó visszatérés használata egyszer",
|
||||
"enableYoutubejsPerm": "Mindig engedélyezze a helyi videó visszatérést",
|
||||
"retryText": "A videó betöltése siketelen, hogyan szeretné folytatni?",
|
||||
"youtubeJsLoading": "A videó betöltése sikertelen, újraprobálkozás a helyi videó visszatéréssel."
|
||||
},
|
||||
"title": "Cím",
|
||||
"subscriptions": {
|
||||
"manageSubscriptions": "Feliratkozások kezelése"
|
||||
},
|
||||
"skipping": "Kihagyás",
|
||||
"language": "Nyelv",
|
||||
"videos": "videók",
|
||||
"playlist": {
|
||||
"createPlaylist": "Lejátszási lista létrehozása",
|
||||
"public": "Nyilvános",
|
||||
"unlisted": "Nem listázott",
|
||||
"private": "Privát",
|
||||
"playVideos": "Videók lejátszása",
|
||||
"loopPlaylist": "Lejátszási lista folyamatos lejátszása",
|
||||
"shuffleVideos": "Videók lejátszása keverten"
|
||||
},
|
||||
"thumbnail": {
|
||||
"live": "ÉLŐ",
|
||||
"failedToLoadImage": "Kép betöltése sikertelen"
|
||||
},
|
||||
"pages": {
|
||||
"home": "Kezdőoldal",
|
||||
"trending": "Felkapott",
|
||||
"subscriptions": "Feliratkozások",
|
||||
"history": "Előzmények",
|
||||
"playlists": "Lejátszási listák"
|
||||
},
|
||||
"subscribers": "feliratkozók",
|
||||
"loginRequired": "Bejelentkezés szükséges",
|
||||
"premium": "A prémium YouTube-tartalmak nem tekinthetők meg a Materialiouson.",
|
||||
"invalidInstance": "Ellenőrizze a webcímet. Ha helyes, akkor a példány leállhatott, vagy nem támogatja a harmadik féltől származó klienseket.",
|
||||
"cancel": "Mégse",
|
||||
"delete": "Törlés",
|
||||
"transcript": "Leirat",
|
||||
"letterCase": "Címek nagybetűs írásmódja",
|
||||
"unsubscribe": "Leiratkozás",
|
||||
"subscribe": "Feliratkozás",
|
||||
"invidiousBlockWarning": "Az Invidious jelenleg le van tiltva a Google által. Ha ebben az esetben a videók nem töltődnek be, akkor használja ezt a példányt a Materialious-on {android} vagy {desktop} platformon, hogy helyi videó visszatéréssel megkerülje ezt a problémát."
|
||||
}
|
||||
@@ -121,6 +121,8 @@ export async function patchYoutubeJs(videoId: string): Promise<VideoPlay> {
|
||||
return;
|
||||
}
|
||||
|
||||
console.log(recommended);
|
||||
|
||||
recommendedVideos.push({
|
||||
videoThumbnails: (recommended?.content_image?.image as Thumbnail[]) || [],
|
||||
videoId: recommended?.content_id || '',
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
import { Capacitor } from '@capacitor/core';
|
||||
import { StatusBar, Style } from '@capacitor/status-bar';
|
||||
import { NavigationBar } from '@hugotomazi/capacitor-navigation-bar';
|
||||
import ui from 'beercss';
|
||||
import { tick } from 'svelte';
|
||||
import { get } from 'svelte/store';
|
||||
import { SafeArea } from '@capacitor-community/safe-area';
|
||||
import { darkModeStore, interfaceAmoledTheme } from './store';
|
||||
|
||||
export async function getDynamicTheme(mode?: string): Promise<Record<string, string>> {
|
||||
@@ -27,24 +26,17 @@ export async function setStatusBarColor() {
|
||||
? '#000000'
|
||||
: (await getDynamicTheme())['--surface-container'];
|
||||
|
||||
await StatusBar.setBackgroundColor({
|
||||
color: surfaceColor
|
||||
const contentColor = !get(darkModeStore) ? 'dark' : 'light';
|
||||
|
||||
await SafeArea.enable({
|
||||
config: {
|
||||
customColorsForSystemBars: true,
|
||||
statusBarColor: surfaceColor,
|
||||
statusBarContent: contentColor,
|
||||
navigationBarColor: surfaceColor,
|
||||
navigationBarContent: contentColor
|
||||
}
|
||||
});
|
||||
|
||||
await NavigationBar.setColor({
|
||||
color: surfaceColor,
|
||||
darkButtons: !get(darkModeStore)
|
||||
});
|
||||
|
||||
await NavigationBar.show();
|
||||
|
||||
if (get(darkModeStore)) {
|
||||
await StatusBar.setStyle({ style: Style.Dark });
|
||||
} else {
|
||||
await StatusBar.setStyle({ style: Style.Light });
|
||||
}
|
||||
|
||||
await StatusBar.setOverlaysWebView({ overlay: false });
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
<script lang="ts">
|
||||
import { goto } from '$app/navigation';
|
||||
|
||||
import { navigating, page } from '$app/stores';
|
||||
import '$lib/android/http/androidRequests';
|
||||
import colorTheme, { convertToHexColorCode } from '$lib/android/plugins/colorTheme';
|
||||
|
||||
@@ -102,7 +102,6 @@
|
||||
<article id="shown-info" transition:fade>
|
||||
<h5>{letterCase(data.video.title)}</h5>
|
||||
<Author bind:subscribed video={data.video} />
|
||||
<div class="space"></div>
|
||||
<LikesDislikes video={data.video} returnYTDislikes={data.streamed.returnYTDislikes} />
|
||||
<article class="border">
|
||||
<Description video={data.video} description={data.content.description} />
|
||||
|
||||
+1
-1
@@ -3,7 +3,7 @@ import os
|
||||
import re
|
||||
from datetime import datetime
|
||||
|
||||
LATEST_VERSION = "1.10.2"
|
||||
LATEST_VERSION = "1.10.3"
|
||||
RELEASE_DATE = datetime.now().strftime("%Y-%-m-%d") # Format: YYYY-M-D
|
||||
|
||||
WORKING_DIR = os.path.join(os.path.dirname(os.path.realpath(__file__)), "materialious")
|
||||
|
||||
Reference in New Issue
Block a user