33
34
35
36
37
38
39
40
41
42
43
44
45
46
47 | # for add_plugin_config() on initialization.
#
# Also provides a simple logging interface with log.TYPE(...),
# which is also pre-instantiated.
from __future__ import print_function
import os
import sys
import json
import gzip
import platform
import re
from compat2and3 import gzip_decode, find_executable, PY2, PY3
import zlib |
|
| 33
34
35
36
37
38
39
40
41
42
43
44
45
46
47 | # for add_plugin_config() on initialization.
#
# Also provides a simple logging interface with log.TYPE(...),
# which is also pre-instantiated.
from __future__ import print_function
import os, glob
import sys
import json
import gzip
import platform
import re
from compat2and3 import gzip_decode, find_executable, PY2, PY3
import zlib |
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 | # add argv
self.args = self.init_args(argparse.ArgumentParser())
self.apply_args(self.args)
# some defaults
def defaults(self):
self.play = {
"audio/mpeg": self.find_player(),
"audio/ogg": self.find_player(),
"audio/*": self.find_player(),
"video/youtube": self.find_player(typ="video") + " $(youtube-dl -g %srv)",
"video/*": self.find_player(typ="video", default="vlc"),
"url/http": self.find_player(typ="browser"),
}
self.record = {
"audio/*": self.find_player(typ="xterm") + " -e \"streamripper %srv\"", # -d /home/***USERNAME***/Musik
"video/youtube": self.find_player(typ="xterm") + " -e \"youtube-dl %srv\"",
}
self.specbuttons = {
#"gtk-media-forward": "pavucontrol",
}
# Presets are redundant now. On first startup the `priority:` field of each plugin is checked.
self.plugins = {
# core plugins, cannot be disabled anyway |
>
|
|
| 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 | # add argv
self.args = self.init_args(argparse.ArgumentParser())
self.apply_args(self.args)
# some defaults
def defaults(self):
self.windows = platform.system()=="Windows"
self.play = {
"audio/mpeg": self.find_player(),
"audio/ogg": self.find_player(),
"audio/*": self.find_player(),
"video/youtube": self.find_player(typ="video") + " $(youtube-dl -g %srv)",
"video/*": self.find_player(typ="video", default="vlc"),
"url/http": self.find_player(typ="browser"),
}
self.record = {
"audio/*": self.find_player(typ="xterm", append=' -e "streamripper %srv"'), # -d /home/***USERNAME***/Musik
"video/youtube": self.find_player(typ="video", append=' $("youtube-dl %srv")'),
}
self.specbuttons = {
#"gtk-media-forward": "pavucontrol",
}
# Presets are redundant now. On first startup the `priority:` field of each plugin is checked.
self.plugins = {
# core plugins, cannot be disabled anyway |
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191 | self.retain_deleted = 0
self.auto_save_appstate = 1
self.auto_save_stations = 0
self.reuse_m3u = 1
self.playlist_asis = 0
self.window_title = 0
self.google_homepage = 0
self.windows = platform.system()=="Windows"
self.open_mode = "r" if self.windows and PY2 else "rt"
self.pyquery = 1
self.debug = 0
# update old setting names
def migrate(self):
# 2.1.1
if "audio/mp3" in self.play:
self.play["audio/mpeg"] = self.play["audio/mp3"]
del self.play["audio/mp3"]
# 2.1.7
if self.tmp == "/tmp":
self.tmp = "/tmp/streamtuner2"
# Add plugin names and default config: options from each .meta
def add_plugin_defaults(self, meta, name):
pluginconf.add_plugin_defaults(self, self.plugins, meta, name)
# look at system binaries for standard audio players
def find_player(self, typ="audio", default="xdg-open"):
players = {
"audio": ["audacious %m3u", "audacious2", "exaile %pls", "xmms2", "banshee", "amarok %pls", "clementine", "qmmp", "quodlibet", "aqualung", "mp3blaster %m3u", "vlc --one-instance", "totem"],
"video": ["umplayer", "xnoise", "gxine", "totem", "vlc --one-instance", "parole", "smplayer", "gnome-media-player", "xine", "bangarang"],
"browser": ["opera", "midori", "sensible-browser"],
"xterm": ["xfce4-terminal", "x-termina-emulator", "gnome-terminal", "xterm", "rxvt"],
}
for bin in players[typ]:
if find_executable(bin.split()[0]):
return bin
return default
# http://standards.freedesktop.org/basedir-spec/basedir-spec-0.6.html
def xdg(self, path="/streamtuner2"):
home = os.environ.get("HOME", self.tmp)
config = os.environ.get("XDG_CONFIG_HOME", os.environ.get("APPDATA", home+"/.config"))
# storage dir |
<
<
<
<
<
|
>
>
|
|
|
|
|
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
| 146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205 | self.retain_deleted = 0
self.auto_save_appstate = 1
self.auto_save_stations = 0
self.reuse_m3u = 1
self.playlist_asis = 0
self.window_title = 0
self.google_homepage = 0
self.open_mode = "r" if self.windows and PY2 else "rt"
self.pyquery = 1
self.debug = 0
# update old setting names
def migrate(self):
# 2.1.7
if self.tmp == "/tmp":
self.tmp = "/tmp/streamtuner2"
# Add plugin names and default config: options from each .meta
def add_plugin_defaults(self, meta, name):
pluginconf.add_plugin_defaults(self, self.plugins, meta, name)
# look at system binaries for standard audio players
def find_player(self, typ="audio", default="xdg-open", append=""):
if self.windows:
return self.find_player_win(typ, default)
players = { # linux
"audio": ["audacious %m3u", "audacious2", "exaile %pls", "xmms2", "banshee", "amarok %pls", "clementine", "qmmp", "quodlibet", "aqualung", "mp3blaster %m3u", "vlc --one-instance", "totem"],
"video": ["umplayer", "xnoise", "gxine", "totem", "vlc --one-instance", "parole", "smplayer", "gnome-media-player", "xine", "bangarang"],
"browser": ["opera", "midori", "firefox", "sensible-browser"],
"xterm": ["xfce4-terminal", "x-terminal-emulator", "gnome-terminal", "xterm", "rxvt"],
}
for bin in players[typ]:
if find_executable(bin.split()[0]):
return bin
return default
# Windows look for c:/program files/*/*.exe
def find_player_win(self, typ="audio", default="wmplayer %asx", append=""):
base = [os.environ["ProgramFiles"], "c:/windows", "c:/program files", "c:/windows/internet explorer/"]
players = {
"audio": ["/VLC*/vlc.exe", "wmplayer.exe %asx"],
"browser": ["/Moz*/firefox.exe", "iexplore.exe %url"],
"xterm": ['/D "C:/program files/streamripper" streamripper.exe %srv']
}
typ = typ if typ in players else "audio"
for bin in players[typ]:
for b in base:
fn = glob.glob(b + bin)
if len(fn):
return fn[0] + append
return players[typ][-1]
# http://standards.freedesktop.org/basedir-spec/basedir-spec-0.6.html
def xdg(self, path="/streamtuner2"):
home = os.environ.get("HOME", self.tmp)
config = os.environ.get("XDG_CONFIG_HOME", os.environ.get("APPDATA", home+"/.config"))
# storage dir |