Files
2026-02-27 08:52:30 +08:00

67 lines
2.0 KiB
Python

from flask import Flask, request, jsonify
from flask_cors import CORS
import sqlite3
import os
import datetime
BASE_DIR = os.path.dirname(__file__)
DB_PATH = os.path.join(BASE_DIR, 'hiddencode.db')
def get_conn():
return sqlite3.connect(DB_PATH)
app = Flask(__name__)
CORS(app)
@app.route('/write', methods=['POST'])
def write():
data = request.get_json() or {}
sha = data.get('sha')
upload = data.get('upload_code')
download = data.get('download_code')
if not sha:
return jsonify({'status':'error','msg':'missing sha'}), 400
now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
conn = get_conn()
c = conn.cursor()
try:
# upsert by sha
c.execute('''
INSERT INTO codes (sha, upload_code, download_code, created_at)
VALUES (?,?,?,?)
ON CONFLICT(sha) DO UPDATE SET upload_code=excluded.upload_code, download_code=excluded.download_code, created_at=excluded.created_at
''', (sha, upload, download, now))
conn.commit()
finally:
conn.close()
return jsonify({'status':'ok'})
@app.route('/read', methods=['POST'])
def read():
data = request.get_json() or {}
shas = data.get('shas', [])
conn = get_conn()
c = conn.cursor()
result = {}
if shas:
placeholders = ','.join('?' for _ in shas)
c.execute(f"SELECT sha, upload_code, download_code, created_at FROM codes WHERE sha IN ({placeholders})", shas)
rows = c.fetchall()
for sha, up, down, created in rows:
result[sha] = {'upload_code': up, 'download_code': down, 'created_at': created}
for s in shas:
if s not in result:
result[s] = None
conn.close()
return jsonify({'status':'ok','data':result})
@app.route('/health', methods=['GET'])
def health():
return jsonify({'status':'ok'})
if __name__ == '__main__':
if not os.path.exists(DB_PATH):
from db_init import init_db
init_db()
app.run(host='0.0.0.0', port=5000, debug=True)