Opetustv

Jari Sarasvuon YLE Puhe -ohjelmasarjan downloader

Aug 6th, 2013
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.78 KB | None | 0 0
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3.  
  4. """
  5. Ohjelma lataa Jari Sarasvuon YLE Puheessa keväällä/kesällä 2013 esitetyn ohjelmasarjan jaksot mp3-tiedostoina.
  6. Suorittaminen:
  7.  - Linux-ympäristössä komentoriviltä: python tiedostonimi.py
  8.  - Tai antamalla chmod:lla suoritusoikeudet ja sitten: ./tiedostonimi.py ko. hakemistossa suoritettuna
  9. Toimii ainakin Python 2.7, mutta ei Python 3 ilman pieniä muokkauksia (ks. alla)
  10. @author Janne Cederberg, Opetus.tv
  11. @date 2013-08-06
  12. @license GPL
  13. """
  14.  
  15. import xml.etree.ElementTree as ET
  16. from urllib2 import urlopen, URLError, HTTPError
  17. #from datetime import datetime
  18. import email.utils
  19.  
  20. def download(url, target_name):
  21.     try:
  22.         f = urlopen(url)
  23.         with open(target_name, 'wb') as target_file:
  24.             target_file.write( f.read() )
  25.     except HTTPError, e:    # Python 2
  26.     #except HTTPError as e: # Python 3
  27.         print 'HTTP Error: ', e.code, url   # Python 2
  28.     except URLError, e: # Python 2
  29.     #except URLError as e:  # Python 3
  30.         print 'URL Error: ', e.reason, url  # Python 2
  31.     finally:
  32.         f.close()
  33.         target_file.close()
  34.  
  35.  
  36. def process_rss(rss_url):
  37.     tree = ET.parse( urlopen(rss_url) )
  38.     items = tree.findall('channel/item')
  39.  
  40.     for item in items:
  41.         title = item.find('title').text.strip().replace(':', ' -').replace('?', '')
  42.         url   = item.find('enclosure').attrib['url']
  43.         #date  = datetime.strptime( item.find('pubDate').text, '%a, %d %b %Y %H:%M:%S +0200')
  44.         date  = email.utils.parsedate_tz( item.find('pubDate').text )
  45.         fname = "%d-%02d-%02d, %s" % (date[0], date[1], date[2], title+'.mp3')
  46.         print "Kopioidaan tiedostoa: %s" % fname
  47.         download(url, fname)
  48.  
  49. if __name__ == '__main__':
  50.     # Sarasvuon YLE Puhe -ohjelmien RSS feedin URL
  51.     rss_url = 'http://areena.yle.fi/api/search.rss?id=1791080&media=audio&ladattavat=1'
  52.     process_rss(rss_url)
Add Comment
Please, Sign In to add comment