50 lines
1.1 KiB
Python
50 lines
1.1 KiB
Python
# -*- coding: utf-8 -*-
|
|
"""
|
|
Flask Web 服务
|
|
对外提供 m3u 文件访问,并支持手动触发更新
|
|
"""
|
|
|
|
import os
|
|
from flask import Flask, send_file, jsonify
|
|
from updater import update, OUTPUT_FILE
|
|
|
|
app = Flask(__name__)
|
|
|
|
|
|
@app.route("/")
|
|
def index():
|
|
"""首页,返回简单说明"""
|
|
return jsonify({
|
|
"name": "tubo-live-source",
|
|
"description": "途播播放器专用直播源",
|
|
"m3u": "/tubo.m3u",
|
|
"update": "/update",
|
|
})
|
|
|
|
|
|
@app.route("/tubo.m3u")
|
|
def m3u():
|
|
"""返回 m3u 文件;若不存在则先更新一次"""
|
|
if not os.path.exists(OUTPUT_FILE):
|
|
update()
|
|
return send_file(
|
|
OUTPUT_FILE,
|
|
mimetype="audio/x-mpegurl",
|
|
as_attachment=False,
|
|
download_name="tubo.m3u",
|
|
)
|
|
|
|
|
|
@app.route("/update")
|
|
def manual_update():
|
|
"""手动触发更新"""
|
|
path = update()
|
|
return jsonify({"status": "ok", "file": path})
|
|
|
|
|
|
if __name__ == "__main__":
|
|
# 启动前确保 m3u 存在
|
|
if not os.path.exists(OUTPUT_FILE):
|
|
update()
|
|
app.run(host="0.0.0.0", port=8000)
|