1 # -*- coding: utf-8 -*-
3 # gPodder - A media aggregator and podcast client
4 # Copyright (c) 2005-2012 Thomas Perl and the gPodder Team
6 # gPodder is free software; you can redistribute it and/or modify
7 # it under the terms of the GNU General Public License as published by
8 # the Free Software Foundation; either version 3 of the License, or
9 # (at your option) any later version.
11 # gPodder is distributed in the hope that it will be useful,
12 # but WITHOUT ANY WARRANTY; without even the implied warranty of
13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 # GNU General Public License for more details.
16 # You should have received a copy of the GNU General Public License
17 # along with this program. If not, see <http://www.gnu.org/licenses/>.
20 __author__
= 'Thomas Perl <thp@gpodder.org>'
22 __date__
= '2012-01-24'
23 __relname__
= 'Weekend Vampire'
24 __copyright__
= '© 2005-2012 Thomas Perl and the gPodder Team'
25 __license__
= 'GNU General Public License, version 3 or later'
26 __url__
= 'http://gpodder.org/'
28 __version_info__
= tuple(int(x
) for x
in __version__
.split('.'))
36 # Check if real hard dependencies are available
41 Error: Module "feedparser" (python-feedparser) not found.
42 The feedparser module can be downloaded from
43 http://code.google.com/p/feedparser/
52 Error: Module "mygpoclient" (python-mygpoclient) not found.
53 The mygpoclient module can be downloaded from
54 http://thp.io/2010/mygpoclient/
59 # The User-Agent string for downloads
60 user_agent
= 'gPodder/%s (+%s)' % (__version__
, __url__
)
62 # Are we running in GUI, Maemo or console mode?
66 self
.fremantle
= False
67 self
.harmattan
= False
74 # D-Bus specific interface names
75 dbus_bus_name
= 'org.gpodder'
76 dbus_gui_object_path
= '/gui'
77 dbus_podcasts_object_path
= '/podcasts'
78 dbus_interface
= 'org.gpodder.interface'
79 dbus_podcasts
= 'org.gpodder.podcasts'
80 dbus_session_bus
= None
82 # Set "win32" to True if we are on Windows
83 win32
= (platform
.system() == 'Windows')
84 # Set "osx" to True if we are on Mac OS X
85 osx
= (platform
.system() == 'Darwin')
87 # i18n setup (will result in "gettext" to be available)
88 # Use _ = gpodder.gettext in modules to enable string translations
89 textdomain
= 'gpodder'
90 locale_dir
= gettext
.bindtextdomain(textdomain
)
91 t
= gettext
.translation(textdomain
, locale_dir
, fallback
=True)
96 ngettext
= t
.ungettext
97 except AttributeError:
100 ngettext
= t
.ngettext
104 # Workaround for bug 650
105 from gtk
.glade
import bindtextdomain
106 bindtextdomain(textdomain
, locale_dir
)
109 # Ignore for QML UI or missing glade module
113 # Set up textdomain for gtk.Builder (this accesses the C library functions)
114 if hasattr(locale
, 'bindtextdomain'):
115 locale
.bindtextdomain(textdomain
, locale_dir
)
119 # Set up socket timeouts to fix bug 174
122 socket
.setdefaulttimeout(SOCKET_TIMEOUT
)
126 # Variables reserved for GUI-specific use (will be set accordingly)
131 user_extensions
= None
133 # Episode states used in the database
134 STATE_NORMAL
, STATE_DOWNLOADED
, STATE_DELETED
= range(3)
136 # Paths (gPodder's home folder, config, db and download folder)
142 # Function to set a new gPodder home folder
143 def set_home(new_home
):
144 global home
, config_file
, database_file
, downloads
145 home
= os
.path
.abspath(new_home
)
147 config_file
= os
.path
.join(home
, 'Settings.json')
148 database_file
= os
.path
.join(home
, 'Database')
149 downloads
= os
.path
.join(home
, 'Downloads')
151 # Default locations for configuration and data files
152 default_home
= os
.path
.expanduser(os
.path
.join('~', 'gPodder'))
153 set_home(os
.environ
.get('GPODDER_HOME', default_home
))
155 if home
!= default_home
:
156 print >>sys
.stderr
, 'Storing data in', home
, '(GPODDER_HOME is set)'
158 # Plugins to load by default
159 DEFAULT_PLUGINS
= ['gpodder.plugins.soundcloud', 'gpodder.plugins.xspf',
160 'gpodder.plugins.woodchuck', 'gpodder.plugins.notification']
163 """Load (non-essential) plugin modules
165 This loads a default set of plugins, but you can use
166 the environment variable "GPODDER_PLUGINS" to modify
167 the list of plugins."""
168 PLUGINS
= os
.environ
.get('GPODDER_PLUGINS', None)
170 PLUGINS
= DEFAULT_PLUGINS
172 PLUGINS
= PLUGINS
.split()
173 for plugin
in PLUGINS
:
177 print >>sys
.stderr
, 'Cannot load plugin: %s (%s)' % (plugin
, e
)
180 def detect_platform():
184 ui
.fremantle
= ('Maemo 5' in open('/etc/issue').read())
186 print >>sys
.stderr
, 'Detected platform: Maemo 5 (Fremantle)'
191 ui
.harmattan
= ('MeeGo 1.2 Harmattan' in open('/etc/issue').read())
195 ui
.fremantle
= ui
.fremantle
or ui
.harmattan
196 ui
.desktop
= not ui
.fremantle
and not ui
.harmattan
198 if ui
.fremantle
and 'GPODDER_HOME' not in os
.environ
:
199 new_home
= os
.path
.expanduser(os
.path
.join('~', 'MyDocs', 'gPodder'))
200 set_home(os
.path
.expanduser(new_home
))