forked from actlaboratory/TCV
-
Notifications
You must be signed in to change notification settings - Fork 0
/
app.py
103 lines (87 loc) · 3.58 KB
/
app.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
95
96
97
98
99
100
101
102
# -*- coding: utf-8 -*-
#Application Main
import AppBase
import sys
import simpleDialog
import datetime
import proxyUtil
import globalVars
import update
import threading
def _import():
global main, manager, twitcasting
from views import main
import manager
import twitcasting.accountManager
import twitcasting.postItem
class Main(AppBase.MainBase):
def __init__(self):
super().__init__()
if self.config["autoReadingOptions"]["viewersIncreasedAnnouncement"] == "@@@viewers_increased@@@":
self.config["autoReadingOptions"]["viewersIncreasedAnnouncement"] = _("閲覧者が$viewers人に増えました。")
if self.config["autoReadingOptions"]["viewersDecreasedAnnouncement"] == "@@@viewers_decreased@@@":
self.config["autoReadingOptions"]["viewersDecreasedAnnouncement"] = _("閲覧者が$viewers人に減りました。")
def initialize(self):
_import()
"""アプリを初期化する。"""
self.setGlobalVars()
self.proxyEnviron = proxyUtil.virtualProxyEnviron()
self.setProxyEnviron()
self.installThreadExcepthook()
# update関係を準備
if self.config.getboolean("general", "update"):
globalVars.update.update(True)
self.hMainView=main.MainView()
if self.config.getboolean(self.hMainView.identifier,"maximized",False):
self.hMainView.hFrame.Maximize()
self.hMainView.Show()
self.accountManager = twitcasting.accountManager.AccountManager()
self.hasAccountIssue = False
self.Manager = manager.manager(self.hMainView)
self.postItem = twitcasting.postItem.PostItem()
if len(self.accountManager.tokens) == 0:
simpleDialog.dialog(_("アカウント登録"), _("アカウントが登録されていません。ライブに接続する前に、設定メニューのアカウントマネージャからアカウントの登録を行ってください。"))
self.hasAccountIssue = True
return True
for i in self.accountManager.tokens:
if datetime.datetime.now().timestamp() > i["expires_at"]:
simpleDialog.dialog(_("アカウントの再登録"), _("期限が切れたトークンが見つかりました。設定メニューのアカウントマネージャから、再度アカウントの追加を行ってください。"))
self.accountManager.deleteAccount(self.accountManager.tokens.index(i))
self.hasAccountIssue = True
self.accountManager.removeUnavailableTokens()
if len(sys.argv) == 2:
self.hMainView.Clear()
self.Manager.connect(sys.argv[1])
return True
if self.hasAccountIssue == False and self.config.getboolean("general", "autoconnect", True) == True:
self.hMainView.events.connect()
return True
def setProxyEnviron(self):
if self.config.getboolean("proxy", "usemanualsetting", False) == True:
self.proxyEnviron.set_environ(self.config["proxy"]["server"], self.config.getint("proxy", "port", 8080, 0, 65535))
else:
self.proxyEnviron.set_environ()
def installThreadExcepthook(self):
_init = threading.Thread.__init__
def init(self, *args, **kwargs):
_init(self, *args, **kwargs)
_run = self.run
def run(*args, **kwargs):
try:
_run(*args, **kwargs)
except:
sys.excepthook(*sys.exc_info())
self.run = run
threading.Thread.__init__ = init
def setGlobalVars(self):
globalVars.update = update.update()
return
def OnExit(self):
#設定の保存やリソースの開放など、終了前に行いたい処理があれば記述できる
#ビューへのアクセスや終了の抑制はできないので注意。
if self.Manager.livePlayer != None:
self.Manager.livePlayer.exit()
# アップデート
globalVars.update.runUpdate()
#戻り値は無視される
return 0