Created
November 11, 2018 06:26
-
-
Save JacobKnaack/0b6db57eeb235fcc24a82cd78fda62cb to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import json | |
import requests | |
import base64 | |
import markdown | |
import sys | |
if not sys.argv[1]: | |
raise Exception( | |
'NO USER SPECIFIED, please provide a user as second argument') | |
elif not sys.argv[2]: | |
raise Exception( | |
"NO MOVIE SPECIFIED, please provide a movie title as the third argument") | |
USERNAME = sys.argv[1] | |
MOVIE_TITLE = sys.argv[2] | |
BASE_URL = # PUT BASE URL HERE | |
MOVIE_URL = "%(base)s/movie_title/%(movieTitle)s" % { | |
"base": BASE_URL, "movieTitle": MOVIE_TITLE} | |
REVIEW_URL = "%(base)s/review" % {"base": BASE_URL} | |
USER_INFO = # DICTIONARY CONTAINING USERNAME: PASSWORD KEY VALUE PAIRS | |
PASSWORD = USER_INFO[USERNAME] | |
login_url = "%(base)s/login" % {'base': BASE_URL} | |
encoded_pass = base64.b64encode("%(username)s:%(password)s" % { | |
'username': USERNAME, 'password': PASSWORD}) | |
bufferString = "Basic %(buffer)s" % {'buffer': encoded_pass} | |
login = requests.get(login_url, headers={"Authorization": bufferString}) | |
accessToken = login.json()["accessToken"] | |
with open('data.json')as json_data: | |
db = json.load(json_data) | |
tokenString = "Bearer %(token)s" % {"token": accessToken} | |
fetchMovie = requests.get(MOVIE_URL) | |
if not fetchMovie.json(): | |
for movie in db["movies"]: | |
if movie["name"] == MOVIE_TITLE: | |
addMovie = requests.post(BASE_URL + '/movies', headers={"Authorization": tokenString, "Content-type": "application/json"}, json={ | |
"name": movie["name"], "release": movie["release"], "image_path": movie["image_path"], "created_on": movie["created_on"]}) | |
MOVIE_ID = addMovie.json()["_id"] | |
else: | |
MOVIE_ID = fetchMovie.json()["_id"] | |
for review in db["reviews"]: | |
if review["movie"] == MOVIE_TITLE and review["author"] == USERNAME: | |
REVIEW_HTML = markdown.markdown( | |
review["markdown"], output_format='html5') | |
fetchUserReviews = requests.get(REVIEW_URL + "s/by/" + USERNAME) | |
if not fetchUserReviews.json(): | |
uploadFirstReview = requests.post(REVIEW_URL, headers={"Authorization": tokenString, "Content-Type": "application/json"}, json={ | |
"movieId": MOVIE_ID, "title": review["title"], "user": review["author"], "html": REVIEW_HTML, "created_on": review["created_on"]}) | |
uploadFirstReview.raise_for_status() | |
print('uploading review: ' + review["title"] + ' Success!') | |
else: | |
for userReview in fetchUserReviews.json(): | |
if userReview["movieId"] != MOVIE_ID: | |
uploadReview = requests.post(REVIEW_URL, headers={"Authorization": tokenString, "Content-Type": "application/json"}, json={ | |
"movieId": MOVIE_ID, "title": review["title"], "user": review["author"], "html": REVIEW_HTML, "created_on": review["created_on"]}) | |
uploadReview.raise_for_status() | |
print('uploading review: ' + review["title"]) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
log in a upload reviews to movie blog. Must be run from a directory containing
data.json
which must container a list of movies and reviews.