opennaslab / kubespider

A global resource download orchestration system, build your home download center.
https://kubespider.netlify.app/
Apache License 2.0
2.01k stars 114 forks source link

chrome插件能否支持发送剪切板中的磁链 #475

Closed rdcentermrzhi closed 5 months ago

rdcentermrzhi commented 6 months ago

Describe the background

Describe the feature

qingchoulove commented 6 months ago

Hello,能更详细描述下你的需求么?为什么还需要发送剪切板中的磁链,插件是支持直接把网页内容发送到Kubespider的呀。

richardli1598 commented 6 months ago

是这种场景吗,比如qq desktop发了个链接,你复制一下,然后鼠标右键发送触发下载?

rdcentermrzhi commented 6 months ago

Hello,能更详细描述下你的需求么?为什么还需要发送剪切板中的磁链,插件是支持直接把网页内容发送到Kubespider的呀。

这个插件不能将网页中的文本内容直接发送吧、比如磁力链接直接显示在网页中只提供了一个copy选项 没有做超链接 就没法发送

richardli1598 commented 6 months ago

理解了,这个确实没支持

qingchoulove commented 6 months ago

Hello,能更详细描述下你的需求么?为什么还需要发送剪切板中的磁链,插件是支持直接把网页内容发送到Kubespider的呀。

这个插件不能将网页中的文本内容直接发送吧、比如磁力链接直接显示在网页中只提供了一个copy选项 没有做超链接 就没法发送

好的,我大致明白啦,我们近期会调研一下插件捕获内容的处理方式。非常感谢你的建议

rdcentermrzhi commented 6 months ago

Hello,能更详细描述下你的需求么?为什么还需要发送剪切板中的磁链,插件是支持直接把网页内容发送到Kubespider的呀。

这个插件不能将网页中的文本内容直接发送吧、比如磁力链接直接显示在网页中只提供了一个copy选项 没有做超链接 就没法发送

好的,我大致明白啦,我们近期会调研一下插件捕获内容的处理方式。非常感谢你的建议

本来想自己搞一下,但是nodejs 确实不懂, 环境搞了一上午没弄起来,npm run dev 在windows 上会提示一个 image 这个路径就很奇怪, 不知道是哪里环境配置的问题, 有时间可以考虑支持一下, 多谢

richardli1598 commented 6 months ago

看了下,chrome extension v3应该不支持类似操作,实现代码如下(kubespider-extension/src/backgroud.js,模仿https://github.com/extend-chrome/clipboard/blob/master/src/index.ts):

import {
  consumer,
  sender,
  MessageType,
  Reply,
  SuccessReply,
  ErrorReply,
} from "@message";
import Notification from "@message/notification";
import { api, downloadRequest } from "@api";
import Storage from "@storage";
import { Tab, Cookies } from "@bridge";
import Browser from "webextension-polyfill";

/**
 * create context menu
 */
Browser.runtime.onInstalled.addListener(() => {
  Browser.contextMenus.create({
    id: "KubespiderLinkMenu",
    title: "Send to Kubespider",
    contexts: ["all"],
  });
  Browser.contextMenus.create({
    id: "KubespiderClipboardMenu",
    title: "Send clipboard link to Kubespider",
    contexts: ["all"],
  });
});

/**
 * handle context menu click
 */
Browser.contextMenus.onClicked.addListener(async (info, tab) => {
  let dataSource = ""
  switch (info.menuItemId) {
    case "KubespiderMenu": {
      let dataSource = info.linkUrl;
      if (dataSource === "" || dataSource == null) {
        dataSource = tab?.url;
      }
      break
    }
    case "KubespiderClipboardMenu": {
      const el = document.createElement('textarea')
      el.value = 'before paste'
      document.body.append(el)

      // Paste from clipboard into input
      el.select()
      document.execCommand('paste')

      // The contents of the clipboard
      const text = el.value
      el.remove()
      console.log(text);
      break
    }
  }
 ...

会存在如下报错: image

根据这个FAQ: https://www.reddit.com/r/learnjavascript/comments/rqr5eg/document_is_not_defined/

v3应该不支持了。

建议从这里拷贝内容,然后触发下载: image

qingchoulove commented 5 months ago

@rdcentermrzhi 我们为插件添加了选中文本的支持,现在会首先发送选中文本到服务端。可以重装插件看下能否满足诉求。