.
This commit is contained in:
		
							parent
							
								
									430c467172
								
							
						
					
					
						commit
						a17e9da7c4
					
				| @ -203,7 +203,7 @@ class Engine: | ||||
|         self.logpipe = None | ||||
| #        self.process = None | ||||
|         self.started = False | ||||
|         self.pyrrent2http_loop = None | ||||
| 
 | ||||
| 
 | ||||
|     @staticmethod | ||||
|     def _validate_save_path(path): | ||||
| @ -329,7 +329,7 @@ class Engine: | ||||
|         self.pyrrent2http.startServices() | ||||
|         self.pyrrent2http.addTorrent() | ||||
|         self.pyrrent2http.startHTTP() | ||||
|         self.pyrrent2http_loop = threading.Thread(target = self.pyrrent2http.loop, args = (False,)) | ||||
|         self.pyrrent2http_loop = threading.Thread(target = self.pyrrent2http.loop) | ||||
|         self.pyrrent2http_loop.start() | ||||
|          | ||||
| 
 | ||||
|  | ||||
| @ -16,11 +16,15 @@ except Exception, e: | ||||
|     except Exception as e: | ||||
|         strerror = e.args | ||||
|         print(strerror) | ||||
|         if STANDALONE: | ||||
|             sys.exit(1) | ||||
|         else: | ||||
|             raise | ||||
| 
 | ||||
| import libtorrent as lt | ||||
| from random import SystemRandom | ||||
| import time | ||||
| import urlparse, urllib | ||||
| import platform | ||||
| import BaseHTTPServer | ||||
| import SocketServer | ||||
| import threading | ||||
| @ -320,7 +324,7 @@ class TorrentFS(object): | ||||
|         self.openedFiles.append(file_)     | ||||
|     def setPriority(self, index, priority): | ||||
|         if self.priorities[index] != priority: | ||||
|             logging.info('Setting %s priority to %d', self.info.file_at(index).path, priority) | ||||
|             logging.info('Setting %s priority to %d' % (self.info.file_at(index).path, priority)) | ||||
|             self.priorities[index] = priority | ||||
|             self.handle.file_priority(index, priority) | ||||
|     def findOpenedFile(self, file): | ||||
| @ -637,12 +641,18 @@ class Pyrrent2http(object): | ||||
|             self.config[k] = config_.__dict__[k] | ||||
|         if self.config.uri == '': | ||||
|             parser.print_usage() | ||||
|             if STANDALONE: | ||||
|                 sys.exit(1) | ||||
|             else: | ||||
|                 raise "Invalid argument" | ||||
|         if self.config.uri.startswith('magnet:'): | ||||
|             self.magnet = True | ||||
|         if self.config.resumeFile != '' and not self.config.keepFiles: | ||||
|             logging.error('Usage of option --resume-file is allowed only along with --keep-files') | ||||
|             if STANDALONE: | ||||
|                 sys.exit(1) | ||||
|             else: | ||||
|                 raise | ||||
|     def buildTorrentParams(self, uri): | ||||
|         fileUri = urlparse.urlparse(uri) | ||||
|         torrentParams = {} | ||||
| @ -650,33 +660,39 @@ class Pyrrent2http(object): | ||||
|             torrentParams['url'] =  uri | ||||
|         elif fileUri.scheme == 'file': | ||||
|             uriPath = fileUri.path | ||||
|             if uriPath != '' and platform.system().lower() == 'windows' and (os.path.sep == uriPath[0] or uriPath[0] == '/'): | ||||
|             if uriPath != '' and sys.platform.startswith('win') and (os.path.sep == uriPath[0] or uriPath[0] == '/'): | ||||
|                 uriPath = uriPath[1:] | ||||
|             try: | ||||
|                 absPath = os.path.abspath(uriPath) | ||||
|                 logging.info('Opening local file: %s', absPath) | ||||
|                 logging.info('Opening local file: %s' % (absPath,)) | ||||
|                 with open(absPath, 'rb') as f: | ||||
|                     torrent_info = lt.torrent_info(lt.bdecode(f.read())) | ||||
|             except Exception as e: | ||||
|                 strerror = e.args | ||||
|                 logging.error(strerror) | ||||
|                 if STANDALONE: | ||||
|                     sys.exit(1) | ||||
|                 else: | ||||
|                     raise | ||||
|             torrentParams['ti'] = torrent_info | ||||
|         else: | ||||
|             logging.info('Will fetch: %s', uri) | ||||
|             logging.info('Will fetch: %s' % (uri,)) | ||||
|             try: | ||||
|                 torrent_raw = urllib.urlopen(uri).read() | ||||
|                 torrent_info = lt.torrent_info(torrent_raw, len(torrent_raw)) | ||||
|             except Exception as e: | ||||
|                 strerror = e.args | ||||
|                 logging.error(strerror) | ||||
|                 if STANDALONE: | ||||
|                     sys.exit(1) | ||||
|                 else: | ||||
|                     raise | ||||
|             torrentParams['ti'] = torrent_info | ||||
|         logging.info('Setting save path: %s', self.config.downloadPath) | ||||
|         logging.info('Setting save path: %s' % (self.config.downloadPath,)) | ||||
|         torrentParams['save_path'] = self.config.downloadPath | ||||
|          | ||||
|         if os.path.exists(self.config.resumeFile): | ||||
|             logging.info('Loading resume file: %s', self.config.resumeFile) | ||||
|             logging.info('Loading resume file: %s' % (self.config.resumeFile,)) | ||||
|             try: | ||||
|                 with open(self.config.resumeFile, 'rb') as f: | ||||
|                     torrentParams['resume_data'] = lt.bencode(f.read()) | ||||
| @ -711,7 +727,7 @@ class Pyrrent2http(object): | ||||
|             info = self.torrentHandle.torrent_file() | ||||
|         except: | ||||
|             info = self.torrentHandle.get_torrent_info() | ||||
|         logging.info('Downloading torrent: %s', info.name()) | ||||
|         logging.info('Downloading torrent: %s' % (info.name(),)) | ||||
|         self.TorrentFS = TorrentFS(self, self.torrentHandle, self.config.fileIndex) | ||||
|      | ||||
|     def startHTTP(self): | ||||
| @ -724,7 +740,7 @@ class Pyrrent2http(object): | ||||
|         #self.main_alive.set() | ||||
|         logging.info('Starting HTTP Server...') | ||||
|         handler = HttpHandlerFactory() | ||||
|         logging.info('Listening HTTP on %s...\n', self.config.bindAddress) | ||||
|         logging.info('Listening HTTP on %s...\n' % (self.config.bindAddress,)) | ||||
|         host, strport = self.config.bindAddress.split(':') | ||||
|         if len(strport) > 0: | ||||
|             srv_port = int(strport) | ||||
| @ -798,7 +814,10 @@ class Pyrrent2http(object): | ||||
|         except IOError as e: | ||||
|             strerror = e.args | ||||
|             logging.error(strerror) | ||||
|             if STANDALONE: | ||||
|                 sys.exit(1) | ||||
|             else: | ||||
|                 raise | ||||
|          | ||||
|         settings = self.session.get_settings() | ||||
|         if self.config.userAgent != '': | ||||
| @ -827,9 +846,12 @@ class Pyrrent2http(object): | ||||
|                     except ValueError as e: | ||||
|                         strerror = e.args | ||||
|                         logging.error(strerror) | ||||
|                         if STANDALONE: | ||||
|                             sys.exit(1) | ||||
|                         else: | ||||
|                             raise | ||||
|                     self.session.add_dht_router(host, port) | ||||
|                     logging.info('Added DHT router: %s:%d', host, port) | ||||
|                     logging.info('Added DHT router: %s:%d' % (host, port)) | ||||
|         logging.info('Setting encryption settings') | ||||
|         try: | ||||
|             encryptionSettings = lt.pe_settings() | ||||
| @ -943,10 +965,10 @@ class Pyrrent2http(object): | ||||
|                 alert = self.session.pop_alert() | ||||
|                 if isinstance(alert, alertClass): | ||||
|                     return alert | ||||
|     def loop(self, standalone = True): | ||||
|     def loop(self): | ||||
|         def sigterm_handler(_signo, _stack_frame): | ||||
|             self.forceShutdown = True | ||||
|         if standalone: | ||||
|         if STANDALONE: | ||||
|             import signal | ||||
|             signal.signal(signal.SIGTERM, sigterm_handler) | ||||
|         self.statsTicker = Ticker(30) | ||||
| @ -1056,11 +1078,15 @@ class Pyrrent2http(object): | ||||
|             logging.info('Aborting the session') | ||||
|             del self.session | ||||
|         logging.info('Bye bye') | ||||
|         if STANDALONE: | ||||
|             sys.exit(0) | ||||
|         else: | ||||
|             return | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| STANDALONE = False | ||||
| if __name__ == '__main__': | ||||
|     STANDALONE = True | ||||
|     try: | ||||
|         import logging | ||||
|         logging.basicConfig(format='%(levelname)s:%(message)s', level=logging.DEBUG) | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user