import opml import feedparser as fp import database as db def feedImport (userID): outline = opml.parse("podcast_republic_podcasts.opml") #get the number of shows from the OPML file x = len(outline) y=0 #loops through each podcast and parses out relevant information while y < x: title = outline[y].title url = outline[y].xmlUrl artwork = outline[y].pr_artwork desc = outline[y].pr_desc #checks to see if the podcast URL already exists for logged in user and skips it if it has already been imported. query = db.sql.text("""select URL from Podcasts where URL = \"%s\" and userID = %i""" % (url, userID)) exists = db.con.execute(query).fetchone() #if the show doesn't already exist for the logged in user it gets added if exists is None or exists[0] != url: query = db.sql.text("""insert into Podcasts (userID, title, URL, artworkURL) values(%i, \"%s\", \"%s\", \"%s\") """ % (userID, title, url, artwork)) db.con.execute(query) print("%s added" % title) else: print("%s already exists" % title) y=y+1 def updateFeeds(userID): showCheck = [] #grabs podcast urls from logged in user query = db.sql.text("""select URL, podcastID, title from Podcasts where userID = %i""" % userID) shows = db.con.execute(query).fetchall() #loops through the returned urls and parses each rss feed y=0 for x in shows: #Here we're grabbing all the show urls for each podcast and moving them into a separate array. query = db.sql.text("""select link from Shows where userID = %i and podcastID = %i""" % (userID, shows[y][1])) showGrab = db.con.execute(query).fetchall() z=0 for each in showGrab: showCheck.append(showGrab[z][0]) z=z+1 parsed = fp.parse(shows[y][0]) count = 0 for items in parsed['entries']: url = parsed.entries[count].enclosures[0].get('href') #after parsing out the show URL we check if it already exists by comparing it against the showCheck array containing all show URLs if url not in showCheck: query = db.sql.text("""insert into Shows (podcastID, userID, link) values (%i, %i, \"%s\")""" % (shows[y][1], userID, url)) db.con.execute(query) print("%s has a new show" % shows[y][2]) else: continue count = count + 1 y=y+1 showCheck = [] #Clear out the array for the next podcast def addFeed(userID): newURL = input("Enter Feed URL: ") count = 0 parsed = fp.parse(newURL) title = parsed.feed.title artwork = parsed.feed.image # checks to see if the podcast URL already exists for logged in user and skips it if it has already been imported. query = db.sql.text("""select URL from Podcasts where URL = \"%s\" and userID = %i""" % (newURL, userID)) exists = db.con.execute(query).fetchone() # if the show doesn't already exist for the logged in user it gets added if exists is None or exists[0] != newURL: query = db.sql.text("""insert into Podcasts (userID, title, URL, artworkURL) values(%i, \"%s\", \"%s\", \"%s\") """ % (userID, title, newURL, artwork)) db.con.execute(query) print("%s added" % title) # Once the podcast is added we grab the podcastID so we can import the shows query = db.sql.text("""select podcastID from Podcasts where userID = %i and URL = \"%s\"""" % (userID, newURL)) result = db.con.execute(query).fetchone() podcastID = result[0] # Import the new shows. No need to check if the show URLS already exist since it's new for items in parsed['entries']: itemURL = parsed.entries[count].enclosures[0].get('href') query = db.sql.text("""insert into Shows (podcastID, userID, link) values (%i, %i, \"%s\")""" % (podcastID, userID, itemURL)) db.con.execute(query) count = count + 1 else: print("%s already exists" % title) def deleteFeed(userID): podcasts=[] y=0 # grabs podcast urls from logged in user query = db.sql.text("""select podcastID, title from Podcasts where userID = %i""" % userID) results = db.con.execute(query).fetchall() for each in results: print("%i. %s" % (y+1, results[y][1])) y=y+1 val = input("Delete which podcast? ") deletedID = results[val-1][1] print(deletedID) query = db.sql.text("""delete * from Podcasts where podcastID = %i and userID = %i""" % (deletedID, userID)) db.con.execute(query) query = db.sql.text("""delete * from Shows where podcastID = %i and userID = %i""" % (deletedID, userID)) db.con.execute(query) print("%s has been deleted" % results[val][0])