#!/usr/bin/env python

"""MightyUpload Service Code"""

####################################################################################################
def NormalizeURL(url):

    if '/embed-' in url:
        url = url.replace('/embed-', '/')
    return url

####################################################################################################
def MetadataObjectForURL(url):

    try:
        html = HTML.ElementFromURL(url)
    except:
        raise Ex.MediaNotAvailable

    title = html.xpath('//h3/text()')
    if not title:
        raise Ex.MediaExpired

    return VideoClipObject(
        title=title[0].strip(),
        thumb='http://i.imgur.com/75YO83o.jpg',
        source_title=url.split('/')[2].title()
        )

####################################################################################################
def MediaObjectsForURL(url):

    return [
        MediaObject(
            video_resolution='sd',
            audio_channels=2,
            optimized_for_streaming=False,
            parts=[
                PartObject(key=Callback(PlayVideo, url=url))
                ]
            )
        ]

####################################################################################################
@indirect
def PlayVideo(url):

    rurl = Regex(r'(https?\:\/\/(?:www\.)?mightyupload\.(?:[^/]+\/))([^\/\.]+)').search(url)
    url = rurl.group(1) + 'embed-' + rurl.group(2) + '.html'
    page = HTTP.Request(url).content

    r = Regex(r'file\:(?:\s)?(?:\"|\')(http[^\"\']+(?<!m3u8|smil))(?:\"|\')').search(page)
    if r:
        Log.Debug('* PlayVideo URL = \"%s\"' %r.group(1))
        return IndirectResponse(VideoClipObject, key=r.group(1))

    raise Ex.MediaNotAvailable
