This repository has been archived by the owner on Jan 21, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 1
/
youtubed-2x_gui.py
executable file
·145 lines (126 loc) · 5.13 KB
/
youtubed-2x_gui.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
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
#!/usr/bin/env python
import os
import sys
import pygtk
if not sys.platform == "win32":
pygtk.require ("2.0")
import gtk
import gtk.glade
import logging
import gettext
import locale
def add_translation ():
lc, enc = locale.getdefaultlocale ()
if os.path.exists (os.path.join (os.path.dirname (sys.argv[0]), "i18n")):
# Running locally
logging.debug ("Running local")
gettext.bindtextdomain ("youtubed-2x", "i18n")
lc, enc = locale.getdefaultlocale ()
lang = gettext.translation ("youtubed-2x", "i18n", languages=[lc], fallback=True)
logging.debug (lang)
lang.install ()
#gettext.install ("youtubed-2x", "i18n")
gtk.glade.bindtextdomain ("youtubed-2x", "i18n")
elif gettext.find ("youtubed-2x"):
# Installed. .mo file is in default locale location
logging.debug ("Found default locale")
gettext.install ("youtubed-2x")
gtk.glade.bindtextdomain ("youtubed-2x")
elif WINDOWS and os.path.exists (os.path.join (sys.prefix, "share", "locale")):
# Windows when using build made with Py2exe
logging.debug ("Py2exe build")
locale_dir = os.path.join (sys.prefix, "share", "locale")
gettext.bindtextdomain ("youtubed-2x", locale_dir)
lang = gettext.translation("youtubed-2x", locale_dir, languages=[lc], fallback=True)
logging.debug (lang)
lang.install ()
#gettext.install ("youtubed-2x", "i18n")
gtk.glade.bindtextdomain ("youtubed-2x", locale_dir)
else:
# Installed. Try to discover locale location
logging.debug ("Installed")
locale_dir = None
if "XDG_DATA_DIRS" in os.environ:
data_dirs = os.environ["XDG_DATA_DIRS"].split (":")
for data_dir in data_dirs:
mofile = gettext.find ("youtubed-2x",
os.path.join (data_dir, "locale"))
logging.debug (mofile)
if mofile:
locale_dir = os.path.join (data_dir, "locale")
break
logging.debug (locale_dir)
if locale_dir:
gettext.install ("youtubed-2x", locale_dir)
gtk.glade.bindtextdomain ("youtubed-2x", locale_dir)
else:
# If .mo file could not be found, ignore the issue.
# Non-translated strings will be used. Install _()
# to global namespace
gettext.install ("youtubed-2x")
gtk.glade.bindtextdomain ("youtubed-2x")
#gettext.install ("youtubed-2x")
gtk.glade.textdomain ("youtubed-2x")
logging.debug (_)
if __name__ == '__main__':
from youtubed2x_lib.other import WINDOWS
# Set up logging
logging_level = logging.DEBUG
if WINDOWS:
logging.basicConfig (filename="log.txt", level=logging_level)
else:
logging.basicConfig (level=logging_level)
log = logging.getLogger ()
log.debug ("This is a test")
# Must call add_translation before imports that use _
add_translation ()
from youtubed2x_lib.videoitem import VideoItem
from youtubed2x_lib import settings
from youtubed2x_lib.parsermanager import ParserManager as parser_manager
from youtubed2x_lib.ui.propertieswindow import PropertiesWindow
from youtubed2x_lib.ui.models.videothreadmanager import VideoThreadManager
from youtubed2x_lib.ui.mainwindow import YouTubeDownloader
media_paths = [
# Can't use __file__ here. Py2exe does not like it
os.path.join (os.path.dirname (sys.argv[0]), "data"), # Running locally
]
# Check for system data directories. Append any found
# directories to media_paths
if "XDG_DATA_DIRS" in os.environ:
data_dirs = os.environ["XDG_DATA_DIRS"].split (":")
for data_dir in data_dirs:
media_paths.append (os.path.join (data_dir, "youtubed-2x"))
elif WINDOWS:
media_paths.append (os.path.join (sys.prefix, "share", "youtubed-2x"))
app_settings = settings.Settings ()
try:
app_settings.readConfigFile ()
except app_settings.InvalidConfig as exception:
logging.exception("Invalid configuration file")
logging.info ("Reverting to default settings")
app_settings.setDefaults ()
parser_manager.importParsers ()
gladefile = None
filename = "youtubed-2x.glade"
for path in media_paths:
glade_file = os.path.join (path, filename)
if os.path.exists (glade_file):
gladefile = glade_file
break
if not gladefile:
logging.critical ("Glade file \"%s\" could not be found. Exiting.",
filename)
sys.exit (1)
thread_manager = VideoThreadManager (app_settings)
prop_win = PropertiesWindow (gladefile, app_settings)
prop_win.connect ("settings_updated", thread_manager.alter_sem)
main_ui = YouTubeDownloader (gladefile, app_settings, thread_manager,
parser_manager, prop_win)
VideoItem.setFFmpegLocation (app_settings.ffmpeg_location)
thread_manager.restore_session ()
gtk.gdk.threads_init ()
gtk.gdk.threads_enter ()
gtk.main ()
gtk.gdk.threads_leave ()
app_settings.writeConfigFile ()
thread_manager.save_session ()