1. gurensouen

    Posted

    gurensouen
Changes in title
+Pythonを使い、iOSアプリのレビューを取得して、Lineで知る
Changes in tags
Changes in body
Source | HTML | Preview

自身の出したアプリのレビュー件数を取って毎日Lineで知りたい時ないですか?
自分にはありました。
そこで、作成。

今回はiOS用に作成したものになります。

使用ライブラリ

  • requests
    • APIを叩くのに
  • urllib3
    • レスポンスをJSONに分解
  • line-bot-sdk
    • LineBOT

コマンド

pip install line-bot-sdk
pip install requests
pip install urllib3

実際のコード

GetReview.py
from linebot import LineBotApi
from linebot.models import TextSendMessage
from linebot.exceptions import LineBotApiError
import requests
import json
import urllib.request
import urllib.parse

//LINEでメッセージを送るためのキー
LINE_ACSESS_KEY = "LINE_ACSESS_KEY"
//送信先のLINEID
LINE_USER_KEY = "LINE_USER_KEY"

def push_info(json_input, context):
    line_bot_api = LineBotApi(LINE_ACSESS_KEY)
    text_message = get_text_message()
    try:
        line_bot_api.push_message(LINE_USER_KEY, TextSendMessage(text=text_message))
    except LineBotApiError as e:
        print(e)

def get_text_message():
    review_url = "https://itunes.apple.com/jp/rss/customerreviews/id=アプリID/json"
    headers = {
        "Content-Type":"application/json",
    }
    response_obj = urllib.request.Request(review_url, headers=headers)
    //tryでエラーハンドリング
    try:
       with urllib.request.urlopen(response_obj) as response:
        response_body = response.read().decode("utf-8")
        result_objs = json.loads(response_body)
        result_obj = result_objs["feed"]
        review_count = len(result_obj["entry"])
        messages = "レビュー数は" + str(review_count) + "件です"
        return messages
    except urllib.error.HTTPError as e:
        if e.code >= 400:
            messages = e.reason
            return messages
        else:
            return e

これを圧縮して、AWSLambdaなどに設置してCloudWatchで定期実行すれば、レビューが全件取れます。
Lambdaにあげる時は、作業ディレクトリに移動(コマンド「cd」で)後、ライブラリのインストール時にオプションで「-t」 をつけてください。

注意

その時の全件(コメントのついたレビュー)しか取れないので、差分だけ欲しいなどの時は、取得したデータをDBなどに保存して差分を出す必要があります。

github

https://github.com/isamiodagiri/LineGetReview