home *** CD-ROM | disk | FTP | other *** search
- # Source Generated with Decompyle++
- # File: in.pyo (Python 2.2)
-
- from os import listdir, path
- from ConfigFile import ConfigFile, Config
- from Loader import Loader
- from BTConstants import *
- from core.CurrentRateMeasure import GlobalMeasure
- from time import strftime
-
- class LoaderManager:
- Loaders = []
- Log = None
- Refresh = None
- Finish = None
- UpMeasure = None
- DirTorrent = ''
- DirTemp = ''
- DirFilFinish = ''
- DirTorFinish = ''
-
- def __init__(self, dirs, refresh = None, log = None, finish = None, upmeasure = None):
- self.Log = log
- self.Refresh = refresh
- self.Finish = finish
- self.DirTorrent = dirs[0]
- self.DirTemp = dirs[1]
- self.DirFilFinish = dirs[2]
- self.DirTorFinish = dirs[3]
- if upmeasure == None:
- self.UpMeasure = GlobalMeasure(20.0, 5.0)
- else:
- self.UpMeasure = upmeasure
-
-
- def CreateNewLoader(self, torrent):
-
- try:
- loader = Loader(torrent, [
- self.DirTorrent,
- self.DirTemp,
- self.DirFilFinish,
- self.DirTorFinish], self.UpMeasure, self.Refresh, self.Log, self.Finish)
- self.Loaders.append(loader)
- if self.Log != None:
- self.Log('Added torrent "' + torrent + '"...', loglevel = LOG_INFO)
-
- return loader
- except:
- if self.Log != None:
- self.Log('Error adding torrent "' + torrent + '"...', loglevel = LOG_ERROR)
-
- return None
-
-
-
- def GetNumLoading(self):
- cnt = 0
- for loader in self.Loaders:
- if loader.IsRunning():
- cnt = cnt + 1
-
-
- return cnt
-
-
- def GetNumHashing(self):
- cnt = 0
- for loader in self.Loaders:
- if loader.IsHashing():
- cnt = cnt + 1
-
-
- return cnt
-
-
- def GetUpSpeed(self):
- speed = 0
- for loader in self.Loaders:
- speed += loader.Info['SpeedUp']
-
- return speed
-
-
- def GetDownSpeed(self):
- speed = 0
- for loader in self.Loaders:
- speed += loader.Info['SpeedDown']
-
- return speed
-
-
- def GetNumLoaders(self):
- return len(self.Loaders)
-
-
- def GetNumConnections(self):
- con = 0
- for loader in self.Loaders:
- con = con + loader.GetNumConnections()
-
- return con
-
-
- def GetDownloader(self, num):
- return self.Loaders[num]
-
-
- def SetUpSpeed(self, speed):
- for l in self.Loaders:
- if l.Obj.has_key('Connecter'):
- con = l.Obj['Connecter']
- con.max_upload_rate = speed * 1024
-
-
-
-
- def Move(self, frm, to):
- if to < 0 or to > len(self.Loaders) - 1:
- return None
-
- if frm < to:
- to = to + 1
-
- self.Loaders[to:to] = [
- self.Loaders[frm]]
- if frm > to:
- del self.Loaders[frm + 1]
- else:
- del self.Loaders[frm]
- FilesConf = ConfigFile()
- FilesConf.Read('files.ini')
- FilesConf.DelSection('ActiveOrder')
- for num in range(len(self.Loaders)):
- FilesConf.Set('ActiveOrder', '%03d' % num, self.Loaders[num].Config['Tor'])
-
- FilesConf.Save()
-
-
- def GetInfo(self, num, name):
-
- try:
- return self.Loaders[num].Info[name]
- except:
- pass
-
-
-
- def Update(self):
- self.UpdateList()
- self.UpdateDownloads()
- self.UpdateHashing()
-
-
- def UpdateList(self):
- tors = listdir(self.DirTorrent)
- FilesConf = ConfigFile()
- FilesConf.Read('files.ini')
- order = FilesConf.GetOptions('ActiveOrder')
- order.sort()
- new = []
- for key in order:
- value = FilesConf.Get('ActiveOrder', key)
- con = false
- if value == '' or not path.exists(path.join(self.DirTorrent, value)):
- FilesConf.DelOption('ActiveOrder', key)
- for l in self.Loaders:
- if l.Config['Tor'] == value:
- l.PauseDownload()
- self.Loaders.remove(l)
-
-
- con = true
- FilesConf.Save()
-
- for loader in self.Loaders:
- if loader.Config['Tor'] == value:
- con = true
-
-
- if con == true:
- continue
-
- new.append(key)
-
- if len(tors) == 0:
- return None
-
- for tor in tors:
- con = false
- for loader in self.Loaders:
- if loader.Config['Tor'] == tor:
- con = true
-
-
- for key in new:
- value = FilesConf.Get('ActiveOrder', key)
- if value == tor:
- con = true
-
-
- if con == true:
- continue
-
- if order == []:
- nid = 0
- else:
- nid = int(order[len(order) - 1]) + 1
- new.append('%03d' % nid)
- FilesConf.Set('ActiveOrder', '%03d' % nid, tor)
- FilesConf.Save()
- order = FilesConf.GetOptions('ActiveOrder')
- order.sort()
-
- for num in new:
- tor = FilesConf.Get('ActiveOrder', num)
- self.CreateNewLoader(tor)
-
-
-
- def UpdateDownloads(self):
- dwcnt = self.GetNumLoading()
- dwsta = Config.Get('Download', 'AutoStart')
- dwmax = Config.Get('Download', 'MaxSimDown')
- hscnt = self.GetNumHashing()
- hsmax = Config.Get('Hash', 'NumSimHash')
- hsstr = Config.Get('Hash', 'Strict')
- if dwsta == 1 and dwcnt < dwmax:
- dwcnt = dwmax - dwcnt
- hscnt = hsmax - hscnt
- for loader in self.Loaders:
- if dwcnt <= 0:
- break
-
- if not loader.IsRunning() and not loader.IsUserPaused() and not loader.IsFinished() and hsstr == 0 or hscnt > 0:
- hscnt = hscnt - 1
- dwcnt = dwcnt - 1
- loader.StartDownload()
-
-
-
- dwcnt = self.GetNumLoading()
- dwpau = Config.Get('Download', 'AutoPause')
- if dwpau == 1 and dwcnt > dwmax:
- dwcnt = dwcnt - dwmax
- tmp = self.self.Loaders
- tmp.reverse()
- for loader in tmp:
- if dwcnt <= 0:
- break
-
- if loader.IsRunning():
- dwcnt = dwcnt - 1
- loader.PauseDownload()
-
-
-
-
-
- def UpdateHashing(self):
- hscnt = self.GetNumHashing()
- hssta = Config.Get('Hash', 'Background')
- hsmax = Config.Get('Hash', 'NumSimHash')
- if hssta == 1 and hscnt < hsmax:
- hscnt = hsmax - hscnt
- for loader in self.Loaders:
- if hscnt <= 0:
- break
-
- if not loader.IsHashing() and not loader.HasHashed():
- hscnt = hscnt - 1
- loader.StartHashing()
-
-
-
-
-
- def ShutDown(self):
- for loader in self.Loaders:
- if loader.IsRunning():
- loader.PauseDownload(user = true)
-
-
-
-
- def Destroy(self):
- for loader in self.Loaders:
- loader.Destroy()
-
-
-
-