feat(speech): add usage guidelines and copyright compliance notice
This commit is contained in:
1 parent
b963ae54d8
commit
011a9048c0
6 files changed
+40
-2
No files matched your search
@@ -88,9 +88,13 @@ describe("speech transcription settings card", () => {
|
||||
});
|
||||
expect(html).toContain("还没有语音识别服务");
|
||||
expect(html).toContain("默认语音模型");
|
||||
expect(html).toContain("添加模型服务");
|
||||
expect(html).toContain("yt-dlp 复用的浏览器登录状态");
|
||||
expect(html).not.toContain("提取字幕下载音频时");
|
||||
expect(html).toContain("仅在本地用于读取当前浏览器已登录的媒体流以获取音轨与字幕");
|
||||
expect(html).toContain("使用规范与版权说明");
|
||||
expect(html).toContain("字幕提取与音视频转录功能仅供个人学习、离线研读及辅助记录使用");
|
||||
expect(html).toContain("音视频素材及其原始台词、字幕等衍生内容的知识产权均归原作者及发布平台所有");
|
||||
expect(html).toContain("相关解析与下载逻辑完全在您的本地设备运行");
|
||||
expect(html).toContain("yt-dlp 版本");
|
||||
expect(html).toContain("尚未下载");
|
||||
expect(html).toContain("yt-dlp 路径");
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { useState, type FormEvent, type ReactNode } from "react";
|
||||
import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query";
|
||||
import { VIDEO_COOKIE_BROWSERS, type AiTranscriptionSettings, type AiTranscriptionStandard, type VideoCookieBrowser } from "@edgeever/shared";
|
||||
import { AudioLines, Loader2, Plus, TriangleAlert } from "lucide-react";
|
||||
import { AudioLines, Loader2, Plus, ShieldCheck, TriangleAlert } from "lucide-react";
|
||||
import { useTranslation } from "react-i18next";
|
||||
import { aiErrorMessage } from "@/components/settings/ai-provider-options";
|
||||
import { SpeechProviderCard } from "@/components/settings/SpeechProviderCard";
|
||||
@@ -279,6 +279,9 @@ export const SpeechTranscriptionCard = ({ demoMode }: { demoMode: boolean }) =>
|
||||
</Select>
|
||||
</div>
|
||||
</div>
|
||||
<p className="text-xs leading-4 text-slate-500">
|
||||
{t("speechTranscription.cookieBrowserNotice")}
|
||||
</p>
|
||||
{browserNotice ? (
|
||||
<p className="text-xs font-medium text-emerald-700">
|
||||
{browserNotice === "none"
|
||||
@@ -301,6 +304,17 @@ export const SpeechTranscriptionCard = ({ demoMode }: { demoMode: boolean }) =>
|
||||
<p className="max-w-[60%] break-all text-right font-mono text-xs leading-5 text-slate-900">{ytDlpPath}</p>
|
||||
</div>
|
||||
</section>
|
||||
<section className="rounded-lg border border-slate-200 bg-slate-50/60 p-4 text-xs leading-5 text-slate-600">
|
||||
<div className="flex items-center gap-1.5 font-medium text-slate-800">
|
||||
<ShieldCheck className="h-4 w-4 text-emerald-600 shrink-0" />
|
||||
<span>{t("speechTranscription.complianceNoticeTitle")}</span>
|
||||
</div>
|
||||
<ul className="mt-2 list-disc space-y-1 pl-4 text-slate-500">
|
||||
<li>{t("speechTranscription.complianceNoticePersonalUse")}</li>
|
||||
<li>{t("speechTranscription.complianceNoticeCopyright")}</li>
|
||||
<li>{t("speechTranscription.complianceNoticeLocalSecurity")}</li>
|
||||
</ul>
|
||||
</section>
|
||||
<Dialog open={showAdd} onOpenChange={handleAddDialogChange}>
|
||||
<DialogContent className="max-h-[calc(100vh-2rem)] overflow-y-auto sm:max-w-lg">
|
||||
<form
|
||||
|
||||
@@ -1224,6 +1224,11 @@ export const enUS = {
|
||||
vivaldi: "Vivaldi",
|
||||
whale: "Whale",
|
||||
},
|
||||
complianceNoticeTitle: "Usage Guidelines & Copyright Notice",
|
||||
complianceNoticePersonalUse: "Subtitle extraction and audio transcription features are intended solely for personal study, offline research, and assistive note-taking. Do not publicly distribute, broadcast, or use extracted content for commercial purposes.",
|
||||
complianceNoticeCopyright: "Intellectual property rights for all media assets, original scripts, and subtitles belong to the original creators and respective hosting platforms.",
|
||||
complianceNoticeLocalSecurity: "Parsing and download operations run entirely on your local device. Reused browser sign-in states are only used locally to access media streams you are authorized to view and are never uploaded or stored in the cloud.",
|
||||
cookieBrowserNotice: "Used only locally to access media streams in your active browser session for audio and subtitle tracks.",
|
||||
},
|
||||
aiPrompts: {
|
||||
title: "Prompt library",
|
||||
|
||||
@@ -1224,6 +1224,11 @@ export const ja = {
|
||||
vivaldi: "Vivaldi",
|
||||
whale: "Whale",
|
||||
},
|
||||
complianceNoticeTitle: "利用規約と著作権に関する注意事項",
|
||||
complianceNoticePersonalUse: "字幕抽出および音声文字起こし機能は、個人の学習、オフライン研究、およびメモ作成の補助のみを目的としています。抽出したコンテンツを公開、配布、または商用利用しないでください。",
|
||||
complianceNoticeCopyright: "動画・音声素材およびその台詞、字幕等の知的財産権は、原作者および配信プラットフォームに帰属します。",
|
||||
complianceNoticeLocalSecurity: "関連する処理やダウンロードはすべてお使いのローカル端末上で実行されます。ブラウザのログイン状態はアクセス権のあるメディアの読み取りのみに利用され、クラウドに送信または保存されることはありません。",
|
||||
cookieBrowserNotice: "音声や字幕を取得するために、現在ログイン中のブラウザセッションをローカルでのみ利用します。",
|
||||
},
|
||||
aiPrompts: {
|
||||
title: "プロンプトライブラリ",
|
||||
|
||||
@@ -1224,6 +1224,11 @@ export const pl = {
|
||||
vivaldi: "Vivaldi",
|
||||
whale: "Whale",
|
||||
},
|
||||
complianceNoticeTitle: "Zasady użytkowania i prawa autorskie",
|
||||
complianceNoticePersonalUse: "Funkcje wyodrębniania napisów i transkrypcji mowy są przeznaczone wyłącznie do nauki osobistej, badań offline i pomocy w sporządzaniu notatek. Nie należy publicznie rozpowszechniać ani wykorzystywać wyodrębnionych treści w celach komercyjnych.",
|
||||
complianceNoticeCopyright: "Prawa autorskie i własność intelektualna do materiałów wideo, oryginalnych dialogów i napisów należą do ich twórców oraz platform źródłowych.",
|
||||
complianceNoticeLocalSecurity: "Wszystkie operacje przetwarzania i pobierania działają wyłącznie na Twoim urządzeniu lokalnym. Zalogowane sesje przeglądarki są używane tylko lokalnie i nigdy nie są wysyłane do chmury.",
|
||||
cookieBrowserNotice: "Używane tylko lokalnie do odczytu strumieni multimediów w Twojej aktywnej przeglądarce.",
|
||||
},
|
||||
aiPrompts: {
|
||||
title: "Biblioteka promptów",
|
||||
|
||||
@@ -1224,6 +1224,11 @@ export const zhCN = {
|
||||
vivaldi: "Vivaldi",
|
||||
whale: "Whale",
|
||||
},
|
||||
complianceNoticeTitle: "使用规范与版权说明",
|
||||
complianceNoticePersonalUse: "字幕提取与音视频转录功能仅供个人学习、离线研读及辅助记录使用,请勿将提取内容公开发布、传播或用于商业营利。",
|
||||
complianceNoticeCopyright: "音视频素材及其原始台词、字幕等衍生内容的知识产权均归原作者及发布平台所有。",
|
||||
complianceNoticeLocalSecurity: "相关解析与下载逻辑完全在您的本地设备运行,浏览器登录状态仅用于读取您有权访问的公开或已购媒体流,绝不上报或云端存储。",
|
||||
cookieBrowserNotice: "仅在本地用于读取当前浏览器已登录的媒体流以获取音轨与字幕。",
|
||||
},
|
||||
aiPrompts: {
|
||||
title: "指令库",
|
||||
|
||||
Reference in new issue
Block a user