Python 板


LINE

看了0rz.net上的perl模组,就用类似的思维写了一个小程式当练习噜~ 使用了httplib的模组与0rz.net互动 python在直译环境下也可以操作物件 这个功能真的很强大! 如果没有这个功能 就得用telnet来模拟http client 那就很心酸了... 其实大部分的code都是看别人的范例再拼揍起来的 有些地方感觉写得有点冗 如果大家有什麽建议改进的地方都提出讨论吧^^ 互相切搓求进步咩~ 目前的用法是 *.py <长网址> [,<长网址>,<长网址> ...] 会印出短网址 *.py -r <短网址> 会印出长网址 *.py -f <存放网址的档案> #一行一个网址 可以反查多行 #!/usr/local/bin/python import httplib, urllib,re,sys from optparse import OptionParser def makeShorter(arg): #By the time i wrote the script,0rz.net won't accept # a long url which shorter than 12 characters. if len(arg) <= 12: print 'This URL is already short enough. (%s)' % arg return params = urllib.urlencode({'url':arg}) headers = {"Content-type": "application/x-www-form-urlencoded", "Accept":"text/plain"} conn = httplib.HTTPConnection("0rz.net:80") conn.request("POST","/create.php",params,headers) response = conn.getresponse() data = response.read() conn.close() #Generlly ,an url location which is longer than 13 characters is acceptable #to 0rz.net but there are still some exceptions. if data == 'This URL is already short enough.\n': print '%s (%s)' % (data[:-1] ,arg) return m = parser.search(data) if options.ispair: print '%s %s' % (m.group(1),arg) else: print m.group(1) return def makeLonger(url): encodeOnly = re.compile(r'(\w{5})') Orznet = re.compile(r'(http://)+0rz.net/(\w{5})') m = encodeOnly.match(url) m2 = Orznet.search(url) if m != None : resource = m.group(1) url2 = "http://0rz.net/$resource" elif m2 != None : resource = m2.group(2) url2 = url else: print "Invaild URL. (%s)" % url return conn = httplib.HTTPConnection("0rz.net") conn.request("GET","/%s" % resource) res = conn.getresponse() if None != res: loc = res.getheader("location") conn.close() if options.ispair: print '%s %s' % (url2,loc) else: print loc return MSG_USAGE = "usage: %prog [-p] [-l] [-f <fileName>] url1 [, url2...]" optParser = OptionParser (MSG_USAGE) optParser.add_option("-p","--pair",action="store_true",dest="ispair" , default=False,help = "make long and short url to be a pair in one lin") optParser.add_option("-f","--file", action="store", dest="fileName", help="Read long URLs from a file and make shorters.") optParser.add_option("-r","--reverse",action="store_true" ,dest="isReverse", default=False, help="Reverse the short URLs to original longers.") options,args = optParser.parse_args() if options.isReverse: for arg in args: makeLonger(arg) if options.fileName != None: f = open (options.fileName,"r") for line in f.readlines(): line = line[:-1] makeLonger(line) else: parser = re.compile(r'(http://0rz.net/\w{5})') for arg in args: makeShorter(arg) if options.fileName != None: f = open (options.fileName,"r") for line in f.readlines(): line = line[:-1] makeShorter(line) -- 希望没有bug了不然很糗.. --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.113.91.47
1F:推 ericsk:推一个 08/25 19:39
2F:推 xcycl:可以用 urllibr 取代 httplib, 程式码会少满多的 .. 08/27 02:12
3F:→ xcycl:更正, urllib 08/27 02:13
4F:推 Morneau:真的可以减少很多耶 ^^ 感谢指教 ~~ 09/05 22:36
5F:→ Morneau:看来是自己笨了 XD 09/05 22:37







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Boy-Girl站内搜寻

TOP