Spaces:
Paused
Paused
| from flask import Flask, request, jsonify, redirect, Response | |
| import os | |
| import requests | |
| import subprocess | |
| import sys | |
| app = Flask(__name__) | |
| watcher_process = None | |
| dmsender_process = None | |
| def start_watcher(): | |
| global watcher_process, dmsender_process | |
| if watcher_process is None or watcher_process.poll() is not None: | |
| watcher_process = subprocess.Popen( | |
| [sys.executable, "watcher.py"], | |
| stdout=sys.stdout, | |
| stderr=sys.stderr, | |
| env=os.environ, | |
| ) | |
| print("watcher.py を起動しました") | |
| if dmsender_process is None or dmsender_process.poll() is not None: | |
| dmsender_process = subprocess.Popen( | |
| [sys.executable, "news.py"], | |
| stdout=sys.stdout, | |
| stderr=sys.stderr, | |
| env=os.environ, | |
| ) | |
| print("news.py を起動しました") | |
| #---------- | |
| def index(): | |
| ip = request.remote_addr | |
| print(f"アクセスIP: {ip}") | |
| return redirect("https://drive.google.com/") | |
| def get_managers(): | |
| limit = request.args.get("limit") | |
| since = request.args.get("since") | |
| params = {} | |
| if limit: | |
| params["limit"] = limit | |
| if since: | |
| params["since"] = since | |
| channel_id = request.args.get("channelid", "200605") | |
| url = f"https://desk-api.channel.io/desk/channels/{channel_id}/managers" | |
| headers = { | |
| "accept": "application/json", | |
| "x-account": os.getenv("channeliotokenmain"), | |
| } | |
| res = requests.get(url, headers=headers, params=params) | |
| if res.status_code != 200: | |
| return jsonify({"error": res.text}), res.status_code | |
| return jsonify(res.json().get("managers", [])) | |
| def corsproxy(): | |
| url = request.args.get("url") | |
| if not url: | |
| return "url パラメータが必要です", 400 | |
| if not url.startswith(("http://", "https://")): | |
| return "http または https のURLのみ使用できます", 400 | |
| resp = requests.get(url, headers=request.headers, timeout=60) | |
| response = Response(resp.content, resp.status_code) | |
| response.headers["Access-Control-Allow-Origin"] = "*" | |
| response.headers["Access-Control-Allow-Headers"] = "*" | |
| response.headers["Access-Control-Allow-Methods"] = "GET, POST, PATCH, OPTIONS" | |
| if "Content-Type" in resp.headers: | |
| response.headers["Content-Type"] = resp.headers["Content-Type"] | |
| return response | |
| def corsproxy_post(): | |
| url = request.args.get("url") | |
| if not url: | |
| return "url パラメータが必要です", 400 | |
| if not url.startswith(("http://", "https://")): | |
| return "http または https のURLのみ使用できます", 400 | |
| resp = requests.request( | |
| method=request.method, | |
| url=url, | |
| headers=request.headers, | |
| data=request.data, | |
| timeout=60, | |
| ) | |
| headers = { | |
| "Access-Control-Allow-Origin": "*", | |
| "Access-Control-Allow-Headers": "*", | |
| "Access-Control-Allow-Methods": "GET, POST, PATCH, OPTIONS", | |
| } | |
| return Response(resp.content, resp.status_code, headers=headers) | |
| if __name__ == "__main__": | |
| if os.environ.get("WERKZEUG_RUN_MAIN") != "true": | |
| start_watcher() | |
| app.run(debug=True, host="0.0.0.0", port=7860) |