def cache_image(self, image_url): """ Store cache of image in cache dir :param image_url: Source URL """ path = os.path.abspath(os.path.join(sickrage.srConfig.CACHE_DIR, 'images', 'imdb_popular')) if not os.path.exists(path): os.makedirs(path) full_path = os.path.join(path, os.path.basename(image_url)) if not os.path.isfile(full_path): download_file(image_url, full_path, session=self.session)
def cache_image(self, image_url): """ Store cache of image in cache dir :param image_url: Source URL """ path = os.path.abspath( os.path.join(sickrage.srConfig.CACHE_DIR, 'images', 'imdb_popular')) if not os.path.exists(path): os.makedirs(path) full_path = os.path.join(path, os.path.basename(image_url)) if not os.path.isfile(full_path): download_file(image_url, full_path, session=self.session)
def downloadResult(self, result): """ Save the result to disk. """ # check for auth if not self._doLogin: return False urls, filename = self._makeURL(result) for url in urls: if "NO_DOWNLOAD_NAME" in url: continue if url.startswith("http"): self.headers.update({"Referer": "/".join(url.split("/")[:3]) + "/"}) sickrage.srLogger.info("Downloading a result from " + self.name + " at " + url) # Support for Jackett/TorzNab if url.endswith(GenericProvider.TORRENT) and filename.endswith(GenericProvider.NZB): filename = filename.rsplit(".", 1)[0] + "." + GenericProvider.TORRENT if download_file(url, filename, session=self.session, headers=self.headers): if self._verify_download(filename): sickrage.srLogger.info("Saved result to " + filename) return True else: sickrage.srLogger.warning("Could not download %s" % url) remove_file_failed(filename) if len(urls): sickrage.srLogger.warning("Failed to download any results") return False
def update(self): """ Downloads the latest source tarball from github and installs it over the existing version. """ tar_download_url = 'http://github.com/' + sickrage.srConfig.GIT_ORG + '/' + sickrage.srConfig.GIT_REPO + '/tarball/' + self.version try: # prepare the update dir sr_update_dir = os.path.join(sickrage.PROG_DIR, 'sr-update') if os.path.isdir(sr_update_dir): sickrage.srLogger.info("Clearing out update folder " + sr_update_dir + " before extracting") removetree(sr_update_dir) sickrage.srLogger.info("Creating update folder " + sr_update_dir + " before extracting") os.makedirs(sr_update_dir) # retrieve file sickrage.srLogger.info("Downloading update from " + repr(tar_download_url)) tar_download_path = os.path.join(sr_update_dir, 'sr-update.tar') download_file(tar_download_url, tar_download_path) if not os.path.isfile(tar_download_path): sickrage.srLogger.warning( "Unable to retrieve new version from " + tar_download_url + ", can't update") return False if not tarfile.is_tarfile(tar_download_path): sickrage.srLogger.error("Retrieved version from " + tar_download_url + " is corrupt, can't update") return False # extract to sr-update dir sickrage.srLogger.info("Extracting file " + tar_download_path) tar = tarfile.open(tar_download_path) tar.extractall(sr_update_dir) tar.close() # delete .tar.gz sickrage.srLogger.info("Deleting file " + tar_download_path) os.remove(tar_download_path) # find update dir name update_dir_contents = [ x for x in os.listdir(sr_update_dir) if os.path.isdir(os.path.join(sr_update_dir, x)) ] if len(update_dir_contents) != 1: sickrage.srLogger.error( "Invalid update data, update failed: " + str(update_dir_contents)) return False content_dir = os.path.join(sr_update_dir, update_dir_contents[0]) # walk temp folder and move files to main folder sickrage.srLogger.info("Moving files from " + content_dir + " to " + sickrage.PROG_DIR) for dirname, _, filenames in os.walk( content_dir): # @UnusedVariable dirname = dirname[len(content_dir) + 1:] for curfile in filenames: old_path = os.path.join(content_dir, dirname, curfile) new_path = os.path.join(sickrage.PROG_DIR, dirname, curfile) # Avoid DLL access problem on WIN32/64 # These files needing to be updated manually # or find a way to kill the access from memory if curfile in ('unrar.dll', 'unrar64.dll'): try: os.chmod(new_path, stat.S_IWRITE) os.remove(new_path) os.renames(old_path, new_path) except Exception as e: sickrage.srLogger.debug("Unable to update " + new_path + ': ' + e.message) os.remove( old_path ) # Trash the updated file without moving in new path continue if os.path.isfile(new_path): os.remove(new_path) os.renames(old_path, new_path) except Exception as e: sickrage.srLogger.error("Error while trying to update: {}".format( e.message)) sickrage.srLogger.debug("Traceback: " + traceback.format_exc()) return False # Notify update successful sickrage.srCore.NOTIFIERS.notify_git_update( sickrage.srCore.NEWEST_VERSION_STRING) return True
def get_anime_list_xml(path): return download_file("https://raw.githubusercontent.com/ScudLee/anime-lists/master/anime-list.xml", path)
def update(self): """ Downloads the latest source tarball from github and installs it over the existing version. """ tar_download_url = 'http://github.com/' + sickrage.srConfig.GIT_ORG + '/' + sickrage.srConfig.GIT_REPO + '/tarball/' + self.version try: # prepare the update dir sr_update_dir = os.path.join(sickrage.PROG_DIR, 'sr-update') if os.path.isdir(sr_update_dir): sickrage.srLogger.info("Clearing out update folder " + sr_update_dir + " before extracting") removetree(sr_update_dir) sickrage.srLogger.info("Creating update folder " + sr_update_dir + " before extracting") os.makedirs(sr_update_dir) # retrieve file sickrage.srLogger.info("Downloading update from " + repr(tar_download_url)) tar_download_path = os.path.join(sr_update_dir, 'sr-update.tar') download_file(tar_download_url, tar_download_path) if not os.path.isfile(tar_download_path): sickrage.srLogger.warning( "Unable to retrieve new version from " + tar_download_url + ", can't update") return False if not tarfile.is_tarfile(tar_download_path): sickrage.srLogger.error("Retrieved version from " + tar_download_url + " is corrupt, can't update") return False # extract to sr-update dir sickrage.srLogger.info("Extracting file " + tar_download_path) tar = tarfile.open(tar_download_path) tar.extractall(sr_update_dir) tar.close() # delete .tar.gz sickrage.srLogger.info("Deleting file " + tar_download_path) os.remove(tar_download_path) # find update dir name update_dir_contents = [x for x in os.listdir(sr_update_dir) if os.path.isdir(os.path.join(sr_update_dir, x))] if len(update_dir_contents) != 1: sickrage.srLogger.error("Invalid update data, update failed: " + str(update_dir_contents)) return False content_dir = os.path.join(sr_update_dir, update_dir_contents[0]) # walk temp folder and move files to main folder sickrage.srLogger.info("Moving files from " + content_dir + " to " + sickrage.PROG_DIR) for dirname, _, filenames in os.walk(content_dir): # @UnusedVariable dirname = dirname[len(content_dir) + 1:] for curfile in filenames: old_path = os.path.join(content_dir, dirname, curfile) new_path = os.path.join(sickrage.PROG_DIR, dirname, curfile) # Avoid DLL access problem on WIN32/64 # These files needing to be updated manually # or find a way to kill the access from memory if curfile in ('unrar.dll', 'unrar64.dll'): try: os.chmod(new_path, stat.S_IWRITE) os.remove(new_path) os.renames(old_path, new_path) except Exception as e: sickrage.srLogger.debug("Unable to update " + new_path + ': ' + e.message) os.remove(old_path) # Trash the updated file without moving in new path continue if os.path.isfile(new_path): os.remove(new_path) os.renames(old_path, new_path) except Exception as e: sickrage.srLogger.error("Error while trying to update: {}".format(e.message)) sickrage.srLogger.debug("Traceback: " + traceback.format_exc()) return False # Notify update successful sickrage.srCore.NOTIFIERS.notify_git_update(sickrage.srCore.NEWEST_VERSION_STRING) return True
def get_anime_list_xml(path): return download_file( "https://raw.githubusercontent.com/ScudLee/anime-lists/master/anime-list.xml", path)