Files
podcast/main.py

141 lines
5.2 KiB
Python

import database as db
import feedparser as fp
from flask import jsonify
from flask_api import FlaskAPI, status, exceptions
app = FlaskAPI(__name__)
@app.route('/', methods=['GET'])
def index():
return 'stuff'
@app.route('/login', methods=['GET'])
def login():
username = 'Dan'
password = 'password'
query = db.sql.text(""" select userID from Users where username = \'%s\'""" % username)
result = db.con.execute(query).fetchone()
return jsonify(result[0])
@app.route('/updateFeeds/<int:userID>/', methods={'GET'})
def updateFeeds(userID):
showCheck = []
updatedShows = []
# 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)
updatedShows.append(shows[y][2])
else:
continue
count = count + 1
y = y + 1
showCheck = [] # Clear out the array for the next podcast
return jsonify(updatedShows)
# @app.route('/addFeed/<int:userID>/<string:newURL>', methods=['PUT'])
@app.route('/addFeed/<int:userID>/', methods=['PUT'])
def addFeed(userID,newURL):
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
return ("%s added" % title)
else:
return ("%s already exists" % title)
@app.route('/listShows/<int:userID>/', methods=['GET'])
def listShows(userID):
podcasts=[]
pc=""
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:
# podcasts.append(results[y][0])
podcasts.append(results[y][1])
y=y+1
# x=0
# for each2 in podcasts:
# pc=jsonify(
# showID=podcasts[0][0],
# showname=podcasts[0][1]
# )
# x=x+1
# return jsonify(pc)
return jsonify(podcasts)
@app.route('/register/<string:username>,<string:password>,<string:name>,<string:email>', methods=['GET'])
def register(username, password, name, email):
# checks to see if the username already exists
query = db.sql.text("""select username from Users where username = \"%s\"""" % username)
exists = db.con.execute(query).fetchone()
# if the username doesn't already exist it will be added
if exists is None or exists[0] != username:
query = db.sql.text(
"""insert into Users (username, password, name, email) values(\"%s\", \"%s\", \"%s\", \"%s\") """ % (
username, password, name, email))
db.con.execute(query)
# Returns the new userID
query = db.sql.text(""" select userID from Users where username = \'%s\'""" % username)
result = db.con.execute(query).fetchone()
return jsonify(result[0])
else:
return "Username already exists"
if __name__ == "__main__":
app.run(host='0.0.0.0', debug=True)