AstroResearch/scratch/test_qiniu.py
Asfmq cd6af4f995 feat: 重构 PDF/文献检索同步机制、升级引力图交互与控制台 UI 样式
- [后端/PDF解析] 重构 MinerU PDF 解析流程:引入预签名两阶段直传机制,解决大文件 API 传输限制问题;支持轮询机制与本地 images 备用目录存储。
- [后端/同步与下载] 新增经典 ADS SCAN 扫描件 PDF 和 ADS_PDF 直接通道的下载逻辑;新增常用同步检索配置的持久化存储与去重管理 API。
- [后端/日志] 重构日志系统,支持控制台 pretty 输出与每日滚动文件日志(使用上海 +08:00 时区),引入 HTTP 路由请求链路追踪。
- [前端/引力图] 升级引用星系图 canvas 交互:支持平移拖拽与滚轮缩放,添加引力圈轨道装饰及未导入文献的半透明视觉区分。
- [前端/控制台] 统一重构为扁平高对比度浅色纯中文控制台样式;重新设计文献详情弹窗与状态进度条。
- [数据库] 新增 papers 表的 doctype 字段及 sync_queries 检索配置表。
2026-06-10 17:29:07 +08:00

45 lines
1.4 KiB
Python

import base64
import hmac
import hashlib
import json
import time
import requests
def urlsafe_base64_encode(data):
if isinstance(data, str):
data = data.encode('utf-8')
ret = base64.urlsafe_b64encode(data)
# base64url standard replaces padding '=' with nothing
return ret.decode('utf-8').rstrip('=')
def generate_token(ak, sk, bucket, key, scope_key=True):
deadline = int(time.time()) + 3600
scope = f"{bucket}:{key}" if scope_key else bucket
policy = {
"scope": scope,
"deadline": deadline
}
policy_str = json.dumps(policy, separators=(',', ':'))
encoded_policy = urlsafe_base64_encode(policy_str)
# hmac-sha1
hashed = hmac.new(sk.encode('utf-8'), encoded_policy.encode('utf-8'), hashlib.sha1)
encoded_signature = urlsafe_base64_encode(hashed.digest())
return f"{ak}:{encoded_signature}:{encoded_policy}"
ak = "vf63aPF-QIFbyzULtHaSx9JgiVSS3zRuy0zmBACE"
sk = "JlQvHevHSAgilNYaH0UxQoX68rb4m9VflpaXtYL1"
bucket = "fmqi-img"
key = "astroresearch/test_hello.txt"
token = generate_token(ak, sk, bucket, key, scope_key=True)
print(f"Generated python token: {token}")
# Let's try uploading
files = {'file': ('test.txt', b'hello python')}
data = {'token': token, 'key': key}
res = requests.post("https://up-z1.qiniup.com", data=data, files=files)
print(f"Python upload status: {res.status_code}")
print(f"Python upload response: {res.text}")