#!/usr/bin/env python

import urllib, urllib2
import subprocess
import os
import shutil

site = "http://xprod.mit.edu/w/"
page = "Song Suggestions - Spring 2011"
section = "I AM"

def pagetourl(page):
    return "%s%s?action=raw" % (site, urllib.quote(page.replace(" ", "_")))

def urltofile(url):
    prefixes = ['https://web.mit.edu/~', 'https://web.mit.edu/']
    for prefix in prefixes:
        if url[0:len(prefix)] == prefix:
            return '/mit/' + urllib.unquote(url[len(prefix):])
    raise RuntimeError(url)

def handle_youtube(v, name, i):
    subprocess.Popen(['./youtube-dl', 'http://www.youtube.com/watch?v=' + v]).wait()
    subprocess.Popen(['mplayer', '-vo', 'none', '-ao', 'pcm', v + ".flv"]).wait()
    subprocess.Popen(['lame', 'audiodump.wav', '%s%d.mp3' % (name, i)]).wait()

def handle_mp3(path, name, i):
    shutil.copy(urltofile(path), ".")

def process(name):
    print "--" + name + "--"
    u = urllib.urlopen(pagetourl(name))
    i = 0
    for x in u:
        if x[0:12] == "#REDIRECT [[":
            return process(x[12:-2])

        s = x.split("{{youtube|")
        if len(s) > 1:
            v = s[1].split("}}")[0]
            handle_youtube(v, name, i)
            i = i + 1

        s = x.split("{{mp3|")
        if len(s) > 1:
            url = s[1].split("}}")[0]
            handle_mp3(url, name, i)
            i = i + 1

        s = x.split('<embed src="')
        if len(s) > 1:
            if "youtube" in s[1]:
                v = s[1].split("youtube.com/v/")[1].split("&")[0]
                handle_youtube(v, name, i)
            else:
                url = s[1].split('" autostart')[0]
                handle_mp3(url, name, i)
                i = i + 1

if __name__ == "__main__":
    u = urllib2.urlopen(pagetourl(page))

    for x in u:
        if section in x:
            break

    for x in u:
        if x[0:3] == '<b>':
            name = x.split("[[")[1].split("]]")[0]
            process(name)
        if x[0] == '=':
            break

    os.unlink("audiodump.wav")
