def execute( self ): self.server.timeout = int( self.timeout ) if not Db.fetch( "SELECT * FROM settings WHERE key='timeout'" ): Db.execute( "INSERT INTO settings VALUES ('timeout', ?, 'INT' ) ", ( self.timeout, ), commit=True ) else: Db.execute( "UPDATE settings SET value=? WHERE key='timeout'", ( self.timeout, ), commit=True ) print self.DONE
def run( self ): try: if self.strategy == 'film_db': #TODO self.chomik.connect() movies = [] file = open( 'db/movies.list', 'r' ) for line in file.readlines(): title = line.split('\t')[0].decode( 'latin1' ) analized = analyze_title( title ) title = analized['title'] if analized['kind'] in ( 'movie', 'tv series', 'tv movie', 'tv mini series', 'episode' ): movies.append( analized ) file.close() random.shuffle( movies ) for movie in movies: title = movie['title'].replace( '/', '\\') year = movie['year'] if movie.has_key( 'year' ) else '' FIRST_LETTER = title[0].upper() if movie['kind'] == 'episode': pattern1 = [ 'Seriale', 'Alfabetycznie', movie['episode of']['title'][0].upper(), movie['episode of']['title'] + ' (%s)' % movie['episode of']['year'] if movie['episode of'].has_key( 'year' ) else '', ] if movie.has_key( 'season' ): pattern1.append( 'Sezon %s' % movie['season'] ) if movie.has_key( 'episode' ): pattern1.append( 'Odcinek %s, %s' % ( movie['episode'], movie['title'] ) ) else: pattern1.append( title ) pattern1 = '/'.join( pattern1 ) patterns = [ pattern1 ] if movie['episode of'].has_key( 'year' ): pattern2 = [ 'Seriale', 'Chronologicznie', str( movie['episode of']['year'] ), movie['episode of']['title'] + ' (%s)' % movie['episode of']['year'] if movie['episode of'].has_key( 'year' ) else '', ] if movie.has_key( 'season' ): pattern2.append( 'Sezon %s' % movie['season'] ) if movie.has_key( 'episode' ): pattern2.append( 'Odcinek %s, %s' % ( movie['episode'], movie['title'] ) ) else: pattern2.append( title ) pattern2 = '/'.join( pattern2 ) patterns.append( pattern2 ) else: title = '%s (%s)' % ( title, year ) if year else title if movie['kind'] in ( 'tv series', 'tv mini series' ): folder = 'Seriale' else: folder = 'Filmy' full_title = ( "%s (%s)" % ( movie['title'], year ) ).decode( 'latin1' ) patterns = ( '%s/Alfabetycznie/%s/%s' % ( folder, FIRST_LETTER, title ), '%s/Chronologicznie/%s/%s' % ( folder, year, title ) ) if not Db.fetchone( "SELECT * FROM folders WHERE user_id=? AND name=?", ( self.id, title ) ): good = [] if movie['kind'] in ( 'movie', 'tv movie' ): # TODO search series sizes = [] self.chomik.logger.debug( 'searching: %s' % full_title ) items = self.chomik.search( full_title ) self.chomik.logger.debug( 'find: %d' % len( items ) ) for item in items: self.chomik.logger.debug( '%s, %s' % item['title'], item['size'] ) if item['title'].lower() == full_title.lower() or item['title'].lower().startswith( full_title.lower() ) or item['title'].lower() == movie['title'].lower() or item['title'].lower == ( '%s %s' % ( movie['title'], year ) ).lower(): if not item['size'] in sizes: good.append( item ) sizes.append( item['size'] ) for pattern in patterns: id, url = self.chomik.create_directory( pattern ) if id and url: Db.execute( "INSERT INTO folders VALUES (?, ?, ?, ?)", ( id, self.id, title, url ), commit=True ) for item in good: self.chomik.clone( item['id'], id ) elif self.strategy == 'smieciarz': if self.chomik.connect(): self.generate_other_users() users = Db.fetch( "SELECT login from other_users" ) random.shuffle( users ) for user in users: url = '/%s' % user full_url = 'http://chomikuj.pl/%s%s' % ( self.login, url ) if not self.chomik.check_directory( url )[0]: self.chomik.copy_directory_tree( url, timeout=self.server.timeout ) self.generate_other_users( 5 ) except Exception, e: print e self.chomik.logger.exception( e ) self.chomik.logger.info( "going to sleep for 60 seconds" ) time.sleep( 60 ) self.run()