def unRAR(path, rarFiles, force, result): unpacked_files = [] if sickbeard.UNPACK and rarFiles: result.output += logHelper( u"Packed Releases detected: " + str(rarFiles), logger.DEBUG) for archive in rarFiles: result.output += logHelper(u"Unpacking archive: " + archive, logger.DEBUG) try: rar_handle = RarFile(os.path.join(path, archive)) # Skip extraction if any file in archive has previously been extracted skip_file = False for file_in_archive in [ os.path.basename(x.filename) for x in rar_handle.infolist() if not x.isdir ]: if already_postprocessed(path, file_in_archive, force, result): result.output += logHelper( u"Archive file already post-processed, extraction skipped: " + file_in_archive, logger.DEBUG) skip_file = True break if skip_file: continue rar_handle.extract(path=path, withSubpath=False, overwrite=False) for x in rar_handle.infolist(): if not x.isdir: basename = os.path.basename(x.filename) if basename not in unpacked_files: unpacked_files.append(basename) del rar_handle except Exception, e: result.output += logHelper( u"Failed Unrar archive " + archive + ': ' + ex(e), logger.ERROR) result.result = False continue result.output += logHelper(u"UnRar content: " + str(unpacked_files), logger.DEBUG)
def _unrar(self, path, rar_files, force): unpacked_files = [] if sickbeard.UNPACK and rar_files: self._log_helper(u'Packed releases detected: ' + str(rar_files)) for archive in rar_files: self._log_helper(u'Unpacking archive: ' + archive) try: rar_handle = RarFile(os.path.join(path, archive)) # Skip extraction if any file in archive has previously been extracted skip_file = False for file_in_archive in [ os.path.basename(x.filename) for x in rar_handle.infolist() if not x.isdir ]: if self._already_postprocessed(path, file_in_archive, force): self._log_helper( u'Archive file already processed, extraction skipped: ' + file_in_archive) skip_file = True break if skip_file: continue rar_handle.extract(path=path, withSubpath=False, overwrite=False) unpacked_files += [ os.path.basename(x.filename) for x in rar_handle.infolist() if not x.isdir ] del rar_handle except Exception as e: self._log_helper( u'Failed to unpack archive %s: %s' % (archive, ex(e)), logger.ERROR) self._set_process_success(False) continue self._log_helper(u'Unpacked content: ' + str(unpacked_files)) return unpacked_files
def unRAR(path, rarFiles): global process_result, returnStr unpacked_files = [] if sickbeard.UNPACK and rarFiles: returnStr += logHelper(u"Packed Releases detected: " + str(rarFiles), logger.DEBUG) for archive in rarFiles: returnStr += logHelper(u"Unpacking archive: " + archive, logger.DEBUG) try: rar_handle = RarFile(os.path.join(path, archive)) rar_handle.extract(path=path, withSubpath=False, overwrite=False) unpacked_files += [ os.path.basename(x.filename) for x in rar_handle.infolist() if not x.isdir ] del rar_handle except Exception, e: returnStr += logHelper( u"Failed Unrar archive " + archive + ': ' + ex(e), logger.ERROR) process_result = False continue returnStr += logHelper(u"UnRar content: " + str(unpacked_files), logger.DEBUG)
def unRAR(path, rarFiles): global process_result, returnStr unpacked_files = [] if sickbeard.UNPACK and rarFiles: returnStr += logHelper(u"Packed Releases detected: " + str(rarFiles), logger.DEBUG) for archive in rarFiles: returnStr += logHelper(u"Unpacking archive: " + archive, logger.DEBUG) try: rar_handle = RarFile(os.path.join(path, archive)) rar_handle.extract(path = path, withSubpath = False, overwrite = False) unpacked_files += [os.path.basename(x.filename) for x in rar_handle.infolist() if not x.isdir] del rar_handle except Exception, e: returnStr += logHelper(u"Failed Unrar archive " + archive + ': ' + ex(e), logger.ERROR) process_result = False continue returnStr += logHelper(u"UnRar content: " + str(unpacked_files), logger.DEBUG)
def unRAR(path, rarFiles, force, result): unpacked_files = [] if sickbeard.UNPACK and rarFiles: result.output += logHelper(u"Packed Releases detected: " + str(rarFiles), logger.DEBUG) for archive in rarFiles: result.output += logHelper(u"Unpacking archive: " + archive, logger.DEBUG) try: rar_handle = RarFile(os.path.join(path, archive)) # Skip extraction if any file in archive has previously been extracted skip_file = False for file_in_archive in [os.path.basename(x.filename) for x in rar_handle.infolist() if not x.isdir]: if already_postprocessed(path, file_in_archive, force, result): result.output += logHelper( u"Archive file already post-processed, extraction skipped: " + file_in_archive, logger.DEBUG) skip_file = True break if skip_file: continue rar_handle.extract(path=path, withSubpath=False, overwrite=False) for x in rar_handle.infolist(): if not x.isdir: basename = os.path.basename(x.filename) if basename not in unpacked_files: unpacked_files.append(basename) del rar_handle except Exception, e: result.output += logHelper(u"Failed Unrar archive " + archive + ': ' + ex(e), logger.ERROR) result.result = False continue result.output += logHelper(u"UnRar content: " + str(unpacked_files), logger.DEBUG)
def _unrar(self, path, rar_files, force): unpacked_files = [] if sickbeard.UNPACK and rar_files: self._log_helper(u'Packed releases detected: ' + str(rar_files)) for archive in rar_files: self._log_helper(u'Unpacking archive: ' + archive) try: rar_handle = RarFile(os.path.join(path, archive)) # Skip extraction if any file in archive has previously been extracted skip_file = False for file_in_archive in [os.path.basename(x.filename) for x in rar_handle.infolist() if not x.isdir]: if self._already_postprocessed(path, file_in_archive, force): self._log_helper( u'Archive file already processed, extraction skipped: ' + file_in_archive) skip_file = True break if skip_file: continue rar_handle.extract(path=path, withSubpath=False, overwrite=False) unpacked_files += [os.path.basename(x.filename) for x in rar_handle.infolist() if not x.isdir] del rar_handle except Exception as e: self._log_helper(u'Failed to unpack archive %s: %s' % (archive, ex(e)), logger.ERROR) self._set_process_success(False) continue self._log_helper(u'Unpacked content: ' + str(unpacked_files)) return unpacked_files
def unRAR(path, rarFiles, force, result): unpacked_files = [] if sickbeard.UNPACK and rarFiles: result.output += logHelper(u"Packed Releases detected: " + str(rarFiles), logger.DEBUG) for archive in rarFiles: result.output += logHelper(u"Unpacking archive: " + archive, logger.DEBUG) try: rar_handle = RarFile(os.path.join(path, archive)) # Skip extraction if any file in archive has previously been extracted skip_file = False for file_in_archive in [os.path.basename(x.filename) for x in rar_handle.infolist() if not x.isdir]: if already_postprocessed(path, file_in_archive, force, result): result.output += logHelper( u"Archive file already post-processed, extraction skipped: " + file_in_archive, logger.DEBUG) skip_file = True break if skip_file: continue rar_handle.extract(path=path, withSubpath=False, overwrite=False) for x in rar_handle.infolist(): if not x.isdir: basename = os.path.basename(x.filename) if basename not in unpacked_files: unpacked_files.append(basename) del rar_handle except FatalRARError: result.output += logHelper(u"Failed Unrar archive {0}: Unrar: Fatal Error".format(archive), logger.ERROR) result.result = False result.missedfiles.append(archive + " : Fatal error unpacking archive") continue except CRCRARError: result.output += logHelper(u"Failed Unrar archive {0}: Unrar: Archive CRC Error".format(archive), logger.ERROR) result.result = False result.missedfiles.append(archive + " : CRC error unpacking archive") continue except IncorrectRARPassword: result.output += logHelper(u"Failed Unrar archive {0}: Unrar: Invalid Password".format(archive), logger.ERROR) result.result = False result.missedfiles.append(archive + " : Password protected RAR") continue except NoFileToExtract: result.output += logHelper(u"Failed Unrar archive {0}: Unrar: No file extracted, check the parent folder and destination file permissions.".format(archive), logger.ERROR) result.result = False result.missedfiles.append(archive + " : Nothing was unpacked (file permissions?)") continue except GenericRARError: result.output += logHelper(u"Failed Unrar archive {0}: Unrar: Generic Error".format(archive), logger.ERROR) result.result = False result.missedfiles.append(archive + " : Unpacking Failed with a Generic Error") continue except Exception, e: result.output += logHelper(u"Failed Unrar archive " + archive + ': ' + ex(e), logger.ERROR) result.result = False result.missedfiles.append(archive + " : Unpacking failed for an unknown reason") continue result.output += logHelper(u"UnRar content: " + str(unpacked_files), logger.DEBUG)