+               if mobj is not None:
+                       mediaURL = urllib.unquote(mobj.group(1))
+                       video_extension = mediaURL[-3:]
+
+                       # Extract gdaKey if available
+                       mobj = re.search(r'(?m)&gdaKey=(.*?)&', webpage)
+                       if mobj is None:
+                               video_url = mediaURL
+                       else:
+                               gdaKey = mobj.group(1)
+                               video_url = '%s?__gda__=%s' % (mediaURL, gdaKey)
+               else:
+                       mobj = re.search(r' name="flashvars" value="(.*?)"', webpage)
+                       if mobj is None:
+                               self._downloader.trouble(u'ERROR: unable to extract media URL')
+                               return
+                       vardict = parse_qs(mobj.group(1))
+                       if 'mediaData' not in vardict:
+                               self._downloader.trouble(u'ERROR: unable to extract media URL')
+                               return
+                       mobj = re.search(r'"mediaURL":"(http.*?)","key":"(.*?)"', vardict['mediaData'][0])
+                       if mobj is None:
+                               self._downloader.trouble(u'ERROR: unable to extract media URL')
+                               return
+                       mediaURL = mobj.group(1).replace('\\/', '/')
+                       video_extension = mediaURL[-3:]
+                       video_url = '%s?__gda__=%s' % (mediaURL, mobj.group(2))
+
+               mobj = re.search(r'(?im)<title>(.*) - Video</title>', webpage)
+               if mobj is None:
+                       self._downloader.trouble(u'ERROR: unable to extract title')
+                       return
+               video_title = mobj.group(1).decode('utf-8')
+               video_title = sanitize_title(video_title)
+
+               mobj = re.search(r'(?ms)By:\s*<a .*?>(.+?)<', webpage)
+               if mobj is None:
+                       self._downloader.trouble(u'ERROR: unable to extract uploader nickname')
+                       return
+               video_uploader = mobj.group(1)
+
+               try:
+                       # Process video information
+                       self._downloader.process_info({
+                               'id':           video_id.decode('utf-8'),
+                               'url':          video_url.decode('utf-8'),
+                               'uploader':     video_uploader.decode('utf-8'),
+                               'upload_date':  u'NA',
+                               'title':        video_title,
+                               'stitle':       simple_title,
+                               'ext':          video_extension.decode('utf-8'),
+                               'format':       u'NA',
+                               'player_url':   None,
+                       })
+               except UnavailableVideoError:
+                       self._downloader.trouble(u'\nERROR: unable to download video')
+
+
+class DailymotionIE(InfoExtractor):
+       """Information Extractor for Dailymotion"""
+
+       _VALID_URL = r'(?i)(?:https?://)?(?:www\.)?dailymotion\.[a-z]{2,3}/video/([^_/]+)_([^/]+)'
+
+       def __init__(self, downloader=None):
+               InfoExtractor.__init__(self, downloader)
+
+       @staticmethod
+       def suitable(url):
+               return (re.match(DailymotionIE._VALID_URL, url) is not None)
+
+       def report_download_webpage(self, video_id):
+               """Report webpage download."""
+               self._downloader.to_screen(u'[dailymotion] %s: Downloading webpage' % video_id)
+
+       def report_extraction(self, video_id):
+               """Report information extraction."""
+               self._downloader.to_screen(u'[dailymotion] %s: Extracting information' % video_id)
+
+       def _real_initialize(self):
+               return
+
+       def _real_extract(self, url):
+               # Extract id and simplified title from URL
+               mobj = re.match(self._VALID_URL, url)
+               if mobj is None:
+                       self._downloader.trouble(u'ERROR: invalid URL: %s' % url)
+                       return
+
+               # At this point we have a new video
+               self._downloader.increment_downloads()
+               video_id = mobj.group(1)
+
+               simple_title = mobj.group(2).decode('utf-8')
+               video_extension = 'flv'
+
+               # Retrieve video webpage to extract further information
+               request = urllib2.Request(url)
+               try:
+                       self.report_download_webpage(video_id)
+                       webpage = urllib2.urlopen(request).read()
+               except (urllib2.URLError, httplib.HTTPException, socket.error), err:
+                       self._downloader.trouble(u'ERROR: unable retrieve video webpage: %s' % str(err))
+                       return
+
+               # Extract URL, uploader and title from webpage
+               self.report_extraction(video_id)
+               mobj = re.search(r'(?i)addVariable\(\"video\"\s*,\s*\"([^\"]*)\"\)', webpage)