Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- @socketio.on('add blog')
- @admin_only
- def add_blog(blog):
- scheme = blog_schema.load(blog, partial=True)
- known_tags = {}
- avoided_tags = Tag.query.filter(
- Tag.banned == True).all()
- tumblr_key = 'Gm7u68GMu8RCQmIVV1vmr7QlToZ8rYKrzr1HsULlmK0doez73o'
- http = urllib3.PoolManager()
- blog_json_url = "https://api.tumblr.com/v2/blog/"+scheme.data.url+"/posts/photo?api_key="+tumblr_key
- r = http.request('GET', blog_json_url)
- data = json.loads(r.data.decode('utf-8'))
- if data["meta"]["status"] is 200:
- b = Blog(name=scheme.data.name, url=scheme.data.url)
- db.session.add(b)
- total_posts = data["response"]["total_posts"]
- blog_json_url+="&offset="
- for i in range(0,total_posts,50):
- r = http.request('GET', blog_json_url+str(i))
- data = json.loads(r.data.decode('utf-8'))
- for post in data["response"]["posts"]:
- if post["type"] == "photo":
- for photo in post["photos"]:
- url_gif = photo["original_size"]["url"]
- if url_gif[-3:] == "gif":
- # photo["original_size"]["width"] pour trier si le gif est trop petit ?
- gif = Gif(url=url_gif)
- db.session.add(gif)
- for l_tag in post["tags"]:
- # sometimes l_tag is a list of tag seperated by blank spaces
- # so we need to split this string ang get a list of tags
- l_tag = l_tag.split(' ')
- for tag in l_tag:
- tag = tag.lower()
- if not tag.isspace():
- if tag not in avoided_tags and len(tag)>2:
- if tag not in known_tags :
- o = Tag(name=tag)
- db.session.add(o)
- db.session.commit()
- known_tags[tag] = o
- if known_tags[tag] not in gif.tags :
- gif.tags.append(known_tags[tag])
- db.session.commit()
- return jsonify(success=True)
- else:
- return jsonify(success=True, error="blog invalid or offline")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement