chore: 导入清理前的完整工程状态(含 Capacitor 原生壳,作为回滚备份点)

This commit is contained in:
toor
2026-10-21 11:50:10 +08:00
committed by trae-solo-agent
commit 8ded87a3a8
389 changed files with 52242 additions and 0 deletions
+47
View File
@@ -0,0 +1,47 @@
import type { RecipeItem } from '~/types'
import { trackCookEvent } from './analytics'
/**
* B 站搜索链接:按菜名搜索,结果里挑选当下最热门的教程
*/
export function getRecipeSearchLink(name: string) {
return `https://search.bilibili.com/all?keyword=${encodeURIComponent(name)}`
}
/**
* 收录的原视频地址:优先使用收录的链接,否则拼出 B 站视频地址;两者都没有时返回空字符串
*/
export function getRecipeVideoLink(recipe: Pick<RecipeItem, 'link' | 'bv'>) {
if (recipe.link)
return recipe.link
return recipe.bv ? `https://www.bilibili.com/video/${recipe.bv}` : ''
}
/**
* 菜谱的做法链接:跳转 B 站按菜名搜索,具体收录的视频作为次级入口(见 getRecipeVideoLink)
* 没有菜名时(不正常的数据)退回视频链接
*/
export function getRecipeLink(recipe: Pick<RecipeItem, 'name' | 'link' | 'bv'>) {
return recipe.name ? getRecipeSearchLink(recipe.name) : getRecipeVideoLink(recipe)
}
export function openRecipe(recipe: Pick<RecipeItem, 'name' | 'link' | 'bv'>) {
const link = getRecipeLink(recipe)
if (!link)
return
trackCookEvent('click_recipe_video')
window.open(link, '_blank')
}
/**
* 反馈这道菜的问题:打开预填好菜名和视频的 GitHub Issue 表单
*/
export function getRecipeFeedbackLink(recipe: Pick<RecipeItem, 'name' | 'link' | 'bv'>) {
const params = new URLSearchParams({
template: 'recipe.yml',
title: `[菜谱] ${recipe.name}`,
name: recipe.name,
video: getRecipeVideoLink(recipe),
})
return `https://github.com/YunYouJun/cook/issues/new?${params}`
}