#!/usr/bin/env python
# MODULE IMPORTS
import xml.dom.minidom
import re
# GET THE FEED - UPDATE TO CMD LINE ARGUMENT
# BE SURE TO HAVE THE URL REDIRECT THE URL FROM THE COMMAND LINE WITH
# THE FOLLOWING COMMAND
# curl --silent "url goes here in quotations or else it won't work" > /tmp/geektool/myepisode_feed.xml
dom = xml.dom.minidom.parse("/tmp/geektool/myepisode_feed.xml")
# LIST TO HOLD ALL THE EPISODES
episodes = []
# INLINE FUNCTIONS - DON'T FEEL LIKE CLASSING THIS UP
def getText(nodelist):
rc = []
for node in nodelist:
if node.nodeType == node.TEXT_NODE:
rc.append(node.data)
return ''.join(rc)
def handleChannel(channel,episodes):
items = channel.getElementsByTagName("item")
handleToc(items,episodes)
def handleToc(items,episodes):
for item in items:
# GET THE TITLE TAG FROM THE CURRENT ITEM
title = item.getElementsByTagName("title")[0]
# GET THE TITLE DATA FROM THE TITLE TAG
tmp = getText(title.childNodes)
# REGULAR EXPRESSIONS TO REMOVE THE [ AND ] AND REPLACE WITH ,
tmp = re.sub(" \]\[ ",",",tmp)
tmp = re.sub("\[ ","",tmp)
tmp = re.sub(" \]","",tmp)
# APPEND A LIST OF 4 ITEMS TO THE EPISODE LIST
episodes.append(tmp.split(","))
# HANDLE THE XML
handleChannel(dom,episodes)
# PRINT OUT THE SHOWS
for i in range(len(episodes)):
# WHAT EACH PORTION OF THE EPISODE LIST MEANS
# - episode[i][0] = SHOW NAME
# - episode[i][1] = SHOW SEASON AND EPISODE NUMBER
# - episode[i][2] = EPISODE TITLE
# - episode[i][3] = AIR DATE
# THE PRINT STATEMENT IS TOTALY CUSTOMIZABLE
# PRINT OUT SHOW TITLE AND EPISODE NAME
print episodes[i][0] + ' - "' + episodes[i][2] + '"'