jc3213 / download_with_aria2

The browser extenson for aria2 download utility via JSON-RPC
GNU Lesser General Public License v2.1
66 stars 9 forks source link

Multi Profile Manager | 多档案切换功能 基于[3.13.4] #18

Closed jc3213 closed 2 years ago

jc3213 commented 2 years ago

关于

底层代码基于 3.13.4

主要功能

下载

Source code

分支

Branch

修改点

Changes

截图

Default Create New popup

jc3213 commented 2 years ago

@daiaji 你试试看最新的测试版,我目前只做了档案的新建,删除,设置为默认。右键菜单反而寸步难行。

因为删除,设为默认有弹出confirm确认窗口,必须在about:addons窗口下才能运行。

jc3213 commented 2 years ago

@ivysrono 如果不介意的话你也可以帮忙测试一下。就是这个功能很初步,只能在需要的时候切换。虽然比复制粘贴JSON-RPC的信息方便点点……

daiaji commented 2 years ago

没看见这功能……

jc3213 commented 2 years ago

你确定是从这个issue下载的源码?

daiaji commented 2 years ago

分支……,那没事了。

jc3213 commented 2 years ago

分支……,那没事了。

没人测试,给反馈我不知道这个效果如何……后续怎么修改啥的,还是推到重来?我自己根本没这需求,所以当时重写的时候很多东西都没留后路,自己的需求怎么简单怎么来,然后再优化性能啥的……

现在来看就头皮发麻

daiaji commented 2 years ago

显示有问题,捕获了链接会显示用的默认RPC。

ivysrono commented 2 years ago

这两天都在外没空测试……

daiaji commented 2 years ago

右键发送链接,直接次级菜单显示RPC1 RPC2就完事了吧。加个按键捕获怎么样? 万一aria2下不了,临时按住按键,然后点链接用浏览器自带的下载器下载。 扩展现在都不能展开次级菜单了? 不对,Tampermonkey页面右键有次级菜单。 那定义右键发送到第二RPC吧。 或者按下热键Ctrl捕获链接到第二RPC。 不然这交互非常有问题。

jc3213 commented 2 years ago

显示有问题,捕获了链接会显示用的默认RPC。

现在右键菜单跟抓取下载都是默认,你只有修改默认档案后才会变化……(仅限设置里)

万一aria2下不了,临时按住按键,然后点链接用浏览器自带的下载器下载。

这个实现不了,不管用哪个API,因为内容跟后台交互的问题。

右键发送链接,直接次级菜单显示RPC1 RPC2就完事了吧。

因为底层代码的问题,你看下background就知道了……,这里要大改,只是小改的话就是做个判断,下载前临时修改全局aria2_jsonrpcaria2_secret,然后下载触发后改回来。但是这个会影响一些东西。比如你正在准备抓取然后又操作了右键菜单的不同按钮。

不然这交互非常有问题。

我前面也说了,这东西是因为你提出我才开始加,我个人是没这个需求的,popup那边也没做切换,感觉popup的代码也要改不少,甚至keep-alive相关也要变。就挺难受的。

jc3213 commented 2 years ago

aria2.js以class形式重写了,用以适配多档案……

jc3213 commented 2 years ago

更新到最新的12.1了,果然用class就会简单不少。回头把popup做了

jc3213 commented 2 years ago

同步基础代码到3.13.0

jc3213 commented 2 years ago

同步到3.13.4

ivysrono commented 2 years ago

3.13.7的两个版本区别是?

jc3213 commented 2 years ago

参考 https://github.com/jc3213/download_with_aria2/discussions/31

主要是把需要用Web Socket连接的notifications相关的内容放到一个独立的Shared Worker里了,然后通过worker.port进行信息交流。让BackgroundPopup只通过一个WebSocket连接就能同时实现交互。并且优化了部分逻辑(这个忘了放到普通版本以及Multi Profile里面了)。

刚开启discussion的时候有不少问题,现在已经优化得差不多了。我主要是看将来Service Worker可以访问Shared Worker因此才考虑这么操作的,目前还不准备并入主分支或者Multi Profile分支。

至于Multi Profile,有机会也会考虑好好优化一下逻辑

ivysrono commented 2 years ago

3.13.7不能下载北大法宝了,别的没多测试,退回3.13.6

jc3213 commented 2 years ago

尽量用新issue吧,老issue翻起来太麻烦了

另外如果可以的话提供下控制台的错误信息。理论上3.13.6正常的话3.13.7也不会出错啊,毕竟没改任何东西。更多的是优化aria2.js

PS:貌似你传的是multi profile版本……这个要明天排查了。

PS2:仔细想想因为修改aria2.js导致multi profile部分background.js也修改了不少内容,因为chrome版工作正常,firefox那边忘了做优化(最近一直在做sharedworker)试试看 最新源码

PS3:整个multi profile这边重复代码很多需要优化。但是现在的文件结构有问题。libs/main.js 是部分Firefox,Chrome通用的代码(实际还可以从background里移出来更多)这样做能大幅减少维护的难度。但是部分内容又跟popup,options相通,导致我现在的关联关系很乱。

我想找个机会重新整理文件结构。但是每多1个文件,会明显的增加程序的容量(解开后4K,压缩后1K+)让我有点难受。因为现在main分支控制在解压后刚好占用100K这个位置……

ivysrono commented 2 years ago

貌似3.13.8好了。 那我今后应该传哪个?

jc3213 commented 2 years ago

3.13.8是因为我把代码啥的重新整理了一下,以后应该也很难再出问题了。

既然已经传了multi profile就按multi profile来吧。shared worker这个我感觉看情况再说。主要manifest v3直接用service worker。

service worker里面无法访问shared worker或者web worker。同时service worker会自动休眠无法keep alive,也就是任何setTimeout或者setInterval都会在休眠后自动失效,web socket连接也会自动断开。

然后谷歌也说要强制扩展迁移到manifest v3。但是有一说一,service worker的性质就不适合做background,所以我看看其他扩展怎么做的兼容再说自己这边。