def searchsubtitlesbyimdbid( self, imdbid, language="all" ): self.subtitles_imdbid_list = [] self.allow_exception = False try: if ( self.osdb_token ) and ( self.connected ): LOG( LOG_INFO, "Searching subtitles by imdbid for " + imdbid ) #We try and check if the file is from an smb share if file.find( "//" ) == 0: error = _( 740 ) LOG( LOG_ERROR, error ) return False, error filename = globals.EncodeLocale( os.path.basename( file ) ) filenameurl = ( filename ) #Corrects the accent characters. if not os.path.exists( file ): error = _( 738 ) % ( file, ) LOG( LOG_ERROR, error ) return False, error else: hash = globals.hashFile( file ) if hash == "IOError" or hash== "SizeError": error = _( 739 ) % ( file, hash, ) LOG( LOG_ERROR, error ) return False, error #We keep going if there was no error. videofilesize = os.path.getsize( file ) linkhtml_index = "search/moviebytesize-"+str( videofilesize )+"/moviehash-"+hash videofilename = filename pathvideofilename = file videohash = hash hashresult = {"hash":hash, "filename":filename, "pathvideofilename":file, "filesize":str( videofilesize ) , "linkhtml_index":linkhtml_index} searchlist = [] searchlist.append({'sublanguageid':language,'moviehash':hashresult["hash"],'moviebytesize':str( hashresult["filesize"] ) }) search = self.server.SearchSubtitles( self.osdb_token, searchlist ) if search["data"]: for item in search["data"]: if item["ISO639"]: flag_image = "flags/" + item["ISO639"] + ".png" else: flag_image = "-.png" self.subtitles_imdbid_list.append({'filename':item["SubFileName"],'link':item["ZipDownloadLink"],"language_name":item["LanguageName"],"language_flag":flag_image,"language_id":item["SubLanguageID"],"ID":item["IDSubtitle"],"rating":str( int( item["SubRating"][0] ) ),"format":item["SubFormat"],"sync":True}) self.subtitles_list.append ( self.subtitles_imdbid_list ) message = _( 742 ) % ( str( len ( self.subtitles_imdbid_list ) ), ) LOG( LOG_INFO, message ) return True, message else: message = _( 741 ) LOG( LOG_INFO, message ) return True, message except Exception, e: error = _( 731 ) % ( _( 736 ), str ( e ) ) LOG( LOG_ERROR, error ) return False, error
def getfolderfilesinfo(self, folder): recursivefiles = [] hashedfiles_list = [] hashes_list = [] self.folderfilesinfo_list = [] try: if (self.connected) and (os.path.isdir(folder)): parser = RecursiveParser.RecursiveParser() recursivefiles = parser.getRecursiveFileList( folder, globals.videos_ext) for item in recursivefiles: filename = globals.EncodeLocale(os.path.basename(item)) filenameurl = (item) #Corrects the accent characters. if not os.path.exists(item): error = _(738) % (item, ) LOG(LOG_ERROR, error) return False, error else: hash = globals.hashFile(item) if hash == "IOError" or hash == "SizeError": error = _(739) % ( item, hash, ) LOG(LOG_ERROR, error) return False, errors else: hashedfiles_list.append({ 'filename': item, 'hash': hash }) hashes_list.append(hash) if hashedfiles_list: hashes = self.server.CheckMovieHash( self.osdb_token, hashes_list) for item in hashes_list: for file in hashedfiles_list: if file["hash"] == item: f = file["filename"] if hashes["data"][item]: movie = hashes["data"][item] self.folderfilesinfo_list.append({ 'filename': f, 'moviename': movie['MovieName'], 'imdbid': movie['MovieImdbID'] }) except Exception, e: error = _(731) % (_(735), str(e)) LOG(LOG_ERROR, error) return False, error
def searchsubtitles( self, file, hash, size, language="all" ): self.subtitles_hash_list = [] self.allow_exception = False try: if ( self.osdb_token ) and ( self.connected ): LOG( LOG_INFO, "Searching subtitles by hash for " + file ) filename = globals.EncodeLocale( os.path.basename( file ) ) videofilesize = size linkhtml_index = "search/moviebytesize-"+str( videofilesize )+"/moviehash-"+hash videofilename = filename pathvideofilename = file videohash = hash hashresult = {"hash":hash, "filename":filename, "pathvideofilename":file, "filesize":str( videofilesize ), "linkhtml_index":linkhtml_index} searchlist = [] searchlist.append({'sublanguageid':language,'moviehash':hashresult["hash"],'moviebytesize':str( hashresult["filesize"] ) }) search = self.server.SearchSubtitles( self.osdb_token, searchlist ) if search["data"]: for item in search["data"]: if item["ISO639"]: flag_image = "flags/" + item["ISO639"] + ".png" else: flag_image = "-.png" self.subtitles_hash_list.append({'filename':item["SubFileName"],'link':item["ZipDownloadLink"],"language_name":item["LanguageName"],"language_flag":flag_image,"language_id":item["SubLanguageID"],"ID":item["IDSubtitle"],"rating":str( int( item["SubRating"][0] ) ),"format":item["SubFormat"],"sync":True}) self.subtitles_list.append( self.subtitles_hash_list ) message = _( 742 ) % ( str( len ( self.subtitles_hash_list ) ), ) LOG( LOG_INFO, message ) return True, message else: message = _( 741 ) LOG( LOG_INFO, message ) return True, message except Exception, e: error = _( 731 ) % ( _( 736 ), str ( e ) ) LOG( LOG_ERROR, error ) return False, error