#!/usr/bin/env python
# -*- coding: utf-8 -*-
import re
from module.plugins.Hoster import Hoster

class VeehdCom(Hoster):
   __name__ = 'VeehdCom'
   __type__ = 'hoster'
   __pattern__ = r'http://veehd\.com/video/\d+_\S+'
   __config__ = [
      ('filename_spaces', 'bool', "Allow spaces in filename", 'False'),
      ('replacement_char', 'str', "Filename replacement character", '_'),
   ]
   __version__ = '0.1'
   __description__ = """Veehd.com Download Hoster"""
   __author_name__ = ('cat')
   __author_mail__ = ('cat@pyload')
   
   def _debug(self, msg):
      self.log.debug('[%s] %s' % (self.__name__, msg))
   
   def setup(self):
      self.html = None
      self.multiDL = True
      self.req.canContinue = True

   def process(self, pyfile):
      self.download_html()
      if not self.file_exists():
         self.offline()
         
      pyfile.name = self.get_file_name()
      self.download(self.get_file_url())
      
   def download_html(self):
      url = self.pyfile.url
      self._debug("Requesting page: %s" % (repr(url),))
      self.html = self.load(url)
      
   def file_exists(self):
      if self.html is None:
         self.download_html()
      
      if '<title>Veehd</title>' in self.html:
         return False
      return True
      
   def get_file_name(self):
      if self.html is None:
         self.download_html()
         
      match = re.search(r'<title[^>]*>([^<]+) on Veehd</title>', self.html)
      if not match:
         self.fail("video title not found")
      name = match.group(1)
      
      # replace unwanted characters in filename
      if self.getConf('filename_spaces'):
         pattern = '[^0-9A-Za-z\.\ ]+'
      else:
         pattern = '[^0-9A-Za-z\.]+'
         
      name = re.sub('[^0-9A-Za-z\.]+', self.getConf('replacement_char'),
         name)
      return name + '.avi'

   def get_file_url(self):
      """ returns the absolute downloadable filepath
        """
      if self.html is None:
         self.download_html()

      match = re.search(r'<embed type="video/divx" '
         r'src="(http://([^/]*\.)?veehd\.com/dl/[^"]+)"',
         self.html)
      if not match:
         self.fail("embedded video url not found")
      file_url = match.group(1)

      return file_url
