def comments(self, review_id): '''yeild comments of a review''' page = 1 while True: self.logger.info('On page %s of the comments of review %s' % (page, review_id)) endpoint = 'https://www.goodreads.com/review/show.xml' params = {'id': review_id, 'key': self.key, 'page': page} r = requests.get(endpoint, params=params) if r.status_code != 200: raise GoodReadsError(r.text) soup = BeautifulSoup(r.content, 'xml') if int(soup.GoodreadsResponse.review.comments_count.text) == 0: yield None break end = int(soup.GoodreadsResponse.review.comments['end']) total = int(soup.GoodreadsResponse.review.comments['total']) for comment_tag in soup.GoodreadsResponse.review.comments.find_all('comment'): comment = Comment(int(comment_tag.id.text)) comment.body = comment_tag.body.text try: comment.user_id = int(comment_tag.user.id.text) except: comment.user_id = None comment.review_id = int(soup.GoodreadsResponse.review.id.text) comment.created_at = date_parser.parse(comment_tag.created_at.text) yield comment if end >= total: break page += 1
def create_a_comment(body): try: with create_session() as s: o = Comment() o.body = body s.add(o) return '' except Exception as e: logging.warning(e) return 'Write a comments failed'
def response(): if config.memcache.db: clearmem() action = cgi_get("action", choices=["post", "videopost", "comment", "photo", "photoset", "md"]) if action == "md": for dn, dz, fz in os.walk("md"): succeed([f[:-3] for f in fz]) user = cgi_get("user") if action == "comment": ent = Comment(user=user, post=cgi_get("post"), body=cgi_get("body")) elif action == "photo": pkey = cgi_get("key", required=False) if pkey: ent = Photo.query(Photo.key == pkey).get() else: ent = Photo() capt = cgi_get("caption", required=False) # imgs uploaded separately if capt: ent.caption = capt else: blurb = cgi_get("blurb", required=False) pkey = cgi_get("key", required=False) tags = cgi_get("tags", required=False) pmod = db.get_model(action) if pkey: ent = pmod.query(pmod.key == pkey).get() else: ent = pmod(user=user) ent.title = cgi_get("title") ent.live = cgi_get("live") if blurb: ent.blurb = blurb if tags: ent.tags = tags if action == "post": ent.body = cgi_get("body") ent.put() if action == "photo": # get photoset psk = cgi_get("photoset", required=False) if psk: ps = db.get(psk) # these are hacky -- fix list ops in ct if cgi_get("remove", default=False): # ps.photos.remove(ent.key) ps.photos = [p for p in ps.photos if p != ent.key] else: # ps.photos.append(ent.key) ps.photos = ps.photos + [ent.key] ps.put() succeed(ent.id())
def create_comment(post_id): user = SESSION.get(request.headers.get('Authorization')) if user is None: abort(400, {'message': 'TOKEN_NOT_FOUND'}) input_data = request.get_json() from model import Comment, Post post_exist = Post.find(post_id) if post_exist is None: abort(400, {'message','POST_NOT_FOUND'}) comment = Comment() comment.post_id = post_id comment.user_id = user.id comment.body = input_data['body'] comment.save() return jsonify("Created.")