Exemplo n.º 1
0
 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
Exemplo n.º 2
0
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'
Exemplo n.º 3
0
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())
Exemplo n.º 4
0
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.")