电驴ed2k的UTF中文连接转换为CP936中文编码的一个小工具 :) ,2005-02-16 23:20最新修正

由于使用电驴久了,有时UTF的字符文件名实在难以使用,自己便写了如下PERL脚本。
本脚本刚刚完成,初步实现ED2K的UTF字符连接转换为CP936的编码以便下载。可能有些连接转换存在问题,请大家提意见,高手就直接修改并上传,供大家学习。

本人的perl脚本刚刚学习,不精,希望有高手指点。

该脚本配合MOZILLA的自动调用ed2k连接的外联程序将极为方便。我就是先起动amule,然后连接到服务器上后,只要点击ed2k的连接自动就会在amule中产生一个下载对象,非常爽!
目前脚本固定修改amule的对应ED2K连接文件,使其自动添加下载连接。其他驴子请自行修改 LinkFile


下面就献丑了 :)

代码:
#!/usr/bin/perl
#
# ed2k.utf.pl: 将UTF的ED2K的连接转换为CP936编码进行下载。
# 作者:听峰
# 邮箱:<[email protected]>
# 该脚本遵循GPL协议。
#

$ed2k_utf_url="";
$ed2k_gbk_url="";
$TempFileName="/tmp/tmpstr";
$LinkFile=$ENV{"HOME"};
$LinkFile=$LinkFile."/.aMule/ED2KLinks";

$CurrentUser=`whoami | tr -d \"\n\"`;
$MuleProg="amule";
$RunningAmule="ps -u ".$CurrentUser." | grep ".$MuleProg." | wc -l";
$RunningAmule=`$RunningAmule`;
unless ($RunningAmule >= 1) { `$MuleProg` }


unless (@ARGV == 1) { die "usage: $0 ed2k.url" }
($ed2k_utf_url) = @ARGV;

%ascii_map = (
"00","\x00", "01","\x01", "02","\x02", "03","\x03", "04","\x04", "05","\x05", "06","\x06", "07","\x07", "08","\x08", "09","\x09", "0A","\x0A", "0B","\x0B", "0C","\x0C", "0D","\x0D", "0E","\x0E", "0F","\x0F",
"10","\x10", "11","\x11", "12","\x12", "13","\x13", "14","\x14", "15","\x15", "16","\x16", "17","\x17", "18","\x18", "19","\x19", "1A","\x1A", "1B","\x1B", "1C","\x1C", "1D","\x1D", "1E","\x1E", "1F","\x1F",
"20","\x20", "21","\x21", "22","\x22", "23","\x23", "24","\x24", "25","\x25", "26","\x26", "27","\x27", "28","\x28", "29","\x29", "2A","\x2A", "2B","\x2B", "2C","\x2C", "2D","\x2D", "2E","\x2E", "2F","\x2F",
"30","\x30", "31","\x31", "32","\x32", "33","\x33", "34","\x34", "35","\x35", "36","\x36", "37","\x37", "38","\x38", "39","\x39", "3A","\x3A", "3B","\x3B", "3C","\x3C", "3D","\x3D", "3E","\x3E", "3F","\x3F",
"40","\x40", "41","\x41", "42","\x42", "43","\x43", "44","\x44", "45","\x45", "46","\x46", "47","\x47", "48","\x48", "49","\x49", "4A","\x4A", "4B","\x4B", "4C","\x4C", "4D","\x4D", "4E","\x4E", "4F","\x4F",
"50","\x50", "51","\x51", "52","\x52", "53","\x53", "54","\x54", "55","\x55", "56","\x56", "57","\x57", "58","\x58", "59","\x59", "5A","\x5A", "5B","\x5B", "5C","\x5C", "5D","\x5D", "5E","\x5E", "5F","\x5F",
"60","\x60", "61","\x61", "62","\x62", "63","\x63", "64","\x64", "65","\x65", "66","\x66", "67","\x67", "68","\x68", "69","\x69", "6A","\x6A", "6B","\x6B", "6C","\x6C", "6D","\x6D", "6E","\x6E", "6F","\x6F",
"70","\x70", "71","\x71", "72","\x72", "73","\x73", "74","\x74", "75","\x75", "76","\x76", "77","\x77", "78","\x78", "79","\x79", "7A","\x7A", "7B","\x7B", "7C","\x7C", "7D","\x7D", "7E","\x7E", "7F","\x7F",
"80","\x80", "81","\x81", "82","\x82", "83","\x83", "84","\x84", "85","\x85", "86","\x86", "87","\x87", "88","\x88", "89","\x89", "8A","\x8A", "8B","\x8B", "8C","\x8C", "8D","\x8D", "8E","\x8E", "8F","\x8F",
"90","\x90", "91","\x91", "92","\x92", "93","\x93", "94","\x94", "95","\x95", "96","\x96", "97","\x97", "98","\x98", "99","\x99", "9A","\x9A", "9B","\x9B", "9C","\x9C", "9D","\x9D", "9E","\x9E", "9F","\x9F",
"A0","\xA0", "A1","\xA1", "A2","\xA2", "A3","\xA3", "A4","\xA4", "A5","\xA5", "A6","\xA6", "A7","\xA7", "A8","\xA8", "A9","\xA9", "AA","\xAA", "AB","\xAB", "AC","\xAC", "AD","\xAD", "AE","\xAE", "AF","\xAF",
"B0","\xB0", "B1","\xB1", "B2","\xB2", "B3","\xB3", "B4","\xB4", "B5","\xB5", "B6","\xB6", "B7","\xB7", "B8","\xB8", "B9","\xB9", "BA","\xBA", "BB","\xBB", "BC","\xBC", "BD","\xBD", "BE","\xBE", "BF","\xBF",
"C0","\xC0", "C1","\xC1", "C2","\xC2", "C3","\xC3", "C4","\xC4", "C5","\xC5", "C6","\xC6", "C7","\xC7", "C8","\xC8", "C9","\xC9", "CA","\xCA", "CB","\xCB", "CC","\xCC", "CD","\xCD", "CE","\xCE", "CF","\xCF",
"D0","\xD0", "D1","\xD1", "D2","\xD2", "D3","\xD3", "D4","\xD4", "D5","\xD5", "D6","\xD6", "D7","\xD7", "D8","\xD8", "D9","\xD9", "DA","\xDA", "DB","\xDB", "DC","\xDC", "DD","\xDD", "DE","\xDE", "DF","\xDF",
"E0","\xE0", "E1","\xE1", "E2","\xE2", "E3","\xE3", "E4","\xE4", "E5","\xE5", "E6","\xE6", "E7","\xE7", "E8","\xE8", "E9","\xE9", "EA","\xEA", "EB","\xEB", "EC","\xEC", "ED","\xED", "EE","\xEE", "EF","\xEF",
"F0","\xF0", "F1","\xF1", "F2","\xF2", "F3","\xF3", "F4","\xF4", "F5","\xF5", "F6","\xF6", "F7","\xF7", "F8","\xF8", "F9","\xF9", "FA","\xFA", "FB","\xFB", "FC","\xFC", "FD","\xFD", "FE","\xFE", "FF","\xFF"
);

#print "input url: $ed2k_utf_url\n";

$ed2k_gbk_url = $ed2k_utf_url;
$ed2k_gbk_url =~ s/%([0-9a-fA-F][0-9a-fA-F])/$ascii_map{$1}/g;

open(TMPFILE,">$TempFileName");
print TMPFILE "$ed2k_gbk_url";
close TMPFILE;

$ed2k_gbk_url = `iconv -f=utf8 -t=cp936 $TempFileName`;


open(TMPFILE,">>$LinkFile");
print TMPFILE "$ed2k_gbk_url";
close TMPFILE;

#print "output url: $ed2k_gbk_url\n";
#`ed2k.amule "$ed2k_gbk_url"`;
附件的图中
1--->为直接从mozilla拷贝ed2k的连接地址,在amule中添加产生的下载项。
2--->为使用我自己的脚本后,自动在amule中产生的下载项。
是不是比较直观阿
上传的图像
2005-02-14-085719_1280x960_scrot.png (25.1 KB, 196 次查看)

作者: 听峰   发布时间: 2005-02-14

厉害!!!
怎么使用啊!

作者: wzs   发布时间: 2005-02-14

将这个脚本保存,并加上可执行属性。

1、在modizlla/firefox中地址栏中输入about:config
2、增加如下两个选项,以便mozilla和firefox可以处理ed2k的连接。
键类型:字符串 键名:network.protocol-handler.app.ed2k 键值:/usr/local/bin/ed2k.utf.pl (注意这个值根据你保存该脚本的名称和路径而定)
键类型:BOOL(布尔) 键名:network.protocol-handler.external.ed2k 键值:true
3、起动amule,并连接到你喜欢的服务器。
4、访问相干的驴子资源网站,点击下载连接,该连接将自动加载到amule中。

作者: 听峰   发布时间: 2005-02-14

太好了。谢谢共享!

作者: xep007   发布时间: 2005-02-14

引用:
作者: 听峰
将这个脚本保存,并加上可执行属性。

1、在modizlla/firefox中地址栏中输入about:config
2、增加如下两个选项,以便mozilla和firefox可以处理ed2k的连接。
键类型:字符串 键名:network.protocol-handler.app.ed2k 键值:/usr/local/bin/ed2k.utf.pl (注意这个值根据你保存该脚本的名称和路径而定)
键类型:BOOL(布尔) 键名:network.protocol-handler.external.ed2k 键值:true
3、起动amule,并连接到你喜欢的服务器。
4、访问相干的驴子资源网站,点击下载连接,该连接将自动加载到amule中。
老大,首先感谢你解决骡子的乱码问题!
但你的这个方法的前提是需要自己先启动 amule,能不能不用预先启动 amule,在点击ed2k连接时自动调用amule?

作者: wzs   发布时间: 2005-02-14

理论上讲可以,参考/usr/bin/ed2k.wrapper的脚本就应该可以吧。但你总要连接服务器阿。不知如何指定连接的服务器。

作者: 听峰   发布时间: 2005-02-14

我觉得文件名还是用英文好,搜索起来也方便,也没有简体繁体的问题。
ed2k.wrapper会判断当前进程中有没有amule/xmule,如果没有的话就无动作,
不过,在脚本中自动启动amule应该没有问题,至于服务器可以让amule自动去找。

作者: shadowclover   发布时间: 2005-02-15

引用:
作者: shadowclover
我觉得文件名还是用英文好,搜索起来也方便,也没有简体繁体的问题。
这个脚本解决的是中文名称的ED2K的连接,他们的文件名也含有中文,平常下载和查看时很不方便。

引用:
作者: shadowclover
ed2k.wrapper会判断当前进程中有没有amule/xmule,如果没有的话就无动作,不过,在脚本中自动启动amule应该没有问题,至于服务器可以让amule自动去找。
这个问题可以再斟酌一下,因为涉及到多用户时如何处理?
:ask

作者: 听峰   发布时间: 2005-02-15

为了自己平时使用的驴子顶了,愿更多人看到这个帖子

作者: x-dongzi   发布时间: 2005-02-16

引用:
作者: x-dongzi
为了自己平时使用的驴子顶了,愿更多人看到这个帖子
谢谢支持!

今天增加了amule程序判定是否启动,如果没有则将其调用启动。但调用amule后,那个下载连接没有生效。:(

xmule的用户只需要稍微调整一下MuleProg的内容就可以了。
希望使用的朋友多多反映问题。

作者: 听峰   发布时间: 2005-02-17

好贴顶起!

作者: 玄德公   发布时间: 2005-09-22

中文显示成乱码难道不是amule的bug?我感觉正道应该是patch amule才对吧

作者: hooey   发布时间: 2005-09-22

刚才试了下,很好用。在amule上总算能看见中文了。

作者: su100   发布时间: 2005-09-22

我的还是乱码。。

作者: king_woods   发布时间: 2005-09-23

我的一直可以看到中文
不过还是顶下啊

作者: Allen_Lau   发布时间: 2005-10-13