Example #1
0
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)
Example #2
0
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)
Example #3
0
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)
Example #4
0
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)
Example #5
0
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)
Example #6
0
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)
Example #7
0
 def save(self):
   data = dump(self.data)
   safe_overwrite(self.fname, data)
Example #8
0
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)
Example #9
0
 def save(self):
   data = pickle.dumps(self.data)
   safe_overwrite(self.fname, data, mode='wb')
Example #10
0
def replaceFile(macro, file):
  lines = open(file).readlines()
  safe_overwrite(file, [replaceline(macro, l) for l in lines], method='writelines')
Example #11
0
 def save(self):
     data = dump(self.data)
     safe_overwrite(self.fname, data)
Example #12
0
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')
Example #13
0
 def save(self):
     data = pickle.dumps(self.data)
     safe_overwrite(self.fname, data, mode='wb')