mirror of
https://github.com/tgbot-collection/YYeTsBot.git
synced 2025-11-25 03:15:05 +08:00
118 lines
4.4 KiB
Python
118 lines
4.4 KiB
Python
#!/usr/local/bin/python3
|
|
# coding: utf-8
|
|
|
|
# YYeTsBot - server.py
|
|
# 2/5/21 21:02
|
|
#
|
|
|
|
__author__ = "Benny <benny.think@gmail.com>"
|
|
|
|
import logging
|
|
import os
|
|
import platform
|
|
|
|
import pytz
|
|
from apscheduler.schedulers.background import BackgroundScheduler
|
|
from tornado import httpserver, ioloop, options, web
|
|
from tornado.log import enable_pretty_logging
|
|
|
|
from handler import (AnnouncementHandler, BlacklistHandler, CaptchaHandler,
|
|
CategoryHandler, CommentChildHandler, CommentHandler,
|
|
CommentNewestHandler, CommentReactionHandler,
|
|
DBDumpHandler, DoubanHandler, DoubanReportHandler,
|
|
GrafanaIndexHandler, GrafanaQueryHandler,
|
|
GrafanaSearchHandler, IndexHandler, LikeHandler,
|
|
MetricsHandler, NameHandler, NotFoundHandler,
|
|
NotificationHandler, ResourceHandler,
|
|
ResourceLatestHandler, TopHandler, UserEmailHandler,
|
|
UserHandler)
|
|
from migration.douban_sync import sync_douban
|
|
from Mongo import OtherMongoResource, ResourceLatestMongoResource
|
|
|
|
enable_pretty_logging()
|
|
|
|
if os.getenv("debug"):
|
|
logging.basicConfig(level=logging.DEBUG)
|
|
|
|
|
|
class RunServer:
|
|
root_path = os.path.dirname(__file__)
|
|
static_path = os.path.join(root_path, 'templates')
|
|
handlers = [
|
|
(r'/', IndexHandler),
|
|
(r'/api/resource', ResourceHandler),
|
|
(r'/api/resource/latest', ResourceLatestHandler),
|
|
(r'/api/top', TopHandler),
|
|
(r'/api/like', LikeHandler),
|
|
(r'/api/user', UserHandler),
|
|
(r'/api/user/email', UserEmailHandler),
|
|
(r'/api/name', NameHandler),
|
|
(r'/api/comment', CommentHandler),
|
|
(r'/api/comment/reaction', CommentReactionHandler),
|
|
(r'/api/comment/child', CommentChildHandler),
|
|
(r'/api/comment/newest', CommentNewestHandler),
|
|
(r'/api/captcha', CaptchaHandler),
|
|
(r'/api/metrics', MetricsHandler),
|
|
(r'/api/grafana/', GrafanaIndexHandler),
|
|
(r'/api/grafana/search', GrafanaSearchHandler),
|
|
(r'/api/grafana/query', GrafanaQueryHandler),
|
|
(r'/api/blacklist', BlacklistHandler),
|
|
(r'/api/db_dump', DBDumpHandler),
|
|
(r'/api/announcement', AnnouncementHandler),
|
|
(r'/api/douban', DoubanHandler),
|
|
(r'/api/douban/report', DoubanReportHandler),
|
|
(r'/api/notification', NotificationHandler),
|
|
(r'/api/category', CategoryHandler),
|
|
|
|
(r'/(.*\.html|.*\.js|.*\.css|.*\.png|.*\.jpg|.*\.ico|.*\.gif|.*\.woff2|.*\.gz|.*\.zip|'
|
|
r'.*\.svg|.*\.json|.*\.txt)',
|
|
web.StaticFileHandler,
|
|
{'path': static_path}),
|
|
]
|
|
settings = {
|
|
"cookie_secret": os.getenv("cookie_secret", "eo2kcgpKwXj8Q3PKYj6nIL1J4j3b58DX"),
|
|
"default_handler_class": NotFoundHandler,
|
|
"login_url": "/login",
|
|
}
|
|
application = web.Application(handlers, **settings)
|
|
|
|
@staticmethod
|
|
def run_server(port, host):
|
|
tornado_server = httpserver.HTTPServer(RunServer.application, xheaders=True)
|
|
tornado_server.bind(port, host)
|
|
if platform.uname().system == "Windows":
|
|
tornado_server.start(1)
|
|
else:
|
|
tornado_server.start(0)
|
|
|
|
try:
|
|
print('Server is running on http://{}:{}'.format(host, port))
|
|
ioloop.IOLoop.instance().current().start()
|
|
except KeyboardInterrupt:
|
|
ioloop.IOLoop.instance().stop()
|
|
print('"Ctrl+C" received, exiting.\n')
|
|
|
|
|
|
if __name__ == "__main__":
|
|
timez = pytz.timezone('Asia/Shanghai')
|
|
scheduler = BackgroundScheduler(timezone=timez)
|
|
scheduler.add_job(OtherMongoResource().reset_top, 'cron', hour=0, minute=0, day=1)
|
|
scheduler.add_job(sync_douban, 'cron', hour=0, minute=0, day=1)
|
|
scheduler.add_job(ResourceLatestMongoResource().refresh_latest_resource, 'cron', minute=0)
|
|
scheduler.start()
|
|
options.define("p", default=8888, help="running port", type=int)
|
|
options.define("h", default='127.0.0.1', help="listen address", type=str)
|
|
options.parse_command_line()
|
|
p = options.options.p
|
|
h = options.options.h
|
|
banner = """
|
|
▌ ▌ ▌ ▌ ▀▛▘
|
|
▝▞ ▝▞ ▞▀▖ ▌ ▞▀▘
|
|
▌ ▌ ▛▀ ▌ ▝▀▖
|
|
▘ ▘ ▝▀▘ ▘ ▀▀
|
|
|
|
Lazarus came back from the dead. By @Bennythink
|
|
"""
|
|
print(banner)
|
|
RunServer.run_server(port=p, host=h)
|