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//', 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//', methods=['PUT']) @app.route('/addFeed//', 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//', 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/,,,', 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)