Corso inglese gratuito con Python

Con la scusa di iniziare ad apprendere Python ho realizzato un piccolo script per fare download automatico delle lezioni di eslpod.com (categoria “English cafe“).

#!/usr/bin/env python
#title           :eslpod_EC.py
#description     :This script downloads english cafe lesson from eslpod.com
#author          :Simone Vellei <henomis@gmail.com>
#date            :20120420
#version         :0.1
#usage           :python eslpod_EC.py
#notes           :
#python_version  :2.6.6
#==============================================================================

import sys
import re
import signal, os
import urllib
from subprocess import call

def wprint(a):
        sys.stdout.write(a)

def handler(signum, frame):
        print "Interrupted!"
        exit(1)

signal.signal(signal.SIGINT, handler)

f = urllib.urlopen("http://www.eslpod.com/website/show_all.php?cat_id=-39570")
s = f.read()
f.close()

if s:
        wprint("Parsing HTML...")
else:
        print "Error: download failed!"

chunk = re.match(r'.*<span class="pod_body">.*<b>([0-9]+)</b>&nbsp;Podcasts&nbsp;&nbsp;&nbsp;',s , re.M|re.S)

lenght = 0

if chunk:
        print "DONE"
        files = chunk.group(1)
        lenght = len(files)
        print lenght
else:
        print "ERROR!"
        exit(1)

# skip lesson 0
for i in range(int(files)-1):
        # insert padding
        s = 'wget "http://libsyn.com/media/eslpod/EC{0}.mp3" -c -O lesson_{1:0%d}.mp3'%lenght
        # format string
        s = s.format(i+1,i+1)
        # go, go, go...
        call(s, shell = True)

Lo script può essere lanciato settimanalmente (qualcuno ha detto cron?! :)) per aggiornare la directory con le nuove lezioni (wget -c farà il lavoro sporco). La prossima versione potrebbe supportare i thread per fare un download multiplo parallelo e il parsing dei parametri in input per nuove funzionalità.

Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...