def update(): try: tmp_dir = tempfile.mkdtemp(prefix='QQWry') old_d = os.getcwd() try: Q = MQQWry() except OSError as e: print('注意:原数据文件无法打开:', e) Q = None os.chdir(tmp_dir) p = subprocess.Popen(['wget', copywrite_url]) p.wait() d = open('copywrite.rar', 'rb').read() info = unpack_meta(d) date = _extract_date(info['text']) if Q and date <= Q.getDate(): print(info['text'], '是最新的!') return else: print(info['text'], '开始下载...') p = subprocess.Popen(['wget', data_url]) p.wait() d = open('qqwry.rar', 'rb').read() d = decipher_data(info['key'], d) d = zlib.decompress(d) os.chdir(old_d) safe_overwrite(DataFileName, d, mode='wb') old_c = Q and Q.Count or 0 Q = MQQWry() print('已经更新!数据条数 %d->%d.' % (old_c, Q.Count)) finally: shutil.rmtree(tmp_dir)
def update(file, q): import urllib.request import tempfile import sys import shutil import subprocess import re from myutils import safe_overwrite try: tmp_dir = tempfile.mkdtemp(prefix='IPDB') try: D = IPDB(file) except OSError as e: print('注意:原数据文件无法打开:', e, file=sys.stderr) D = None req = urllib.request.urlopen('http://ip.zxinc.org/index.htm') page = req.read().decode('utf-8') date = re.findall(r'版本(\d{8})', page)[0] date = int(date) if D and date <= D.version_date(): if not q: print(D, '是最新的!', file=sys.stderr) return else: if q != 2: print(D and D.version_info()[0] or '', f'{date}版', '开始下载...', file=sys.stderr, flush=True) wget = ['wget'] if q: wget.append('-q') subprocess.run(['wget', 'http://ip.zxinc.org/ip.7z'], check=True, cwd=tmp_dir) subprocess.run(['7z', 'x', 'ip.7z'], check=True, cwd=tmp_dir) with open(os.path.join(tmp_dir, 'ipv6wry.db'), 'rb') as f: d = f.read() safe_overwrite(file, d, mode='wb') old_c = D and D.count or 0 D = IPDB(file) if q != 2: print('已经更新!数据条数 %d->%d.' % (old_c, D.count), file=sys.stderr) finally: shutil.rmtree(tmp_dir)
def update(q): try: tmp_dir = tempfile.mkdtemp(prefix='QQWry') old_d = os.getcwd() try: Q = QQWry() except OSError as e: print('注意:原数据文件无法打开:', e, file=sys.stderr) Q = None os.chdir(tmp_dir) wget = ['wget', '-4', '-U', 'Mozilla/3.0 (compatible; Indy Library)'] if q: wget.append('-q') subprocess.run(wget + [copywrite_url], check=True) with open('copywrite.rar', 'rb') as f: d = f.read() info = unpack_meta(d) date = _extract_date(info['text']) if Q and date <= Q.getDate(): if not q: print(info['text'], '是最新的!', file=sys.stderr) return else: if q != 2: print(info['text'], '开始下载...', file=sys.stderr, flush=True) p = subprocess.Popen([ 'wget', '-4', '-U', 'Mozilla/3.0 (compatible; Indy Library)', data_url ]) p.wait() d = open('qqwry.rar', 'rb').read() d = decipher_data(info['key'], d) d = zlib.decompress(d) os.chdir(old_d) safe_overwrite(DataFileName, d, mode='wb') old_c = Q and Q.count or 0 Q = QQWry() if q != 2: print('已经更新!数据条数 %d->%d.' % (old_c, Q.count), file=sys.stderr) finally: shutil.rmtree(tmp_dir)
def update(q): try: tmp_dir = tempfile.mkdtemp(prefix="QQWry") old_d = os.getcwd() try: Q = MQQWry() except OSError as e: print("注意:原数据文件无法打开:", e, file=sys.stderr) Q = None os.chdir(tmp_dir) wget = ["wget"] if q: wget.append("-q") p = subprocess.Popen(wget + [copywrite_url]) p.wait() d = open("copywrite.rar", "rb").read() info = unpack_meta(d) date = _extract_date(info["text"]) if Q and date <= Q.getDate(): if not q: print(info["text"], "是最新的!", file=sys.stderr) return else: if q != 2: print(info["text"], "开始下载...", file=sys.stderr, flush=True) p = subprocess.Popen(["wget", data_url]) p.wait() d = open("qqwry.rar", "rb").read() d = decipher_data(info["key"], d) d = zlib.decompress(d) os.chdir(old_d) safe_overwrite(DataFileName, d, mode="wb") old_c = Q and Q.Count or 0 Q = MQQWry() if q != 2: print("已经更新!数据条数 %d->%d." % (old_c, Q.Count), file=sys.stderr) finally: shutil.rmtree(tmp_dir)
def save(self): data = dump(self.data) safe_overwrite(self.fname, data)
def update(file, q): import urllib.request import tempfile import sys import shutil import subprocess import re from myutils import safe_overwrite host = 'http://ip.zxinc.org' try: tmp_dir = tempfile.mkdtemp(prefix='IPDB') try: D = IPDB(file) except OSError as e: print('注意:原数据文件无法打开:', e, file=sys.stderr) D = None req = urllib.request.Request( host, headers={ 'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64; rv:90.0) Gecko/20100101 Firefox/90.0', }) res = urllib.request.urlopen(req, timeout=30) page = res.read().decode('utf-8') m = re.search(r'href="([^"]+)".*?版本(\d{8})', page) date = int(m.group(2)) remote_file = m.group(1) if D and date <= D.version_date(): if not q: print(D, '是最新的!', file=sys.stderr) return else: if q != 2: print(D and D.version_info()[0] or '', f'{date}版', '开始下载...', file=sys.stderr, flush=True) wget = ['wget'] if q: wget.append('-q') subprocess.run([ 'wget', '-U', 'Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Firefox/78.0', f'{host}/{remote_file}', ], check=True, cwd=tmp_dir) subprocess.run(['7z', 'x', remote_file], check=True, cwd=tmp_dir) with open(os.path.join(tmp_dir, 'ipv6wry.db'), 'rb') as f: d = f.read() safe_overwrite(file, d, mode='wb') old_c = D and D.count or 0 D = IPDB(file) if q != 2: print('已经更新!数据条数 %d->%d.' % (old_c, D.count), file=sys.stderr) finally: shutil.rmtree(tmp_dir)
def save(self): data = pickle.dumps(self.data) safe_overwrite(self.fname, data, mode='wb')
def replaceFile(macro, file): lines = open(file).readlines() safe_overwrite(file, [replaceline(macro, l) for l in lines], method='writelines')
def _save_timed_dict( path: os.PathLike, data: Dict[str, int], ) -> None: data_str = ''.join(f'{k} {v}\n' for k, v in data.items()) safe_overwrite(str(path), data_str, mode='w')