DailyMotion/is_offline_api.py

52 lines
1.5 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/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/<video_id>/status", 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 = int(os.getenv("PORT", "5100"))
app.run(host=host, port=port, debug=False)