没啥意思的站点

mldonkey相关备忘

其实,比起 BT/ED2K/迅雷 等P2P的下载方式,我更喜欢传统的ftp. 但是ftp里面不是什么都能下载到的,最近想下载一些老电影,于是还是用上了mldonkey.
EE的blog里搜出来一些东西,不过这家伙的写东西基本上都看不懂而且也不能用的,呵呵,改了改,基本上好了.如下:
先是按需启动mlnet,建立一个 autostart.sh ,chmod +x 以后,加到gnome的会话里面(这样以后有其他需要自启动的东西也方便了),内容如下:

#!/bin/sh
ls ~/.mldonkey/temp/* >/dev/null 2>&1 && mlnet &

这样,只要有未下载完成的内容,都会在登录系统的时候打开mlnet,避免忘记开而浪费时间了.
另外,加这个alias到.bashrc,可以方便地查看下载状态:

alias m='pgrep mlnet >/dev/null 2>&1 && echo vd | nc -q 1 localhost 4000 | awk '"'"'/\[D/{print "\033[0;32m"$7"\t\033[4;31m"$8"%\033[0m\t",$14"KB/s"} /Down:/'"'"

效果如图:
alias效果

=======090121补充firefox关联ed2k到mldonkey的方法========
建立一个脚本文件(我的叫 ed2kml ),内容为:

#!/bin/sh
echo dllink $* | nc -q 1 127.0.0.1 4000

加上可执行权限,然后,firefox的地址栏里输入 about:config ,在里面新建一个布尔型的键,名字为 network.protocol-handler.external.ed2k ,值为true,再建一个字符串型键, 名为 network.protocol-handler.app.ed2k 值为 ed2kml 的绝对路径.
打开mldonkey以后,在firefox里点击一个ed2k链接,firefox会弹出一个选择连接的窗口,记住不要使用默认的,点”其他程序”,再定位到刚才的ed2kml,确定就可以了.可以勾选记住设置,以后就直接点链接就行了.

27 评论

  1. mldonkey全部被我移到windows平台下去了,公司的电脑,嘿嘿,24X7

  2. nc -q 这个选项似乎已经没了
    请问 -q表示什么意思

  3. 我这的nc也没-q这选项了~ arch下的nc

    • arch的不知道了,可能是装了不同的包所致吧,ubuntu默认用的是 netcat-traditional ,是有-q选项的。arch里可以找找其他的包试试。

  4. 不会Awk, Awk实在太Awkward了。但是偶如果用python的话…

    alias m="pgrep mlnet >/dev/null 2>&1 && echo vd | nc -q 1 localhost 4000 |python -c "import re,sys; str=sys.stdin.read();a=re.compile('.*?[Ds*(.*?)].*mldonkey (.*?)[s*](d.*?)[s*](d.*?)[s*](d.*?)[s*](d.*?)[s*](d.*?)[s*](d.*?)[s*]([d|-].*?)[s|n]').findall(str);b=[(name.strip(), p.strip(), cs.strip(), ts.strip(), spd.strip()) for id, name, p, cs, ts, sn, old, act, spd in a]; map(lambda (n, p, cs, ts, spd): sys.stdout.write('(%s%%)%s...%st %s/%st %skb/sn' % (p, n[:20], n[-8:], cs, ts, spd)), b);print ''""
  5. 这时候,用sed会累死的…

    • 嗯,是哈,所以我决定用python。。。

      • 那你就别nc了啊…
        其实我还用python写了个applet的,没完成,核心代码就是这样:

        ML_HOST="localhost"
        ML_PORT=4000
         
        def update_applet(applet, label):
            import socket, re
            s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
            s.connect((ML_HOST, ML_PORT))
            s.recv(4096)
            if 3 == s.send("vdn"):
                ret = s.recv(4096)
                tooltip_text=re.sub('33[^m]*m','',ret)
                tooltip_text="n".join(tooltip_text.split("n")[1:-3])
                label_text=" ".join(tooltip_text.split(" ")[1:3])
            else:
                tooltip_text="socket error"
                label_text="ERR"
            label.set_text(label_text)
            label.set_tooltip_text(tooltip_text)

        要不你接着写?

    • 初步看了一下,awk很棒。会一点了。

  6. 在Archlinux下浏览器的关键脚本已改为

    #!/bin/sh
    (echo dllink $* ;echo q) | nc 127.0.0.1 4000

  7. 汗…我这里被水了,用IM聊吧…

发表评论