Beispiel #1
0
 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
Beispiel #2
0
    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()