使用firefox+amulecmd为远程amule添加下载任务及乱码解决

amule软件中有一个ed2k程序,专门用来将ed2k链接加入到amule下载列表中,但是,这个程序是直接将ed2k链接写入到.aMule/ED2KLinks文件中,运行中的amule会每隔1s来检查这个文件,以便将新的下载链接加入到下载列表中。
如果要将ed2k下载链接加入到远程的amule下载列表中,显然,ed2k将无能为力。
amule提供的另一个程序--amulecmd就可以用来解决这个问题。
用法:
    $amulecmd -h yourhost -P yourECPassword -c "Add ed2k://....."


如果需要在Firefox中,通过点击ed2k链接来添加下载的话,由于无法在firefox使用带参数的amulecmd,需要写一个脚本来调用amulecmd,存为ed2k.sh,并置为可执行权限(chmod a+x edk2k.sh):
#!/bin/bash
/usr/bin/amulecmd -h 127.0.0.1 -P 123 -c "Add $1"


还需要在firefox做一些设置,
1、地址栏中输入about:config,建立以下键值:
network.protocol-haddler.app.ed2k=/path/to/ed2k.sh
network.protocol-handler.expose.ed2k=false
network.protocol-handler.external.ed2k=true

2、在首选项中设定ed2k的应用程序为ed2k.sh

至此,在本地浏览器中,可以为远程amule添加下载任务了。唯一美中不足的是,加入的任务中,文件名只要是中文或特殊字符全显示为乱码。考虑在使用amulecmd添加下载链接前,将由firefox获得链接进行一次转码。即将url中%开始的字符编码还原,询问高人后得知,可以使用printf来完成此事。至此,firefox+amulecmd远程添加下载任务完美方案完成。

附上改后的ed2k.sh代码:
#!/bin/bash
lnk=$1
let idx=`expr index $lnk "%"`
if [ $idx -gt 0 ]; then
	lnk=`printf ${lnk//\%/\\\\x}`
fi
/usr/bin/amulecmd -h 127.0.0.1 -P 123 -c "Add $lnk"

你可能感兴趣的:(C++,c,C#,bash,firefox)