コード例 #1
0
    def unpack(self, packet):
        Packer.unpack(self, packet)

        for i, j in self.dict.items():
            url = Url(-1, '')
            url.unpack(j)
            self.dict[i] = url
コード例 #2
0
    def unpack(self, packet):
        Packer.unpack(self, packet)

        for i, j in self.progresses.items():
            prog = Progress(self, -1, -1, -1)
            prog.unpack(j)
            self.progresses[i] = prog

        self.makeMap()

        for progress in self.progresses.values():
            pos = int(progress.begin * 1.0 / self.handler.file.BLOCK_SIZE)
            fil_len = int(math.ceil(progress.go_inc * 1.0 / self.handler.file.BLOCK_SIZE))
            self.block_map[pos] = progress.urlid
            for i in range(fil_len):
                self.block_map[pos + i] = progress.urlid

        self.status.endflag = self.status.go_end = self.status.done_end = self.isEnd()
コード例 #3
0
ファイル: DLManager.py プロジェクト: zoen13/iqiyi-parser
 def unpack(self, packet):
     Packer.unpack(self, packet)
コード例 #4
0
ファイル: DLHandler.py プロジェクト: mannuan/iqiyi-parser
 def unpack(self, packet):
     Packer.unpack(self, packet)
     self.__new_project__ = False
コード例 #5
0
ファイル: DLProgress.py プロジェクト: xkcomeon/iqiyi-parser
    def unpack(self, packet):
        Packer.unpack(self, packet)

        self.go_inc = self.done_inc
コード例 #6
0
ファイル: dropbox.py プロジェクト: hacklabkyiv/karmabot
class DropboxBackup(BaseBackup):
    __slots__ = ['_logger', '_packer', '_client']

    def __init__(self, client, filenames, key):
        super().__init__(filenames)
        self._logger = logging.getLogger('DropboxBackup')
        self._packer = Packer(key)
        self._client = client

        for f in self._filenames:
            if not os.path.exists(f):
                self.restore(f)

    def __call__(self):
        for f in self._filenames:
            self.backup(f)

    @staticmethod
    def create(token, filenames):
        client = dropbox.Dropbox(token)
        try:
            # Check that the access token is valid
            client.users_get_current_account()
        except AuthError:
            return None

        return DropboxBackup(client, filenames, token)

    def backup(self, filename):
        encrypted_filename = filename + '.enc'
        self._packer.pack(filename, encrypted_filename)

        result = True
        with open(encrypted_filename, 'rb') as f:
            # We use WriteMode=overwrite to make sure that the settings in the file
            # are changed on upload
            self._logger.debug(f'Uploading {encrypted_filename} to Dropbox...')
            try:
                self._client.files_upload(f.read(),
                                          filename,
                                          mode=WriteMode('overwrite'))
            except ApiError as err:
                # This checks for the specific error where a user doesn't have
                # enough Dropbox space quota to upload this file
                if (err.error.is_path() and
                        err.error.get_path().reason.is_insufficient_space()):
                    self._logger.error(
                        'ERROR: Cannot back up; insufficient space.')
                elif err.user_message_text:
                    self._logger.error(err.user_message_text)
                else:
                    self._logger.error(err)
                result = False

        return result

    def restore(self, filename, rev=None):
        encrypted_filename = filename + '.enc'

        # Restore the file on Dropbox to a certain revision
        self._logger.debug(f'Restoring {encrypted_filename} to revision {rev}')
        self._client.files_restore(encrypted_filename, rev)

        # Download the specific revision of the file at BACKUPPATH to LOCALFILE
        self._logger.debug(f'Downloading {encrypted_filename}')
        # self._client.files_download_to_file(LOCALFILE, BACKUPPATH, rev)
        self._client.files_download_to_file(encrypted_filename,
                                            encrypted_filename, rev)

        self._packer.unpack(encrypted_filename, filename)
        return True