JsonSlurperを使ってfacebook内のいいね!をクリック
悪用厳禁で。
#!/usr/bin/env groovyimport groovy.json.* def facebookApi = new Object(){ def baseurl = "https://graph.facebook.com"def accessToken = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"def jsonSlurper = new JsonSlurper() def get = { path, params = [:] -> jsonSlurper.parseText( new URL( baseurl + path + "?" + ([ "access_token":accessToken ] + params).collect{ it.key + "=" + it.value }.join("&")).text ) } def post = { path, params = [:] ->println (baseurl + path) new URL( baseurl + path ).openConnection().with{ doOutput = true setRequestProperty("User-Agent", "JsonSlurper") setRequestProperty("Accept-Language", "ja") outputStream.withWriter { it << ([ "access_token":accessToken ] + params).collect{ it.key + "=" + it.value }.join("&") } def result = "" inputStream.withReader { result = it.text } result } } } def nameKeyword = args[0] def me = facebookApi.get("/me") def friends = facebookApi.get("/me/friends") friends.data.findAll{ it.name.contains(nameKeyword) }.id.each{ id -> feeds = facebookApi.get("/${id}/feed") feeds.data.findAll{ def likes = facebookApi.get("/${it.id}/likes") !likes.data.id.contains( me.id ) && it?.created_time >= (newDate()-2).format('yyyy-MM-dd') }.each{ feed ->println feed.from println feed.message println feed.created_time println facebookApi.post("/${feed.id}/likes") println"--------------------------------------------------" } }
第一引数にフレンドの名前を指定。
それを含むフレンドの2日前までのフィードに一括でいいね!します。
すでにいいね!しているものにはなにもしません。
最後のpostでいいね!している。
facebookやtwitterはkeyword:restな作りになってるんだね。
取得=get、登録・更新=post、削除=deleteにてHTTPのリクエスト投げると。
urlの形式は、オブジェクト#メソッドの関係に似ている。
getリクエストで me/friends にアクセスすれば、自分のフレンド情報を取得。(パラメータでidはいる。)
deleteリクエストで ${feedId}/likes にアクセスすれば、${feedId}に関するいいね!を取り消せる。
ディスカッション
コメント一覧
まだ、コメントがありません