Fixed two bugs

master
Stefan Krulj 14 years ago
parent d0e4da7f45
commit efa16f5f64
  1. 49
      modules/active/youtube.py
  2. 7
      sys/persistent.py

@ -18,28 +18,33 @@ def youtube_logger(mfrom,msg):
if brathuhn.room_nick in unicode(mfrom): if brathuhn.room_nick in unicode(mfrom):
return return
groups=re.findall(URL,unicode(msg.getBody())) groups=re.findall(URL,unicode(msg.getBody()))
if groups:
for g in groups: tmp = {}
url = g[0] for g in groups:
addr = g[2] url = g[0]
protocol = g[1] addr = g[2]
file = g[4] protocol = g[1]
if addr in ['youtube.com','www.youtube.com','youtu.be']: file = g[4]
yt_service = gdata.youtube.service.YouTubeService() if protocol in ['http','https'] and addr in ['youtube.com','www.youtube.com','youtu.be']:
id = get_id_from_url(url) yt_service = gdata.youtube.service.YouTubeService()
print "youtube link",id id = get_id_from_url(url)
entry = yt_service.GetYouTubeVideoEntry(video_id=id) # prevent doubles
sec = int(entry.media.duration.seconds) if id in tmp:
duration = "%02d:%02d:%02d" % (sec/3600, (sec%3600)/60, (sec%3600)%60) continue
txt = "%s posted a youtube video: %s\nTitle: %s\nCategory: %s\nTags: %s\nDuration: %s\nViews: %s\nRating: %s" % (mfrom.getResource(), tmp[id]=True
entry.media.player.url, print "youtube link",id
entry.media.title.text, entry = yt_service.GetYouTubeVideoEntry(video_id=id)
entry.media.category[0].text, sec = int(entry.media.duration.seconds)
entry.media.keywords.text, duration = "%02d:%02d:%02d" % (sec/3600, (sec%3600)/60, (sec%3600)%60)
duration, txt = "%s posted a youtube video: %s\nTitle: %s\nCategory: %s\nTags: %s\nDuration: %s\nViews: %s\nRating: %s" % (mfrom.getResource(),
entry.statistics.view_count, entry.media.player.url,
entry.rating.average) entry.media.title.text,
brathuhn.sendMsg(brathuhn.ROOM,txt,'groupchat') entry.media.category[0].text,
entry.media.keywords.text,
duration,
entry.statistics.view_count,
entry.rating.average)
brathuhn.sendMsg(brathuhn.ROOM,txt,'groupchat')
brathuhn.addGroupListener(youtube_logger) brathuhn.addGroupListener(youtube_logger)

@ -1,5 +1,6 @@
from ConfigParser import ConfigParser from ConfigParser import ConfigParser
import cPickle as pickle import cPickle as pickle
import base64
from threading import Lock from threading import Lock
#TODO replace ConfigParser for better performance #TODO replace ConfigParser for better performance
@ -41,7 +42,8 @@ class PersistentContainer(object):
def __getitem__(self, name): def __getitem__(self, name):
if self.cp.has_option(self.namespace,name): if self.cp.has_option(self.namespace,name):
return pickle.loads(self.cp.get(self.namespace,name)) b64 = self.cp.get(self.namespace,name)
return pickle.loads(base64.b64decode(b64))
return None return None
def __setitem__(self, name,val): def __setitem__(self, name,val):
@ -64,7 +66,8 @@ class PersistentContainer(object):
def _write(self): def _write(self):
for k in self.trans_cache: for k in self.trans_cache:
val = self.trans_cache[k] val = self.trans_cache[k]
self.cp.set(self.namespace,k,pickle.dumps(val)) ser = pickle.dumps(val)
self.cp.set(self.namespace,k,base64.b64encode(ser))
while len(self.trans_del): while len(self.trans_del):
n = self.trans_del.pop() n = self.trans_del.pop()
self.cp.remove_option(self.namespace,n) self.cp.remove_option(self.namespace,n)

Loading…
Cancel
Save