upload-bot / database.py
Nanny7's picture
Full Telegram upload bot with Pyrogram, TMDB integration, multi-account archiving
66d1761
Raw
History Blame Contribute Delete
2.08 kB
import json
import urllib.request
import urllib.parse
import config
def api_call(method, path, data=None, params=None):
url = f"{config.API_URL}/{path}"
if params:
url += "?" + urllib.parse.urlencode(params)
req = urllib.request.Request(url, headers=config.HEADERS, method=method)
if data:
req.data = json.dumps(data).encode()
req.add_header("Content-Type", "application/json")
try:
resp = urllib.request.urlopen(req, timeout=15)
return json.loads(resp.read())
except Exception as e:
return {"error": str(e)}
def ensure_tables():
api_call("POST", "db/exec", {"sql": """
CREATE TABLE IF NOT EXISTS archives (
id INTEGER PRIMARY KEY AUTOINCREMENT,
archive_id TEXT UNIQUE NOT NULL,
file_name TEXT NOT NULL,
file_size INTEGER DEFAULT 0,
account TEXT NOT NULL,
media_id TEXT,
media_type TEXT,
title TEXT,
year TEXT,
genres TEXT,
rating REAL,
overview TEXT,
poster_path TEXT,
backdrop_path TEXT,
imdb_id TEXT,
tmdb_json TEXT,
tags TEXT,
timestamp TEXT NOT NULL,
status TEXT DEFAULT 'archived',
proxy_url TEXT,
access_count INTEGER DEFAULT 0,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
)
"""})
api_call("POST", "db/exec", {"sql": """
CREATE TABLE IF NOT EXISTS stats (
id INTEGER PRIMARY KEY AUTOINCREMENT,
archive_id TEXT,
action TEXT,
details TEXT,
timestamp TEXT
)
"""})
api_call("POST", "db/exec", {"sql": """
CREATE TABLE IF NOT EXISTS proxy_cache (
id INTEGER PRIMARY KEY AUTOINCREMENT,
file_name TEXT,
archive_id TEXT,
account TEXT,
cache_path TEXT,
expires_at TEXT,
status TEXT DEFAULT 'active'
)
"""})
ensure_tables()