一个评论插件doge

lxf2023-11-29 04:00:01

起因

作为一个不正经的程序员,在玩一些视频平台时候,看见有意思的评论想记录下来方便下次使用,比如下图: 一个评论插件doge 那么问题来啦,如何做好记录并方便下次使用呢,且能在当前视频页面完成筛选并替换up主名称复制使用,我想了下,这做个浏览器插件不是就行了吗?一个评论插件doge

基础功能

功能设计目的实现方式
自定义分组方便区分使用场景ui库中的标签页组件
emoji 预览展示使用时方便查看最终效果循环进行emoji替换
复制并替换视频博主自定义的别名增加亲切感复制时映射替换

开发浏览器插件

浏览器插件的基本知识就不细说啦,可以查看其它的文章

如何实现复制时自定义替换视频博主别名

// 逻辑:在复制的时候,发送请求获取当前页面up主名称,如果存在映射则替换别名,最后替换在XX位置上
async function copyComment(comment: string) {
  //  每一个页签都是一个实例,所以要获取到当前页的ID
  browser.tabs.query({ active: true, currentWindow: true }).then(async (tabs) => {
    const tab = tabs[0]
    //   获取当前页面的id并发送获取up账号名称请求
    await sendMessage('getUpName', { title: tab.title, tabId: tab.id! }, { context: 'content-script', tabId: tab.id! })
  })
  onMessage('sendUpName', (res) => {
    // 接收到当前up的账号名称
    let upName: string = (res.data as any)?.upName
    const alias =  upNameAliasList.value[upName]
    if (alias)  // 如果存在映射则替换别名,否则取原来的名字
      upName = alias 

    const replacedComment = comment.replace('XX', upName)   // 替换最后的upName
    const { copy } = useClipboard({ source: replacedComment })
    copy()
    if (upName)
      ElMessage.warning({ message: `复制成功请确认-----${replacedComment}`, duration: 3000 })
    else
      ElMessage.error('未获取到当前页面up名字,请移动到具体播放页面')
  })
}

如何实现 emoji 预览展示

// 替换emoji
const emoteList = emojiJson.data.packages.map(item => item.emote).flat() // json文件从B战接口中复制过来,为方便使用先进行flat打平
function transformEmoji(comment: string) {
  function findPic(matchStr: string) {
    const emojiItem = emoteList?.find(item => item.text === matchStr)?.url
    return `<img src="${emojiItem}" class="w-[20px] h-[20px] inline">`
  }
  const replacedComment = comment.replace(/\[[\u4E00-\u9FA5\w]*\]/g, findPic) // 替换所有[xx]类型的文字为emoji
  return replacedComment
}
 // 展示用v-html替换
 <div v-html="transformEmoji(subItem.comment)" />

参考资料

Chrome插件开发教程

代码地址和商店地址

  • Github地址
  • Edge商店
本网站是一个以CSS、JavaScript、Vue、HTML为核心的前端开发技术网站。我们致力于为广大前端开发者提供专业、全面、实用的前端开发知识和技术支持。 在本网站中,您可以学习到最新的前端开发技术,了解前端开发的最新趋势和最佳实践。我们提供丰富的教程和案例,让您可以快速掌握前端开发的核心技术和流程。 本网站还提供一系列实用的工具和插件,帮助您更加高效地进行前端开发工作。我们提供的工具和插件都经过精心设计和优化,可以帮助您节省时间和精力,提升开发效率。 除此之外,本网站还拥有一个活跃的社区,您可以在社区中与其他前端开发者交流技术、分享经验、解决问题。我们相信,社区的力量可以帮助您更好地成长和进步。 在本网站中,您可以找到您需要的一切前端开发资源,让您成为一名更加优秀的前端开发者。欢迎您加入我们的大家庭,一起探索前端开发的无限可能!