Frontend for the channel-explore feature: - ChannelPage: banner/avatar/stats header, Subscribe/unsubscribe, an "exploring" badge while browsing an un-subscribed channel, Videos/About tabs. Reuses Feed scoped to the channel (scope=all + source=all so the per-user ephemeral videos show). Auto-ingests recent uploads on first visit (background, with a loading note) + "Load more from YouTube" to page deeper; skipped for demo / already-subscribed channels. - App: openChannel/closeChannel as a Back-aware sub-view (history.state._chan, mirrors the YT-search _yt pattern); ChannelPage takes over the content column, nav rail stays. - ChannelLink/cards/player: the channel name now opens our channel page (onChannelFilter → onOpenChannel); the in-card "only this channel" filter button is dropped (the page subsumes it). PlayerModal channel-name wiring follows in the next commit. - api: channelDetail + exploreChannel; ChannelDetail/ExploreResult types. - i18n EN/HU/DE: channel namespace, explore_cleanup scheduler labels, explore config group, channels_explore quota label.
121 lines
5.8 KiB
JSON
121 lines
5.8 KiB
JSON
{
|
|
"intro": "Az adatbázisban tárolt működési beállítások — felülírják a fájl/env alapértékeket, és újratelepítés nélkül lépnek életbe. Hagyd üresen (vagy állítsd vissza) a mezőt az alapértékhez való visszatéréshez.",
|
|
"loading": "Konfiguráció betöltése…",
|
|
"groups": {
|
|
"access": "Hozzáférés",
|
|
"email": "E-mail / SMTP",
|
|
"youtube": "YouTube API",
|
|
"google": "Google bejelentkezés",
|
|
"quota": "Kvóta",
|
|
"backfill": "Letöltés (backfill)",
|
|
"shorts": "Shorts-vizsgálat",
|
|
"batch": "Kötegméretek",
|
|
"explore": "Csatorna-felfedezés"
|
|
},
|
|
"fields": {
|
|
"smtp_host": {
|
|
"label": "SMTP-kiszolgáló",
|
|
"hint": "pl. smtp.gmail.com"
|
|
},
|
|
"smtp_port": {
|
|
"label": "SMTP-port",
|
|
"hint": "Általában 587 (STARTTLS)."
|
|
},
|
|
"smtp_user": {
|
|
"label": "SMTP-felhasználónév",
|
|
"hint": "A küldő fiók / bejelentkezés."
|
|
},
|
|
"smtp_from": {
|
|
"label": "Feladó cím",
|
|
"hint": "pl. Siftlode <addr@gmail.com>. Alapból a felhasználónév."
|
|
},
|
|
"smtp_password": {
|
|
"label": "SMTP-jelszó",
|
|
"hint": "Alkalmazásjelszó. Titkosítva tárolva; csak írható — soha nem jelenik meg újra."
|
|
},
|
|
"quota_daily_budget": {
|
|
"label": "Napi kvótakeret",
|
|
"hint": "Naponta elkölthető YouTube Data API-egységek (az ingyenes keret 10 000). Az alap 9000 tartalékot hagy."
|
|
},
|
|
"backfill_quota_reserve": {
|
|
"label": "Letöltési kvótatartalék",
|
|
"hint": "Tartalékban tartott egységek, hogy az ütemezett letöltés ne éheztesse ki az interaktív szinkront / gazdagítást."
|
|
},
|
|
"search_daily_limit_per_user": {
|
|
"label": "Élő keresés — napi limit / felhasználó",
|
|
"hint": "Maximális élő YouTube-keresés felhasználónként naponta. Az API-forrásnál egy keresés 100 egységbe kerül (így a közös büdzséből összesen csak ~80-90 fér bele naponta); a scrape-forrásnál ez tiszta visszaélés-elleni limit. 0 = élő keresés kikapcsolva."
|
|
},
|
|
"search_source": {
|
|
"label": "Élő keresés forrása",
|
|
"hint": "Honnan jönnek az élő YouTube-keresés találatai. A „scrape” a YouTube belső végpontját használja és nem fogyaszt API-kvótát (ajánlott). Az „api” a hivatalos search.list-et (100 egység/oldal). Válts „api”-ra, ha a scrape valaha elromlik vagy letiltják."
|
|
},
|
|
"backfill_recent_max_videos": {
|
|
"label": "Friss letöltés — max videó",
|
|
"hint": "Csatornánként az első körben letöltött legújabb videók száma."
|
|
},
|
|
"backfill_recent_max_days": {
|
|
"label": "Friss letöltés — max kor (nap)",
|
|
"hint": "Az első kör csatornánként meddig nyúl vissza."
|
|
},
|
|
"shorts_probe_max_seconds": {
|
|
"label": "Shorts-vizsgálat — max hossz (mp)",
|
|
"hint": "Csak az ennél nem hosszabb videókat vizsgáljuk lehetséges Shortsként."
|
|
},
|
|
"shorts_probe_batch": {
|
|
"label": "Shorts-vizsgálat — kötegméret",
|
|
"hint": "Futásonként ennyi videót osztályozunk."
|
|
},
|
|
"enrich_batch_size": {
|
|
"label": "Gazdagítási kötegméret",
|
|
"hint": "videos.list azonosítók hívásonként (a YouTube 50-ben maximálja)."
|
|
},
|
|
"autotag_title_sample": {
|
|
"label": "Auto-címke címmintavétel",
|
|
"hint": "Csatornánként ennyi friss videócímet mintázunk a nyelvfelismeréshez."
|
|
},
|
|
"youtube_api_key": {
|
|
"label": "YouTube API-kulcs",
|
|
"hint": "Opcionális. Publikus olvasásokhoz (csatornák/videók), hogy a megosztott letöltés ne függjön egy felhasználó OAuth-jától. Titkosítva tárolva; csak írható."
|
|
},
|
|
"youtube_api_proxy": {
|
|
"label": "YouTube API egress proxy",
|
|
"hint": "Opcionális. HTTP(S) proxy URL a kimenő YouTube API-hívásokhoz — fix IP-jű hoston átengedve egy IP-korlátozott kulcs dinamikus IP-jű szerverről is működik. Üresen = közvetlen."
|
|
},
|
|
"google_client_id": {
|
|
"label": "Google kliens-azonosító",
|
|
"hint": "OAuth 2.0 kliens-azonosító a Google-bejelentkezéshez. Titkosítva tárolva; csak írható. Hagyd üresen mindkét Google-mezőt a Google-bejelentkezés kikapcsolásához (az e-mail+jelszó továbbra is működik)."
|
|
},
|
|
"google_client_secret": {
|
|
"label": "Google kliens-titok",
|
|
"hint": "OAuth 2.0 kliens-titok. Titkosítva tárolva; csak írható."
|
|
},
|
|
"allow_registration": {
|
|
"label": "Regisztráció engedélyezése",
|
|
"hint": "Bekapcsolva bárki beküldhet email+jelszó regisztrációt. Belépéshez továbbra is email-igazolás és admin-jóváhagyás szükséges."
|
|
},
|
|
"explore_grace_days": {
|
|
"label": "Felfedezés — türelmi idő (nap)",
|
|
"hint": "Meddig marad meg egy felfedezett, de nem feliratkozott csatorna (és efemer videói), mielőtt a takarító feladat törli. A feliratkozás véglegesen megtartja."
|
|
}
|
|
},
|
|
"save": "Mentés",
|
|
"saving": "Mentés…",
|
|
"saved": "Elmentve",
|
|
"saveFailed": "Nem sikerült menteni",
|
|
"unsaved": "Nem mentett változások",
|
|
"discard": "Elvetés",
|
|
"willReset": "mentéskor visszaáll alapértékre",
|
|
"reset": "Visszaállítás",
|
|
"resetHint": "Eltávolítja ezt a felülírást, és visszatér a fájl/env alapértékhez.",
|
|
"resetDone": "Visszaállítva az alapértékre",
|
|
"usingDefault": "alapérték használatban",
|
|
"overridden": "felülírva az adatbázisban",
|
|
"secretSet": "•••••••• tárolva",
|
|
"secretEnv": "env-érték használatban",
|
|
"secretUnset": "nincs beállítva",
|
|
"secretsDisabled": "Állítsd be a TOKEN_ENCRYPTION_KEY-t a titkok adatbázisban tárolásához.",
|
|
"testEmail": "Teszt-email küldése",
|
|
"testEmailHint": "Teszt-email küldése a saját címedre a fenti beállításokkal, hogy ellenőrizd, működnek-e.",
|
|
"testSent": "Teszt-email elküldve ide: {{to}}",
|
|
"testFailed": "A teszt-email sikertelen — ellenőrizd a beállításokat"
|
|
}
|