Ejemplo n.º 1
0
def work3(book_id: int, filename: str = None):
    wk = Wenku8ToEpub()
    if filename is None:
        filename_ = wk.id2name(book_id)
        if filename == '':
            return
        filename = "%s.epub" % filename_
    data = wk.get_book(book_id, bin_mode=True, fetch_image=True)
    # response1 = client.put_object(
    #     Bucket=bucket,
    #     Body=data,
    #     # Key=filename_md5,
    #     Key="%s" % (filename, ),
    #     StorageClass='STANDARD',
    #     EnableMD5=False
    # )
    # response2 = client.put_object(
    #     Bucket=bucket,
    #     Body=(str_jump % filename).encode('gbk'),
    #     # Key=filename_md5,
    #     Key="%s.html" % (book_id, ),
    #     StorageClass='STANDARD',
    #     EnableMD5=False
    # )
    # logger.info("%s OK. %s %s" % (filename, str(response1), str(response2)))
    # return 'https://light-novel-1254016670.cos.ap-guangzhou.myqcloud.com/%s' % filename
    logger.info("%s OK。(No Cache.)" % (filename, ))
    return data
Ejemplo n.º 2
0
def v2_work(book_id: int, filename: str = None, mlogger=None, image=False):
    wk = Wenku8ToEpub()
    if filename is None:
        filename_ = wk.id2name(book_id)
        if filename == '':
            return
        filename = "%s.epub" % filename_
    # 设置最大图像规模为3MB
    if os.environ.get('WENKU8_LOCAL', 'False') == 'True':
        image_size = None
    else:
        image_size = 3 * 1024 * 1024
    data = wk.get_book(book_id,
                       bin_mode=True,
                       fetch_image=image,
                       mlogger=mlogger,
                       image_size=image_size)
    mlogger.info('小说获取完毕,准备上传到腾讯云...')
    try:
        if os.environ.get('WENKU8_LOCAL', 'False') == 'True':
            response1 = client.put_object(
                Bucket=bucket,
                Body=data,
                # Key=filename_md5,
                Key="%s" % (filename, ),
                StorageClass='STANDARD',
                EnableMD5=False)
        else:
            raise CosClientError("腾讯云上传取消。")
        # 小心内存过大
    except Exception as e:
        mlogger.warn("%s 腾讯云上传错误,准备直接返回临时下载链接..." % str(e))
        # 保存到本地
        with open('static/%s' % filename, 'wb') as f:
            f.write(data)
        filename = urllib.parse.quote(filename)
        url = '/static/%s' % filename
        lock.acquire()
        th_results[str(book_id)] = url
        lock.release()
        # 再开个线程再次尝试上传
        # threading.Thread(target=my_upload_file, args=("%s" % (filename,), bio)).start()
        return url
    mlogger.info("%s OK. %s" % (filename, str(response1)))
    if os.environ.get('WENKU8_LOCAL', 'False') == 'True':
        with open('static/%s' % filename, 'wb') as f:
            f.write(data)
        filename = urllib.parse.quote(filename)
        url = '/static/%s' % filename
    else:
        filename = urllib.parse.quote(filename)
        url = 'https://light-novel-1254016670.cos.ap-guangzhou.myqcloud.com/%s' % filename
    lock.acquire()
    th_results[str(book_id)] = url
    lock.release()
    return url
Ejemplo n.º 3
0
def work2(book_id: int, filename: str = None):
    wk = Wenku8ToEpub()
    if filename is None:
        filename_ = wk.id2name(book_id)
        if filename == '':
            return
        filename = "%s.epub" % filename_
    response = client.put_object(
        Bucket=bucket,
        Body=(str_jump % filename).encode('gbk'),
        # Body=(str_jump % ("https://light-novel-1254016670.cos.ap-guangzhou.myqcloud.com/" + urllib.quote(filename))).encode('utf-8'),
        # Key=filename_md5,
        Key="%s.html" % (book_id, ),
        StorageClass='STANDARD',
        EnableMD5=False)
    logger.info("%s OK." % filename)