def startDown(df,blocks=1):
#    print 'start down...',df.id
    url = df.url
    size = df.totalfilesize
    ranges = splitBlock(size,blocks)
    
    tmp_path = "thread"
    if df.dtonk:
        tmp_path = FILE_SAVE_PATH+df.user+"/download/"+df.dtonk
    else:
        tmp_path = FILE_SAVE_PATH+df.user+"/download/"+datetime.datetime.now().strftime("%Y%m%d%H%M%S%f")
    
    filename = [ "%s_%d" %(tmp_path,i) for i in xrange(0, blocks) ]  
#    print filename
    tasks = []
    for x in xrange(0,blocks):
        t = Download(x,url,ranges[x],filename[x],df)
        t.setDaemon(True) 
        t.start()
        tasks.append(t)  
    
    time.sleep(2)  
    while islive(tasks) :
        if not isGo(df):
            break
        
        downloaded = sum([task.downloadsize for task in tasks] )  
        process = downloaded/float(size)*100
#        show = u'\r Completed:%.2f%%' % (process)
#        sys.stdout.write(show)  
        sys.stdout.flush() 
        df.percent = '%.2f%%' %(process)
        df.save()
        time.sleep( 0.5 )  
    
    output = FILE_SAVE_PATH + df.user + "/download/" + df.name + df.ftype
    filehandle = open( output, 'wb+' )  
    for i in filename:
        if not isGo(df):
            return
        
        f = open( i, 'rb' )  
        filehandle.write( f.read() )  
        f.close()  
        try:  
            os.remove(i)  
            pass  
        except:  
            pass  
    
    df.percent = '100.00%%' %()
    df.status = 1
#    print "1111 :",df.downloadtotaltime
    
    df.downloadtotaltime = int(float(df.downloadtotaltime) + int(time.time()-int(float(df.downloadedtime))))
    df.downloadedtime = str(time.time())    
    
    df.save()
    
    filehandle.close()
    if public_dic.get(df.id):
        public_dic.pop(df.id)
    
    # 存放文件重新
    try:
        fu = Fileinfo_up()
        fu.name = df.name
        fu.path = "%s/download/" %(df.user)
        p = "%s%s/%s%s" %(FILE_SAVE_PATH,fu.path,df.name,df.ftype)
        fu.size = os.path.getsize(p)#fSize(p)#df.totalfilesize
        fu.type = 0
        fu.ftype = df.ftype
        fu.owner = df.user
        fu.status = 1
        ss = df.downloadstarttime
        fu.uploadstarttime = "%s-%s-%s %s:%s:%s" %(ss[0:4],ss[4:6],ss[6:8],ss[8:10],ss[10:12],ss[12:14])
        fu.userid = User.objects.filter(UserName=df.user)[0]
        fu.save()
        
    except Exception,e:
        print 'ddddddddddddd :',e
        pass
Beispiel #2
0
def downBTFile(b):
    
    ses = lt.session()
    ses.listen_on(port_lsit[0][0],port_lsit[0][1])
    p = "%s%s%s"%(FILE_SAVE_PATH,b.torrent,b.name)
    s = "%s%s"%(FILE_SAVE_PATH,b.path)
    e = lt.bdecode(open(p, 'rb').read())
    info = lt.torrent_info(e)
    #print 'PPPPPPPPPPP :',p
    #print 'ssssssssssp :',s
    params = {'save_path': str(s),'storage_mode': lt.storage_mode_t.storage_mode_sparse,'ti': info }#,lt.storage_mode_t(2)
    
    h = ses.add_torrent(params)
    params = {'save_path': 'ttt',
        'storage_mode': lt.storage_mode_t.storage_mode_sparse,#lt.storage_mode_t(2),
        'ti': info }
    
    while (not h.is_seed()) and public_dic_bt.get(b.id)[1]:
        s = h.status()
        #print 'b'*30
        
        try:
            if s.state ==3: #载中的返回值
                
                b.resources = "%s/%s" %(s.num_pieces,len(s.pieces))
                b.requestUp = s.total_upload
                b.requestDown = s.total_download
                b.speedUp = '%.2f kB/s' %(s.upload_rate / 1000)
                b.speedDown = '%.2f kb/s' %(s.download_rate / 1000)
                b.percent = '%.2f%%'%(s.progress * 100)
                b.status = 2
                b.save()
                #print '====>',b.speedDown
            else:
                
                b.speedUp = '-'
                b.speedDown = '-'
                b.status = 4
                b.save()
            time.sleep(1)
        except:pass
        time.sleep(1)
    
    #print 'down over...'
    
    b.status = 1
    b.speedUp = '-'
    b.speedDown = '-'
    b.requestDown = '-'
    b.requestUp = '-'
    b.percent = "100%"
    b.resources = "-"
    b.save()
    
    #  存放 Fileinfo_up
    bfp = "%s%s/" %(b.path,b.fname)
    fp = "%s%s" %(FILE_SAVE_PATH,bfp)
    lfs = os.listdir(fp)
    for f in lfs:
        try:
            
            #print '0'*30,f.decode('utf8')
            name,ftype = os.path.splitext(f)
            
            fu = Fileinfo_up()
            
            fu.name = name
            fu.ftype = ftype
            fu.size = b.totalSize
            fu.type = 0
            fu.owner = b.user
            fu.status = 1
            fu.path = bfp
            tmp_tiem = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
            fu.lastwritetime = tmp_tiem
            fu.uploadstarttime = tmp_tiem
            fu.timestamp = 0
            fu.userid = User.objects.get(UserName=b.user)
            
            fu.save()
            
        except Exception,e:
            print 'ddddddddddddd :',e
            pass
Beispiel #3
0
def startDown(df, blocks=1):
    #    print 'start down...',df.id
    url = df.url
    size = df.totalfilesize
    ranges = splitBlock(size, blocks)

    tmp_path = "thread"
    if df.dtonk:
        tmp_path = FILE_SAVE_PATH + df.user + "/download/" + df.dtonk
    else:
        tmp_path = FILE_SAVE_PATH + df.user + "/download/" + datetime.datetime.now(
        ).strftime("%Y%m%d%H%M%S%f")

    filename = ["%s_%d" % (tmp_path, i) for i in xrange(0, blocks)]
    #    print filename
    tasks = []
    for x in xrange(0, blocks):
        t = Download(x, url, ranges[x], filename[x], df)
        t.setDaemon(True)
        t.start()
        tasks.append(t)

    time.sleep(2)
    while islive(tasks):
        if not isGo(df):
            break

        downloaded = sum([task.downloadsize for task in tasks])
        process = downloaded / float(size) * 100
        #        show = u'\r Completed:%.2f%%' % (process)
        #        sys.stdout.write(show)
        sys.stdout.flush()
        df.percent = '%.2f%%' % (process)
        df.save()
        time.sleep(0.5)

    output = FILE_SAVE_PATH + df.user + "/download/" + df.name + df.ftype
    filehandle = open(output, 'wb+')
    for i in filename:
        if not isGo(df):
            return

        f = open(i, 'rb')
        filehandle.write(f.read())
        f.close()
        try:
            os.remove(i)
            pass
        except:
            pass

    df.percent = '100.00%%' % ()
    df.status = 1
    #    print "1111 :",df.downloadtotaltime

    df.downloadtotaltime = int(
        float(df.downloadtotaltime) +
        int(time.time() - int(float(df.downloadedtime))))
    df.downloadedtime = str(time.time())

    df.save()

    filehandle.close()
    if public_dic.get(df.id):
        public_dic.pop(df.id)

    # 存放文件重新
    try:
        fu = Fileinfo_up()
        fu.name = df.name
        fu.path = "%s/download/" % (df.user)
        p = "%s%s/%s%s" % (FILE_SAVE_PATH, fu.path, df.name, df.ftype)
        fu.size = os.path.getsize(p)  #fSize(p)#df.totalfilesize
        fu.type = 0
        fu.ftype = df.ftype
        fu.owner = df.user
        fu.status = 1
        ss = df.downloadstarttime
        fu.uploadstarttime = "%s-%s-%s %s:%s:%s" % (
            ss[0:4], ss[4:6], ss[6:8], ss[8:10], ss[10:12], ss[12:14])
        fu.userid = User.objects.filter(UserName=df.user)[0]
        fu.save()

    except Exception, e:
        print 'ddddddddddddd :', e
        pass
Beispiel #4
0
def downBTFile(b):

    ses = lt.session()
    ses.listen_on(port_lsit[0][0], port_lsit[0][1])
    p = "%s%s%s" % (FILE_SAVE_PATH, b.torrent, b.name)
    s = "%s%s" % (FILE_SAVE_PATH, b.path)
    e = lt.bdecode(open(p, 'rb').read())
    info = lt.torrent_info(e)
    #print 'PPPPPPPPPPP :',p
    #print 'ssssssssssp :',s
    params = {
        'save_path': str(s),
        'storage_mode': lt.storage_mode_t.storage_mode_sparse,
        'ti': info
    }  #,lt.storage_mode_t(2)

    h = ses.add_torrent(params)
    params = {
        'save_path': 'ttt',
        'storage_mode':
        lt.storage_mode_t.storage_mode_sparse,  #lt.storage_mode_t(2),
        'ti': info
    }

    while (not h.is_seed()) and public_dic_bt.get(b.id)[1]:
        s = h.status()
        #print 'b'*30

        try:
            if s.state == 3:  #载中的返回值

                b.resources = "%s/%s" % (s.num_pieces, len(s.pieces))
                b.requestUp = s.total_upload
                b.requestDown = s.total_download
                b.speedUp = '%.2f kB/s' % (s.upload_rate / 1000)
                b.speedDown = '%.2f kb/s' % (s.download_rate / 1000)
                b.percent = '%.2f%%' % (s.progress * 100)
                b.status = 2
                b.save()
                #print '====>',b.speedDown
            else:

                b.speedUp = '-'
                b.speedDown = '-'
                b.status = 4
                b.save()
            time.sleep(1)
        except:
            pass
        time.sleep(1)

    #print 'down over...'

    b.status = 1
    b.speedUp = '-'
    b.speedDown = '-'
    b.requestDown = '-'
    b.requestUp = '-'
    b.percent = "100%"
    b.resources = "-"
    b.save()

    #  存放 Fileinfo_up
    bfp = "%s%s/" % (b.path, b.fname)
    fp = "%s%s" % (FILE_SAVE_PATH, bfp)
    lfs = os.listdir(fp)
    for f in lfs:
        try:

            #print '0'*30,f.decode('utf8')
            name, ftype = os.path.splitext(f)

            fu = Fileinfo_up()

            fu.name = name
            fu.ftype = ftype
            fu.size = b.totalSize
            fu.type = 0
            fu.owner = b.user
            fu.status = 1
            fu.path = bfp
            tmp_tiem = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
            fu.lastwritetime = tmp_tiem
            fu.uploadstarttime = tmp_tiem
            fu.timestamp = 0
            fu.userid = User.objects.get(UserName=b.user)

            fu.save()

        except Exception, e:
            print 'ddddddddddddd :', e
            pass