CC-1799 : Live Studio Playout from media library (pytagsfs)

if a tag is edited by easytag, the change is now reflected in airtime database.
This commit is contained in:
Naomi 2011-04-28 18:02:40 -04:00 committed by naomiaro
parent f64a1aae34
commit 6834ecca76
4 changed files with 59 additions and 18 deletions

View file

@ -29,7 +29,25 @@ def api_client_factory(config):
print 'API Client "'+config["api_client"]+'" not supported. Please check your config file.'
print
sys.exit()
def recursive_urlencode(d):
def recursion(d, base=None):
pairs = []
for key, value in d.items():
if hasattr(value, 'values'):
pairs += recursion(value, key)
else:
new_pair = None
if base:
new_pair = "%s[%s]=%s" % (base, urllib.quote(unicode(key)), urllib.quote(unicode(value)))
else:
new_pair = "%s=%s" % (urllib.quote(unicode(key)), urllib.quote(unicode(value)))
pairs.append(new_pair)
return pairs
return '&'.join(recursion(d))
class ApiClientInterface:
# Implementation: optional
@ -159,7 +177,6 @@ class AirTimeApiClient(ApiClientInterface):
return version
def test(self):
logger = logging.getLogger()
status, items = self.get_schedule('2010-01-01-00-00-00', '2011-01-01-00-00-00')
@ -355,14 +372,16 @@ class AirTimeApiClient(ApiClientInterface):
response = None
try:
url = "http://%s:%s/%s/%s" % (self.config["base_url"], str(self.config["base_port"]), self.config["api_base"], self.config["update_media_url"])
logger.debug(url)
#logger.debug(url)
url = url.replace("%%api_key%%", self.config["api_key"])
logger.debug(url)
data = urllib.urlencode(md)
data = recursive_urlencode(md)
req = urllib2.Request(url, data)
response = urllib2.urlopen(req)
response = json.loads(response.read())
response = urllib2.urlopen(req).read()
logger.info("update media %s", response)
response = json.loads(response)
logger.info("update media %s", response)
except Exception, e:

View file

@ -84,12 +84,12 @@ class MediaMonitor(ProcessEvent):
gunid = event.name.split('.')[0]
md = {'gunid':gunid, 'md5':md5}
file_info = mutagen.File(event.pathname, easy=True)
attrs = self.mutagen2airtime
for key in file_info.keys() :
if key in attrs :
md[attrs[key]] = file_info[key]
md[attrs[key]] = file_info[key][0]
data = {'md': md}