LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 3006|回复: 14

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

[复制链接]
发表于 2005-2-14 00:12:57 | 显示全部楼层 |阅读模式
由于使用电驴久了,有时UTF的字符文件名实在难以使用,自己便写了如下PERL脚本。
本脚本刚刚完成,初步实现ED2K的UTF字符连接转换为CP936的编码以便下载。可能有些连接转换存在问题,请大家提意见,高手就直接修改并上传,供大家学习。

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

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


下面就献丑了 :)


  1. #!/usr/bin/perl
  2. #
  3. # ed2k.utf.pl: 将UTF的ED2K的连接转换为CP936编码进行下载。
  4. # 作者:听峰
  5. # 邮箱:<notclear@21cn.com>
  6. # 该脚本遵循GPL协议。
  7. #

  8. $ed2k_utf_url="";
  9. $ed2k_gbk_url="";
  10. $TempFileName="/tmp/tmpstr";
  11. [color=Blue]$LinkFile=$ENV{"HOME"};
  12. $LinkFile=$LinkFile."/.aMule/ED2KLinks";[/color]
  13. [color=Red]
  14. $CurrentUser=`whoami | tr -d "\n"`;
  15. $MuleProg="amule";
  16. $RunningAmule="ps -u ".$CurrentUser." | grep ".$MuleProg." | wc -l";
  17. $RunningAmule=`$RunningAmule`;
  18. unless ($RunningAmule >= 1) { `$MuleProg` }
  19. [/color]

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

  22. %ascii_map = (
  23. "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",
  24. "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",
  25. "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",
  26. "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",
  27. "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",
  28. "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",
  29. "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",
  30. "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",
  31. "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",
  32. "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",
  33. "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",
  34. "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",
  35. "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",
  36. "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",
  37. "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",
  38. "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"
  39. );

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

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

  43. open(TMPFILE,">$TempFileName");
  44. print TMPFILE "$ed2k_gbk_url";
  45. close TMPFILE;

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


  47. open(TMPFILE,"[color=Blue]>>[/color]$[color=Blue]LinkFile[/color]");
  48. print TMPFILE "$ed2k_gbk_url";
  49. close TMPFILE;

  50. #print "output url: $ed2k_gbk_url\n";
  51. [color=Blue]#[/color]`ed2k.amule "$ed2k_gbk_url"`;

复制代码


附件的图中
1--->为直接从mozilla拷贝ed2k的连接地址,在amule中添加产生的下载项。
2--->为使用我自己的脚本后,自动在amule中产生的下载项。
是不是比较直观阿  :cool:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
发表于 2005-2-14 09:32:09 | 显示全部楼层
厉害!!!
怎么使用啊!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-2-14 11:32:46 | 显示全部楼层
将这个脚本保存,并加上可执行属性。

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-2-14 12:01:06 | 显示全部楼层
太好了。谢谢共享!
回复 支持 反对

使用道具 举报

发表于 2005-2-14 12:33:03 | 显示全部楼层
Post by 听峰
将这个脚本保存,并加上可执行属性。

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?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-2-14 16:09:59 | 显示全部楼层
理论上讲可以,参考/usr/bin/ed2k.wrapper的脚本就应该可以吧。但你总要连接服务器阿。不知如何指定连接的服务器。
回复 支持 反对

使用道具 举报

发表于 2005-2-15 00:34:46 | 显示全部楼层
我觉得文件名还是用英文好,搜索起来也方便,也没有简体繁体的问题。
ed2k.wrapper会判断当前进程中有没有amule/xmule,如果没有的话就无动作,
不过,在脚本中自动启动amule应该没有问题,至于服务器可以让amule自动去找。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-2-15 13:36:07 | 显示全部楼层
Post by shadowclover
我觉得文件名还是用英文好,搜索起来也方便,也没有简体繁体的问题。


这个脚本解决的是中文名称的ED2K的连接,他们的文件名也含有中文,平常下载和查看时很不方便。

Post by shadowclover
ed2k.wrapper会判断当前进程中有没有amule/xmule,如果没有的话就无动作,不过,在脚本中自动启动amule应该没有问题,至于服务器可以让amule自动去找。


这个问题可以再斟酌一下,因为涉及到多用户时如何处理?
:ask
回复 支持 反对

使用道具 举报

发表于 2005-2-15 20:18:18 | 显示全部楼层
为了自己平时使用的驴子顶了,愿更多人看到这个帖子
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-2-16 23:05:24 | 显示全部楼层
Post by x-dongzi
为了自己平时使用的驴子顶了,愿更多人看到这个帖子


谢谢支持!

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

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

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表