diff --git a/Feed.py b/Feed.py new file mode 100644 index 0000000..7bcea65 --- /dev/null +++ b/Feed.py @@ -0,0 +1,117 @@ +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]) + diff --git a/main.py b/main.py index 6b620e1..26196b4 100644 --- a/main.py +++ b/main.py @@ -1,37 +1,8 @@ -import opml -# import sqlalchemy as db import database as db -import feedparser as fp +import Feed userID = None -def podcastImport (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 login(): username = 'Dan' @@ -46,69 +17,6 @@ def login(): return result[0] -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) - else: - continue - count = count + 1 - print("%s has been updated" % shows[y][2]) - 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) - while True: print("1. Login\n2. Upload\n3. Update feeds\n4. Add Feed\n9. Exit\n") val = input(">>>") @@ -118,16 +26,21 @@ while True: if userID is None or userID == '': print("Please login first") else: - podcastImport(userID) + Feed.feedImport(userID) elif val == "3": if userID is None or userID == '': print("Please login first") else: - updateFeeds(userID) + Feed.updateFeeds(userID) elif val == "4": if userID is None or userID == '': print("Please login first") else: - addFeed(userID) + Feed.addFeed(userID) + elif val == "5": + if userID is None or userID == '': + print("Please login first") + else: + Feed.deleteFeed(userID) elif val == "9": exit() \ No newline at end of file