見出し画像

【初心者向け】Pythonで特定カテゴリの記事にはてなブックマークをつける&ツイートするの自動化

気になる記事があるけど、今すぐに読む時間はない!
「はてなブックマーク」をつけておいて、あとで読もう〜。

というシチュエーションって結構ありますよね。今回はPythonを活用して上記の作業を自動化するプログラミングコードを紹介します。


* 注意 *
この記事は公開後1日間は無料で、その後有料記事となります。
他のプログラミングチュートリアル記事も公開後1日間は無料になるので、無料で読みたい方は、noteのフォローをオススメします( ・v・)b

フォローはこちらから → https://note.mu/virtual_surfer



1. できるようになること

はてなブックマークAPIを活用して、自動ではてなブックマークとTwitterへのツイートができるようになります。



2. 自動はてブ・ツイートの仕組み

仕組みは超シンプル。

はてなブックマークAPIにアクセスし、自動ではてブを行い、同時にTwitterに投稿します。



それでは、実際にはてなブックマークAPIを活用して自動はてブできるようにプログラムを書いていきましょう。


3. 開発者向けページにアクセス

まずは、開発者向けページで「OAuth Consumer Key」と「OAuth Consumer Secret」を取得しておきます。


はてなブログに登録していたことがない方は、以下のリンクからユーザー登録をしておいてください。


ユーザー登録が済んでいる状態で、下記リンクの「ユーザーID」の部分をご自身のはてなブログのユーザーIDで書き換えてアクセスします。

「https://www.hatena.ne.jp/ユーザーID/config/auth/develop」

パスワードを入力したら以下のような画面に遷移します。


任意のアプリケーションを作成すると、アプリケーションの画面の下の方に「OAuth Consumer Key」と「OAuth Consumer Secret」という項目があるので、ここの値を控えておきます。



4. ACCESS_TOKENとACCESS_TOKEN_SECRETを取得

はてなブックマークAPIにアクセスするためのACCESS_TOKENとACCESS_TOKEN_SECRETを取得していきます。


ACCESS_TOKENとACCESS_TOKEN_SECRETを取得する以下のファイルを作成します。

get_hatena_access_token.py

import os
from flask import Flask, request, redirect, session
from furl import furl
from requests_oauthlib import OAuth1Session

app = Flask(__name__)
# xxxxxには、取得したランダムなシークレットキーを入力する。
app.secret_key = xxxxx

OAUTH_CONSUMER_KEY = 'yyyyy'
OAUTH_CONSUMER_SECRET = 'zzzzz'

TEMPORARY_CREDENTIAL_REQUEST_URL = 'https://www.hatena.com/oauth/initiate'
RESOURCE_OWNER_AUTHORIZATION_URL = 'https://www.hatena.ne.jp/oauth/authorize'
TOKEN_REQUEST_URL = 'https://www.hatena.com/oauth/token'

CALLBACK_URI = 'http://127.0.0.1:5000/callback_page'
SCOPE = {'scope': 'read_public,write_public'}

@app.route('/')
def index():
    oauth = OAuth1Session(OAUTH_CONSUMER_KEY, client_secret=OAUTH_CONSUMER_SECRET, callback_uri=CALLBACK_URI)
    fetch_response = oauth.fetch_request_token(TEMPORARY_CREDENTIAL_REQUEST_URL, data=SCOPE)

    session['request_token'] = fetch_response.get('oauth_token')
    session['request_token_secret'] = fetch_response.get('oauth_token_secret')

    redirect_url = furl(RESOURCE_OWNER_AUTHORIZATION_URL)
    redirect_url.args['oauth_token'] = session['request_token']
    return redirect(redirect_url.url)

@app.route('/callback_page')
def callback_page():
    verifier = request.args.get('oauth_verifier')
    oauth = OAuth1Session(OAUTH_CONSUMER_KEY,
                          client_secret=OAUTH_CONSUMER_SECRET,
                          resource_owner_key=session['request_token'],
                          resource_owner_secret=session['request_token_secret'],
                          verifier=verifier)

    access_tokens = oauth.fetch_access_token(TOKEN_REQUEST_URL)
    access_token = access_tokens.get('oatuh_token')
    access_secret = access_tokens.get('oauth_token_secret')
    return "access_token: {}, access_token_secret: {}".format(access_token, access_secret)

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

「app.secret_key = xxxxx」の「xxxxx」には、ランダムなシークレットキーを入力します。以下のコマンドで出力した「b'\xb3\xxxxx...'」値を「xxxxx」の部分に書き加えておきます。

$ python -c "import os; print(os.urandom(24))"

b'\xb3\xxxxx...'

また、「OAUTH_CONSUMER_KEY = 'yyyyy'」と「OAUTH_CONSUMER_SECRET = 'zzzzz'」の部分には、控えておいた「OAuth Consumer Key」と「OAuth Consumer Secret」の値を書き加えます。


コードのやっていることは、「http://127.0.0.1:5000/」にアクセスされたら、「OAUTH_CONSUMER_KEY」と「OAUTH_CONSUMER_SECRET」を利用してリクエストトークンとリクエストトークンシークレットキーをセッションに保存し、リダイレクト先の連携許可画面を表示します。

その後、連携許可をすると、アクセストークンとアクセストークンのシークレットキーを含むレスポンスを得ることができるのでそれを画面に表示しています。


ファイルを実行する前に、ライブラリを利用するのでpipで利用するライブラリをインストールしておきます。

$ pip install requests
$ pip install requests_oauthlib
$ pip install flask
$ pip install furl


ライブラリがインストールできたら、ファイルを実行します。

$ python get_hatena_access_token.py

 * Serving Flask app "get_hatena_access_token" (lazy loading)
 * Environment: production
   WARNING: Do not use the development server in a production environment.
   Use a production WSGI server instead.
 * Debug mode: on
 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
 * Restarting with stat
 * Debugger is active!
 * Debugger PIN: 107-672-605


ファイルを実行して、上記のように「Running on http://127.0.0.1:5000/」と表示されていれば、アクセスできる状態になっているはずなので「http://127.0.0.1:5000/」にアクセスします。

アクセスすると、上の画像のような連携許可画面が表示されます。

「許可する」ボタンをクリックします。


アクセストークンとアクセストークンシークレットの値が表示されているはずなので、これらの値を控えておきます。



5. APIではてなブックマークを実行

特定のURLを指定してはてなブックマークができるようにしていきます。


hatena_bookmark.pyというファイルを作成します。

hatena_bookmark.py

ここから先は

5,780字 / 4画像
この記事のみ ¥ 980

この記事が気に入ったらチップで応援してみませんか?