Skip to content

Commit

Permalink
prepared code for favorite-groups
Browse files Browse the repository at this point in the history
  • Loading branch information
wendlers committed Sep 28, 2012
1 parent 1ed6899 commit 559bd3d
Show file tree
Hide file tree
Showing 5 changed files with 53 additions and 28 deletions.
11 changes: 10 additions & 1 deletion etc/pyscmpd.conf
Expand Up @@ -26,10 +26,19 @@ file=/tmp/pyscmpd.log
# #
# format: <category>: <user1>, <user2>, ... # format: <category>: <user1>, <user2>, ...
## ##
[favorites] [favorite-users]


electroswing : shemian electroswing : shemian
gethoswing : maddecent, barelylegit gethoswing : maddecent, barelylegit
electrosoul : griz electrosoul : griz
deephouse : freudeamtanzen, adriatique deephouse : freudeamtanzen, adriatique
worldtrance : gogmusic worldtrance : gogmusic

##
# Favorite groups
#
# format: groups: <group1>, <user2>, ...
##
[favorite-groups]

groups: deep-house-4, minimal-tech-house
46 changes: 29 additions & 17 deletions src/pyscmpd/daemon.py
Expand Up @@ -38,22 +38,26 @@


class PyScMpd: class PyScMpd:


stdin = None stdin = None
stdout = None stdout = None
stderr = None stderr = None
pidfile = None pidfile = None
mpd = None mpd = None
mainloop = None mainloop = None
favorites = None port = 9900
port = 9900
favoriteUsers = None
favoriteGroups = None


def __init__(self, pidfile, stdin='/dev/null', stdout='/dev/null', stderr='/dev/null'): def __init__(self, pidfile, stdin='/dev/null', stdout='/dev/null', stderr='/dev/null'):


self.stdin = stdin self.stdin = stdin
self.stdout = stdout self.stdout = stdout
self.stderr = stderr self.stderr = stderr
self.pidfile = pidfile self.pidfile = pidfile
self.favorites = []
self.favoriteUsers = []
self.favoriteGroups = []


def daemonize(self): def daemonize(self):


Expand Down Expand Up @@ -219,17 +223,25 @@ def readConfig(self, cfgFile, foreground=False):


sys.stdout.write("Logging to file: %s\n" % logFile) sys.stdout.write("Logging to file: %s\n" % logFile)


if parser.has_section("favorites"): if parser.has_section("favorite-users"):


for category, values in parser.items("favorites"): for category, values in parser.items("favorite-users"):


usersRaw = values.split(",") usersRaw = values.split(",")
users = [] users = []


for user in usersRaw: for user in usersRaw:
users.append(user.strip()) users.append(user.strip())


self.favorites.append({"name" : category.strip(), "users" : users}) self.favoriteUsers.append({"name" : category.strip(), "users" : users})

if parser.has_option("favorite-groups", "groups"):

groupsRaw = parser.get("favorite-groups", "groups").split(",")
groups = []

for group in groupsRaw:
self.favoriteGroups.append(group.strip())


except Exception as e: except Exception as e:


Expand All @@ -239,7 +251,7 @@ def readConfig(self, cfgFile, foreground=False):
def run(self): def run(self):


logging.info("pyscmpd v%s started" % PYSCMPD_VERSION) logging.info("pyscmpd v%s started" % PYSCMPD_VERSION)
mpd = scmpd.ScMpdServerDaemon(self.favorites, self.port) mpd = scmpd.ScMpdServerDaemon(self.favoriteUsers, self.favoriteGroups, self.port)


self.mainloop = gobject.MainLoop() self.mainloop = gobject.MainLoop()
self.mainloop.run() self.mainloop.run()
Expand Down
4 changes: 3 additions & 1 deletion src/pyscmpd/pyscmpdctrl.py
Expand Up @@ -49,9 +49,11 @@ def prepare():
f.write("\n[logging]\n") f.write("\n[logging]\n")
f.write("level=info\n") f.write("level=info\n")
f.write("file=%s\n" % DEF_LOG_FILE) f.write("file=%s\n" % DEF_LOG_FILE)
f.write("\n[favorites]\n") f.write("\n[favorite-users]\n")
f.write("gethoswing : maddecent, barelylegit\n") f.write("gethoswing : maddecent, barelylegit\n")
f.write("electrosoul: griz\n") f.write("electrosoul: griz\n")
f.write("\n[favorite-groups]\n")
f.write("groups: deep-house-4, minimal-tech-hous\n")
f.close() f.close()


try: try:
Expand Down
4 changes: 2 additions & 2 deletions src/pyscmpd/scmpd.py
Expand Up @@ -34,10 +34,10 @@ class ScMpdServerDaemon(mpdserver.MpdServerDaemon):
scroot = None scroot = None
player = None player = None


def __init__(self, favorites, serverPort = 9900): def __init__(self, favoriteUsers, favoriteGroups, serverPort = 9900):


ScMpdServerDaemon.player = gstplayer.GstPlayer() ScMpdServerDaemon.player = gstplayer.GstPlayer()
ScMpdServerDaemon.scp = provider.ResourceProvider(favorites) ScMpdServerDaemon.scp = provider.ResourceProvider(favoriteUsers, favoriteGroups)
ScMpdServerDaemon.scroot = ScMpdServerDaemon.scp.getRoot() ScMpdServerDaemon.scroot = ScMpdServerDaemon.scp.getRoot()


mpdserver.MpdServerDaemon.__init__(self, serverPort) mpdserver.MpdServerDaemon.__init__(self, serverPort)
Expand Down
16 changes: 9 additions & 7 deletions src/pyscmpd/scprovider.py
Expand Up @@ -21,7 +21,6 @@
This file is part of the pyscmpd project. This file is part of the pyscmpd project.
''' '''


import pickle
import logging import logging
import soundcloud import soundcloud


Expand All @@ -34,19 +33,19 @@ class ResourceProvider:
sc = None sc = None
root = None root = None


def __init__(self, favorites): def __init__(self, favoriteUsers, favoriteGroups):


ResourceProvider.sc = soundcloud.Client(client_id='aa13bebc2d26491f7f8d1e77ae996a64') ResourceProvider.sc = soundcloud.Client(client_id='aa13bebc2d26491f7f8d1e77ae996a64')


self.root = Root(favorites) self.root = Root(favoriteUsers, favoriteGroups)


def getRoot(self): def getRoot(self):


return self.root return self.root


class Root(resource.DirectoryResource): class Root(resource.DirectoryResource):


def __init__(self, favorites): def __init__(self, favoriteUsers, favoriteGroups):


resource.DirectoryResource.__init__(self, 0, "pyscmpd", "pyscmpd") resource.DirectoryResource.__init__(self, 0, "pyscmpd", "pyscmpd")


Expand All @@ -56,12 +55,15 @@ def __init__(self, favorites):
ufav = resource.DirectoryResource(0, favgrp ,favgrp ) ufav = resource.DirectoryResource(0, favgrp ,favgrp )
ufav.setMeta({"directory" : favgrp}) ufav.setMeta({"directory" : favgrp})


for fav in favorites: for fav in favoriteUsers:
f = Favorites(fav["name"], fav["users"], favgrp) f = FavoriteUsers(fav["name"], fav["users"], favgrp)
ufav.addChild(f) ufav.addChild(f)


grps = Groups("random-groups") grps = Groups("random-groups")


for fav in favoriteGroups:
logging.info("Adding favorite group: %s" % fav)

self.addChild(ufav) self.addChild(ufav)
self.addChild(uall) self.addChild(uall)
self.addChild(grps) self.addChild(grps)
Expand Down Expand Up @@ -116,7 +118,7 @@ def retriveChildren(self):
except Exception as e: except Exception as e:
logging.warn("Unable to retrive data for URI users: %s" % `e`) logging.warn("Unable to retrive data for URI users: %s" % `e`)


class Favorites(resource.DirectoryResource): class FavoriteUsers(resource.DirectoryResource):


retriveLock = None retriveLock = None
users = None users = None
Expand Down

0 comments on commit 559bd3d

Please sign in to comment.