def METHOD_NAME(self):
    import zipfile
    if not self.download_url or not self.extract_to:
        return
    with BusyDialog():
        response = self.open_url(self.download_url)
    if not response:
        Dialog().ok(ADDONNAME, get_localized(32058))
        return
    if not os.path.exists(self.extract_to):
        os.makedirs(self.extract_to)
    if Dialog().yesno(ADDONNAME, self.msg_cleardir):
        with BusyDialog():
            self.clear_dir(self.extract_to)
    with BusyDialog():
        num_files = 0
        with zipfile.ZipFile(BytesIO(response.content)) as downloaded_zip:
            for item in [x for x in downloaded_zip.namelist() if x.endswith('.json')]:
                filename = os.path.basename(item)
                if not filename:
                    continue
                _file = downloaded_zip.open(item)
                with open(os.path.join(self.extract_to, filename), 'wb') as target:
                    target.write(_file.read())
                    num_files += 1
        try:
            _tempzip = os.path.join(self.extract_to, 'temp.zip')
            os.remove(_tempzip)
        except Exception as exc:
            kodi_log(f'Could not delete package {_tempzip}: {exc}')
    if num_files:
        Dialog().ok(ADDONNAME, f'{get_localized(32059)}\n\n{num_files} {get_localized(32060)}.')