Drkcore

26 07 2010 Python Flask Tweet

Flaskでtwitter名刺みたいなやつをつくるやつ

OAuth使えば簡単だろうと。

twitter_card

あとは名刺型にhtmlをいじればよいんだけど飽きた。

twittercard.py

from flask import Flask, request, session, g, redirect, url_for, abort, render_template, flash
from flaskext.oauth import OAuth
import qrencode

DEBUG      = True
SECRET_KEY = 'development key'
TWITTER_URL = "http://twitter.com/"

app = Flask(__name__)
app.config.from_object(__name__)

oauth = OAuth()
twitter = oauth.remote_app('twitter',
                           base_url='http://api.twitter.com/1/',
                           request_token_url='http://api.twitter.com/oauth/request_token',
                           access_token_url='http://api.twitter.com/oauth/access_token',
                           authorize_url='http://api.twitter.com/oauth/authorize',
                           consumer_key='XXXXXXXXXXXXX',
                           consumer_secret='XXXXXXXXXXXXX'
)

@twitter.tokengetter
def get_twitter_token():
    return session.get('twitter_token')

@app.route('/')
def show_entries():
    screen_name = session.get('screen_name',None)
    name = session.get('name',None)
    profile_image_url = session.get('profile_image_url',None)
    entry = {}
    if screen_name != None: 
        imgurl = "http://twitter.com/%s" % screen_name
        imgfile   = "%s.png" % screen_name
        qrencode.encode_scaled(imgurl,50)[2].save("static/"+imgfile)
        resp = twitter.get('http://twitter.com/status/user_timeline/'+screen_name+".json")
        if resp.status == 200:
            user = resp.data[0]['user']
            name = user['name']
            url = user['url']
            profile_image_url = user['profile_image_url']
        else:
            name = None
            profile_image_url = None

        entry = dict(screen_name=screen_name,qrimg=imgfile,name=name, profile_image_url=profile_image_url, url=url)
    return render_template('show_entries.html', entry=entry)

@app.route('/login')
def login():
    return twitter.authorize(callback=url_for("oauth_authorized"))

@app.route('/logout')
def logout():
    session.pop('screen_name', None)
    session.pop('logged_in', None)
    session.pop('twitter_token', None)
    flash('You were logged out')
    return redirect(url_for('show_entries'))

@app.route('/oauth-authorized')
@twitter.authorized_handler
def oauth_authorized(resp):
    next_url = url_for('show_entries')
    if resp is None:
        flash(u'You denied the request to sign in.')
        return redirect(next_url)

    session['logged_in'] = True
    session['screen_name'] = resp['screen_name']
    session['twitter_token'] = (
        resp['oauth_token'],
        resp['oauth_token_secret']
        )

    flash(resp['screen_name'] + ' were signed in')
    return redirect(next_url)

if __name__ == '__main__':
    app.run()

テンプレート(やる気レス)

<!doctype html>
<title>TwitterCard</title>
<link rel=stylesheet type=text/css href="{{ url_for('static', filename='style.css') }}">
<div class=page>
  <h1>TwitterCard</h1>
  <div class=metanav>
    {% if not session.logged_in %}
    <a href="{{ url_for('login') }}">log in</a>
    {% else %}
    <a href="{{ url_for('logout') }}">log out</a>
    {% endif %}
  </div>
  {% for message in get_flashed_messages() %}
  <div class=flash>{{ message }}</div>
  {% endfor %}
  <img src="{{ entry.profile_image_url }}" />
  <ul class=entry>
    <li>{{ entry.screen_name }}</li>
    <li>{{ entry.name }}</li>
    <li>{{ entry.url }}</li>
  </ul>
  <img src={{ url_for('static',filename=entry.qrimg) }} />
</div>

ついったー名刺ってのがあってQRコードはblogとかのURLなんだけど、ツイッターオフとかいくと、簡単にフォローしたいからQRコードはtwitterアカウントのほうがいいかな?なんて思っていたので作ってみようとした(がもう寝る時間なので眠くなってしまい、ヤル気が急速に失われた)。


エントリ書いてて思ったんだが、ツイッターオフ参加者のIDのリストをQRコードにしといて、そいつを食わすとまとめてフォローするサービスのほうがいいような気がしてきた。そんなのないかな。

名刺見ながらポチポチ登録作業すんのもめんどいよね。

About

  • もう5年目(wishlistありマス♡)
  • 最近はPythonとDeepLearning
  • 日本酒自粛中
  • ドラムンベースからミニマルまで
  • ポケモンGOゆるめ

Tag

Python Deep Learning javascript chemoinformatics Emacs sake and more...

Ad

© kzfm 2003-2021