5 Commits
1.8.0 ... 1.8.2

Author SHA1 Message Date
IndieKKY
dc73be25d6 chore: release 1.8.2 2024-02-26 11:49:46 +08:00
IndieKKY
8e23f143e4 bibigpt 2024-02-26 11:47:57 +08:00
IndieKKY
d7085ba75e chore: release 1.8.1 2024-02-18 10:33:24 +08:00
IndieKKY
b8d8b8fe06 模型更新 2024-02-18 10:33:00 +08:00
IndieKKY
d42844ac3c 不限制最大字数 2024-01-26 13:21:10 +08:00
7 changed files with 59 additions and 23 deletions

View File

@@ -1,7 +1,7 @@
{ {
"name": "哔哩哔哩字幕列表", "name": "哔哩哔哩字幕列表",
"description": "显示B站视频的字幕列表,可点击跳转与下载字幕,并支持翻译和总结字幕!", "description": "显示B站视频的字幕列表,可点击跳转与下载字幕,并支持翻译和总结字幕!",
"version": "1.8.0", "version": "1.8.2",
"manifest_version": 3, "manifest_version": 3,
"permissions": [ "permissions": [
"storage" "storage"

View File

@@ -1,7 +1,7 @@
{ {
"private": true, "private": true,
"name": "bilibili-subtitle", "name": "bilibili-subtitle",
"version": "1.8.0", "version": "1.8.2",
"type": "module", "type": "module",
"description": "哔哩哔哩字幕列表", "description": "哔哩哔哩字幕列表",
"main": "index.js", "main": "index.js",

BIN
public/bibigpt.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

View File

@@ -210,29 +210,54 @@ const Body = () => {
<div ref={bodyRef} onWheel={onWheel} <div ref={bodyRef} onWheel={onWheel}
className={classNames('flex flex-col gap-1.5 overflow-y-auto select-text scroll-smooth', floatKeyPointsSegIdx != null && 'pb-[100px]')} className={classNames('flex flex-col gap-1.5 overflow-y-auto select-text scroll-smooth', floatKeyPointsSegIdx != null && 'pb-[100px]')}
style={{ style={{
height: `${totalHeight - HEADER_HEIGHT - TITLE_HEIGHT - (envData.searchEnabled?SEARCH_BAR_HEIGHT:0)}px` height: `${totalHeight - HEADER_HEIGHT - TITLE_HEIGHT - (envData.searchEnabled ? SEARCH_BAR_HEIGHT : 0)}px`
}} }}
> >
{segments?.map((segment, segmentIdx) => <SegmentCard key={segment.startIdx} segment={segment} segmentIdx={segmentIdx} bodyRef={bodyRef}/>)} {segments?.map((segment, segmentIdx) => <SegmentCard key={segment.startIdx} segment={segment}
segmentIdx={segmentIdx} bodyRef={bodyRef}/>)}
{/* tip */} {/* tip */}
<div className='flex flex-col items-center text-center pt-1 pb-2'> <div className='flex flex-col items-center text-center pt-1 pb-2'>
<div className='font-semibold text-accent'>💡<span className='underline underline-offset-4'></span>💡</div> <div className='font-semibold text-accent'>💡<span className='underline underline-offset-4'></span>💡</div>
<div className='text-sm desc px-2'><span className='text-amber-600 font-semibold'></span><span className='text-secondary/75 font-semibold'></span>🥳</div> <div className='text-sm desc px-2'><span className='text-amber-600 font-semibold'></span><span
{(segments?.length??0) > 0 && <button className='mt-1.5 btn btn-xs btn-info' onClick={onCopy}>{SUMMARIZE_TYPES[curSummaryType].name}<RiFileCopy2Line/></button>} className='text-secondary/75 font-semibold'></span>🥳
</div>
{(segments?.length ?? 0) > 0 && <button className='mt-1.5 btn btn-xs btn-info'
onClick={onCopy}>{SUMMARIZE_TYPES[curSummaryType].name}<RiFileCopy2Line/>
</button>}
</div> </div>
<div className='flex flex-col items-center text-center py-2 mx-4 border-t border-t-base-300'> <div className='flex flex-col items-center text-center py-2 mx-4 border-t border-t-base-300'>
<div className='font-semibold text-accent flex items-center gap-1'><img src='/youtube-caption.png' alt='youtube caption pro' className='w-8 h-8'/>YouTube Caption Pro</div> <div className='font-semibold text-accent flex items-center gap-1'><img src='/bibigpt.png'
<div className='text-sm px-2 desc'><span className='text-amber-600 font-semibold text-base'>YouTube</span></div> alt='BibiGPT'
className='w-8 h-8'/>BibiGPT
</div>
<div className='text-sm px-2 desc'><span className='text-amber-600 font-semibold text-base'></span><span className='font-semibold'></span></div>
<div className='flex gap-2'> <div className='flex gap-2'>
<a title='Chrome商店' href='https://chromewebstore.google.com/detail/fiaeclpicddpifeflpmlgmbjgaedladf' onClick={(e) => { <a title='BibiGPT' href='https://bibigpt.co/r/bilibili'
e.preventDefault() onClick={(e) => {
openUrl('https://chromewebstore.google.com/detail/fiaeclpicddpifeflpmlgmbjgaedladf') e.preventDefault()
}} className='link text-sm text-accent'>Chrome商店</a> openUrl('https://bibigpt.co/r/bilibili')
<a title='Edge商店' href='https://microsoftedge.microsoft.com/addons/detail/galeejdehabppfgooagmkclpppnbccpc' onClick={e => { }} className='link text-sm text-accent'> BibiGPT </a>
e.preventDefault() </div>
openUrl('https://microsoftedge.microsoft.com/addons/detail/galeejdehabppfgooagmkclpppnbccpc') </div>
}} className='link text-sm text-accent'>Edge商店</a> <div className='flex flex-col items-center text-center py-2 mx-4 border-t border-t-base-300'>
<div className='font-semibold text-accent flex items-center gap-1'><img src='/youtube-caption.png'
alt='youtube caption'
className='w-8 h-8'/>YouTube Caption Pro
</div>
<div className='text-sm px-2 desc'><span className='text-amber-600 font-semibold text-base'>YouTube</span>
</div>
<div className='flex gap-2'>
<a title='Chrome商店' href='https://chromewebstore.google.com/detail/fiaeclpicddpifeflpmlgmbjgaedladf'
onClick={(e) => {
e.preventDefault()
openUrl('https://chromewebstore.google.com/detail/fiaeclpicddpifeflpmlgmbjgaedladf')
}} className='link text-sm text-accent'>Chrome商店</a>
<a title='Edge商店' href='https://microsoftedge.microsoft.com/addons/detail/galeejdehabppfgooagmkclpppnbccpc'
onClick={e => {
e.preventDefault()
openUrl('https://microsoftedge.microsoft.com/addons/detail/galeejdehabppfgooagmkclpppnbccpc')
}} className='link text-sm text-accent'>Edge商店</a>
</div> </div>
</div> </div>
</div> </div>

View File

@@ -261,14 +261,25 @@ const MoreBtn = (props: Props) => {
(IndieKKY) (IndieKKY)
</a> </a>
</li> </li>
<li className='hover:bg-accent'>
<a className='flex items-center' onClick={(e) => {
e.preventDefault()
e.stopPropagation()
openUrl('https://bibigpt.co/r/bilibili')
}}>
<img alt='BibiGPT' src='/bibigpt.png' className='w-[20px] h-[20px] bg-white rounded-sm p-0.5'/>
BibiGPT
</a>
</li>
<li className='hover:bg-accent'> <li className='hover:bg-accent'>
<a className='flex items-center' onClick={(e) => { <a className='flex items-center' onClick={(e) => {
e.preventDefault() e.preventDefault()
e.stopPropagation() e.stopPropagation()
openUrl('https://chromewebstore.google.com/detail/fiaeclpicddpifeflpmlgmbjgaedladf') openUrl('https://chromewebstore.google.com/detail/fiaeclpicddpifeflpmlgmbjgaedladf')
}}> }}>
<img alt='youtube subtitle' src='/youtube-caption.png' className='w-[20px] h-[20px] bg-white rounded-sm p-0.5'/> <img alt='youtube subtitle' src='/youtube-caption.png'
Youtube Caption Pro className='w-[20px] h-[20px] bg-white rounded-sm p-0.5'/>
Youtube Caption
</a> </a>
</li> </li>
<li className='hover:bg-accent'> <li className='hover:bg-accent'>
@@ -284,7 +295,7 @@ const MoreBtn = (props: Props) => {
</li> </li>
</ul> </ul>
</Popover>} </Popover>}
</> </>
} }
export default MoreBtn export default MoreBtn

View File

@@ -158,8 +158,8 @@ export const MODELS = [{
code: 'gpt-3.5-turbo', code: 'gpt-3.5-turbo',
name: 'gpt-3.5-turbo', name: 'gpt-3.5-turbo',
}, { }, {
code: 'gpt-3.5-turbo-16k', code: 'gpt-3.5-turbo-0125',
name: 'gpt-3.5-turbo-16k', name: 'gpt-3.5-turbo-0125',
}, { }, {
code: 'gpt-3.5-turbo-1106', code: 'gpt-3.5-turbo-1106',
name: 'gpt-3.5-turbo-1106', name: 'gpt-3.5-turbo-1106',

View File

@@ -14,7 +14,7 @@ import {
setTotalHeight, setTotalHeight,
} from '../redux/envReducer' } from '../redux/envReducer'
import {EventBusContext} from '../Router' import {EventBusContext} from '../Router'
import {EVENT_EXPAND, TOTAL_HEIGHT_MAX, TOTAL_HEIGHT_MIN, WORDS_DEFAULT, WORDS_MAX, WORDS_MIN} from '../const' import {EVENT_EXPAND, TOTAL_HEIGHT_MAX, TOTAL_HEIGHT_MIN, WORDS_DEFAULT, WORDS_MIN} from '../const'
import {useInterval} from 'ahooks' import {useInterval} from 'ahooks'
import {getWholeText} from '../util/biz_util' import {getWholeText} from '../util/biz_util'
@@ -157,7 +157,7 @@ const useSubtitleService = () => {
if (items != null) { if (items != null) {
if (envData.summarizeEnable) { // 分段 if (envData.summarizeEnable) { // 分段
let size = envData.words??WORDS_DEFAULT let size = envData.words??WORDS_DEFAULT
size = Math.min(Math.max(size, WORDS_MIN), WORDS_MAX) size = Math.max(size, WORDS_MIN)
segments = [] segments = []
let transcriptItems: TranscriptItem[] = [] let transcriptItems: TranscriptItem[] = []