def prerender_tweet_entities(text, tweet_json): entities = tweet_json["entities"] if not isinstance(entities, dict): return text extended_entities = tweet_json.get("extended_entities") new_text = indicesreplace.IndicesReplace(text) new_text.highlight = False hashtags = entities.get("hashtags", list()) for hashtag in hashtags: start, stop = hashtag["indices"] data = { "url": "%s?q=%%23%s" % (utils.abs_url_for("search_tweets"), urllib.quote(hashtag["text"].encode("UTF8"))), "text": hashtag["text"], } new_text.replace_indices(start, stop, "<a href=\"%(url)s\">#%(text)s</a>" % data) user_mentions = entities.get("user_mentions", list()) for user_mention in user_mentions: start, stop = user_mention["indices"] data = { "url": utils.abs_url_for("user", screen_name=user_mention["screen_name"]), "title": user_mention["name"], "text": user_mention["screen_name"], } new_text.replace_indices(start, stop, "<a href=\"%(url)s\" title=\"%(title)s\">@%(text)s</a>" % data) if "media" not in entities: entities["media"] = list() for media in entities["media"]: start, stop = media["indices"] data = { "url": media["expanded_url"], "text": media["display_url"], } new_text.replace_indices(start, stop, "<a href=\"%(url)s\">%(text)s</a>" % data) media["preview_url"] = "%s:small" % media["media_url_https"] media["original_url"] = "%s:large" % media["media_url_https"] # support twitter new multiple picture in same tweet if extended_entities and isinstance(extended_entities, dict) and extended_entities["media"]: entities["media"] = extended_entities["media"] for media in entities["media"]: media["preview_url"] = "%s:small" % media["media_url_https"] media["original_url"] = "%s:large" % media["media_url_https"] urls = entities.get("urls", list()) for url in urls: preview_urls = get_preview_url(url["expanded_url"]) if preview_urls: url["preview_url"], url["original_url"] = preview_urls entities["media"].append(url) start, stop = url["indices"] data = { "url": url["expanded_url"], "text": url["display_url"], } new_text.replace_indices(start, stop, "<a href=\"%(url)s\">%(text)s</a>" % data) return unicode(new_text)
def login(): tpl_data = { "title": "Login", } if flask.request.method == "POST": oauth_token = flask.request.form.get("oauth_token") if not oauth_token: try: flask.g.api.bind_auth() token_data = flask.g.api.get_authentication_tokens(callback_url="oob") tpl_data["auth_url"] = token_data["auth_url"] tpl_data["oauth_token"] = token_data["oauth_token"] except Exception as e: flask.flash("OAuth get authentication tokens error: %s, please try again." % str(e)) else: oauth_verifier = flask.request.form.get("oauth_verifier") if not oauth_verifier: tpl_data.update(flask.request.form) flask.flash("Pin is required!") else: flask.g.api.bind_auth(oauth_token=oauth_token, oauth_verifier=oauth_verifier) try: flask.session.update( flask.g.api.get_authorized_tokens(oauth_token=oauth_token, oauth_verifier=oauth_verifier)) except Exception as e: flask.flash("OAuth get access token error: %s, please try again." % str(e)) else: last_url = flask.session.get("last_url") if last_url: flask.session["last_url"] = "" return flask.redirect(last_url) else: return flask.redirect(utils.abs_url_for("home_timeline")) return tpl_data
def login(): tpl_data = { "title": "Login", } if flask.request.method == "POST": username = flask.request.form.get("username") password = flask.request.form.get("password") if username and password: flask.g.api.bind_auth() params = { "x_auth_mode": "client_auth", "x_auth_username": username, "x_auth_password": password, } try: flask.session.update(flask.g.api.get_authorized_tokens(**params)) except twitter.Error as e: flask.flash("XAuth error: %s, please try again." % str(e)) else: last_url = flask.session.get("last_url") if last_url: flask.session["last_url"] = "" return flask.redirect(last_url) else: return flask.redirect(utils.abs_url_for("home_timeline")) else: flask.flash("Username & Password are both required!") return tpl_data
def user_reportspam(screen_name): try: result = flask.g.api.post("users/report_spam", screen_name=screen_name).json() except twitter.Error as e: flask.flash("Error: %s" % str(e)) else: flask.flash("Reported user %s as spam." % result["screen_name"]) return flask.redirect(utils.abs_url_for("user", screen_name=screen_name))
def user_unblock(screen_name): try: result = flask.g.api.post("blocks/destroy", screen_name=screen_name).json() except twitter.Error as e: flask.flash("Error: %s" % str(e)) else: flask.flash("Unblocked user %s." % result["screen_name"]) return flask.redirect(utils.abs_url_for("user", screen_name=screen_name))
def user_follow(screen_name): try: result = flask.g.api.post("friendships/create", screen_name=screen_name).json() except twitter.Error as e: flask.flash("Error: %s" % str(e)) else: flask.flash("Following user %s." % result["screen_name"]) return flask.redirect(utils.abs_url_for("user", screen_name=screen_name))
def login(): tpl_data = { "title": "Login", } if flask.request.method == "POST": oauth_token = flask.request.form.get("oauth_token") if not oauth_token: try: flask.g.api.bind_auth() token_data = flask.g.api.get_authentication_tokens( callback_url="oob") tpl_data["auth_url"] = token_data["auth_url"] tpl_data["oauth_token"] = token_data["oauth_token"] except Exception as e: flask.flash( "OAuth get authentication tokens error: %s, please try again." % str(e)) else: oauth_verifier = flask.request.form.get("oauth_verifier") if not oauth_verifier: tpl_data.update(flask.request.form) flask.flash("Pin is required!") else: flask.g.api.bind_auth(oauth_token=oauth_token, oauth_verifier=oauth_verifier) try: flask.session.update( flask.g.api.get_authorized_tokens( oauth_token=oauth_token, oauth_verifier=oauth_verifier)) except Exception as e: flask.flash( "OAuth get access token error: %s, please try again." % str(e)) else: last_url = flask.session.get("last_url") if last_url: flask.session["last_url"] = "" return flask.redirect(last_url) else: return flask.redirect( utils.abs_url_for("home_timeline")) return tpl_data
def logout(): del flask.session["screen_name"] del flask.session["oauth_token"] del flask.session["oauth_token_secret"] flask.flash("Logout successfully!") return flask.redirect(utils.abs_url_for("login"))
def decorated_view(*args, **kwargs): if not flask.g.screen_name: flask.session["last_url"] = flask.request.url return flask.redirect(utils.abs_url_for("login")) return func(*args, **kwargs)
def prerender_tweet_entities(text, tweet_json): entities = tweet_json["entities"] if not isinstance(entities, dict): return text extended_entities = tweet_json.get("extended_entities") new_text = indicesreplace.IndicesReplace(text) new_text.highlight = False hashtags = entities.get("hashtags", list()) for hashtag in hashtags: start, stop = hashtag["indices"] data = { "url": "%s?q=%%23%s" % (utils.abs_url_for("search_tweets"), urllib.quote(hashtag["text"].encode("UTF8"))), "text": hashtag["text"], } new_text.replace_indices(start, stop, "<a href=\"%(url)s\">#%(text)s</a>" % data) user_mentions = entities.get("user_mentions", list()) for user_mention in user_mentions: start, stop = user_mention["indices"] data = { "url": utils.abs_url_for("user", screen_name=user_mention["screen_name"]), "title": user_mention["name"], "text": user_mention["screen_name"], } new_text.replace_indices( start, stop, "<a href=\"%(url)s\" title=\"%(title)s\">@%(text)s</a>" % data) if "media" not in entities: entities["media"] = list() for media in entities["media"]: start, stop = media["indices"] data = { "url": media["expanded_url"], "text": media["display_url"], } new_text.replace_indices(start, stop, "<a href=\"%(url)s\">%(text)s</a>" % data) media["preview_url"] = "%s:small" % media["media_url_https"] media["original_url"] = "%s:large" % media["media_url_https"] # support twitter new multiple picture in same tweet if extended_entities and isinstance(extended_entities, dict) and extended_entities["media"]: entities["media"] = extended_entities["media"] for media in entities["media"]: media["preview_url"] = "%s:small" % media["media_url_https"] media["original_url"] = "%s:large" % media["media_url_https"] urls = entities.get("urls", list()) for url in urls: preview_urls = get_preview_url(url["expanded_url"]) if preview_urls: url["preview_url"], url["original_url"] = preview_urls entities["media"].append(url) start, stop = url["indices"] data = { "url": url["expanded_url"], "text": url["display_url"], } new_text.replace_indices(start, stop, "<a href=\"%(url)s\">%(text)s</a>" % data) return unicode(new_text)