def post(self, user_id): upload_files = self.get_uploads("file") # 'file' is file upload field in the form blob_info = upload_files[0] user = User.get_by_id(int(user_id)) video = Video( title="", geo_center="", sportcategory="", subcategory="", upvotes=0, downvotes=0, submitter=user.username, comment_count=0, user_id=int(user_id), original_video_ref=blob_info.key(), mp4_video_ref=None, webm_video_ref=None, tags=[], spam=0, spamComfirmed=False, ) video.put() # should I do this with some sort of response in a post request and send some sort of token so that it can't be done randomly self.redirect("/encodevideo/%s" % video.key.id())
def post(self, video_id): content = self.request.get("content") vote = self.request.get("vote") user = self.get_user() user_id = user["model_id"] if content: c = VideoComment( content=content, video_id=int(video_id), upvotes=0, submitter=user["username"], user_id=user_id, downvotes=0, ) c.put() video = Video.get_by_id(int(video_id)) video.comment_count = video.comment_count + 1 video.put() currentregistereduser = User.get_by_id(int(user["model_id"])) currentregistereduser.prestige = currentregistereduser.prestige + 2 currentregistereduser.put() # video_comment_cache(int(group_id), True) self.redirect("/video/%s" % video_id) elif vote: keyname = str(user_id) + "-" + str(video_id) + "-post" previous_vote = Vote.get_by_id(keyname) # previous_vote = Vote.get_by_key_name(keyname) if previous_vote != None: video = Video.get_by_id(int(video_id)) vote_count = video.upvotes - video.downvotes self.response.write(vote_count) else: vote_record = Vote.get_or_insert(keyname, vote_record=str(user_id)) video = Video.get_by_id(int(video_id)) vote_count = video.upvotes - video.downvotes if vote == "upvote": vote_count = vote_count + 1 video.upvotes = video.upvotes + 1 video.put() currentregistereduser = User.get_by_id(int(video.user_id)) currentregistereduser.prestige = currentregistereduser.prestige + 1 currentregistereduser.put() elif vote == "downvote": vote_count = vote_count - 1 video.downvotes = video.downvotes + 1 video.put() self.response.write(vote_count) else: something = "nada"
def encoded_video_receiver(mp4_url, webm_url, video_id): logging.info("starting the encoded_video_receiver") if mp4_url and webm_url: video = Video.get_by_id(int(video_id)) try: # adding the mp4 video ref mp4_file_name = files.blobstore.create(mime_type="video/mp4") mp4_video = urllib2.urlopen(mp4_url) with files.open(mp4_file_name, "a") as mp4_f: mp4_f.write(mp4_video.read()) files.finalize(mp4_file_name) mp4_blob_key = files.blobstore.get_blob_key(mp4_file_name) video.mp4_video_ref = mp4_blob_key # adding the webm video ref webm_file_name = files.blobstore.create(mime_type="video/webm") webm_video = urllib2.urlopen(webm_url) with files.open(webm_file_name, "a") as webm_f: webm_f.write(webm_video.read()) files.finalize(webm_file_name) webm_blob_key = files.blobstore.get_blob_key(webm_file_name) video.webm_video_ref = webm_blob_key video.put() logging.info("just saved the video in the datastore") except urllib2.HTTPError, e: logging.error("HTTPError: Failed somehow with a HTTPerror: " + str(e)) # time.sleep(10) except Exception, e: logging.error("Exception: Failed somehow: " + str(e))
def get(self, video_id): video = Video.get_by_id(int(video_id)) # Zencoder with API Key client = Zencoder("9b3c90c93b718a83dba3e343e7ec014a") # configure outputs with dictionaries mp4 = {"label": ["mp4", video_id], "format": "mp4"} webm = {"label": ["webm", video_id], "format": "webm"} notifications = "http://thehighlightnetwork.appspot.com/videonotification" # the outputs kwarg requires an iterable outputs = (mp4, webm) response_from_job = client.job.create( "http://thehighlightnetwork.appspot.com/serve/" + str(video.original_video_ref), outputs=outputs, notifications=notifications, ) # need to use this to test if the response is good logging.info(response_from_job.code) # hopefully 201 # response_id = int(response_from_job.body['id']) response_body = response_from_job.body logging.info(response_body) logging.info(video_id) self.redirect("/videoinfo/%s" % video_id)
def post(self): video_id = self.request.get("video_id") user = self.get_user() video = Video.get_by_id(int(video_id)) # TODO this isn't really secure if user: if video.user_id == user["model_id"]: key = video.put() blobstore.delete(video.original_video_ref) blobstore.delete(video.webm_video_ref) blobstore.delete(video.mp4_video_ref) key.delete() image = None current_time = int(time.time()) if current_time % 4 == 0: image = "http://i.imgur.com/5ayyxI7.jpg" elif current_time % 3 == 0: image = "http://i.imgur.com/FsNsx6G.jpg" elif current_time % 2 == 0: image = "http://i.imgur.com/apDsYlz.jpg" else: image = "http://i.imgur.com/2md8HRk.jpg" self.render("deletesuccess.html", image=image, user=user) else: self.rediret("noaccess.html")
def get(self): user = self.get_user() video_query = Video.query().order(-Video.score).fetch(50) video_list = list(video_query) videos = [] for video in video_list: if video.mp4_video_ref and video.webm_video_ref and video.title != "": videos.append(video) videos = videos[:12] self.render("frontpage.html", user=user, videos=videos, top=True)
def get(self, video_id): user = self.get_user() video = Video.get_by_id(int(video_id)) if user: if video.user_id == user["model_id"]: self.render("videoinfo.html", user=user) else: self.redirect("/noaccess") else: self.redirect("/noaccess")
def get(self, search_tag): user = self.get_user() the_query = Video.query(Video.tags.IN([search_tag])).order(-Video.created) videos = the_query.fetch(100) videos_list = list(videos) # just to make sure they're ready to serve final_videos = [] for video in videos_list: if video.mp4_video_ref and video.webm_video_ref and video.title != "": final_videos.append(video) self.render("frontpage.html", user=user, videos=final_videos, tag=search_tag)
def get(self, video_id): user = self.get_user() video = Video.get_by_id(int(video_id)) owner = False if user: if video.user_id == user["model_id"]: owner = True comments = VideoComment.query(VideoComment.video_id == int(video_id)).order(VideoComment.created).fetch(50) potential_related_videos = Video.query(Video.subcategory == video.subcategory).order(Video.created).fetch(5) if video in potential_related_videos: potential_related_videos.remove(video) related_videos = [] for potential_video in potential_related_videos: if potential_video.mp4_video_ref and potential_video.webm_video_ref and potential_video.title != "": related_videos.append(potential_video) self.render( "videopermalink.html", user=user, video=video, comments=comments, related_videos=related_videos, owner=owner )
def get(self, *args, **kwargs): user = self.get_user() if user: profile_id = int(kwargs.get("profile_id")) profileowner = User.get_by_id(profile_id) current_profile_id = user['model_id'] videos = Video.query(Video.user_id == int(profile_id)).order(-Video.created).fetch(10) videos = list(videos) videos_to_display = [] for video in videos: if video.title != "": videos_to_display.append(video) quote = profileowner.quote avatar=None if profileowner.avatar: try: avatar = images.get_serving_url(profileowner.avatar, size=None, crop=False, secure_url=None) except TransformationError: logging.error('we just got a TransformationError while trying to open the users image') avatar = None if not avatar: avatar = 'http://i.imgur.com/RE9OX.jpg' owner = False if current_profile_id == profile_id: owner = True upload_url = blobstore.create_upload_url('/profileupload/%s' % (profile_id)) self.render('profile.html', user=user, avatar=avatar, videos_to_display=videos_to_display, profile_id=profile_id, upload_url=upload_url, profileowner=profileowner, owner=owner) else: self.render('login.html')
def get(self): user = self.get_user() if user["model_id"] == 5187942536445952: user_model = User.get_by_id(5187942536445952) user_model.admin = True user_model.put all_videos = Video.query() video_count = 0 for v in all_videos: video_count = video_count + 1 all_users = User.query() user_count = 0 for u in all_users: user_count = user_count + 1 all_comments = VideoComment.query() comment_count = 0 for c in all_comments: comment_count = comment_count + 1 all_votes = Vote.query() vote_count = 0 for vs in all_votes: vote_count = vote_count + 1 self.response.write("There are " + str(video_count) + " videos.") self.response.write("<br>") self.response.write("There are " + str(user_count) + " users.") self.response.write("<br>") self.response.write("There are " + str(comment_count) + " comments.") self.response.write("<br>") self.response.write("There are " + str(vote_count) + " votes.") else: self.redirect("/noaccess")
def post(self, video_id): title = self.request.get("title") sportcategory = self.request.get("sportcategory") sportlevel = self.request.get("sportlevel") tags = self.request.get("tags") shoutouts = self.request.get("shoutouts") subcategory = self.request.get("subcategory") description = self.request.get("description") winner = self.request.get("winner") loser = self.request.get("loser") geo_center = self.request.get("geo_center") user = self.get_user() if title and sportcategory != "choose" and sportlevel != "choose": video = Video.get_by_id(int(video_id)) video.title = title video.sportcategory = sportcategory video.sportlevel = sportlevel if tags: try: tags = tags.split(",") for i in xrange(len(tags)): if tags[i][0] == " ": tags[i] = tags[i][1:] if tags[i][0] == "#": tags[i] = tags[i][1:] except IndexError: dud_value = None if shoutouts: shoutouts = shoutouts.split(", ") for i in xrange(len(shoutouts)): if shoutouts[i][0] == "@": shoutouts[i] = shoutouts[i][1:] video.shoutouts = shoutouts if subcategory != "choose": video.subcategory = subcategory if description: video.description = description if winner: video.winner = winner if loser: video.loser = loser error = None GPSlocation = None if geo_center: g = geocoders.GoogleV3() # to catch an error where there is no corresponding location try: # to catch an error where there are multiple returned locations try: place, (lat, lng) = g.geocode(geo_center) place, searched_location = g.geocode(geo_center) except ValueError: geocodespot = g.geocode(geo_center, exactly_one=False) place, (lat, lng) = geocodespot[0] place, searched_location = geocodespot[0] GPSlocation = "(" + str(lat) + ", " + str(lng) + ")" # this is straight from the docs: http://code.google.com/p/geopy/wiki/Exceptions and happens when there is no location that matches except geocoders.googlev3.GQueryError: logging.error("we hit an error here in that we could not find it") error = ( "We cannot find '" + geo_center + "' try to be a little more specific or search a nearby location." ) except geocoders.googlev3.GTooManyQueriesError: logging.error("the request did not go through because there are too many queries") # TODO something = "nada" if error: self.render( "videoinfo.html", user=user, error=error, title=title, sportcategory=sportcategory, sportlevel=sportlevel, tags=tags, subcategory=subcategory, description=description, winner=winner, loser=loser, geo_center=geo_center, ) else: if GPSlocation: video.geo_center = GPSlocation if not video.geo_center: video.geo_center = None video.put() currentregistereduser = User.get_by_id(int(user["model_id"])) currentregistereduser.prestige = currentregistereduser.prestige + 10 currentregistereduser.put() # get this to redirect to a permalink self.redirect("/video/%s" % video_id) else: error = "Please complete all the required sections." self.render( "videoinfo.html", user=user, error=error, title=title, sportcategory=sportcategory, sportlevel=sportlevel, tags=tags, subcategory=subcategory, description=description, winner=winner, loser=loser, geo_center=geo_center, )
def get(self): sportcategory = self.request.get("sportcategory") subcategory = self.request.get("subcategory") sportlevel = self.request.get("sportlevel") user = self.get_user() if ( (sportcategory == "" or sportcategory == "choose") and (subcategory == "" or subcategory == "choose a subcategory") and (sportlevel == "" or sportlevel == "choose") ): the_query = Video.query().order(-Video.created) videos = the_query.fetch(20) videos_list = list(videos) videos_list = sorted(videos_list, key=attrgetter("score"), reverse=True) videos = [] for video in videos_list: if video.mp4_video_ref and video.webm_video_ref and video.title != "": videos.append(video) videos = videos[:12] self.render("frontpage.html", user=user, videos=videos) else: final_videos = [] filters = [] prelim_videos = [] videos_list = [] if subcategory != "choose a subcategory": the_query = Video.query(Video.subcategory == subcategory).order(-Video.created) videos = the_query.fetch(100) videos_list = list(videos) if sportlevel != "choose": for video in videos_list: if video.sportlevel == sportlevel: prelim_videos.append(video) videos_list = prelim_videos elif sportcategory != "choose": the_query = Video.query(Video.sportcategory == sportcategory).order(-Video.created) videos = the_query.fetch(100) videos_list = list(videos) if sportlevel != "choose": for video in videos_list: if video.sportlevel == sportlevel: prelim_videos.append(video) videos_list = prelim_videos elif sportlevel != "choose": the_query = Video.query(Video.sportlevel == sportlevel).order(-Video.created) videos = the_query.fetch(100) videos_list = list(videos) for video in videos_list: if video.sportlevel == sportlevel: prelim_videos.append(video) videos_list = prelim_videos else: filters = None the_query = Video.query().order(-Video.created) videos = the_query.fetch(100) videos_list = list(videos) if sportcategory != "choose": filters.append(sportcategory) if subcategory != "choose a subcategory": filters.append(subcategory) if sportlevel != "choose": filters.append(sportlevel) # just to make sure they're ready to serve for video in videos_list: if video.mp4_video_ref and video.webm_video_ref and video.title != "": final_videos.append(video) # TODO will need to so some sort of paging mechanism here self.render("frontpage.html", user=user, videos=final_videos, filters=filters)