2021-12-01 18:31:19 +00:00
|
|
|
#!/usr/bin/env python3
|
2019-10-01 17:52:13 +00:00
|
|
|
#encoding=utf-8
|
2022-11-11 16:46:36 +00:00
|
|
|
# 'seleniumwire' and 'selenium 4' raise error when running python 2.x
|
|
|
|
# PS: python 2.x will be removed in future.
|
2019-10-01 17:52:13 +00:00
|
|
|
|
|
|
|
try:
|
|
|
|
# for Python2
|
|
|
|
from Tkinter import *
|
|
|
|
import ttk
|
|
|
|
import tkMessageBox as messagebox
|
|
|
|
except ImportError:
|
|
|
|
# for Python3
|
|
|
|
from tkinter import *
|
|
|
|
from tkinter import ttk
|
|
|
|
from tkinter import messagebox
|
|
|
|
|
|
|
|
import os
|
|
|
|
import sys
|
2021-12-01 18:31:19 +00:00
|
|
|
import platform
|
2019-10-01 17:52:13 +00:00
|
|
|
import json
|
2022-11-13 18:34:22 +00:00
|
|
|
import webbrowser
|
2019-10-01 17:52:13 +00:00
|
|
|
|
2022-11-14 02:08:13 +00:00
|
|
|
CONST_APP_VERSION = u"MaxBot (2022.11.14) ver.2"
|
2019-10-01 17:52:13 +00:00
|
|
|
|
|
|
|
CONST_FROM_TOP_TO_BOTTOM = u"from top to bottom"
|
|
|
|
CONST_FROM_BOTTOM_TO_TOP = u"from bottom to top"
|
|
|
|
CONST_RANDOM = u"random"
|
|
|
|
CONST_SELECT_ORDER_DEFAULT = CONST_FROM_TOP_TO_BOTTOM
|
|
|
|
CONST_SELECT_OPTIONS_DEFAULT = (CONST_FROM_TOP_TO_BOTTOM, CONST_FROM_BOTTOM_TO_TOP, CONST_RANDOM)
|
|
|
|
CONST_SELECT_OPTIONS_ARRAY = [CONST_FROM_TOP_TO_BOTTOM, CONST_FROM_BOTTOM_TO_TOP, CONST_RANDOM]
|
|
|
|
|
|
|
|
config_filepath = None
|
|
|
|
config_dict = None
|
|
|
|
|
|
|
|
window = None
|
|
|
|
|
|
|
|
btn_save = None
|
|
|
|
btn_exit = None
|
|
|
|
|
2022-11-11 16:46:36 +00:00
|
|
|
translate={}
|
|
|
|
|
2022-11-13 18:34:22 +00:00
|
|
|
URL_DONATE = 'https://max-everyday.com/about/#donate'
|
|
|
|
URL_HELP = 'https://max-everyday.com/2018/03/tixcraft-bot/'
|
|
|
|
URL_RELEASE = 'https://github.com/max32002/tixcraft_bot/releases'
|
|
|
|
|
|
|
|
|
2022-11-11 16:46:36 +00:00
|
|
|
def load_translate():
|
2022-11-13 18:34:22 +00:00
|
|
|
translate = {}
|
2022-11-11 16:46:36 +00:00
|
|
|
en_us={}
|
|
|
|
en_us["homepage"] = 'Homepage'
|
|
|
|
en_us["browser"] = 'Browser'
|
|
|
|
en_us["language"] = 'Language'
|
|
|
|
en_us["ticket_number"] = 'Ticker Number'
|
|
|
|
en_us["enable"] = 'Enable'
|
|
|
|
en_us["auto_press_next_step_button"] = 'Auto Press Next Step Button'
|
|
|
|
en_us["auto_fill_ticket_number"] = 'Auto Fill Ticket Number'
|
|
|
|
en_us["area_select_order"] = 'Area select order'
|
|
|
|
en_us["area_keyword"] = 'Area Keyword'
|
2022-11-13 18:34:22 +00:00
|
|
|
en_us["and"] = 'And with'
|
2022-11-11 16:46:36 +00:00
|
|
|
en_us["auto_guess_options"] = 'Guess Options in Question'
|
|
|
|
|
|
|
|
en_us["date_auto_select"] = 'Date Auto Select'
|
|
|
|
en_us["date_select_order"] = 'Date select order'
|
|
|
|
en_us["date_keyword"] = 'Date Keyword'
|
|
|
|
en_us["area_auto_select"] = 'Area Auto Select'
|
|
|
|
#en_us["area_select_order"] = 'Area select order'
|
|
|
|
en_us["area_keyword_1"] = 'Area Keyword #1'
|
|
|
|
en_us["area_keyword_2"] = 'Area Keyword #2'
|
|
|
|
en_us["area_keyword_3"] = 'Area Keyword #3'
|
|
|
|
en_us["area_keyword_4"] = 'Area Keyword #4'
|
|
|
|
en_us["pass_1_seat_remaining"] = 'Pass 1 seat remaining'
|
|
|
|
en_us["pass_date_is_sold_out"] = 'Pass date is sold out'
|
|
|
|
en_us["auto_reload_coming_soon_page"] = 'Reload coming soon page'
|
|
|
|
|
|
|
|
en_us["run"] = 'Run'
|
|
|
|
en_us["save"] = 'Save'
|
|
|
|
en_us["donate"] = 'Donate'
|
2022-11-13 18:34:22 +00:00
|
|
|
en_us["help"] = 'Help'
|
|
|
|
en_us["preference"] = 'Preference'
|
|
|
|
en_us["release"] = 'Release'
|
|
|
|
en_us["exit"] = 'Close'
|
|
|
|
en_us["about"] = 'About'
|
|
|
|
en_us["maxbot_slogan"] = 'MaxBot is a FREE and open source bot program. Good luck getting your expected ticket.'
|
2022-11-11 16:46:36 +00:00
|
|
|
|
|
|
|
zh_tw={}
|
|
|
|
zh_tw["homepage"] = '售票網站'
|
|
|
|
zh_tw["browser"] = '瀏覽器'
|
|
|
|
zh_tw["language"] = '語言'
|
|
|
|
zh_tw["ticket_number"] = '門票張數'
|
|
|
|
zh_tw["enable"] = '啟用'
|
|
|
|
zh_tw["auto_press_next_step_button"] = '自動點選下一步按鈕'
|
|
|
|
zh_tw["auto_fill_ticket_number"] = '自動輸入張數'
|
|
|
|
zh_tw["area_select_order"] = '區域排序方式'
|
|
|
|
zh_tw["area_keyword"] = '區域關鍵字'
|
2022-11-13 18:34:22 +00:00
|
|
|
zh_tw["and"] = '而且(同列)'
|
2022-11-11 16:46:36 +00:00
|
|
|
zh_tw["auto_guess_options"] = '自動猜測驗證問題'
|
|
|
|
|
|
|
|
zh_tw["date_auto_select"] = '日期自動點選'
|
|
|
|
zh_tw["date_select_order"] = '日期排序方式'
|
|
|
|
zh_tw["date_keyword"] = '日期關鍵字'
|
|
|
|
zh_tw["area_auto_select"] = '區域自動點選'
|
|
|
|
#zh_tw["area_select_order"] = '區域排序方式'
|
|
|
|
zh_tw["area_keyword_1"] = '區域關鍵字 #1'
|
|
|
|
zh_tw["area_keyword_2"] = '區域關鍵字 #2'
|
|
|
|
zh_tw["area_keyword_3"] = '區域關鍵字 #3'
|
|
|
|
zh_tw["area_keyword_4"] = '區域關鍵字 #4'
|
|
|
|
zh_tw["pass_1_seat_remaining"] = '避開「剩餘 1」的區域'
|
|
|
|
zh_tw["pass_date_is_sold_out"] = '避開「搶購一空」的場次'
|
|
|
|
zh_tw["auto_reload_coming_soon_page"] = '自動刷新倒數中的活動頁面'
|
|
|
|
|
|
|
|
zh_tw["run"] = '搶票'
|
|
|
|
zh_tw["save"] = '存檔'
|
|
|
|
zh_tw["donate"] = '打賞'
|
2022-11-13 18:34:22 +00:00
|
|
|
zh_tw["help"] = '使用教學'
|
|
|
|
zh_tw["preference"] = '偏好設定'
|
|
|
|
zh_tw["release"] = '所有可用版本'
|
2022-11-11 16:46:36 +00:00
|
|
|
zh_tw["exit"] = '關閉'
|
2022-11-13 18:34:22 +00:00
|
|
|
zh_tw["about"] = '關於'
|
|
|
|
zh_tw["maxbot_slogan"] = 'MaxBot是一個免費、開放原始碼的搶票機器人。\n祝你好運,買得到預期中的票。'
|
2022-11-11 16:46:36 +00:00
|
|
|
|
|
|
|
zh_cn={}
|
|
|
|
zh_cn["homepage"] = '售票网站'
|
|
|
|
zh_cn["browser"] = '浏览器'
|
|
|
|
zh_cn["language"] = '语言'
|
|
|
|
zh_cn["ticket_number"] = '门票张数'
|
|
|
|
zh_cn["enable"] = '启用'
|
|
|
|
zh_cn["auto_press_next_step_button"] = '自动点选下一步按钮'
|
|
|
|
zh_cn["auto_fill_ticket_number"] = '自动输入张数'
|
|
|
|
zh_cn["area_select_order"] = '区域排序方式'
|
|
|
|
zh_cn["area_keyword"] = '区域关键字'
|
2022-11-13 18:34:22 +00:00
|
|
|
zh_cn["and"] = '而且(同列)'
|
2022-11-11 16:46:36 +00:00
|
|
|
zh_cn["auto_guess_options"] = '自动猜测验证问题'
|
|
|
|
|
|
|
|
zh_cn["date_auto_select"] = '日期自动点选'
|
|
|
|
zh_cn["date_select_order"] = '日期排序方式'
|
|
|
|
zh_cn["date_keyword"] = '日期关键字'
|
|
|
|
zh_cn["area_auto_select"] = '区域自动点选'
|
|
|
|
#zh_cn["area_select_order"] = '区域排序方式'
|
|
|
|
zh_cn["area_keyword_1"] = '区域关键字 #1'
|
|
|
|
zh_cn["area_keyword_2"] = '区域关键字 #2'
|
|
|
|
zh_cn["area_keyword_3"] = '区域关键字 #3'
|
|
|
|
zh_cn["area_keyword_4"] = '区域关键字 #4'
|
|
|
|
zh_cn["pass_1_seat_remaining"] = '避开“剩余 1”的区域'
|
|
|
|
zh_cn["pass_date_is_sold_out"] = '避开“抢购一空”的场次'
|
|
|
|
zh_cn["auto_reload_coming_soon_page"] = '自动刷新倒数中的活动页面'
|
2022-11-13 18:34:22 +00:00
|
|
|
zh_cn["maxbot_slogan"] = 'MaxBot 是一个免费的开源机器人程序。\n祝你好运,买得到预期中的票。'
|
2022-11-11 16:46:36 +00:00
|
|
|
|
|
|
|
zh_cn["run"] = '抢票'
|
|
|
|
zh_cn["save"] = '存档'
|
|
|
|
zh_cn["donate"] = '打赏'
|
2022-11-13 18:34:22 +00:00
|
|
|
zh_cn["help"] = '使用教学'
|
|
|
|
zh_cn["preference"] = '偏好设定'
|
|
|
|
zh_cn["release"] = '所有可用版本'
|
2022-11-11 16:46:36 +00:00
|
|
|
zh_cn["exit"] = '关闭'
|
2022-11-13 18:34:22 +00:00
|
|
|
zh_cn["about"] = '关于'
|
2022-11-11 16:46:36 +00:00
|
|
|
|
|
|
|
ja_jp={}
|
|
|
|
ja_jp["homepage"] = 'ホームページ'
|
|
|
|
ja_jp["browser"] = 'ブラウザ'
|
|
|
|
ja_jp["language"] = '言語'
|
|
|
|
ja_jp["ticket_number"] = '枚数'
|
|
|
|
ja_jp["enable"] = '有効'
|
|
|
|
ja_jp["auto_press_next_step_button"] = '次を自動で押す'
|
|
|
|
ja_jp["auto_fill_ticket_number"] = '枚数自動入力'
|
|
|
|
ja_jp["area_select_order"] = 'エリアソート方法'
|
|
|
|
ja_jp["area_keyword"] = 'エリアキーワード'
|
2022-11-13 18:34:22 +00:00
|
|
|
ja_jp["and"] = 'そして(同列)'
|
2022-11-11 16:46:36 +00:00
|
|
|
ja_jp["auto_guess_options"] = '自動推測検証問題'
|
|
|
|
|
|
|
|
ja_jp["date_auto_select"] = '日付自動選択'
|
|
|
|
ja_jp["date_select_order"] = '日付のソート方法'
|
|
|
|
ja_jp["date_keyword"] = '日付キーワード'
|
|
|
|
ja_jp["area_auto_select"] = 'エリア自動選択'
|
|
|
|
#ja_jp["area_select_order"] = 'エリアソート方法'
|
|
|
|
ja_jp["area_keyword_1"] = 'エリアキーワード #1'
|
|
|
|
ja_jp["area_keyword_2"] = 'エリアキーワード #2'
|
|
|
|
ja_jp["area_keyword_3"] = 'エリアキーワード #3'
|
|
|
|
ja_jp["area_keyword_4"] = 'エリアキーワード #4'
|
2022-11-11 16:54:22 +00:00
|
|
|
ja_jp["pass_1_seat_remaining"] = '「1 席残り」エリアは避ける'
|
2022-11-11 16:46:36 +00:00
|
|
|
ja_jp["pass_date_is_sold_out"] = '「売り切れ」公演を避ける'
|
|
|
|
ja_jp["auto_reload_coming_soon_page"] = '公開予定のページをリロード'
|
|
|
|
|
|
|
|
ja_jp["run"] = 'チケットを取る'
|
|
|
|
ja_jp["save"] = '保存'
|
|
|
|
ja_jp["donate"] = '寄付'
|
2022-11-13 18:34:22 +00:00
|
|
|
ja_jp["help"] = '利用方法'
|
|
|
|
ja_jp["preference"] = '設定'
|
|
|
|
ja_jp["release"] = 'リリース'
|
2022-11-11 16:46:36 +00:00
|
|
|
ja_jp["exit"] = '閉じる'
|
2022-11-13 18:34:22 +00:00
|
|
|
ja_jp["about"] = '情報'
|
|
|
|
ja_jp["maxbot_slogan"] = 'MaxBot は無料のオープン ソース ボット プログラムです。 頑張って予定のチケットを手に入れてください。'
|
2022-11-11 16:46:36 +00:00
|
|
|
|
|
|
|
translate['en_us']=en_us
|
|
|
|
translate['zh_tw']=zh_tw
|
|
|
|
translate['zh_cn']=zh_cn
|
|
|
|
translate['ja_jp']=ja_jp
|
2022-11-13 18:34:22 +00:00
|
|
|
return translate
|
2022-11-11 16:46:36 +00:00
|
|
|
|
2019-10-01 17:52:13 +00:00
|
|
|
def load_json():
|
|
|
|
# 讀取檔案裡的參數值
|
|
|
|
basis = ""
|
|
|
|
if hasattr(sys, 'frozen'):
|
|
|
|
basis = sys.executable
|
|
|
|
else:
|
|
|
|
basis = sys.argv[0]
|
|
|
|
app_root = os.path.dirname(basis)
|
|
|
|
|
2022-11-13 18:34:22 +00:00
|
|
|
# overwrite config path.
|
2019-10-01 17:52:13 +00:00
|
|
|
config_filepath = os.path.join(app_root, 'settings.json')
|
|
|
|
|
|
|
|
config_dict = None
|
|
|
|
if os.path.isfile(config_filepath):
|
|
|
|
with open(config_filepath) as json_data:
|
|
|
|
config_dict = json.load(json_data)
|
2022-11-13 18:34:22 +00:00
|
|
|
return config_filepath, config_dict
|
2019-10-01 17:52:13 +00:00
|
|
|
|
|
|
|
def btn_save_clicked():
|
|
|
|
btn_save_act()
|
|
|
|
|
|
|
|
def btn_save_act(slience_mode=False):
|
|
|
|
|
|
|
|
is_all_data_correct = True
|
|
|
|
|
|
|
|
global config_filepath
|
|
|
|
|
|
|
|
global config_dict
|
|
|
|
if not config_dict is None:
|
|
|
|
# read user input
|
|
|
|
|
|
|
|
global combo_homepage
|
|
|
|
global combo_browser
|
2022-11-11 16:46:36 +00:00
|
|
|
global combo_language
|
2022-01-13 09:49:26 +00:00
|
|
|
global combo_ticket_number
|
2019-10-01 17:52:13 +00:00
|
|
|
#global txt_facebook_account
|
2022-11-11 16:46:36 +00:00
|
|
|
|
2019-10-01 17:52:13 +00:00
|
|
|
global chk_state_auto_press_next_step_button
|
|
|
|
global chk_state_auto_fill_ticket_number
|
|
|
|
global txt_kktix_area_keyword
|
2022-10-21 13:18:07 +00:00
|
|
|
global txt_kktix_date_keyword
|
2019-12-18 03:45:48 +00:00
|
|
|
# disable password brute force attack
|
2019-10-01 17:52:13 +00:00
|
|
|
global txt_kktix_answer_dictionary
|
2022-11-11 16:46:36 +00:00
|
|
|
|
2020-01-13 17:13:39 +00:00
|
|
|
global chk_state_auto_guess_options
|
2019-10-01 17:52:13 +00:00
|
|
|
|
|
|
|
global chk_state_date_auto_select
|
|
|
|
global txt_date_keyword
|
|
|
|
global chk_state_area_auto_select
|
2019-10-27 01:31:22 +00:00
|
|
|
global txt_area_keyword_1
|
|
|
|
global txt_area_keyword_2
|
2022-11-09 17:56:12 +00:00
|
|
|
global txt_area_keyword_3
|
|
|
|
global txt_area_keyword_4
|
2019-10-01 17:52:13 +00:00
|
|
|
|
|
|
|
global combo_date_auto_select_mode
|
|
|
|
global combo_area_auto_select_mode
|
|
|
|
|
2021-03-21 06:14:20 +00:00
|
|
|
global chk_state_pass_1_seat_remaining
|
|
|
|
|
2022-03-24 15:22:43 +00:00
|
|
|
global chk_state_pass_date_is_sold_out
|
|
|
|
|
|
|
|
global chk_state_auto_reload_coming_soon_page
|
|
|
|
|
2019-10-01 17:52:13 +00:00
|
|
|
if is_all_data_correct:
|
|
|
|
if combo_homepage.get().strip()=="":
|
|
|
|
is_all_data_correct = False
|
|
|
|
messagebox.showerror("Error", "Please enter homepage")
|
|
|
|
else:
|
|
|
|
config_dict["homepage"] = combo_homepage.get().strip()
|
|
|
|
|
|
|
|
if is_all_data_correct:
|
|
|
|
if combo_browser.get().strip()=="":
|
|
|
|
is_all_data_correct = False
|
2022-11-11 16:46:36 +00:00
|
|
|
messagebox.showerror("Error", "Please select a browser: chrome or firefox")
|
2019-10-01 17:52:13 +00:00
|
|
|
else:
|
|
|
|
config_dict["browser"] = combo_browser.get().strip()
|
|
|
|
|
2022-11-11 16:46:36 +00:00
|
|
|
if is_all_data_correct:
|
|
|
|
if combo_language.get().strip()=="":
|
|
|
|
is_all_data_correct = False
|
|
|
|
messagebox.showerror("Error", "Please select a language")
|
|
|
|
else:
|
|
|
|
config_dict["language"] = combo_language.get().strip()
|
|
|
|
|
2019-10-01 17:52:13 +00:00
|
|
|
if is_all_data_correct:
|
2022-01-13 09:49:26 +00:00
|
|
|
if combo_ticket_number.get().strip()=="":
|
2019-10-01 17:52:13 +00:00
|
|
|
is_all_data_correct = False
|
2022-01-13 09:49:26 +00:00
|
|
|
messagebox.showerror("Error", "Please select a value")
|
2019-10-01 17:52:13 +00:00
|
|
|
else:
|
2022-01-13 09:49:26 +00:00
|
|
|
config_dict["ticket_number"] = int(combo_ticket_number.get().strip())
|
2019-10-01 17:52:13 +00:00
|
|
|
|
|
|
|
if is_all_data_correct:
|
|
|
|
#config_dict["facebook_account"] = txt_facebook_account.get().strip()
|
|
|
|
pass
|
|
|
|
|
|
|
|
if is_all_data_correct:
|
|
|
|
config_dict["kktix"]["auto_press_next_step_button"] = bool(chk_state_auto_press_next_step_button.get())
|
|
|
|
config_dict["kktix"]["auto_fill_ticket_number"] = bool(chk_state_auto_fill_ticket_number.get())
|
|
|
|
config_dict["kktix"]["area_mode"] = combo_kktix_area_mode.get().strip()
|
|
|
|
config_dict["kktix"]["area_keyword"] = txt_kktix_area_keyword.get().strip()
|
2022-10-21 13:18:07 +00:00
|
|
|
config_dict["kktix"]["date_keyword"] = txt_kktix_date_keyword.get().strip()
|
2019-12-18 03:45:48 +00:00
|
|
|
# disable password brute force attack
|
|
|
|
#config_dict["kktix"]["answer_dictionary"] = txt_kktix_answer_dictionary.get().strip()
|
2020-01-13 17:13:39 +00:00
|
|
|
config_dict["kktix"]["auto_guess_options"] = bool(chk_state_auto_guess_options.get())
|
2019-10-01 17:52:13 +00:00
|
|
|
|
|
|
|
config_dict["tixcraft"]["date_auto_select"]["enable"] = bool(chk_state_date_auto_select.get())
|
|
|
|
config_dict["tixcraft"]["date_auto_select"]["date_keyword"] = txt_date_keyword.get().strip()
|
|
|
|
|
|
|
|
config_dict["tixcraft"]["area_auto_select"]["enable"] = bool(chk_state_area_auto_select.get())
|
2019-10-27 01:31:22 +00:00
|
|
|
config_dict["tixcraft"]["area_auto_select"]["area_keyword_1"] = txt_area_keyword_1.get().strip()
|
|
|
|
config_dict["tixcraft"]["area_auto_select"]["area_keyword_2"] = txt_area_keyword_2.get().strip()
|
2022-11-09 17:56:12 +00:00
|
|
|
config_dict["tixcraft"]["area_auto_select"]["area_keyword_3"] = txt_area_keyword_3.get().strip()
|
|
|
|
config_dict["tixcraft"]["area_auto_select"]["area_keyword_4"] = txt_area_keyword_4.get().strip()
|
2019-10-01 17:52:13 +00:00
|
|
|
|
|
|
|
config_dict["tixcraft"]["date_auto_select"]["mode"] = combo_date_auto_select_mode.get().strip()
|
|
|
|
config_dict["tixcraft"]["area_auto_select"]["mode"] = combo_area_auto_select_mode.get().strip()
|
|
|
|
|
2021-03-21 06:14:20 +00:00
|
|
|
config_dict["tixcraft"]["pass_1_seat_remaining"] = bool(chk_state_pass_1_seat_remaining.get())
|
2022-03-24 15:22:43 +00:00
|
|
|
config_dict["tixcraft"]["pass_date_is_sold_out"] = bool(chk_state_pass_date_is_sold_out.get())
|
|
|
|
config_dict["tixcraft"]["auto_reload_coming_soon_page"] = bool(chk_state_auto_reload_coming_soon_page.get())
|
2021-03-21 06:14:20 +00:00
|
|
|
|
2019-10-01 17:52:13 +00:00
|
|
|
# save config.
|
|
|
|
if is_all_data_correct:
|
|
|
|
import json
|
|
|
|
with open(config_filepath, 'w') as outfile:
|
|
|
|
json.dump(config_dict, outfile)
|
|
|
|
|
|
|
|
if slience_mode==False:
|
|
|
|
messagebox.showinfo("File Save", "Done ^_^")
|
|
|
|
|
|
|
|
return is_all_data_correct
|
|
|
|
|
|
|
|
def btn_run_clicked():
|
2022-09-13 13:29:18 +00:00
|
|
|
import subprocess
|
|
|
|
|
2022-09-13 10:48:21 +00:00
|
|
|
print('run button pressed.')
|
2021-12-01 18:31:19 +00:00
|
|
|
Root_Dir = ""
|
2022-09-13 10:48:21 +00:00
|
|
|
save_ret = btn_save_act(slience_mode=True)
|
|
|
|
print("save config result:", save_ret)
|
|
|
|
if save_ret:
|
2019-10-01 17:52:13 +00:00
|
|
|
if hasattr(sys, 'frozen'):
|
2021-12-01 18:31:19 +00:00
|
|
|
print("execute in frozen mode")
|
2019-10-01 17:52:13 +00:00
|
|
|
|
|
|
|
# check platform here.
|
|
|
|
if platform.system() == 'Darwin':
|
2021-12-01 18:31:19 +00:00
|
|
|
print("execute MacOS python script")
|
|
|
|
subprocess.Popen("./chrome_tixcraft", shell=True)
|
2020-12-01 18:28:56 +00:00
|
|
|
if platform.system() == 'Linux':
|
2021-12-01 18:31:19 +00:00
|
|
|
print("execute linux binary")
|
|
|
|
subprocess.Popen("./chrome_tixcraft", shell=True)
|
2019-10-01 17:52:13 +00:00
|
|
|
if platform.system() == 'Windows':
|
2021-12-01 18:31:19 +00:00
|
|
|
print("execute .exe binary.")
|
2019-10-01 17:52:13 +00:00
|
|
|
subprocess.Popen("chrome_tixcraft.exe", shell=True)
|
|
|
|
else:
|
2022-09-13 10:48:21 +00:00
|
|
|
interpreter_binary = 'python'
|
|
|
|
interpreter_binary_alt = 'python3'
|
2022-09-13 13:29:18 +00:00
|
|
|
|
|
|
|
if platform.system() == 'Darwin':
|
|
|
|
# try python3 before python.
|
|
|
|
interpreter_binary = 'python3'
|
|
|
|
interpreter_binary_alt = 'python'
|
2022-11-11 16:46:36 +00:00
|
|
|
|
2022-09-13 10:48:21 +00:00
|
|
|
print("execute in shell mode.")
|
2021-12-01 18:31:19 +00:00
|
|
|
working_dir = os.path.dirname(os.path.realpath(__file__))
|
|
|
|
#print("script path:", working_dir)
|
|
|
|
#messagebox.showinfo(title="Debug0", message=working_dir)
|
2022-11-11 16:46:36 +00:00
|
|
|
|
2022-09-13 10:48:21 +00:00
|
|
|
# some python3 binary, running in 'python' command.
|
2021-12-01 18:31:19 +00:00
|
|
|
try:
|
2022-09-13 10:48:21 +00:00
|
|
|
print('try', interpreter_binary)
|
|
|
|
s=subprocess.Popen([interpreter_binary, 'chrome_tixcraft.py'], cwd=working_dir)
|
2021-12-01 18:31:19 +00:00
|
|
|
#s=subprocess.Popen(['./chrome_tixcraft'], stdout=subprocess.PIPE, stderr=subprocess.PIPE, cwd=working_dir)
|
|
|
|
#s=subprocess.run(['python3', 'chrome_tixcraft.py'], cwd=working_dir)
|
|
|
|
#messagebox.showinfo(title="Debug1", message=str(s))
|
|
|
|
except Exception as exc:
|
2022-09-13 10:48:21 +00:00
|
|
|
print('try', interpreter_binary_alt)
|
2021-12-01 20:23:03 +00:00
|
|
|
try:
|
2022-09-13 10:48:21 +00:00
|
|
|
s=subprocess.Popen([interpreter_binary_alt, 'chrome_tixcraft.py'], cwd=working_dir)
|
2021-12-01 20:23:03 +00:00
|
|
|
except Exception as exc:
|
|
|
|
msg=str(exc)
|
|
|
|
messagebox.showinfo(title="Debug2", message=msg)
|
|
|
|
pass
|
2019-10-01 17:52:13 +00:00
|
|
|
|
2022-11-13 18:34:22 +00:00
|
|
|
def open_url(url):
|
|
|
|
webbrowser.open_new(url)
|
|
|
|
|
2019-10-01 17:52:13 +00:00
|
|
|
def btn_exit_clicked():
|
|
|
|
root.destroy()
|
|
|
|
|
2022-11-10 14:02:26 +00:00
|
|
|
def btn_donate_clicked():
|
2022-11-13 18:34:22 +00:00
|
|
|
open_url.open(URL_DONATE)
|
2022-11-10 14:02:26 +00:00
|
|
|
|
|
|
|
def btn_help_clicked():
|
2022-11-13 18:34:22 +00:00
|
|
|
open_url.open(URL_HELP)
|
2022-11-10 14:02:26 +00:00
|
|
|
|
2022-11-11 16:46:36 +00:00
|
|
|
def callbackLanguageOnChange(event):
|
|
|
|
applyNewLanguage()
|
|
|
|
|
|
|
|
def get_language_code_by_name(new_language):
|
|
|
|
language_code = "en_us"
|
2022-11-13 18:34:22 +00:00
|
|
|
if u'繁體中文' in new_language:
|
2022-11-11 16:46:36 +00:00
|
|
|
language_code = 'zh_tw'
|
2022-11-13 18:34:22 +00:00
|
|
|
if u'簡体中文' in new_language:
|
2022-11-11 16:46:36 +00:00
|
|
|
language_code = 'zh_cn'
|
2022-11-13 18:34:22 +00:00
|
|
|
if u'日本語' in new_language:
|
2022-11-11 16:46:36 +00:00
|
|
|
language_code = 'ja_jp'
|
|
|
|
#print("new language code:", language_code)
|
|
|
|
|
|
|
|
return language_code
|
|
|
|
|
|
|
|
def applyNewLanguage():
|
|
|
|
global combo_language
|
|
|
|
new_language = combo_language.get().strip()
|
|
|
|
#print("new language value:", new_language)
|
|
|
|
|
|
|
|
language_code=get_language_code_by_name(new_language)
|
|
|
|
|
|
|
|
global lbl_homepage
|
|
|
|
global lbl_browser
|
|
|
|
global lbl_language
|
|
|
|
global lbl_ticket_number
|
|
|
|
|
|
|
|
# for kktix
|
|
|
|
global lbl_auto_press_next_step_button
|
|
|
|
global lbl_auto_fill_ticket_number
|
|
|
|
global lbl_kktix_area_mode
|
|
|
|
global lbl_kktix_area_keyword
|
|
|
|
global lbl_kktix_area_keyword_and_text
|
|
|
|
global lbl_auto_guess_options
|
|
|
|
|
|
|
|
# for tixcraft
|
|
|
|
global lbl_date_auto_select
|
|
|
|
global lbl_date_auto_select_mode
|
|
|
|
global lbl_date_keyword
|
|
|
|
global lbl_area_auto_select
|
|
|
|
global lbl_area_auto_select_mode
|
|
|
|
global lbl_area_keyword_1
|
|
|
|
global lbl_area_keyword_2
|
|
|
|
global lbl_area_keyword_3
|
|
|
|
global lbl_area_keyword_4
|
|
|
|
global lbl_pass_1_seat_remaining
|
|
|
|
global lbl_pass_date_is_sold_out
|
|
|
|
global lbl_auto_reload_coming_soon_page
|
|
|
|
|
|
|
|
# for checkbox
|
|
|
|
global chk_auto_press_next_step_button
|
|
|
|
global chk_auto_fill_ticket_number
|
|
|
|
global chk_auto_guess_options
|
|
|
|
global chk_date_auto_select
|
|
|
|
global chk_area_auto_select
|
|
|
|
global chk_pass_1_seat_remaining
|
|
|
|
global chk_pass_date_is_sold_out
|
|
|
|
global chk_auto_reload_coming_soon_page
|
|
|
|
|
2022-11-13 18:34:22 +00:00
|
|
|
global tabControl
|
|
|
|
|
|
|
|
global lbl_slogan
|
|
|
|
global lbl_help
|
|
|
|
global lbl_donate
|
|
|
|
global lbl_release
|
|
|
|
|
2022-11-11 16:46:36 +00:00
|
|
|
lbl_homepage.config(text=translate[language_code]["homepage"])
|
|
|
|
lbl_browser.config(text=translate[language_code]["browser"])
|
|
|
|
lbl_language.config(text=translate[language_code]["language"])
|
|
|
|
lbl_ticket_number.config(text=translate[language_code]["ticket_number"])
|
|
|
|
|
|
|
|
lbl_auto_press_next_step_button.config(text=translate[language_code]["auto_press_next_step_button"])
|
|
|
|
lbl_auto_fill_ticket_number.config(text=translate[language_code]["auto_fill_ticket_number"])
|
|
|
|
lbl_kktix_area_mode.config(text=translate[language_code]["area_select_order"])
|
|
|
|
lbl_kktix_area_keyword.config(text=translate[language_code]["area_keyword"])
|
|
|
|
lbl_kktix_area_keyword_and_text.config(text=translate[language_code]["and"])
|
|
|
|
lbl_auto_guess_options.config(text=translate[language_code]["auto_guess_options"])
|
|
|
|
lbl_date_auto_select.config(text=translate[language_code]["date_auto_select"])
|
|
|
|
lbl_date_auto_select_mode.config(text=translate[language_code]["date_select_order"])
|
|
|
|
lbl_date_keyword.config(text=translate[language_code]["date_keyword"])
|
|
|
|
lbl_area_auto_select.config(text=translate[language_code]["area_auto_select"])
|
|
|
|
lbl_area_auto_select_mode.config(text=translate[language_code]["area_select_order"])
|
|
|
|
lbl_area_keyword_1.config(text=translate[language_code]["area_keyword_1"])
|
|
|
|
lbl_area_keyword_2.config(text=translate[language_code]["area_keyword_2"])
|
|
|
|
lbl_area_keyword_3.config(text=translate[language_code]["area_keyword_3"])
|
|
|
|
lbl_area_keyword_4.config(text=translate[language_code]["area_keyword_4"])
|
|
|
|
lbl_pass_1_seat_remaining.config(text=translate[language_code]["pass_1_seat_remaining"])
|
|
|
|
lbl_pass_date_is_sold_out.config(text=translate[language_code]["pass_date_is_sold_out"])
|
|
|
|
lbl_auto_reload_coming_soon_page.config(text=translate[language_code]["auto_reload_coming_soon_page"])
|
|
|
|
|
|
|
|
chk_auto_press_next_step_button.config(text=translate[language_code]["enable"])
|
|
|
|
chk_auto_fill_ticket_number.config(text=translate[language_code]["enable"])
|
|
|
|
chk_auto_guess_options.config(text=translate[language_code]["enable"])
|
|
|
|
chk_date_auto_select.config(text=translate[language_code]["enable"])
|
|
|
|
chk_area_auto_select.config(text=translate[language_code]["enable"])
|
|
|
|
chk_pass_1_seat_remaining.config(text=translate[language_code]["enable"])
|
|
|
|
chk_pass_date_is_sold_out.config(text=translate[language_code]["enable"])
|
|
|
|
chk_auto_reload_coming_soon_page.config(text=translate[language_code]["enable"])
|
|
|
|
|
2022-11-13 18:34:22 +00:00
|
|
|
tabControl.tab(0, text=translate[language_code]["preference"])
|
|
|
|
tabControl.tab(1, text=translate[language_code]["about"])
|
|
|
|
|
|
|
|
lbl_slogan.config(text=translate[language_code]["maxbot_slogan"])
|
|
|
|
lbl_help.config(text=translate[language_code]["help"])
|
|
|
|
lbl_donate.config(text=translate[language_code]["donate"])
|
|
|
|
lbl_release.config(text=translate[language_code]["release"])
|
|
|
|
|
2019-10-01 17:52:13 +00:00
|
|
|
def callbackHomepageOnChange(event):
|
|
|
|
showHideBlocks()
|
|
|
|
|
|
|
|
def callbackDateAutoOnChange():
|
|
|
|
showHideTixcraftBlocks()
|
|
|
|
|
|
|
|
def showHideBlocks(all_layout_visible=False):
|
|
|
|
global UI_PADDING_X
|
|
|
|
|
|
|
|
global frame_group_kktix
|
|
|
|
global frame_group_kktix_index
|
|
|
|
global frame_group_tixcraft
|
|
|
|
global frame_group_tixcraft_index
|
|
|
|
|
|
|
|
# for kktix only.
|
|
|
|
global lbl_kktix_area_mode
|
|
|
|
|
2019-12-18 03:45:48 +00:00
|
|
|
# disable password brute force attack
|
|
|
|
#global lbl_kktix_answer_dictionary
|
|
|
|
|
|
|
|
#global txt_kktix_answer_dictionary
|
|
|
|
#global txt_kktix_answer_dictionary_index
|
2019-10-01 17:52:13 +00:00
|
|
|
|
2022-11-11 16:46:36 +00:00
|
|
|
global combo_homepage
|
2019-10-01 17:52:13 +00:00
|
|
|
global combo_kktix_area_mode
|
|
|
|
global combo_kktix_area_mode_index
|
|
|
|
|
|
|
|
new_homepage = combo_homepage.get().strip()
|
|
|
|
#print("new homepage value:", new_homepage)
|
|
|
|
|
|
|
|
show_block_index = 0
|
|
|
|
if u'tixcraft' in new_homepage:
|
|
|
|
show_block_index = 1
|
|
|
|
if u'famiticket' in new_homepage:
|
|
|
|
show_block_index = 1
|
|
|
|
|
|
|
|
# all_layout_visible==true, means enter function when onload().
|
|
|
|
#print("all_layout_visible:", all_layout_visible)
|
|
|
|
if all_layout_visible:
|
|
|
|
if show_block_index==0:
|
|
|
|
frame_group_tixcraft.grid_forget()
|
|
|
|
|
|
|
|
if u'kktix' in new_homepage:
|
|
|
|
#combo_kktix_area_mode.grid(column=1, row=combo_kktix_area_mode_index, sticky = W)
|
|
|
|
#txt_kktix_answer_dictionary.grid(column=1, row=txt_kktix_answer_dictionary_index, sticky = W)
|
|
|
|
pass
|
|
|
|
else:
|
|
|
|
combo_kktix_area_mode.grid_forget()
|
2019-12-18 03:45:48 +00:00
|
|
|
# disable password brute force attack
|
|
|
|
#txt_kktix_answer_dictionary.grid_forget()
|
2019-10-01 17:52:13 +00:00
|
|
|
|
|
|
|
else:
|
|
|
|
frame_group_kktix.grid_forget()
|
|
|
|
else:
|
|
|
|
if show_block_index == 0:
|
|
|
|
frame_group_kktix.grid(column=0, row=frame_group_kktix_index, padx=UI_PADDING_X)
|
|
|
|
frame_group_tixcraft.grid_forget()
|
|
|
|
|
|
|
|
if u'kktix' in new_homepage:
|
|
|
|
combo_kktix_area_mode.grid(column=1, row=combo_kktix_area_mode_index, sticky = W)
|
2019-12-18 03:45:48 +00:00
|
|
|
# disable password brute force attack
|
|
|
|
#txt_kktix_answer_dictionary.grid(column=1, row=txt_kktix_answer_dictionary_index, sticky = W)
|
2019-10-01 17:52:13 +00:00
|
|
|
else:
|
|
|
|
combo_kktix_area_mode.grid_forget()
|
2019-12-18 03:45:48 +00:00
|
|
|
# disable password brute force attack
|
|
|
|
#txt_kktix_answer_dictionary.grid_forget()
|
2019-10-01 17:52:13 +00:00
|
|
|
|
|
|
|
else:
|
|
|
|
frame_group_tixcraft.grid(column=0, row=frame_group_tixcraft_index, padx=UI_PADDING_X)
|
|
|
|
frame_group_kktix.grid_forget()
|
|
|
|
|
|
|
|
|
|
|
|
showHideTixcraftBlocks()
|
|
|
|
|
2021-03-21 06:14:20 +00:00
|
|
|
# purpose: show detail blocks if master field is enable.
|
2019-10-01 17:52:13 +00:00
|
|
|
def showHideTixcraftBlocks():
|
|
|
|
# for tixcraft show/hide enable.
|
|
|
|
# field 1
|
|
|
|
global chk_state_date_auto_select
|
|
|
|
|
|
|
|
global date_auto_select_mode_index
|
|
|
|
global lbl_date_auto_select_mode
|
|
|
|
global combo_date_auto_select_mode
|
|
|
|
|
|
|
|
global date_keyword_index
|
|
|
|
global lbl_date_keyword
|
|
|
|
global txt_date_keyword
|
|
|
|
|
|
|
|
# field 2
|
|
|
|
global chk_area_auto_select
|
|
|
|
|
|
|
|
global area_auto_select_index
|
|
|
|
global lbl_area_auto_select_mode
|
|
|
|
global combo_area_auto_select_mode
|
|
|
|
|
2019-10-27 01:31:22 +00:00
|
|
|
global area_keyword_1_index
|
|
|
|
global area_keyword_2_index
|
2022-11-09 17:56:12 +00:00
|
|
|
global area_keyword_3_index
|
|
|
|
global area_keyword_4_index
|
|
|
|
|
2019-10-27 01:31:22 +00:00
|
|
|
global lbl_area_keyword_1
|
|
|
|
global lbl_area_keyword_2
|
2022-11-09 17:56:12 +00:00
|
|
|
global lbl_area_keyword_3
|
|
|
|
global lbl_area_keyword_4
|
|
|
|
|
2019-10-27 01:31:22 +00:00
|
|
|
global txt_area_keyword_1
|
|
|
|
global txt_area_keyword_2
|
2022-11-09 17:56:12 +00:00
|
|
|
global txt_area_keyword_3
|
|
|
|
global txt_area_keyword_4
|
2019-10-01 17:52:13 +00:00
|
|
|
|
2019-10-27 01:31:22 +00:00
|
|
|
is_date_set_to_enable = bool(chk_state_date_auto_select.get())
|
|
|
|
is_area_set_to_enable = bool(chk_state_area_auto_select.get())
|
|
|
|
#print("now is_date_set_to_enable value:", is_date_set_to_enable)
|
|
|
|
#print("now is_area_set_to_enable value:", is_area_set_to_enable)
|
2019-10-01 17:52:13 +00:00
|
|
|
|
2019-10-27 01:31:22 +00:00
|
|
|
if is_date_set_to_enable:
|
2019-10-01 17:52:13 +00:00
|
|
|
# show
|
|
|
|
lbl_date_auto_select_mode.grid(column=0, row=date_auto_select_mode_index, sticky = E)
|
|
|
|
combo_date_auto_select_mode.grid(column=1, row=date_auto_select_mode_index, sticky = W)
|
|
|
|
|
|
|
|
lbl_date_keyword.grid(column=0, row=date_keyword_index, sticky = E)
|
|
|
|
txt_date_keyword.grid(column=1, row=date_keyword_index, sticky = W)
|
|
|
|
else:
|
|
|
|
# hide
|
|
|
|
lbl_date_auto_select_mode.grid_forget()
|
|
|
|
combo_date_auto_select_mode.grid_forget()
|
|
|
|
|
|
|
|
lbl_date_keyword.grid_forget()
|
|
|
|
txt_date_keyword.grid_forget()
|
|
|
|
|
2019-10-27 01:31:22 +00:00
|
|
|
if is_area_set_to_enable:
|
2019-10-01 17:52:13 +00:00
|
|
|
# show
|
|
|
|
lbl_area_auto_select_mode.grid(column=0, row=area_auto_select_index, sticky = E)
|
|
|
|
combo_area_auto_select_mode.grid(column=1, row=area_auto_select_index, sticky = W)
|
|
|
|
|
2019-10-27 01:31:22 +00:00
|
|
|
lbl_area_keyword_1.grid(column=0, row=area_keyword_1_index, sticky = E)
|
|
|
|
txt_area_keyword_1.grid(column=1, row=area_keyword_1_index, sticky = W)
|
|
|
|
|
|
|
|
lbl_area_keyword_2.grid(column=0, row=area_keyword_2_index, sticky = E)
|
|
|
|
txt_area_keyword_2.grid(column=1, row=area_keyword_2_index, sticky = W)
|
2022-11-09 17:56:12 +00:00
|
|
|
|
|
|
|
lbl_area_keyword_3.grid(column=0, row=area_keyword_3_index, sticky = E)
|
|
|
|
txt_area_keyword_3.grid(column=1, row=area_keyword_3_index, sticky = W)
|
|
|
|
|
|
|
|
lbl_area_keyword_4.grid(column=0, row=area_keyword_4_index, sticky = E)
|
|
|
|
txt_area_keyword_4.grid(column=1, row=area_keyword_4_index, sticky = W)
|
2019-10-01 17:52:13 +00:00
|
|
|
else:
|
|
|
|
# hide
|
|
|
|
lbl_area_auto_select_mode.grid_forget()
|
|
|
|
combo_area_auto_select_mode.grid_forget()
|
|
|
|
|
2019-10-27 01:31:22 +00:00
|
|
|
lbl_area_keyword_1.grid_forget()
|
|
|
|
txt_area_keyword_1.grid_forget()
|
|
|
|
|
|
|
|
lbl_area_keyword_2.grid_forget()
|
|
|
|
txt_area_keyword_2.grid_forget()
|
2019-10-01 17:52:13 +00:00
|
|
|
|
2022-11-09 17:56:12 +00:00
|
|
|
lbl_area_keyword_3.grid_forget()
|
|
|
|
txt_area_keyword_3.grid_forget()
|
|
|
|
|
|
|
|
lbl_area_keyword_4.grid_forget()
|
|
|
|
txt_area_keyword_4.grid_forget()
|
|
|
|
|
2019-10-01 17:52:13 +00:00
|
|
|
|
2022-11-13 18:34:22 +00:00
|
|
|
def PreferenctTab(root, config_dict, language_code, UI_PADDING_X):
|
2022-11-11 16:46:36 +00:00
|
|
|
global lbl_homepage
|
|
|
|
global lbl_browser
|
|
|
|
global lbl_language
|
|
|
|
global lbl_ticket_number
|
|
|
|
|
|
|
|
global lbl_kktix
|
|
|
|
global lbl_tixcraft
|
|
|
|
|
2019-10-01 17:52:13 +00:00
|
|
|
lbl_homepage = None
|
|
|
|
lbl_browser = None
|
2022-11-11 16:46:36 +00:00
|
|
|
lbl_language = None
|
2019-10-01 17:52:13 +00:00
|
|
|
lbl_ticket_number = None
|
|
|
|
lbl_kktix = None
|
|
|
|
lbl_tixcraft = None
|
|
|
|
|
|
|
|
homepage = None
|
|
|
|
browser = None
|
2022-11-11 16:46:36 +00:00
|
|
|
language = "English"
|
2022-01-13 09:49:26 +00:00
|
|
|
ticket_number = "2"
|
2019-10-01 17:52:13 +00:00
|
|
|
|
2020-01-13 17:13:39 +00:00
|
|
|
auto_press_next_step_button = False # default not checked.
|
|
|
|
auto_fill_ticket_number = False # default not checked.
|
2019-10-01 17:52:13 +00:00
|
|
|
|
|
|
|
kktix_area_mode = ""
|
|
|
|
kktix_area_keyword = ""
|
2022-10-21 13:18:07 +00:00
|
|
|
kktix_date_keyword = ""
|
2019-12-18 03:45:48 +00:00
|
|
|
# disable password brute force attack
|
|
|
|
#kktix_answer_dictionary = ""
|
2020-01-13 17:13:39 +00:00
|
|
|
auto_guess_options = False # default not checked.
|
2019-10-01 17:52:13 +00:00
|
|
|
|
|
|
|
date_auto_select_enable = None
|
|
|
|
date_auto_select_mode = ""
|
|
|
|
date_keyword = ""
|
|
|
|
|
|
|
|
area_auto_select_enable = None
|
|
|
|
area_auto_select_mode = ""
|
2019-10-27 01:31:22 +00:00
|
|
|
area_keyword_1 = ""
|
|
|
|
area_keyword_2 = ""
|
2022-11-09 17:56:12 +00:00
|
|
|
area_keyword_3 = ""
|
|
|
|
area_keyword_4 = ""
|
2019-10-01 17:52:13 +00:00
|
|
|
|
2022-03-24 15:22:43 +00:00
|
|
|
pass_1_seat_remaining_enable = False # default not checked.
|
|
|
|
pass_date_is_sold_out_enable = False # default not checked.
|
|
|
|
auto_reload_coming_soon_page_enable = True # default checked.
|
2021-03-21 06:14:20 +00:00
|
|
|
|
2021-11-21 09:33:49 +00:00
|
|
|
debugMode = False
|
|
|
|
|
2019-10-01 17:52:13 +00:00
|
|
|
if not config_dict is None:
|
|
|
|
# read config.
|
|
|
|
if u'homepage' in config_dict:
|
|
|
|
homepage = config_dict["homepage"]
|
|
|
|
|
|
|
|
if u'browser' in config_dict:
|
|
|
|
browser = config_dict["browser"]
|
|
|
|
|
2022-11-11 16:46:36 +00:00
|
|
|
if u'language' in config_dict:
|
|
|
|
language = config_dict["language"]
|
|
|
|
|
2021-11-21 09:33:49 +00:00
|
|
|
if u'debug' in config_dict:
|
|
|
|
debugMode = config_dict["debug"]
|
|
|
|
|
2019-10-01 17:52:13 +00:00
|
|
|
# default ticket number
|
|
|
|
# 說明:自動選擇的票數
|
|
|
|
if u'ticket_number' in config_dict:
|
|
|
|
ticket_number = str(config_dict["ticket_number"])
|
|
|
|
|
|
|
|
facebook_account = ""
|
|
|
|
if 'facebook_account' in config_dict:
|
|
|
|
facebook_account = str(config_dict["facebook_account"])
|
|
|
|
|
|
|
|
# for ["kktix"]
|
|
|
|
if 'kktix' in config_dict:
|
|
|
|
auto_press_next_step_button = config_dict["kktix"]["auto_press_next_step_button"]
|
|
|
|
auto_fill_ticket_number = config_dict["kktix"]["auto_fill_ticket_number"]
|
|
|
|
|
|
|
|
if 'area_mode' in config_dict["kktix"]:
|
|
|
|
kktix_area_mode = config_dict["kktix"]["area_mode"]
|
|
|
|
kktix_area_mode = kktix_area_mode.strip()
|
|
|
|
if not kktix_area_mode in CONST_SELECT_OPTIONS_ARRAY:
|
|
|
|
kktix_area_mode = CONST_SELECT_ORDER_DEFAULT
|
|
|
|
|
|
|
|
if 'area_keyword' in config_dict["kktix"]:
|
|
|
|
kktix_area_keyword = config_dict["kktix"]["area_keyword"]
|
|
|
|
if kktix_area_keyword is None:
|
|
|
|
kktix_area_keyword = ""
|
|
|
|
kktix_area_keyword = kktix_area_keyword.strip()
|
|
|
|
|
2022-10-21 13:18:07 +00:00
|
|
|
if 'date_keyword' in config_dict["kktix"]:
|
|
|
|
kktix_date_keyword = config_dict["kktix"]["date_keyword"]
|
|
|
|
if kktix_date_keyword is None:
|
|
|
|
kktix_date_keyword = ""
|
|
|
|
kktix_date_keyword = kktix_date_keyword.strip()
|
|
|
|
|
2020-01-13 17:13:39 +00:00
|
|
|
if 'auto_guess_options' in config_dict["kktix"]:
|
|
|
|
auto_guess_options = config_dict["kktix"]["auto_guess_options"]
|
|
|
|
|
2019-12-18 03:45:48 +00:00
|
|
|
# disable password brute force attack
|
2019-10-01 17:52:13 +00:00
|
|
|
if 'answer_dictionary' in config_dict["kktix"]:
|
|
|
|
kktix_answer_dictionary = config_dict["kktix"]["answer_dictionary"]
|
|
|
|
if kktix_answer_dictionary is None:
|
|
|
|
kktix_answer_dictionary = ""
|
|
|
|
kktix_answer_dictionary = kktix_answer_dictionary.strip()
|
|
|
|
|
|
|
|
# for ["tixcraft"]
|
|
|
|
if 'tixcraft' in config_dict:
|
2021-03-21 06:14:20 +00:00
|
|
|
date_auto_select_enable = False
|
|
|
|
date_auto_select_mode = None
|
|
|
|
|
|
|
|
if 'date_auto_select' in config_dict["tixcraft"]:
|
|
|
|
date_auto_select_enable = config_dict["tixcraft"]["date_auto_select"]["enable"]
|
|
|
|
date_auto_select_mode = config_dict["tixcraft"]["date_auto_select"]["mode"]
|
2019-10-01 17:52:13 +00:00
|
|
|
|
|
|
|
if not date_auto_select_mode in CONST_SELECT_OPTIONS_ARRAY:
|
|
|
|
date_auto_select_mode = CONST_SELECT_ORDER_DEFAULT
|
|
|
|
|
|
|
|
if 'date_keyword' in config_dict["tixcraft"]["date_auto_select"]:
|
|
|
|
date_keyword = config_dict["tixcraft"]["date_auto_select"]["date_keyword"]
|
|
|
|
date_keyword = date_keyword.strip()
|
|
|
|
|
2021-03-21 06:14:20 +00:00
|
|
|
area_auto_select_enable = False
|
|
|
|
area_auto_select_mode = None
|
|
|
|
|
|
|
|
if 'area_auto_select' in config_dict["tixcraft"]:
|
|
|
|
area_auto_select_enable = config_dict["tixcraft"]["area_auto_select"]["enable"]
|
|
|
|
area_auto_select_mode = config_dict["tixcraft"]["area_auto_select"]["mode"]
|
2019-10-01 17:52:13 +00:00
|
|
|
|
|
|
|
if not area_auto_select_mode in CONST_SELECT_OPTIONS_ARRAY:
|
|
|
|
area_auto_select_mode = CONST_SELECT_ORDER_DEFAULT
|
|
|
|
|
2019-10-27 01:31:22 +00:00
|
|
|
if 'area_keyword_1' in config_dict["tixcraft"]["area_auto_select"]:
|
|
|
|
area_keyword_1 = config_dict["tixcraft"]["area_auto_select"]["area_keyword_1"]
|
|
|
|
area_keyword_1 = area_keyword_1.strip()
|
|
|
|
|
|
|
|
if 'area_keyword_2' in config_dict["tixcraft"]["area_auto_select"]:
|
|
|
|
area_keyword_2 = config_dict["tixcraft"]["area_auto_select"]["area_keyword_2"]
|
|
|
|
area_keyword_2 = area_keyword_2.strip()
|
2019-10-01 17:52:13 +00:00
|
|
|
|
2022-11-09 17:56:12 +00:00
|
|
|
|
|
|
|
if 'area_keyword_3' in config_dict["tixcraft"]["area_auto_select"]:
|
|
|
|
area_keyword_3 = config_dict["tixcraft"]["area_auto_select"]["area_keyword_3"]
|
|
|
|
area_keyword_3 = area_keyword_3.strip()
|
|
|
|
|
|
|
|
if 'area_keyword_4' in config_dict["tixcraft"]["area_auto_select"]:
|
|
|
|
area_keyword_4 = config_dict["tixcraft"]["area_auto_select"]["area_keyword_4"]
|
|
|
|
area_keyword_4 = area_keyword_4.strip()
|
|
|
|
|
2021-03-21 06:14:20 +00:00
|
|
|
pass_1_seat_remaining_enable = False
|
|
|
|
if 'pass_1_seat_remaining' in config_dict["tixcraft"]:
|
|
|
|
pass_1_seat_remaining_enable = config_dict["tixcraft"]["pass_1_seat_remaining"]
|
|
|
|
|
2022-03-24 15:22:43 +00:00
|
|
|
pass_date_is_sold_out_enable = False
|
|
|
|
if 'pass_date_is_sold_out' in config_dict["tixcraft"]:
|
|
|
|
pass_date_is_sold_out_enable = config_dict["tixcraft"]["pass_date_is_sold_out"]
|
|
|
|
|
|
|
|
auto_reload_coming_soon_page_enable = True
|
|
|
|
if 'auto_reload_coming_soon_page' in config_dict["tixcraft"]:
|
|
|
|
auto_reload_coming_soon_page_enable = config_dict["tixcraft"]["auto_reload_coming_soon_page"]
|
|
|
|
|
2019-10-01 17:52:13 +00:00
|
|
|
# output config:
|
2021-12-01 18:31:19 +00:00
|
|
|
print("setting app version", CONST_APP_VERSION)
|
|
|
|
print("python version", platform.python_version())
|
2019-10-01 17:52:13 +00:00
|
|
|
print("homepage", homepage)
|
|
|
|
print("browser", browser)
|
2022-11-11 16:46:36 +00:00
|
|
|
print("language", language)
|
2019-10-01 17:52:13 +00:00
|
|
|
print("ticket_number", ticket_number)
|
|
|
|
print("facebook_account", facebook_account)
|
|
|
|
|
|
|
|
# for kktix
|
|
|
|
print("==[kktix]==")
|
|
|
|
print("auto_press_next_step_button", auto_press_next_step_button)
|
|
|
|
print("auto_fill_ticket_number", auto_fill_ticket_number)
|
|
|
|
print("kktix_area_mode", kktix_area_mode)
|
|
|
|
print("kktix_area_keyword", kktix_area_keyword)
|
2022-10-21 13:18:07 +00:00
|
|
|
print("kktix_date_keyword", kktix_date_keyword)
|
2019-12-18 03:45:48 +00:00
|
|
|
# disable password brute force attack
|
|
|
|
#print("kktix_answer_dictionary", kktix_answer_dictionary)
|
2020-01-13 17:13:39 +00:00
|
|
|
print("auto_guess_options", auto_guess_options)
|
2019-10-01 17:52:13 +00:00
|
|
|
|
|
|
|
# for tixcraft
|
|
|
|
print("==[tixcraft]==")
|
|
|
|
print("date_auto_select_enable", date_auto_select_enable)
|
|
|
|
print("date_auto_select_mode", date_auto_select_mode)
|
|
|
|
print("date_keyword", date_keyword)
|
2022-11-11 16:46:36 +00:00
|
|
|
|
2019-10-01 17:52:13 +00:00
|
|
|
print("area_auto_select_enable", area_auto_select_enable)
|
|
|
|
print("area_auto_select_mode", area_auto_select_mode)
|
2019-10-27 01:31:22 +00:00
|
|
|
print("area_keyword_1", area_keyword_1)
|
|
|
|
print("area_keyword_2", area_keyword_2)
|
2022-11-09 17:56:12 +00:00
|
|
|
print("area_keyword_3", area_keyword_3)
|
|
|
|
print("area_keyword_4", area_keyword_4)
|
2021-03-21 06:14:20 +00:00
|
|
|
|
|
|
|
print("pass_1_seat_remaining", pass_1_seat_remaining_enable)
|
2022-03-24 15:22:43 +00:00
|
|
|
print("pass_date_is_sold_out", pass_date_is_sold_out_enable)
|
|
|
|
|
|
|
|
print("auto_reload_coming_soon_page", auto_reload_coming_soon_page_enable)
|
2021-11-21 09:33:49 +00:00
|
|
|
|
|
|
|
print("debug Mode", debugMode)
|
2019-10-01 17:52:13 +00:00
|
|
|
else:
|
|
|
|
print('config is none')
|
|
|
|
|
|
|
|
row_count = 0
|
|
|
|
|
|
|
|
frame_group_header = Frame(root)
|
|
|
|
group_row_count = 0
|
|
|
|
|
|
|
|
# first row need padding Y
|
2022-11-13 18:34:22 +00:00
|
|
|
lbl_homepage = Label(frame_group_header, text=translate[language_code]['homepage'])
|
2019-10-01 17:52:13 +00:00
|
|
|
lbl_homepage.grid(column=0, row=group_row_count, sticky = E)
|
|
|
|
|
|
|
|
#global txt_homepage
|
|
|
|
#txt_homepage = Entry(root, width=20, textvariable = StringVar(root, value=homepage))
|
|
|
|
#txt_homepage.grid(column=1, row=row_count)
|
|
|
|
|
|
|
|
global combo_homepage
|
|
|
|
combo_homepage = ttk.Combobox(frame_group_header, state="readonly")
|
2020-12-08 15:24:17 +00:00
|
|
|
combo_homepage['values']= ("https://kktix.com","https://tixcraft.com","https://www.indievox.com/","https://www.famiticket.com.tw","http://www.urbtix.hk/","https://www.cityline.com/")
|
2019-10-01 17:52:13 +00:00
|
|
|
combo_homepage.set(homepage)
|
|
|
|
combo_homepage.bind("<<ComboboxSelected>>", callbackHomepageOnChange)
|
|
|
|
combo_homepage.grid(column=1, row=group_row_count, sticky = W)
|
|
|
|
|
|
|
|
group_row_count+=1
|
|
|
|
|
2022-11-11 16:46:36 +00:00
|
|
|
lbl_browser = Label(frame_group_header, text=translate[language_code]['browser'])
|
2019-10-01 17:52:13 +00:00
|
|
|
lbl_browser.grid(column=0, row=group_row_count, sticky = E)
|
|
|
|
|
|
|
|
#global txt_browser
|
|
|
|
#txt_browser = Entry(root, width=20, textvariable = StringVar(root, value=browser))
|
|
|
|
#txt_browser.grid(column=1, row=group_row_count)
|
|
|
|
|
|
|
|
global combo_browser
|
|
|
|
combo_browser = ttk.Combobox(frame_group_header, state="readonly")
|
|
|
|
combo_browser['values']= ("chrome","firefox")
|
|
|
|
#combo_browser.current(0)
|
|
|
|
combo_browser.set(browser)
|
|
|
|
combo_browser.grid(column=1, row=group_row_count, sticky = W)
|
|
|
|
|
|
|
|
group_row_count+=1
|
|
|
|
|
2022-11-11 16:46:36 +00:00
|
|
|
lbl_language = Label(frame_group_header, text=translate[language_code]['language'])
|
|
|
|
lbl_language.grid(column=0, row=group_row_count, sticky = E)
|
|
|
|
|
|
|
|
#global txt_language
|
|
|
|
#txt_language = Entry(root, width=20, textvariable = StringVar(root, value=language))
|
|
|
|
#txt_language.grid(column=1, row=group_row_count)
|
|
|
|
|
|
|
|
global combo_language
|
|
|
|
combo_language = ttk.Combobox(frame_group_header, state="readonly")
|
|
|
|
combo_language['values']= ("English","繁體中文","簡体中文","日本語")
|
|
|
|
#combo_language.current(0)
|
|
|
|
combo_language.set(language)
|
|
|
|
combo_language.bind("<<ComboboxSelected>>", callbackLanguageOnChange)
|
|
|
|
combo_language.grid(column=1, row=group_row_count, sticky = W)
|
|
|
|
|
|
|
|
group_row_count+=1
|
|
|
|
|
|
|
|
lbl_ticket_number = Label(frame_group_header, text=translate[language_code]['ticket_number'])
|
2019-10-01 17:52:13 +00:00
|
|
|
lbl_ticket_number.grid(column=0, row=group_row_count, sticky = E)
|
|
|
|
|
2022-01-13 09:49:26 +00:00
|
|
|
global combo_ticket_number
|
|
|
|
# for text format.
|
|
|
|
'''
|
|
|
|
global combo_ticket_number_value
|
|
|
|
combo_ticket_number_value = StringVar(frame_group_header, value=ticket_number)
|
|
|
|
combo_ticket_number = Entry(frame_group_header, width=20, textvariable = combo_ticket_number_value)
|
|
|
|
combo_ticket_number.grid(column=1, row=group_row_count, sticky = W)
|
|
|
|
'''
|
|
|
|
combo_ticket_number = ttk.Combobox(frame_group_header, state="readonly")
|
|
|
|
combo_ticket_number['values']= ("1","2","3","4","5","6","7","8","9","10")
|
|
|
|
#combo_ticket_number.current(0)
|
|
|
|
combo_ticket_number.set(ticket_number)
|
|
|
|
combo_ticket_number.grid(column=1, row=group_row_count, sticky = W)
|
2019-10-01 17:52:13 +00:00
|
|
|
|
|
|
|
frame_group_header.grid(column=0, row=row_count, sticky = W, padx=UI_PADDING_X)
|
|
|
|
|
|
|
|
'''
|
|
|
|
row_count+=1
|
|
|
|
|
|
|
|
lbl_facebook_account = Label(root, text="Facebook Account")
|
|
|
|
lbl_facebook_account.grid(column=0, row=row_count, sticky = E)
|
|
|
|
|
|
|
|
global txt_facebook_account
|
|
|
|
global txt_facebook_account_value
|
|
|
|
txt_facebook_account_value = StringVar(root, value=facebook_account)
|
|
|
|
txt_facebook_account = Entry(root, width=20, textvariable = txt_facebook_account_value)
|
|
|
|
txt_facebook_account.grid(column=1, row=row_count, sticky = W)
|
|
|
|
'''
|
|
|
|
|
|
|
|
row_count+=1
|
|
|
|
|
2022-11-13 18:34:22 +00:00
|
|
|
# for sub group KKTix.
|
2019-10-01 17:52:13 +00:00
|
|
|
global frame_group_kktix
|
|
|
|
frame_group_kktix = Frame(root)
|
|
|
|
group_row_count = 0
|
|
|
|
|
2022-11-13 18:34:22 +00:00
|
|
|
# start sub group...
|
2019-10-01 17:52:13 +00:00
|
|
|
group_row_count+=1
|
|
|
|
|
2022-11-11 16:46:36 +00:00
|
|
|
global lbl_auto_press_next_step_button
|
|
|
|
lbl_auto_press_next_step_button = Label(frame_group_kktix, text=translate[language_code]['auto_press_next_step_button'])
|
2019-10-01 17:52:13 +00:00
|
|
|
lbl_auto_press_next_step_button.grid(column=0, row=group_row_count, sticky = E)
|
|
|
|
|
|
|
|
global chk_state_auto_press_next_step_button
|
|
|
|
chk_state_auto_press_next_step_button = BooleanVar()
|
|
|
|
chk_state_auto_press_next_step_button.set(auto_press_next_step_button)
|
|
|
|
|
2022-11-11 16:46:36 +00:00
|
|
|
global chk_auto_press_next_step_button
|
|
|
|
chk_auto_press_next_step_button = Checkbutton(frame_group_kktix, text=translate[language_code]['enable'], variable=chk_state_auto_press_next_step_button)
|
2019-10-01 17:52:13 +00:00
|
|
|
chk_auto_press_next_step_button.grid(column=1, row=group_row_count, sticky = W)
|
|
|
|
|
|
|
|
group_row_count+=1
|
|
|
|
|
2022-11-11 16:46:36 +00:00
|
|
|
global lbl_auto_fill_ticket_number
|
|
|
|
lbl_auto_fill_ticket_number = Label(frame_group_kktix, text=translate[language_code]['auto_fill_ticket_number'])
|
2019-10-01 17:52:13 +00:00
|
|
|
lbl_auto_fill_ticket_number.grid(column=0, row=group_row_count, sticky = E)
|
|
|
|
|
|
|
|
global chk_state_auto_fill_ticket_number
|
|
|
|
chk_state_auto_fill_ticket_number = BooleanVar()
|
|
|
|
chk_state_auto_fill_ticket_number.set(auto_fill_ticket_number)
|
|
|
|
|
2022-11-11 16:46:36 +00:00
|
|
|
global chk_auto_fill_ticket_number
|
|
|
|
chk_auto_fill_ticket_number = Checkbutton(frame_group_kktix, text=translate[language_code]['enable'], variable=chk_state_auto_fill_ticket_number)
|
2021-03-21 06:14:20 +00:00
|
|
|
chk_auto_fill_ticket_number.grid(column=1, row=group_row_count, sticky = W)
|
2019-10-01 17:52:13 +00:00
|
|
|
|
|
|
|
group_row_count+=1
|
|
|
|
|
|
|
|
global lbl_kktix_area_mode
|
2022-11-11 16:46:36 +00:00
|
|
|
lbl_kktix_area_mode = Label(frame_group_kktix, text=translate[language_code]['area_select_order'])
|
2019-10-01 17:52:13 +00:00
|
|
|
lbl_kktix_area_mode.grid(column=0, row=group_row_count, sticky = E)
|
|
|
|
|
|
|
|
global combo_kktix_area_mode
|
|
|
|
global combo_kktix_area_mode_index
|
|
|
|
combo_kktix_area_mode_index = group_row_count
|
|
|
|
combo_kktix_area_mode = ttk.Combobox(frame_group_kktix, state="readonly")
|
|
|
|
combo_kktix_area_mode['values']= CONST_SELECT_OPTIONS_DEFAULT
|
|
|
|
combo_kktix_area_mode.set(kktix_area_mode)
|
|
|
|
combo_kktix_area_mode.grid(column=1, row=group_row_count, sticky = W)
|
|
|
|
|
|
|
|
group_row_count+=1
|
|
|
|
|
2022-11-11 16:46:36 +00:00
|
|
|
global lbl_kktix_area_keyword
|
|
|
|
lbl_kktix_area_keyword = Label(frame_group_kktix, text=translate[language_code]['area_keyword'])
|
2019-10-01 17:52:13 +00:00
|
|
|
lbl_kktix_area_keyword.grid(column=0, row=group_row_count, sticky = E)
|
|
|
|
|
|
|
|
global txt_kktix_area_keyword
|
|
|
|
global txt_kktix_area_keyword_value
|
|
|
|
txt_kktix_area_keyword_value = StringVar(frame_group_kktix, value=kktix_area_keyword)
|
|
|
|
txt_kktix_area_keyword = Entry(frame_group_kktix, width=20, textvariable = txt_kktix_area_keyword_value)
|
|
|
|
txt_kktix_area_keyword.grid(column=1, row=group_row_count, sticky = W)
|
|
|
|
|
2022-10-21 13:18:07 +00:00
|
|
|
group_row_count+=1
|
|
|
|
|
|
|
|
lbl_kktix_area_keyword_and_label = Label(frame_group_kktix, text="")
|
|
|
|
lbl_kktix_area_keyword_and_label.grid(column=0, row=group_row_count, sticky = E)
|
|
|
|
|
2022-11-11 16:46:36 +00:00
|
|
|
global lbl_kktix_area_keyword_and_text
|
|
|
|
lbl_kktix_area_keyword_and_text = Label(frame_group_kktix, text=translate[language_code]['and'])
|
2022-10-21 13:18:07 +00:00
|
|
|
lbl_kktix_area_keyword_and_text.grid(column=1, row=group_row_count, sticky = W)
|
|
|
|
|
|
|
|
group_row_count+=1
|
|
|
|
|
|
|
|
lbl_kktix_date_keyword = Label(frame_group_kktix, text="")
|
|
|
|
lbl_kktix_date_keyword.grid(column=0, row=group_row_count, sticky = E)
|
|
|
|
|
|
|
|
global txt_kktix_date_keyword
|
|
|
|
global txt_kktix_date_keyword_value
|
|
|
|
txt_kktix_date_keyword_value = StringVar(frame_group_kktix, value=kktix_date_keyword)
|
|
|
|
txt_kktix_date_keyword = Entry(frame_group_kktix, width=20, textvariable = txt_kktix_date_keyword_value)
|
|
|
|
txt_kktix_date_keyword.grid(column=1, row=group_row_count, sticky = W)
|
|
|
|
|
2020-01-13 17:13:39 +00:00
|
|
|
#group_row_count+=1
|
2019-10-01 17:52:13 +00:00
|
|
|
|
2019-12-18 03:45:48 +00:00
|
|
|
# disable password brute force attack
|
2019-10-01 17:52:13 +00:00
|
|
|
global lbl_kktix_answer_dictionary
|
2019-12-18 03:45:48 +00:00
|
|
|
#lbl_kktix_answer_dictionary = Label(frame_group_kktix, text="Answer Dictionary")
|
|
|
|
#lbl_kktix_answer_dictionary.grid(column=0, row=group_row_count, sticky = E)
|
2019-10-01 17:52:13 +00:00
|
|
|
|
|
|
|
global txt_kktix_answer_dictionary
|
|
|
|
global txt_kktix_answer_dictionary_index
|
|
|
|
txt_kktix_answer_dictionary_index = group_row_count
|
|
|
|
global txt_kktix_answer_dictionary_value
|
2019-12-18 03:45:48 +00:00
|
|
|
#txt_kktix_answer_dictionary_value = StringVar(frame_group_kktix, value=kktix_answer_dictionary)
|
|
|
|
#txt_kktix_answer_dictionary = Entry(frame_group_kktix, width=20, textvariable = txt_kktix_answer_dictionary_value)
|
|
|
|
#txt_kktix_answer_dictionary.grid(column=1, row=group_row_count, sticky = W)
|
2019-10-01 17:52:13 +00:00
|
|
|
|
2020-01-13 17:13:39 +00:00
|
|
|
group_row_count+=1
|
|
|
|
|
2022-11-11 16:46:36 +00:00
|
|
|
global lbl_auto_guess_options
|
|
|
|
lbl_auto_guess_options = Label(frame_group_kktix, text=translate[language_code]['auto_guess_options'])
|
2020-01-13 17:13:39 +00:00
|
|
|
lbl_auto_guess_options.grid(column=0, row=group_row_count, sticky = E)
|
|
|
|
|
|
|
|
global chk_state_auto_guess_options
|
|
|
|
chk_state_auto_guess_options = BooleanVar()
|
|
|
|
chk_state_auto_guess_options.set(auto_guess_options)
|
|
|
|
|
2022-11-11 16:46:36 +00:00
|
|
|
global chk_auto_guess_options
|
|
|
|
chk_auto_guess_options = Checkbutton(frame_group_kktix, text=translate[language_code]['enable'], variable=chk_state_auto_guess_options)
|
2020-01-13 17:13:39 +00:00
|
|
|
chk_auto_guess_options.grid(column=1, row=group_row_count, sticky = W)
|
|
|
|
|
|
|
|
group_row_count+=1
|
2019-10-01 17:52:13 +00:00
|
|
|
|
|
|
|
lbl_hr = Label(frame_group_kktix, text="")
|
|
|
|
lbl_hr.grid(column=0, row=group_row_count)
|
|
|
|
|
|
|
|
global frame_group_kktix_index
|
|
|
|
frame_group_kktix_index = row_count
|
|
|
|
frame_group_kktix.grid(column=0, row=row_count, sticky = W, padx=UI_PADDING_X)
|
|
|
|
|
|
|
|
row_count+=1
|
|
|
|
|
2022-11-13 18:34:22 +00:00
|
|
|
# for sub group tixcraft.
|
2019-10-01 17:52:13 +00:00
|
|
|
global frame_group_tixcraft
|
|
|
|
frame_group_tixcraft = Frame(root)
|
|
|
|
group_row_count = 0
|
|
|
|
|
2022-11-13 18:34:22 +00:00
|
|
|
# start sub group.
|
2019-10-01 17:52:13 +00:00
|
|
|
group_row_count+=1
|
|
|
|
|
2022-11-11 16:46:36 +00:00
|
|
|
global lbl_date_auto_select
|
|
|
|
lbl_date_auto_select = Label(frame_group_tixcraft, text=translate[language_code]['date_auto_select'])
|
2019-10-01 17:52:13 +00:00
|
|
|
lbl_date_auto_select.grid(column=0, row=group_row_count, sticky = E)
|
|
|
|
|
|
|
|
global chk_state_date_auto_select
|
|
|
|
chk_state_date_auto_select = BooleanVar()
|
|
|
|
chk_state_date_auto_select.set(date_auto_select_enable)
|
|
|
|
|
2022-11-11 16:46:36 +00:00
|
|
|
global chk_date_auto_select
|
|
|
|
chk_date_auto_select = Checkbutton(frame_group_tixcraft, text=translate[language_code]['enable'], variable=chk_state_date_auto_select, command=callbackDateAutoOnChange)
|
2019-10-01 17:52:13 +00:00
|
|
|
chk_date_auto_select.grid(column=1, row=group_row_count, sticky = W)
|
|
|
|
|
|
|
|
group_row_count+=1
|
|
|
|
|
|
|
|
global date_auto_select_mode_index
|
|
|
|
date_auto_select_mode_index = group_row_count
|
|
|
|
|
|
|
|
global lbl_date_auto_select_mode
|
2022-11-11 16:46:36 +00:00
|
|
|
lbl_date_auto_select_mode = Label(frame_group_tixcraft, text=translate[language_code]['date_select_order'])
|
2019-10-01 17:52:13 +00:00
|
|
|
lbl_date_auto_select_mode.grid(column=0, row=date_auto_select_mode_index, sticky = E)
|
|
|
|
|
|
|
|
global combo_date_auto_select_mode
|
|
|
|
combo_date_auto_select_mode = ttk.Combobox(frame_group_tixcraft, state="readonly")
|
|
|
|
combo_date_auto_select_mode['values']= (CONST_FROM_TOP_TO_BOTTOM, CONST_FROM_BOTTOM_TO_TOP)
|
|
|
|
combo_date_auto_select_mode.set(date_auto_select_mode)
|
|
|
|
combo_date_auto_select_mode.grid(column=1, row=date_auto_select_mode_index, sticky = W)
|
|
|
|
|
|
|
|
group_row_count+=1
|
|
|
|
|
|
|
|
global date_keyword_index
|
|
|
|
date_keyword_index = group_row_count
|
|
|
|
|
|
|
|
global lbl_date_keyword
|
2022-11-11 16:46:36 +00:00
|
|
|
lbl_date_keyword = Label(frame_group_tixcraft, text=translate[language_code]['date_keyword'])
|
2019-10-01 17:52:13 +00:00
|
|
|
lbl_date_keyword.grid(column=0, row=date_keyword_index, sticky = E)
|
|
|
|
|
|
|
|
global txt_date_keyword
|
|
|
|
global txt_date_keyword_value
|
|
|
|
txt_date_keyword_value = StringVar(frame_group_tixcraft, value=date_keyword)
|
|
|
|
txt_date_keyword = Entry(frame_group_tixcraft, width=20, textvariable = txt_date_keyword_value)
|
|
|
|
txt_date_keyword.grid(column=1, row=date_keyword_index, sticky = W)
|
|
|
|
|
|
|
|
group_row_count+=1
|
|
|
|
|
2022-11-11 16:46:36 +00:00
|
|
|
global lbl_area_auto_select
|
|
|
|
lbl_area_auto_select = Label(frame_group_tixcraft, text=translate[language_code]['area_auto_select'])
|
2019-10-01 17:52:13 +00:00
|
|
|
lbl_area_auto_select.grid(column=0, row=group_row_count, sticky = E)
|
|
|
|
|
|
|
|
global chk_state_area_auto_select
|
|
|
|
chk_state_area_auto_select = BooleanVar()
|
|
|
|
chk_state_area_auto_select.set(area_auto_select_enable)
|
|
|
|
|
|
|
|
global chk_area_auto_select
|
2022-11-11 16:46:36 +00:00
|
|
|
chk_area_auto_select = Checkbutton(frame_group_tixcraft, text=translate[language_code]['enable'], variable=chk_state_area_auto_select, command=callbackDateAutoOnChange)
|
2019-10-01 17:52:13 +00:00
|
|
|
chk_area_auto_select.grid(column=1, row=group_row_count, sticky = W)
|
|
|
|
|
|
|
|
group_row_count+=1
|
|
|
|
|
|
|
|
global area_auto_select_index
|
|
|
|
area_auto_select_index = group_row_count
|
|
|
|
|
|
|
|
global lbl_area_auto_select_mode
|
2022-11-11 16:46:36 +00:00
|
|
|
lbl_area_auto_select_mode = Label(frame_group_tixcraft, text=translate[language_code]['area_auto_select'])
|
2019-10-01 17:52:13 +00:00
|
|
|
lbl_area_auto_select_mode.grid(column=0, row=area_auto_select_index, sticky = E)
|
|
|
|
|
|
|
|
global combo_area_auto_select_mode
|
|
|
|
combo_area_auto_select_mode = ttk.Combobox(frame_group_tixcraft, state="readonly")
|
|
|
|
combo_area_auto_select_mode['values']= CONST_SELECT_OPTIONS_DEFAULT
|
|
|
|
combo_area_auto_select_mode.set(area_auto_select_mode)
|
|
|
|
combo_area_auto_select_mode.grid(column=1, row=area_auto_select_index, sticky = W)
|
|
|
|
|
|
|
|
group_row_count+=1
|
|
|
|
|
2019-10-27 01:31:22 +00:00
|
|
|
global area_keyword_1_index
|
|
|
|
area_keyword_1_index = group_row_count
|
|
|
|
|
|
|
|
global lbl_area_keyword_1
|
2022-11-11 16:46:36 +00:00
|
|
|
lbl_area_keyword_1 = Label(frame_group_tixcraft, text=translate[language_code]['area_keyword_1'])
|
2019-10-27 01:31:22 +00:00
|
|
|
lbl_area_keyword_1.grid(column=0, row=area_keyword_1_index, sticky = E)
|
|
|
|
|
|
|
|
global txt_area_keyword_1
|
|
|
|
global txt_area_keyword_1_value
|
|
|
|
txt_area_keyword_1_value = StringVar(frame_group_tixcraft, value=area_keyword_1)
|
|
|
|
txt_area_keyword_1 = Entry(frame_group_tixcraft, width=20, textvariable = txt_area_keyword_1_value)
|
|
|
|
txt_area_keyword_1.grid(column=1, row=area_keyword_1_index, sticky = W)
|
|
|
|
|
|
|
|
group_row_count+=1
|
|
|
|
|
|
|
|
global area_keyword_2_index
|
|
|
|
area_keyword_2_index = group_row_count
|
2019-10-01 17:52:13 +00:00
|
|
|
|
2019-10-27 01:31:22 +00:00
|
|
|
global lbl_area_keyword_2
|
2022-11-11 16:46:36 +00:00
|
|
|
lbl_area_keyword_2 = Label(frame_group_tixcraft, text=translate[language_code]['area_keyword_2'])
|
2019-10-27 01:31:22 +00:00
|
|
|
lbl_area_keyword_2.grid(column=0, row=area_keyword_2_index, sticky = E)
|
2019-10-01 17:52:13 +00:00
|
|
|
|
2019-10-27 01:31:22 +00:00
|
|
|
global txt_area_keyword_2
|
|
|
|
global txt_area_keyword_2_value
|
|
|
|
txt_area_keyword_2_value = StringVar(frame_group_tixcraft, value=area_keyword_2)
|
|
|
|
txt_area_keyword_2 = Entry(frame_group_tixcraft, width=20, textvariable = txt_area_keyword_2_value)
|
|
|
|
txt_area_keyword_2.grid(column=1, row=area_keyword_2_index, sticky = W)
|
2019-10-01 17:52:13 +00:00
|
|
|
|
2021-03-21 06:14:20 +00:00
|
|
|
group_row_count+=1
|
|
|
|
|
2022-11-09 17:56:12 +00:00
|
|
|
global area_keyword_3_index
|
|
|
|
area_keyword_3_index = group_row_count
|
|
|
|
|
|
|
|
global lbl_area_keyword_3
|
2022-11-11 16:46:36 +00:00
|
|
|
lbl_area_keyword_3 = Label(frame_group_tixcraft, text=translate[language_code]['area_keyword_3'])
|
2022-11-09 17:56:12 +00:00
|
|
|
lbl_area_keyword_3.grid(column=0, row=area_keyword_3_index, sticky = E)
|
|
|
|
|
|
|
|
global txt_area_keyword_3
|
|
|
|
global txt_area_keyword_3_value
|
|
|
|
txt_area_keyword_3_value = StringVar(frame_group_tixcraft, value=area_keyword_3)
|
|
|
|
txt_area_keyword_3 = Entry(frame_group_tixcraft, width=20, textvariable = txt_area_keyword_3_value)
|
|
|
|
txt_area_keyword_3.grid(column=1, row=area_keyword_3_index, sticky = W)
|
|
|
|
|
|
|
|
group_row_count+=1
|
|
|
|
|
|
|
|
global area_keyword_4_index
|
|
|
|
area_keyword_4_index = group_row_count
|
|
|
|
|
|
|
|
global lbl_area_keyword_4
|
2022-11-11 16:46:36 +00:00
|
|
|
lbl_area_keyword_4 = Label(frame_group_tixcraft, text=translate[language_code]['area_keyword_4'])
|
2022-11-09 17:56:12 +00:00
|
|
|
lbl_area_keyword_4.grid(column=0, row=area_keyword_4_index, sticky = E)
|
|
|
|
|
|
|
|
global txt_area_keyword_4
|
|
|
|
global txt_area_keyword_4_value
|
|
|
|
txt_area_keyword_4_value = StringVar(frame_group_tixcraft, value=area_keyword_4)
|
|
|
|
txt_area_keyword_4 = Entry(frame_group_tixcraft, width=20, textvariable = txt_area_keyword_4_value)
|
|
|
|
txt_area_keyword_4.grid(column=1, row=area_keyword_4_index, sticky = W)
|
|
|
|
|
|
|
|
group_row_count+=1
|
|
|
|
|
2022-11-11 16:46:36 +00:00
|
|
|
global lbl_pass_1_seat_remaining
|
|
|
|
lbl_pass_1_seat_remaining = Label(frame_group_tixcraft, text=translate[language_code]['pass_1_seat_remaining'])
|
2021-03-21 06:14:20 +00:00
|
|
|
lbl_pass_1_seat_remaining.grid(column=0, row=group_row_count, sticky = E)
|
|
|
|
|
|
|
|
global chk_state_pass_1_seat_remaining
|
|
|
|
chk_state_pass_1_seat_remaining = BooleanVar()
|
|
|
|
chk_state_pass_1_seat_remaining.set(pass_1_seat_remaining_enable)
|
|
|
|
|
|
|
|
global chk_pass_1_seat_remaining
|
2022-11-11 16:46:36 +00:00
|
|
|
chk_pass_1_seat_remaining = Checkbutton(frame_group_tixcraft, text=translate[language_code]['enable'], variable=chk_state_pass_1_seat_remaining)
|
2021-03-21 06:14:20 +00:00
|
|
|
chk_pass_1_seat_remaining.grid(column=1, row=group_row_count, sticky = W)
|
|
|
|
|
|
|
|
group_row_count+=1
|
|
|
|
|
2022-11-11 16:46:36 +00:00
|
|
|
global lbl_pass_date_is_sold_out
|
|
|
|
lbl_pass_date_is_sold_out = Label(frame_group_tixcraft, text=translate[language_code]['pass_date_is_sold_out'])
|
2022-03-24 15:22:43 +00:00
|
|
|
lbl_pass_date_is_sold_out.grid(column=0, row=group_row_count, sticky = E)
|
|
|
|
|
|
|
|
global chk_state_pass_date_is_sold_out
|
|
|
|
chk_state_pass_date_is_sold_out = BooleanVar()
|
|
|
|
chk_state_pass_date_is_sold_out.set(pass_date_is_sold_out_enable)
|
|
|
|
|
|
|
|
global chk_pass_date_is_sold_out
|
2022-11-11 16:46:36 +00:00
|
|
|
chk_pass_date_is_sold_out = Checkbutton(frame_group_tixcraft, text=translate[language_code]['enable'], variable=chk_state_pass_date_is_sold_out)
|
2022-03-24 15:22:43 +00:00
|
|
|
chk_pass_date_is_sold_out.grid(column=1, row=group_row_count, sticky = W)
|
|
|
|
|
|
|
|
group_row_count+=1
|
|
|
|
|
2022-11-11 16:46:36 +00:00
|
|
|
global lbl_auto_reload_coming_soon_page
|
|
|
|
lbl_auto_reload_coming_soon_page = Label(frame_group_tixcraft, text=translate[language_code]['auto_reload_coming_soon_page'])
|
2022-03-24 15:22:43 +00:00
|
|
|
lbl_auto_reload_coming_soon_page.grid(column=0, row=group_row_count, sticky = E)
|
|
|
|
|
|
|
|
global chk_state_auto_reload_coming_soon_page
|
|
|
|
chk_state_auto_reload_coming_soon_page = BooleanVar()
|
|
|
|
chk_state_auto_reload_coming_soon_page.set(auto_reload_coming_soon_page_enable)
|
|
|
|
|
|
|
|
global chk_auto_reload_coming_soon_page
|
2022-11-11 16:46:36 +00:00
|
|
|
chk_auto_reload_coming_soon_page = Checkbutton(frame_group_tixcraft, text=translate[language_code]['enable'], variable=chk_state_auto_reload_coming_soon_page)
|
2022-03-24 15:22:43 +00:00
|
|
|
chk_auto_reload_coming_soon_page.grid(column=1, row=group_row_count, sticky = W)
|
|
|
|
|
|
|
|
group_row_count+=1
|
|
|
|
|
2019-10-01 17:52:13 +00:00
|
|
|
global frame_group_tixcraft_index
|
|
|
|
frame_group_tixcraft_index = row_count
|
|
|
|
frame_group_tixcraft.grid(column=0, row=row_count, sticky = W, padx=UI_PADDING_X)
|
|
|
|
|
|
|
|
row_count+=1
|
|
|
|
|
|
|
|
lbl_hr = Label(root, text="")
|
|
|
|
lbl_hr.grid(column=0, row=row_count)
|
|
|
|
|
2022-11-13 18:34:22 +00:00
|
|
|
showHideBlocks(all_layout_visible=True)
|
2019-10-01 17:52:13 +00:00
|
|
|
|
|
|
|
|
2022-11-13 18:34:22 +00:00
|
|
|
def AboutTab(root, language_code):
|
|
|
|
from PIL import Image, ImageTk
|
2019-10-01 17:52:13 +00:00
|
|
|
|
2022-11-13 18:34:22 +00:00
|
|
|
row_count = 0
|
2019-10-01 17:52:13 +00:00
|
|
|
|
2022-11-13 18:34:22 +00:00
|
|
|
frame_group_header = Frame(root)
|
|
|
|
group_row_count = 0
|
2022-11-10 14:02:26 +00:00
|
|
|
|
2022-11-13 18:34:22 +00:00
|
|
|
image = Image.open("maxbot_logo2_single.png")
|
|
|
|
photo = ImageTk.PhotoImage(image)
|
|
|
|
#logo_offset_x = ((GUI_SIZE_WIDTH - image.size[0]) / 2) - 20
|
|
|
|
|
|
|
|
lbl_logo = Label(frame_group_header, image=photo)
|
|
|
|
lbl_logo.image = photo
|
|
|
|
lbl_logo.grid(column=0, row=group_row_count, columnspan=2)
|
2022-11-10 17:19:03 +00:00
|
|
|
|
2022-11-13 18:34:22 +00:00
|
|
|
group_row_count +=1
|
2022-11-10 14:02:26 +00:00
|
|
|
|
2022-11-13 18:34:22 +00:00
|
|
|
global lbl_slogan
|
|
|
|
global lbl_help
|
|
|
|
global lbl_donate
|
|
|
|
global lbl_release
|
2019-10-01 17:52:13 +00:00
|
|
|
|
2022-11-13 18:34:22 +00:00
|
|
|
lbl_slogan = Label(frame_group_header, text=translate[language_code]['maxbot_slogan'], wraplength=400, justify="center")
|
|
|
|
lbl_slogan.grid(column=0, row=group_row_count, columnspan=2)
|
|
|
|
|
|
|
|
group_row_count +=1
|
|
|
|
|
|
|
|
lbl_help = Label(frame_group_header, text=translate[language_code]['help'])
|
|
|
|
lbl_help.grid(column=0, row=group_row_count, sticky = E)
|
|
|
|
|
|
|
|
lbl_help_url = Label(frame_group_header, text=URL_HELP, fg="blue", cursor="hand2")
|
|
|
|
lbl_help_url.grid(column=1, row=group_row_count, sticky = W)
|
|
|
|
lbl_help_url.bind("<Button-1>", lambda e: open_url(URL_HELP))
|
|
|
|
|
|
|
|
group_row_count +=1
|
|
|
|
|
|
|
|
lbl_donate = Label(frame_group_header, text=translate[language_code]['donate'])
|
|
|
|
lbl_donate.grid(column=0, row=group_row_count, sticky = E)
|
2019-10-01 17:52:13 +00:00
|
|
|
|
2022-11-13 18:34:22 +00:00
|
|
|
lbl_donate_url = Label(frame_group_header, text=URL_DONATE, fg="blue", cursor="hand2")
|
|
|
|
lbl_donate_url.grid(column=1, row=group_row_count, sticky = W)
|
|
|
|
lbl_donate_url.bind("<Button-1>", lambda e: open_url(URL_DONATE))
|
|
|
|
|
|
|
|
group_row_count +=1
|
|
|
|
|
|
|
|
lbl_release = Label(frame_group_header, text=translate[language_code]['release'])
|
|
|
|
lbl_release.grid(column=0, row=group_row_count, sticky = E)
|
|
|
|
|
|
|
|
lbl_release_url = Label(frame_group_header, text=URL_RELEASE, fg="blue", cursor="hand2")
|
|
|
|
lbl_release_url.grid(column=1, row=group_row_count, sticky = W)
|
|
|
|
lbl_release_url.bind("<Button-1>", lambda e: open_url(URL_RELEASE))
|
|
|
|
|
|
|
|
frame_group_header.grid(column=0, row=row_count)
|
2019-10-01 17:52:13 +00:00
|
|
|
|
|
|
|
def main():
|
2022-11-13 18:34:22 +00:00
|
|
|
global translate
|
|
|
|
translate = load_translate()
|
|
|
|
|
|
|
|
global config_filepath
|
|
|
|
global config_dict
|
|
|
|
config_filepath, config_dict = load_json()
|
2019-10-01 17:52:13 +00:00
|
|
|
|
|
|
|
global root
|
|
|
|
root = Tk()
|
|
|
|
root.title(CONST_APP_VERSION)
|
|
|
|
|
2020-12-01 18:28:56 +00:00
|
|
|
|
2019-10-01 17:52:13 +00:00
|
|
|
#style = ttk.Style(root)
|
|
|
|
#style.theme_use('aqua')
|
|
|
|
|
|
|
|
#root.configure(background='lightgray')
|
|
|
|
# style configuration
|
|
|
|
#style = Style(root)
|
|
|
|
#style.configure('TLabel', background='lightgray', foreground='black')
|
|
|
|
#style.configure('TFrame', background='lightgray')
|
|
|
|
|
2022-11-13 18:34:22 +00:00
|
|
|
language_code="en_us"
|
|
|
|
if not config_dict is None:
|
|
|
|
if u'language' in config_dict:
|
|
|
|
language_code = get_language_code_by_name(config_dict["language"])
|
|
|
|
|
|
|
|
row_count = 0
|
|
|
|
|
|
|
|
global tabControl
|
|
|
|
tabControl = ttk.Notebook(root)
|
|
|
|
tab1 = Frame(tabControl)
|
|
|
|
tabControl.add(tab1, text=translate[language_code]['preference'])
|
|
|
|
tab2 = Frame(tabControl)
|
|
|
|
tabControl.add(tab2, text=translate[language_code]['about'])
|
|
|
|
tabControl.grid(column=0, row=row_count)
|
|
|
|
tabControl.select(tab1)
|
|
|
|
|
|
|
|
row_count+=1
|
2019-10-01 17:52:13 +00:00
|
|
|
|
2022-11-13 18:34:22 +00:00
|
|
|
frame_action = Frame(root)
|
|
|
|
|
|
|
|
btn_run = ttk.Button(frame_action, text=translate[language_code]['run'], command=btn_run_clicked)
|
|
|
|
btn_run.grid(column=0, row=0)
|
|
|
|
|
|
|
|
btn_save = ttk.Button(frame_action, text=translate[language_code]['save'], command=btn_save_clicked)
|
|
|
|
btn_save.grid(column=1, row=0)
|
|
|
|
|
|
|
|
#btn_donate = ttk.Button(frame_action, text=translate[language_code]['donate'], command=btn_donate_clicked, width=5)
|
|
|
|
#btn_donate.grid(column=2, row=0)
|
|
|
|
|
|
|
|
#btn_help = ttk.Button(frame_action, text=translate[language_code]['help'], command=btn_help_clicked)
|
|
|
|
#btn_help.grid(column=2, row=0)
|
|
|
|
|
|
|
|
btn_exit = ttk.Button(frame_action, text=translate[language_code]['exit'], command=btn_exit_clicked)
|
|
|
|
btn_exit.grid(column=3, row=0)
|
|
|
|
|
|
|
|
frame_action.grid(column=0, row=row_count)
|
|
|
|
|
|
|
|
global UI_PADDING_X
|
|
|
|
UI_PADDING_X = 15
|
|
|
|
|
|
|
|
GUI_SIZE_WIDTH = 460
|
|
|
|
GUI_SIZE_HEIGHT = 550
|
|
|
|
|
|
|
|
PreferenctTab(tab1, config_dict, language_code, UI_PADDING_X)
|
|
|
|
AboutTab(tab2, language_code)
|
2022-11-11 16:46:36 +00:00
|
|
|
|
2019-10-01 17:52:13 +00:00
|
|
|
GUI_SIZE_MACOS = str(GUI_SIZE_WIDTH) + 'x' + str(GUI_SIZE_HEIGHT)
|
2022-11-13 18:51:16 +00:00
|
|
|
GUI_SIZE_WINDOWS=str(GUI_SIZE_WIDTH-60) + 'x' + str(GUI_SIZE_HEIGHT-60)
|
2019-10-01 17:52:13 +00:00
|
|
|
|
|
|
|
GUI_SIZE =GUI_SIZE_MACOS
|
|
|
|
import platform
|
|
|
|
if platform.system() == 'Windows':
|
2022-11-10 14:02:26 +00:00
|
|
|
GUI_SIZE = GUI_SIZE_WINDOWS
|
|
|
|
|
2019-10-01 17:52:13 +00:00
|
|
|
root.geometry(GUI_SIZE)
|
2022-11-11 16:46:36 +00:00
|
|
|
|
2020-12-01 18:28:56 +00:00
|
|
|
# for icon.
|
|
|
|
icon_filepath = 'tmp.ico'
|
|
|
|
import base64
|
|
|
|
|
|
|
|
# icon format.
|
|
|
|
iconImg = 'AAABAAEAAAAAAAEAIAD4MgAAFgAAAIlQTkcNChoKAAAADUlIRFIAAAEAAAABAAgGAAAAXHKoZgAAAAFzUkdCAK7OHOkAAABQZVhJZk1NACoAAAAIAAIBEgADAAAAAQABAACHaQAEAAAAAQAAACYAAAAAAAOgAQADAAAAAQABAACgAgAEAAAAAQAAAQCgAwAEAAAAAQAAAQAAAAAAdTc0VwAAAVlpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IlhNUCBDb3JlIDUuNC4wIj4KICAgPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iPgogICAgICAgICA8dGlmZjpPcmllbnRhdGlvbj4xPC90aWZmOk9yaWVudGF0aW9uPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4KTMInWQAAMPFJREFUeAHtndmTJNd13rP36e7pWXt6OFiHGAxACssApChTskRZom1J3ETS9ov/AIclO/Tm8JMj/OxQBMNhO0IRdvjNtB0SSYirTFEiJZoSTBAidoAAZjCYAYazb73M9O7vdzKzOqu6qmvLyr5VeW5MT3VXVea997s3v3vOueecO/SlmYnNyIsj4AiUEoHhUvbaO+0IOAKGgBOATwRHoMQIOAGUePC9646AE4DPAUegxAg4AZR48L3rjoATgM8BR6DECDgBlHjwveuOgBOAzwFHoMQIOAGUePC9646AE4DPAUegxAg4AZR48L3rjoATgM8BR6DECDgBlHjwveuOgBOAzwFHoMQIOAGUePC9646AE4DPAUegxAg4AZR48L3rjoATgM8BR6DECDgBlHjwveuOgBOAzwFHoMQIOAGUePC9646AE4DPAUegxAg4AZR48L3rjoATgM8BR6DECDgBlHjwveuOgBOAzwFHoMQIOAGUePC9646AE4DPAUegxAg4AZR48L3rjoATgM8BR6DECDgBlHjwveuOgBOAzwFHoMQIOAGUePC9646AE4DPAUegxAg4AZR48L3rjoATgM8BR6DECDgBlHjwveuOgBOAzwFHoMQIOAGUePC9646AE4DPAUegxAg4AZR48L3rjoATgM8BR6DECDgBlHjwveuOgBOAzwFHoMQIOAGUePC9646AE4DPAUegxAg4AZR48L3rjoATgM8BR6DECDgBlHjwveuOgBOAzwFHoMQIOAGUePC9646AE4DPAUegxAg4AZR48L3rjoATgM8BR6DECDgBlHjwveuOgBOAzwFHoMQIOAGUePC9646AE4DPAUegxAg4AZR48L3rjoATgM8BR6DECDgBlHjwveuOgBOAzwFHoMQIOAGUePC9646AE4DPAUegxAg4AZR48L3rjoATgM8BR6DECIzuWt83N3et6oGpeGioflf6FFtmhPWoUb/q9zafd4VZpf587ljIXSpt7hCz4glADR0ZH49GJiai4dHRaGh4JErbbvOW/2wweAVD+68QMPupks2NzWhlfj7a3FivavbQ8HA0PjMjXPtRuBuK1u7eidbu3KnqUxF/jAmzkbFxVdVv820o2lhbjVYWFuy5aRer4glALYQAJg/PRlNzc9H00Q/o9aj9znt7Dh6MJvbtj8amp6ORPXs0KGPR0MiIloYhWx02Y5aAI+IO2y/tdru/v8/DffPM6eh7f/D70Z1r1wRNLAlsbmxEhz704eiTX/pP0fi+fR1NiN1EhnF+/X99OfrJl/6wMAJjPk3NHok++R//c3TgoRMi1I3dhKDtusHswt/+KPrBv/030cbqStvXF08AAnzl9u1oWT9MYiYvnRgeHYtG90zYgz8+s09EcCianD0cTR2Zi6ZEEtMpSRw5Ek3qs4n9B6KxvXuj0clJkyTa7nmfXzD/3nvRqlg/ffjpDpN37tRT0T2//CuFPUB5w3jw5MlC2765vh7d92ufiD7425+yhSnv/hRxv6uvvhJtSgropBRPALQyWc3TBjMI6/xI/Lt784Zmsj4RUcSrPd/XP6kKqAwj4yKJqSkTcycOHIgmDx2OJkUK00clRSREwd+8z+eQydjUpF1nkkRaaZ+/XnnpBROVs33i96NPfaTQByhvGMen91r7i1qJmUuPfPGf9u3DD/4LF96PNvT8dKL27Q4BNJo1Rgw87fEXkpfKtyGKtaXFaFU/S1cuV5OEvgUAw0gTUjGQDMYlIUzsOxDtOSRpQqRgKsecpAmRxaQki8nZROUQSYxK5RjFLiGVI/SysbYWXX7pRSPICkYizHH14ciTp0Jv/o7tG4MANIZFEADzafaxx6P7fvUTO7Yp9A8Xf37B8Op/AmgF6VR60Cul8gAk1yI1rC8vS5q4G929fl0k8e6WJMH3uR6S0IM+KhsDtgb05T0HUDkSuwTqhtkmpH5IP4RAzC6ByqFrIJis6J1UXdgL/brx5s+q2kC/p4/dEx04caKwdvSiIlZkJL2NFemzyRj3oh67pxaME5/9XRv3ntXR4xtDYgsXL3ZcS1gSQMfdqHMhD3oDkuDbG6uynGqSLd+6FUUXxKB6gPRffCOuRZrQREQqGDWVA5KQNHE4sUuIJEztgCwkXeyRysHnWOBHJ6dsl6MTRq7Tk21v3X73bDQvsS97f1bMQ49+yNqy7YI+egOsi5DCwGvvPfdGJz71mT5CZ3tT15bvRkuXLm1fCbd/te47g0sAdbtb82YTkoBdVxcXoxX9LF1uoHKIJIa1fTQmlQOjZGyXQJpA5ciQhHY80l0Os0tMQxKSJnR9u+Xqa6+aITW7QkJ2GABpSz8XCICdH6i4VrrLs18QwAO/8ZvRwUcezfO2hd9rdWFRO0FXK4tduw1of/a1W0O/fx+SoA96tRf7f+s/JtK6WBgD5p3r16JIq3PFeKmvVascIgmpHBP7k12OZCvUjJcYMc0ukVU5ZJfYIwMmdomkfmrGAIgdIEse2Dzmnnp6q2F9+hsqFoZek8Yyfc61O5L0sA898oV/UoVhrnUUdDMk2OVbN1VbZ3TpBJDXQEEUDUiCKrZUjpuy2r4XaxuJymEkYSrHmHwf0l2OfbE0AUlgwBRB4DOx58DB6MKzz1bq4t6QEEbOQ498iD/7uqBygUEvC3hBlvd8/Fd6WU0h976rRQcnoHTutVupE0C7iHXz/WYksb4WbSzEXl2L6HUiiCppItnlMPFYhsy0bG5uRAdPPCwj4LH0rb59xUN0VKpRzJC96QZG4Id/9wtGsL2pobi7Ll6+ZAbvrITYTu1OAO2gVcR3IQnqaSBNZAmh0hwxAtt/WND7vWDDwIjaq8Lqv//B49EHf+t3elVFofdd1A7AugzanUoA/egwXijA/VAZrtVzcgAahGLbsyKyODQn/x5BoA/+o39sbr/53734O8Y+ANXxIO20wgmgHbQC/C4TGrfp2V94LMDWtd8kDJsmySQ7su3fYYcrhBX+HCc//8WqLdQdrgj+o4Wf/1zqUufNdALoHLswrpRIu+/48Wjm/vvDaE+XrcCTk52SXpQNYfWBX/yYfn6pF7cv/J7rK8vyAejcCYgGOwEUPmz5VogEcOSxJ7S1uD/fG+/S3TDQ4U/RizIi6YLVny3AQShrS0tyib/Ssf4PBk4AfT4TEJnnnmb/v7N94BC7T0BQ3sWMfw+diI5L/x+Usqx8EHdvyN09MRh30i8ngE5QC+Uarf64Hh954slQWpRLO0wCyJvPhBWW/30PPJhLG0O4yfKNG0oKc7srCaCYbUAYSgNAsW0sfk//jt+1//2/xggMDQ1vM1yxqs3ce1+0//gHG1/Yh59YRqM8JRrNNQK6Tmrvf5AK4v+q1IBuJICeEwDbOkTUEYpLIA2ebHGMfhwww+cE
|
|
|
|
if platform.system() == 'Linux':
|
|
|
|
# PNG format.
|
|
|
|
iconImg = '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
|
|
|
|
|
|
|
|
tmpIcon = open(icon_filepath, 'wb+')
|
|
|
|
tmpIcon.write(base64.b64decode(iconImg))
|
|
|
|
tmpIcon.close()
|
|
|
|
if platform.system() == 'Windows':
|
|
|
|
root.iconbitmap(icon_filepath)
|
|
|
|
if platform.system() == 'Darwin':
|
|
|
|
#from PIL import Image, ImageTk
|
|
|
|
#logo = ImageTk.PhotoImage(Image.open(icon_filepath).convert('RGB'))
|
|
|
|
#root.call('wm', 'iconphoto', root._w, logo)
|
|
|
|
pass
|
|
|
|
if platform.system() == 'Linux':
|
2020-12-08 15:24:17 +00:00
|
|
|
logo = PhotoImage(file=icon_filepath)
|
2020-12-01 18:28:56 +00:00
|
|
|
root.call('wm', 'iconphoto', root._w, logo)
|
|
|
|
os.remove(icon_filepath)
|
|
|
|
|
2019-10-01 17:52:13 +00:00
|
|
|
root.mainloop()
|
|
|
|
|
2022-11-11 16:46:36 +00:00
|
|
|
|
2019-10-01 17:52:13 +00:00
|
|
|
if __name__ == "__main__":
|
|
|
|
main()
|