mirror of
https://github.com/JefferyHcool/BiliNote.git
synced 2026-06-18 22:20:22 +08:00
在任务未完成的早期阶段(PENDING/DOWNLOADING 等),侧边栏和 popup 只能回退到 videoUrl,用户看到的是一长串链接,难以辨认。 改动: - TaskRecord 新增 title 字段,用于存储浏览器标签页标题 - popup 创建任务时保存 tab.title - background startTask 接收可选 title,右键菜单和悬浮按钮均传入 - 显示优先级:result.audio_meta.title > title > videoUrl - 所有平台(Bilibili / YouTube / Douyin / Kuaishou)均受益 测试: - pnpm typecheck 通过 - pnpm build 通过 - 在 B 站、YouTube 视频页提交任务,侧边栏和 popup 均显示标题而非链接
59 lines
1.9 KiB
Vue
59 lines
1.9 KiB
Vue
<script setup lang="ts">
|
|
import 'uno.css'
|
|
import { computed, ref } from 'vue'
|
|
import { sendMessage } from 'webext-bridge/content-script'
|
|
import { detectPlatform, PLATFORM_LABELS } from '~/logic/platform'
|
|
|
|
const platform = detectPlatform(window.location.href)
|
|
const busy = ref(false)
|
|
const toast = ref<{ kind: 'ok' | 'err', text: string } | null>(null)
|
|
|
|
const label = computed(() => platform ? `用 BiliNote 总结这个${PLATFORM_LABELS[platform]}视频` : '')
|
|
|
|
async function trigger() {
|
|
if (!platform || busy.value)
|
|
return
|
|
busy.value = true
|
|
toast.value = null
|
|
try {
|
|
const res = await sendMessage('bilinote-start', {
|
|
url: window.location.href,
|
|
platform,
|
|
title: document.title,
|
|
}, 'background')
|
|
const ok = res && (res as any).ok
|
|
toast.value = ok
|
|
? { kind: 'ok', text: '已开始生成笔记,可在侧边栏 / popup 查看进度' }
|
|
: { kind: 'err', text: (res as any)?.error || '提交失败,请打开设置检查后端与供应商' }
|
|
}
|
|
catch (e) {
|
|
toast.value = { kind: 'err', text: (e as Error).message }
|
|
}
|
|
finally {
|
|
busy.value = false
|
|
setTimeout(() => { toast.value = null }, 4000)
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<template>
|
|
<div v-if="platform" class="bilinote-fab fixed bottom-24 right-6 z-[2147483647] flex flex-col items-end gap-2 font-sans select-none">
|
|
<div
|
|
v-if="toast"
|
|
class="text-xs px-3 py-2 rounded shadow max-w-[260px]"
|
|
:class="toast.kind === 'ok' ? 'bg-green-600 text-white' : 'bg-red-600 text-white'"
|
|
>
|
|
{{ toast.text }}
|
|
</div>
|
|
<button
|
|
class="flex items-center gap-2 px-3 py-2 rounded-full shadow-lg cursor-pointer border-none text-white text-sm font-medium bg-pink-600 hover:bg-pink-700 disabled:bg-pink-300"
|
|
:disabled="busy"
|
|
:title="label"
|
|
@click="trigger"
|
|
>
|
|
<span class="text-base">📝</span>
|
|
<span>{{ busy ? '提交中…' : 'BiliNote' }}</span>
|
|
</button>
|
|
</div>
|
|
</template>
|