亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? t2t.py

?? 一個多點下載且源碼公開的P2P軟件
?? PY
字號:
# Written by John Hoffman# see LICENSE.txt for license informationfrom Rerequester import Rerequesterfrom urllib import quotefrom threading import Eventfrom random import randrangefrom string import lowerimport sysimport __init__try:    Trueexcept:    True = 1    False = 0DEBUG = Truedef excfunc(x):    print xR_0 = lambda: 0R_1 = lambda: 1class T2TConnection:    def __init__(self, myid, tracker, hash, interval, peers, timeout,                     rawserver, disallow, isdisallowed):        self.tracker = tracker        self.interval = interval        self.hash = hash        self.operatinginterval = interval        self.peers = peers        self.rawserver = rawserver        self.disallow = disallow        self.isdisallowed = isdisallowed        self.active = True        self.busy = False        self.errors = 0        self.rejected = 0        self.trackererror = False        self.peerlists = []        cfg = { 'min_peers': peers,                'max_initiate': peers,                'rerequest_interval': interval,                'http_timeout': timeout }        self.rerequester = Rerequester( 0, myid, hash, [[tracker]], cfg,            rawserver.add_task, rawserver.add_task, self.errorfunc, excfunc,            self.addtolist, R_0, R_1, R_0, R_0, R_0, R_0,            Event() )        if self.isactive():            rawserver.add_task(self.refresh, randrange(int(self.interval/10), self.interval))                                        # stagger announces    def isactive(self):        if self.isdisallowed(self.tracker):    # whoops!            self.deactivate()        return self.active                def deactivate(self):        self.active = False    def refresh(self):        if not self.isactive():            return        self.lastsuccessful = True        self.newpeerdata = []        if DEBUG:            print 'contacting %s for info_hash=%s' % (self.tracker, quote(self.hash))        self.rerequester.snoop(self.peers, self.callback)    def callback(self):        self.busy = False        if self.lastsuccessful:            self.errors = 0            self.rejected = 0            if self.rerequester.announce_interval > (3*self.interval):                # I think I'm stripping from a regular tracker; boost the number of peers requested                self.peers = int(self.peers * (self.rerequester.announce_interval / self.interval))            self.operatinginterval = self.rerequester.announce_interval            if DEBUG:                print ("%s with info_hash=%s returned %d peers" %                        (self.tracker, quote(self.hash), len(self.newpeerdata)))            self.peerlists.append(self.newpeerdata)            self.peerlists = self.peerlists[-10:]  # keep up to the last 10 announces        if self.isactive():            self.rawserver.add_task(self.refresh, self.operatinginterval)    def addtolist(self, peers):        for peer in peers:            self.newpeerdata.append((peer[1],peer[0][0],peer[0][1]))            def errorfunc(self, r):        self.lastsuccessful = False        if DEBUG:            print "%s with info_hash=%s gives error: '%s'" % (self.tracker, quote(self.hash), r)        if r == self.rerequester.rejectedmessage + 'disallowed':   # whoops!            if DEBUG:                print ' -- disallowed - deactivating'            self.deactivate()            self.disallow(self.tracker)   # signal other torrents on this tracker            return        if lower(r[:8]) == 'rejected': # tracker rejected this particular torrent            self.rejected += 1            if self.rejected == 3:     # rejected 3 times                if DEBUG:                    print ' -- rejected 3 times - deactivating'                self.deactivate()            return        self.errors += 1        if self.errors >= 3:                         # three or more errors in a row            self.operatinginterval += self.interval  # lengthen the interval            if DEBUG:                print ' -- lengthening interval to '+str(self.operatinginterval)+' seconds'    def harvest(self):        x = []        for list in self.peerlists:            x += list        self.peerlists = []        return xclass T2TList:    def __init__(self, enabled, trackerid, interval, maxpeers, timeout, rawserver):        self.enabled = enabled        self.trackerid = trackerid        self.interval = interval        self.maxpeers = maxpeers        self.timeout = timeout        self.rawserver = rawserver        self.list = {}        self.torrents = {}        self.disallowed = {}        self.oldtorrents = []    def parse(self, allowed_list):        if not self.enabled:            return        # step 1:  Create a new list with all tracker/torrent combinations in allowed_dir                newlist = {}        for hash, data in allowed_list.items():            if data.has_key('announce-list'):                for tier in data['announce-list']:                    for tracker in tier:                        self.disallowed.setdefault(tracker, False)                        newlist.setdefault(tracker, {})                        newlist[tracker][hash] = None # placeholder                                    # step 2:  Go through and copy old data to the new list.        # if the new list has no place for it, then it's old, so deactivate it        for tracker, hashdata in self.list.items():            for hash, t2t in hashdata.items():                if not newlist.has_key(tracker) or not newlist[tracker].has_key(hash):                    t2t.deactivate()                # this connection is no longer current                    self.oldtorrents += [t2t]                        # keep it referenced in case a thread comes along and tries to access.                else:                    newlist[tracker][hash] = t2t            if not newlist.has_key(tracker):                self.disallowed[tracker] = False    # reset when no torrents on it left        self.list = newlist        newtorrents = {}        # step 3:  If there are any entries that haven't been initialized yet, do so.        # At the same time, copy all entries onto the by-torrent list.        for tracker, hashdata in newlist.items():            for hash, t2t in hashdata.items():                if t2t is None:                    hashdata[hash] = T2TConnection(self.trackerid, tracker, hash,                                        self.interval, self.maxpeers, self.timeout,                                        self.rawserver, self._disallow, self._isdisallowed)                newtorrents.setdefault(hash,[])                newtorrents[hash] += [hashdata[hash]]                        self.torrents = newtorrents        # structures:        # list = {tracker: {hash: T2TConnection, ...}, ...}        # torrents = {hash: [T2TConnection, ...]}        # disallowed = {tracker: flag, ...}        # oldtorrents = [T2TConnection, ...]    def _disallow(self,tracker):        self.disallowed[tracker] = True    def _isdisallowed(self,tracker):        return self.disallowed[tracker]    def harvest(self,hash):        harvest = []        if self.enabled:            for t2t in self.torrents[hash]:                harvest += t2t.harvest()        return harvest

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
在线播放/欧美激情| 国产欧美视频一区二区三区| 国产精品一区二区三区网站| 免费成人av资源网| 加勒比av一区二区| 久久精品72免费观看| 激情综合亚洲精品| 极品少妇一区二区三区精品视频| 国产乱码字幕精品高清av| 成人免费视频网站在线观看| 91在线观看成人| 欧美老人xxxx18| 国产欧美综合色| 亚洲一区二区精品久久av| 免费成人你懂的| 波波电影院一区二区三区| 91福利视频网站| 国产亚洲欧洲一区高清在线观看| 久久久亚洲午夜电影| 亚洲免费观看视频| 一区二区三区**美女毛片| 亚洲精品免费看| 美女高潮久久久| 不卡电影免费在线播放一区| 欧美日韩在线播| 日本一区二区三区在线不卡| 亚洲专区一二三| 99久久精品国产网站| 精品久久久久av影院| 亚洲精品国产精品乱码不99| 国产成人免费视频网站| 欧美精品在欧美一区二区少妇| 国产日韩欧美亚洲| 久久精品国产77777蜜臀| 在线观看国产日韩| 中文字幕一区二区不卡| 国产成人亚洲综合色影视| 亚洲精品在线一区二区| 欧美日韩不卡在线| 国产丝袜欧美中文另类| 国精产品一区一区三区mba视频 | 91亚洲精品乱码久久久久久蜜桃| 欧美麻豆精品久久久久久| 亚洲小说春色综合另类电影| 99久久夜色精品国产网站| 国产精品乱人伦| 色系网站成人免费| 伊人一区二区三区| 91久久免费观看| 天天色天天操综合| 欧美一区二区三区日韩视频| 琪琪一区二区三区| 久久综合九色综合欧美就去吻| 精品一区二区三区在线播放| 99久久精品99国产精品| 一二三区精品视频| 欧美日韩一区在线观看| 亚洲一级二级三级| 日韩精品一区二区三区蜜臀| 久久国产福利国产秒拍| 欧美国产日产图区| 99亚偷拍自图区亚洲| 三级在线观看一区二区| 欧美成va人片在线观看| 国产成都精品91一区二区三| 亚洲男人天堂av| 日韩一区二区三区高清免费看看| 日本aⅴ免费视频一区二区三区| 日韩免费成人网| 不卡视频一二三四| 午夜精品福利在线| 亚洲欧美一区二区久久| 久久亚洲一区二区三区四区| 在线国产电影不卡| 秋霞国产午夜精品免费视频| 国产成人av网站| 首页国产丝袜综合| 一区二区三区在线免费播放| 久久久夜色精品亚洲| 日韩精品一区二区三区蜜臀 | 欧美乱妇20p| 91国偷自产一区二区三区成为亚洲经典| 免费成人在线观看| 久久精品99国产国产精| 水蜜桃久久夜色精品一区的特点 | 不卡免费追剧大全电视剧网站| 久久国产精品色婷婷| 日韩在线一区二区三区| 亚洲一卡二卡三卡四卡无卡久久| 亚洲免费大片在线观看| 综合色天天鬼久久鬼色| 最好看的中文字幕久久| 伊人性伊人情综合网| 亚洲人成影院在线观看| 日本一区二区成人| 亚洲精品国产一区二区三区四区在线| 久久精品欧美一区二区三区麻豆| 久久众筹精品私拍模特| 国产亚洲美州欧州综合国 | 国产成人精品影院| 一本色道久久加勒比精品| 欧美喷水一区二区| 久久亚洲一级片| 一区二区免费看| 蜜桃久久精品一区二区| 成人激情开心网| 欧美猛男gaygay网站| 精品美女在线播放| 亚洲美女在线一区| 国产精品一线二线三线| 欧美日韩免费一区二区三区视频| 日韩欧美国产电影| 欧美日韩欧美一区二区| 欧美另类变人与禽xxxxx| 国产精品嫩草99a| 日本成人在线电影网| av网站免费线看精品| 欧美顶级少妇做爰| 亚洲一线二线三线视频| 成人午夜精品在线| 欧美成人午夜电影| 五月天亚洲婷婷| av电影在线观看一区| 久久久久久久久久看片| 视频一区二区中文字幕| 99国内精品久久| 国产精品天干天干在线综合| 国产麻豆欧美日韩一区| 日韩一卡二卡三卡四卡| 婷婷夜色潮精品综合在线| 日本黄色一区二区| 亚洲日本在线a| 成人app下载| 中文字幕一区三区| 色呦呦国产精品| 中文字幕日韩精品一区| 99国产一区二区三精品乱码| 日韩一区在线播放| 91官网在线观看| 日日摸夜夜添夜夜添精品视频| 91视频你懂的| 日本vs亚洲vs韩国一区三区二区| 91精品免费观看| 国产一区二区精品久久99| 欧美精品一区二区三区四区 | 国产精品午夜春色av| www.欧美.com| 天天做天天摸天天爽国产一区| 日韩欧美高清dvd碟片| 国产999精品久久久久久绿帽| 国产精品久久久99| 欧美精品一二三四| 国产又黄又大久久| 亚洲午夜一区二区三区| 久久免费看少妇高潮| 亚洲一区在线视频| 91精品啪在线观看国产60岁| 国产毛片精品国产一区二区三区| 亚洲欧美一区二区不卡| 精品国产在天天线2019| 99久久精品情趣| 国产凹凸在线观看一区二区| 亚洲一区二区三区四区五区黄| 精品国产一区二区三区四区四| 欧美在线啊v一区| 欧美一区二区三区在线观看| 亚洲欧洲制服丝袜| 精品对白一区国产伦| 国产精品麻豆视频| 久久精品国产99国产精品| 91女厕偷拍女厕偷拍高清| 久久久99精品免费观看| 精品在线播放午夜| 欧美一级精品大片| 国产日韩欧美激情| 91麻豆.com| 婷婷综合五月天| 欧美成人a在线| 91视频xxxx| 久久精品国产久精国产| 国产精品久久午夜夜伦鲁鲁| 欧美日韩亚洲另类| 国产在线麻豆精品观看| 亚洲精品国产无天堂网2021| 在线播放一区二区三区| 国产精品综合网| 久久综合av免费| 国产乱子伦视频一区二区三区 | 中文字幕视频一区二区三区久| 91色视频在线| 美国毛片一区二区| 亚洲精品老司机| 国产欧美一区二区三区在线老狼| 在线一区二区视频| 国产成人精品免费一区二区| 日韩专区一卡二卡| 亚洲视频免费观看| 国产欧美日本一区二区三区| 欧美日本一道本在线视频| 成人动漫视频在线|