from django.core.management.base import BaseCommand, CommandError
from django.db import transaction
from datetime import *
import csv
import re

class Command(BaseCommand):
    args = '<filename>'

    @transaction.commit_on_success
    def handle(self, *args, **options):
        from django.db import models
        from pycon.core import safe_ascii_encode
        if len(args) != 1:
            raise CommandError('give a filename')

        try:
            models = models.get_app('schedule')
        except (ImproperlyConfigured, ImportError), e:
            raise CommandError(
                "%s. Are you sure your INSTALLED_APPS setting is correct?" % e)
        from pycon.feedutil.templatetags.feedutil import pull_feed
        vm = dict((e['url'], (e['data'].blip_item_id, getattr(e['data'], 'blip_smallthumbnail', ''), e['data'].media_player))
                    for e in pull_feed("http://pycon.blip.tv/rss"))

        scvr = csv.reader(file(args[0],'U'))
        for vurl, eurl in scvr:
            vurl=vurl.strip()
            if vurl in vm:
                eid = eurl[eurl.rfind('_E')+2:eurl.rfind('@')]
                e = models.Event.objects.get(pk=int(eid, 10))
                vl = models.VideoLink.objects.get_or_create(event=e, url=vurl)[0]
                vl.vid = vm[vurl][0]
                vl.thumb = vm[vurl][1]
                vl.code = vm[vurl][2]
                vl.save()
            else:
                print "Not in feed yet:", vurl
