class Plugin(PluginBase):
    _description = "Playing youtube video"
    _authors = { 'James Axl' : '*****@*****.**' }

    def __init__(self):
        PluginBase.__init__(self)
	
    def start(self, session):
        self.session = session
        self.session.signals.conv_message.subscribe(self._on_message)
        self.watch=WatchVideo()
        return True

    def stop(self):
         self.session.signals.conv_message.unsubscribe(self._on_message)
         return False


    def configurable(self):
         return False


    def check_url(self,cid, account, msg):
        
        s = msg
        l=re.findall(r'(http?://www.youtube.com/watch\S+)', s)
        if len(l) >= 1:
                msg_text=l[0]
                url_data = urlparse.urlparse(msg_text)
                query = urlparse.parse_qs(url_data.query)
                video_id = query["v"][0]
                if video_id:
                        try:		
                            src = BeautifulSoup.BeautifulSoup(urllib.urlopen("http://www.youtube.com/watch?v=%s"%video_id))
                            title=src.title.string.split('\n')[1].strip()
                            urllib.urlretrieve ("http://img.youtube.com/vi/%s/hqdefault.jpg"%video_id,tempfile.gettempdir()+"/%s.jpg"%video_id)
                            image=tempfile.gettempdir()+"/%s.jpg"%video_id
                            if self.watch.bl:                    
                                self.watch.set_video(title,"http://www.youtube.com/v/%s"%video_id,image,account)
                            else:
                                self.watch.init_info()
                                self.watch.set_video(title,"http://www.youtube.com/v/%s"%video_id,image,account)
                                self.watch.win_show()                 
                        except NameError:
                            warn="""<P><B>BeautifulSoup</B> is required by youtube plugin please run <B>easy_install BeautifulSoup</B> or <B>pip install BeautifulSoup</B> </P> """
                            url=e3.Message(e3.Message.TYPE_INFO, warn,account,timestamp=None)
                            self.session.gui_message(cid, account, url)
                
                    
    def _on_message(self, cid, account, message, cedict=None):	
        user = self.session.contacts.get(account)
        msg_text=message.body
        message=e3.Message(e3.Message.TYPE_INFO, msg_text,account,timestamp=None)
        self.check_url(cid, account, message.body)
 def start(self, session):
     self.session = session
     self.session.signals.conv_message.subscribe(self._on_message)
     self.watch=WatchVideo()
     return True