Skip to content

Instantly share code, notes, and snippets.

@JacobKnaack
Created November 11, 2018 06:26
Show Gist options
  • Save JacobKnaack/0b6db57eeb235fcc24a82cd78fda62cb to your computer and use it in GitHub Desktop.
Save JacobKnaack/0b6db57eeb235fcc24a82cd78fda62cb to your computer and use it in GitHub Desktop.
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"])
@JacobKnaack
Copy link
Author

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment