Broke the feed methods out into a separate file. Started adding method to delete feeds.
This commit is contained in:
117
Feed.py
Normal file
117
Feed.py
Normal file
@@ -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])
|
||||||
|
|
||||||
105
main.py
105
main.py
@@ -1,37 +1,8 @@
|
|||||||
import opml
|
|
||||||
# import sqlalchemy as db
|
|
||||||
import database as db
|
import database as db
|
||||||
import feedparser as fp
|
import Feed
|
||||||
|
|
||||||
userID = None
|
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():
|
def login():
|
||||||
username = 'Dan'
|
username = 'Dan'
|
||||||
@@ -46,69 +17,6 @@ def login():
|
|||||||
return result[0]
|
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:
|
while True:
|
||||||
print("1. Login\n2. Upload\n3. Update feeds\n4. Add Feed\n9. Exit\n")
|
print("1. Login\n2. Upload\n3. Update feeds\n4. Add Feed\n9. Exit\n")
|
||||||
val = input(">>>")
|
val = input(">>>")
|
||||||
@@ -118,16 +26,21 @@ while True:
|
|||||||
if userID is None or userID == '':
|
if userID is None or userID == '':
|
||||||
print("Please login first")
|
print("Please login first")
|
||||||
else:
|
else:
|
||||||
podcastImport(userID)
|
Feed.feedImport(userID)
|
||||||
elif val == "3":
|
elif val == "3":
|
||||||
if userID is None or userID == '':
|
if userID is None or userID == '':
|
||||||
print("Please login first")
|
print("Please login first")
|
||||||
else:
|
else:
|
||||||
updateFeeds(userID)
|
Feed.updateFeeds(userID)
|
||||||
elif val == "4":
|
elif val == "4":
|
||||||
if userID is None or userID == '':
|
if userID is None or userID == '':
|
||||||
print("Please login first")
|
print("Please login first")
|
||||||
else:
|
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":
|
elif val == "9":
|
||||||
exit()
|
exit()
|
||||||
Reference in New Issue
Block a user