diff --git a/main.py b/main.py index ff42003..8eea806 100755 --- a/main.py +++ b/main.py @@ -1,17 +1,14 @@ #!/usr/bin/env python3 # -*- coding: utf-8 -*- -from twitch import TwitchClient - -import json import cherrypy +import json from cherrypy.process.plugins import Daemonizer +from twitch import TwitchClient -ver = '1.03' +ver = '1.04' -repl = {'"':'"', '&':'&', '<':'<', '>':'>' } - class FleastServer(object): def __init__(self): try: @@ -25,12 +22,17 @@ class FleastServer(object): self.templ_stream = reader.read() with open('./web/fl_template_lang.html', 'r') as reader: self.templ_lang = reader.read().splitlines() - self.client = TwitchClient(self.twitch_token, freq = 1) + self.client = TwitchClient(self.twitch_token, freq=1) except: print("Cannot read token for twitch app or templates, abort.") exit(1) def set_templ_lang(self, lang): + """ + Set autoselected language in html + :param lang: string with the shortcut of language + :return: string with html list of languages and one is selected + """ templ = '' end = False for l in self.templ_lang: @@ -42,12 +44,16 @@ class FleastServer(object): return templ.rstrip() def to_html(self, text): - #return ''.join(repl.get(s,s) for s in text) + """ + Relace all non xml symbols with aliases + :param text: string with html source code + :return: filtered string with html source code + """ + repl = {'"': '"', '&': '&', '<': '<', '>': '>'} for i in repl: text = text.replace(i, repl[i]) return text - @cherrypy.expose def index(self, game=None, lang=None): return self.fleast(game, lang) @@ -55,39 +61,46 @@ class FleastServer(object): @cherrypy.expose def fleast(self, game=None, lang=None): if game is None or game == '': - return self.index_page.format(_version_ = ver, _opt_langs_ = self.set_templ_lang('ru')) - + return self.index_page.format(_version_=ver, + _opt_langs_=self.set_templ_lang('ru')) game = game.rstrip() - cherrypy.log('Getting game:"%s" language:%s' % (game, lang)) + cherrypy.log('Getting game:"{}" language:{}'.format(game, lang)) data = self.client.get_live_streams(game, lang) if data is None: - return 'Internal Error
Tell me more at https://twitter.com/alexvanin' + return 'Internal Error
Tell me more at ' \ + 'https://twitter.com/alexvanin' + + if data['_total'] == 0: + return self.templ_main.format(_stream_num_=data['_total'], + _game_name_=game, + _opt_langs_=self.set_templ_lang(lang), + _stream_list_='', + _version_=ver) - if data['_total'] == 0: - return self.templ_main.format( _stream_num_ = data['_total'], _game_name_ = game, \ - _opt_langs_ = self.set_templ_lang(lang), _stream_list_ = '', \ - _version_ = ver) - cherrypy.log('Found %d streams' % data['_total']) streams = sorted(data['streams'], key=lambda k: k['viewers']) result_str = '' for s in streams: - result_str += self.templ_stream.format(s['channel']['url'], s['preview']['medium'], self.to_html(s['channel']['status']), \ - s['channel']['display_name'], s['viewers']) +'\n' + result_str += self.templ_stream.format(s['channel']['url'], + s['preview']['medium'], + self.to_html(s['channel']['status']), + s['channel']['display_name'], + s['viewers']) + '\n' + + return self.templ_main.format(_stream_num_=data['_total'], + _game_name_=game, + _opt_langs_=self.set_templ_lang(lang), + _stream_list_=result_str, + _version_=ver) - return self.templ_main.format(_stream_num_ = data['_total'], _game_name_ = game, \ - _opt_langs_ = self.set_templ_lang(lang), _stream_list_ = result_str,\ - _version_ = ver) - def main(): server = FleastServer() - d = Daemonizer(cherrypy.engine).subscribe() + # d = Daemonizer(cherrypy.engine).subscribe() cherrypy.quickstart(server, '/', './server.conf') if __name__ == '__main__': main() - diff --git a/twitch.py b/twitch.py index 6c0d51c..5fde71d 100644 --- a/twitch.py +++ b/twitch.py @@ -125,7 +125,7 @@ class TwitchClient: while total > streams: r = self.do_q(q_template.format(base, name, lang, 100, streams), header) if r is None: - return [] + return None data['streams'].extend(r['streams']) total = r['_total'] streams = len(data['streams'])