Example #1
0
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)
Example #2
0
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
Example #3
0
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
Example #4
0
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))
Example #5
0
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))
Example #6
0
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))
Example #7
0
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
Example #8
0
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"))
Example #9
0
 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)
Example #10
0
 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)
Example #11
0
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)
Example #12
0
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"))