#!/usr/bin/env python3 # app.py import requests from flask import Flask, jsonify, abort app = Flask(__name__) def check_video_removed(video_id): """ 调用 Dailymotion API 判断视频是否已下架/删除 返回: 1 → 已被删除 / 不存在 / 已下架 / 设为私有 0 → 正常公开中 """ url = f"https://api.dailymotion.com/video/{video_id}" params = {"fields": "published,private,status"} try: resp = requests.get(url, params=params, timeout=10) except requests.RequestException as exc: # 网络错误时返回 503,让上游知道需要重试 abort(503, description=f"Upstream request failed: {exc}") # 404 → 不存在或已被删除 if resp.status_code == 404: return 1 # 其他非 2xx 状态码 → 直接透传给客户端 if resp.status_code // 100 != 2: abort(resp.status_code, description=resp.text) data = resp.json() # published=False 或 private=True 都视作“已下架” if not data.get("published", False) or data.get("private", False): return 1 return 0 @app.route("/video/", methods=["GET"]) def video_status(video_id): removed = check_video_removed(video_id) return jsonify({"video_id": video_id, "removed": removed}) if __name__ == "__main__": # 支持通过环境变量覆盖监听地址和端口 import os host = os.getenv("HOST", "0.0.0.0") port = 5100 app.run(host=host, port=port, debug=False)