Iruca Log

読者です 読者をやめる 読者になる 読者になる

Iruca Log

東京に住むWeb系エンジニアによるデータ分析ブログ

SNSでフォローする!

任意のはてなブログのエントリーにスターをつけるプログラム書いた [python]

こんにちは、イルカです。

今日は会社から帰ってきて何かプログラムを書きたい気分だったので、
自分のはてなアカウントから、任意のはてなブログのエントリーにスターをつける」 プログラムを書いてみました。
ご利用は自己責任で!

普段お世話になっている、楽しく読ませてもらっているブログ達の最新記事に一気にスターをつけたりする作業自動化に役立つかも。

とりあえず実行してみた

下に置いてあるプログラムの下部にある

    # 自分のhatena_id
    hatena_id = "XXXXX"
    # 自分のはてなログインパスワード
    login_password = "XXXXX"
    # スターをつけたいエントリのURL
    entry_url = "http://iruca21.hateblo.jp/entry/2017/04/12/232302"

をそれぞれ変更して実行してください。


ためしに面白く読ませてもらったコチラの記事にスターをつけてみます。(笑)
www.cheer-up.info

上記の手順で 自分のはてなID, ログイン用パスワード、
そして entry_url = "http://www.cheer-up.info/entry/2017/04/13/084401"
にプログラムを変更して実行!

[root@hoge add_star]# python add_star_util.py
{"color":"yellow","quote":"","name":"iruca21"}

こんな感じの表示になれば成功のはず。

実際にブログを見に行って確認してみる。

f:id:iruca21:20170414010709j:plain

おお、ついてるついてる。
満足です。


必要モジュール

pythonモジュール requestsが必要です。pipとかで入れておいてください。

プログラム

add_star_util.py

#!/usr/bin/python
#-*- coding:utf-8 -*-

import requests
import urllib
import json

"""
任意のはてなブログのエントリーにスターをつける
"""

def get_rk( hatena_id, password ):
    """はてなIDとログインパスワードからrkを取得します。
    rkが何なのかはよく分からない。
    """
    target_url = "https://www.hatena.ne.jp/login"
    payload = {'name': hatena_id, 'password': password}
    response = requests.post(target_url, data=payload )

    rk = response.headers["Set-Cookie"].split("rk=")[1].split(";")[0]
    return rk

def get_rks( entry_url, rk ):
    """ スターをつけたいエントリーのURLとrkから、rksを取得します。
    rksが何なのかはよく分からない。
    """
    target_url = "http://s.hatena.ne.jp/entries.json?uri="+ urllib.quote( entry_url ) 
    #print target_url
    headers = {"Cookie" : "rk="+ str(rk) }
    response = requests.get( target_url, headers=headers )
    
    rks = json.loads( response.content )["rks"]

    return rks
    
def add_star( entry_url, rk, rks ):
    """ はてなブログのエントリーにスターをつけます。
    """
    target_url = "http://s.hatena.ne.jp/star.add.json?rks="+ rks +"&uri="+ urllib.quote( entry_url ) +"&quote=&location="+ urllib.quote( entry_url )
    #print target_url
    
    headers = {"Cookie" : "rk="+ str(rk) }
    response = requests.get( target_url, headers=headers)
    print response.content

if __name__ == "__main__":
    # 自分のhatena_id
    hatena_id = "XXXXX"
    # 自分のはてなログインパスワード
    login_password = "XXXXX"
    # スターをつけたいエントリのURL
    entry_url = "http://www.cheer-up.info/entry/2017/04/13/084401"

    rk = get_rk( hatena_id, login_password )
    
    rks = get_rks( entry_url, rk )

    add_star( entry_url, rk, rks )


ご利用は自己責任で!
はてなのサーバや運営チームに迷惑をかけないようにしましょう。