-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.py
94 lines (65 loc) · 2.55 KB
/
main.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
import os
import requests
from flask import Flask, render_template, send_file, request, g, redirect, url_for
from flask_babel import Babel, _
from blueprints.multilingual import multilingual, LANGUAGES
TG_BOT_TOKEN = os.getenv("TOKEN")
TG_CHAT_ID = os.getenv("CHAT")
GITHUB_TOKEN = os.getenv("GITHUB_TOKEN")
app = Flask(__name__)
app.register_blueprint(multilingual)
babel = Babel(app)
def get_locale():
if g.get('lang_code', None) not in LANGUAGES:
if request.cookies.get('lang', None) not in LANGUAGES:
if not request.accept_languages.best_match(LANGUAGES):
ip_country = request.headers.get("CF-IPCountry")
g.lang_code = "ru" if ip_country == "RU" else "en"
else:
g.lang_code = request.accept_languages.best_match(LANGUAGES)
else:
g.lang_code = request.cookies.get('lang')
return g.lang_code
babel.init_app(app, locale_selector=get_locale)
@app.route('/')
def index():
g.lang_code = get_locale()
return redirect(url_for('multilingual.index'))
@app.route("/api/v1/stats/social-click/<site_name>")
def social_click(site_name):
requests.get(f"https://api.telegram.org/bot{TG_BOT_TOKEN}/sendMessage?"
f"chat_id={TG_CHAT_ID}&text=Nawinds:%20Переход%20по%20ссылке%20на%20{site_name}")
return "OK"
@app.route("/api/v1/projects/get_version")
def get_project_version():
github_repo = request.args.get("github_repo")
headers = {"Accept": "application/vnd.github+json",
"Authorization": "Bearer " + GITHUB_TOKEN,
"X-GitHub-Api-Version": "2022-11-28"}
r = requests.get(f"https://api.github.com/repos/{github_repo.strip()}/releases",
headers=headers)
if not r.json():
return "No releases for this project", 404
return r.json()[0]["name"]
@app.route("/favicon.ico")
def favicon():
return send_file("static/icons/favicon/favicon.ico")
@app.route("/robots.txt")
def robots():
return send_file("static/robots.txt")
@app.route("/sitemap.xml")
def sitemap():
return send_file("static/sitemap.xml")
@app.route("/lucky")
def lucky():
return render_template("lucky.jinja2")
@app.route("/killer")
def killer():
return render_template("killer.jinja2")
@app.errorhandler(404)
def not_found(e):
return render_template("error.jinja2", status_code="404",
error_heading=_("not_found_header"),
error_description=_("not_found_desc")), 404
if __name__ == '__main__':
app.run("0.0.0.0", port=5001)