3GPP 文档下载器

#coding:utf-8

from PyQt4.QtGui import *
from PyQt4.QtCore import *
import urllib,re,sys
doc_version=['11.9.0','11.8.0','11.7.0','11.6.0','11.5.0','11.4.0','11.3.0','11.2.0','11.1.0']
baseurl='http://www.3gpp.org/ftp/Specs/html-info/%s.htm'

 
class StandardDialog(QDialog):

    def __init__(self,parent=None):
        super(StandardDialog,self).__init__(parent)
        
        self.setWindowTitle("3GPP doc Downloader!")
        DimMsgDecodeButton=QPushButton(self.tr("Dim Msg Decode"))

        self.label_SrcBuf = QLabel('3GPP DocID: 29273 29280 ...')
        
        self.fileTextEditInput=QTextEdit()
        self.fileTextEditOutput=QTextEdit()
        self.fileTextEditOutput.setReadOnly(1)
        
       
        layout=QGridLayout()
        #col 0
        layout.addWidget(self.label_SrcBuf, 0, 0)
        layout.addWidget(self.fileTextEditInput, 1, 0, 3, 1)
        layout.addWidget(self.fileTextEditOutput,4,0, 12, 1)
        #col 1
        layout.addWidget(DimMsgDecodeButton,2,1)

        self.setLayout(layout)
        self.connect(DimMsgDecodeButton,SIGNAL("clicked()"),self.DecodeDimMsgSlot)

    def getdoc(self,doc_no):
        url=baseurl%(doc_no)
        log='preparing download from'+url
        self.fileTextEditOutput.append(log)
        
        try:
            webpage=urllib.urlopen(url).read()
            for ver in doc_version:
                doc_urls=re.findall('<a href=(.*?)>'+ver, webpage)
                if doc_urls:
                    doc_url=doc_urls[0]
                    break
                    
            filename1=re.search('\d{5}-b\d{2}.zip',doc_url)
            if filename1:
                filename=filename1.group()
            else:
                filename=doc_no

            s=urllib.urlopen(doc_url)
            destfile=s.read()
            open(filename,'wb').write(destfile)
            log='download %s from %s success!!'%(filename, doc_url)
            self.fileTextEditOutput.append(log)
        except:
            log='open url ['+url+'] failure!'
            self.fileTextEditOutput.append(log)

    def DecodeDimMsgSlot(self):
        hexstr=str(self.fileTextEditInput.toPlainText()).strip()

        downloadlist=re.split('[ ,]',hexstr)
        print downloadlist
        for docid in downloadlist:
            self.getdoc(docid)

if __name__ == '__main__':
    print 'starting!!!'
    app=QApplication(sys.argv)
    form=StandardDialog()
    form.show()
    app.exec_()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值