From 60cb4ca0ceed9085343b0f331083789324a40ee6 Mon Sep 17 00:00:00 2001 From: lovegaoshi <106490582+lovegaoshi@users.noreply.github.com> Date: Tue, 21 Jan 2025 12:37:31 -0800 Subject: [PATCH 1/2] fix: lint --- src/components/miniplayer/View.tsx | 13 ++++++++----- src/components/player/controls/useSponsorBlock.ts | 4 ++-- src/components/style.ts | 10 +++++----- src/utils/mediafetch/acfunvideo.ts | 2 +- 4 files changed, 16 insertions(+), 13 deletions(-) diff --git a/src/components/miniplayer/View.tsx b/src/components/miniplayer/View.tsx index 3c247dd57..2334c66b0 100644 --- a/src/components/miniplayer/View.tsx +++ b/src/components/miniplayer/View.tsx @@ -71,13 +71,15 @@ export default () => { }; const onArtworkPress = () => { if (artworkOpacity.value === 1) { - return (artworkOpacity.value = withTiming(0, { duration: 100 }, () => { + artworkOpacity.value = withTiming(0, { duration: 100 }, () => { runOnJS(setLrcVisible)(true); - })); + }); + return; } if (artworkOpacity.value === 0) { setLrcVisible(false); - return (artworkOpacity.value = withTiming(1, { duration: 100 })); + artworkOpacity.value = withTiming(1, { duration: 100 }); + return; } }; @@ -89,9 +91,10 @@ export default () => { if (translationY < -height * SnapToRatio) { return expand(); } - return (miniplayerHeight.value = withTiming(initHeight.value, { + miniplayerHeight.value = withTiming(initHeight.value, { duration: 250, - })); + }); + return; }; const scrollDragGesture = React.useMemo( diff --git a/src/components/player/controls/useSponsorBlock.ts b/src/components/player/controls/useSponsorBlock.ts index 707a606b6..1022c3754 100644 --- a/src/components/player/controls/useSponsorBlock.ts +++ b/src/components/player/controls/useSponsorBlock.ts @@ -12,7 +12,7 @@ export default () => { const { sponsorBlockEnabled, sponsorBlockCat } = useNoxSetting( state => state.playerSetting, ); - const [sponsorblock, setSponsorBlock] = useState([]); + const [sponsorBlock, setSponsorBlock] = useState([]); const initSponsorBlock = (song: NoxMedia.Song) => { if (sponsorBlockEnabled) { @@ -21,7 +21,7 @@ export default () => { }; const checkSponsorBlock = (position: number) => { - for (const sb of sponsorblock) { + for (const sb of sponsorBlock) { if ( sponsorBlockCat.includes(sb.category) && sb.actionType === ActionType.Skip && diff --git a/src/components/style.ts b/src/components/style.ts index 22add6b43..8a1a19b4c 100644 --- a/src/components/style.ts +++ b/src/components/style.ts @@ -60,16 +60,16 @@ export const createStyle = ( alignItems: 'center', height: 148, }, - gifs: (customStyle.gifs || []) as any, - bkgrdImg: randomChoice(customStyle.backgroundImages || []) as any, + gifs: (customStyle.gifs ?? []) as any, + bkgrdImg: randomChoice(customStyle.backgroundImages ?? []) as any, bkgrdImgLandscape: randomChoice( - customStyle.backgroundImagesLandscape || [], + customStyle.backgroundImagesLandscape ?? [], ) as any, loadingIcon: customStyle.loadingIcon as any, progressThumbImage: customStyle.progressThumbImage as any, - progressThumbImageLeftDrag: (customStyle.progressThumbImageLeftDrag || + progressThumbImageLeftDrag: (customStyle.progressThumbImageLeftDrag ?? customStyle.progressThumbImage) as any, - progressThumbImageRightDrag: (customStyle.progressThumbImageRightDrag || + progressThumbImageRightDrag: (customStyle.progressThumbImageRightDrag ?? customStyle.progressThumbImage) as any, biliGarbCard: customStyle.biliGarbCard as any, thumbupSVGA: customStyle.thumbupSVGA as any, diff --git a/src/utils/mediafetch/acfunvideo.ts b/src/utils/mediafetch/acfunvideo.ts index d4f372f3f..473855925 100644 --- a/src/utils/mediafetch/acfunvideo.ts +++ b/src/utils/mediafetch/acfunvideo.ts @@ -75,7 +75,7 @@ const export2URL = (song: NoxMedia.Song) => `https://www.youtube.com/watch?v=${song.bvid}`; export default { - regexSearchMatch: /acfun\.cn\/v\/(ac[0-9]+)/, + regexSearchMatch: /acfun\.cn\/v\/(ac\d+)/, regexFetch, regexResolveURLMatch: /^acfun-/, resolveURL, From e1708290798fbc8a00cafc37e0d8de18509886c4 Mon Sep 17 00:00:00 2001 From: lovegaoshi <106490582+lovegaoshi@users.noreply.github.com> Date: Tue, 21 Jan 2025 13:12:35 -0800 Subject: [PATCH 2/2] feat: ytb sponsorblock --- src/utils/sponsorblock/parser.ts | 3 +++ src/utils/sponsorblock/ytb.ts | 26 ++++++++++++++++++++++++++ 2 files changed, 29 insertions(+) create mode 100644 src/utils/sponsorblock/ytb.ts diff --git a/src/utils/sponsorblock/parser.ts b/src/utils/sponsorblock/parser.ts index 0927d1708..b810af61a 100644 --- a/src/utils/sponsorblock/parser.ts +++ b/src/utils/sponsorblock/parser.ts @@ -1,10 +1,13 @@ import { Source } from '@enums/MediaFetch'; import { getSponsorBlock as getSponsorBlockBili } from './bilibili'; +import { getSponsorBlock as getSponsorYtb } from './ytb'; export const getSponsorBlock = async (song: NoxMedia.Song) => { switch (song.source) { case Source.bilivideo: return getSponsorBlockBili(song); + case Source.ytbvideo: + return getSponsorYtb(song); } return []; }; diff --git a/src/utils/sponsorblock/ytb.ts b/src/utils/sponsorblock/ytb.ts new file mode 100644 index 000000000..dc9d9322a --- /dev/null +++ b/src/utils/sponsorblock/ytb.ts @@ -0,0 +1,26 @@ +import bfetch from '@utils/BiliFetch'; +import logger from '../Logger'; +import { SponsorBlockBili } from './Constants'; + +// https://wiki.sponsor.ajay.app/w/API_Docs +const API = 'https://sponsor.ajay.app/api/skipSegments?videoID={bvid}'; + +const _getSponsorBlock = async (bvid: string): Promise => { + try { + const res = await bfetch(API.replace('{bvid}', bvid)); + if (res.status !== 200) { + logger.info( + `[sponsorblock.ytb] ${bvid}: ${res.status} ${res.statusText}`, + ); + return []; + } + const json = (await res.json()) as SponsorBlockBili[]; + return json; + } catch { + return []; + } +}; + +export const getSponsorBlock = ( + song: NoxMedia.Song, +): Promise => _getSponsorBlock(song.bvid);