Created
February 5, 2017 07:12
-
-
Save unau/fd65c140e5fb24803081144e9f5171c0 to your computer and use it in GitHub Desktop.
facebook の友達数の推移、投稿数の推移を API を使わずに取得する ref: http://qiita.com/unau/items/1147c1748b3a7a3901d1
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
basedir=/mnt/virya/Downloads/facebook-takeyukikojima | |
htmldir=${basedir}/html | |
awk -v today=20170131 -f friends.awk ${htmldir}/friends.htm | |
# end of file |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
BEGIN { | |
RS = ">"; | |
caps["友達"] = "friends"; | |
caps["Sent Friend Requests"] = "sentRequests"; | |
caps["友達リクエストを受信しました"] = "recievedRequests"; | |
caps["Deleted Friend Requests"] = "deletedRequests"; | |
caps["削除した友達"] = "deleted"; | |
caps["ファン:"] = "fan"; | |
caps["Friend Peer Group"] = "group"; | |
if (today != "") { | |
today_year = substr(today, 1, 4); | |
today_month = substr(today, 5, 2); | |
today_day = substr(today, 7, 2); | |
} | |
} | |
match($0, /^(.+)<\/h2$/, a) { | |
caption = caps[a[1]]; | |
delete m; m[caption] = 1; | |
next; | |
} | |
m["friends"] { | |
if (! parseNameAndDay($0)) next; | |
piars[name]++; | |
from[name] = date; | |
next; | |
} | |
m["sentRequests"] { | |
if (! match($0, /^(.+) <\/li$/, a)) next; | |
name = a[1]; | |
piars[name]++; | |
sent[name]++; | |
next; | |
} | |
m["recievedRequests"] { | |
if (! parseNameAndDay($0)) next; | |
piars[name]++; | |
received[name] = date; | |
next; | |
} | |
m["deleted"] { | |
if (! parseNameAndDay($0)) next; | |
piars[name]++; | |
deleted[name] = date; | |
next; | |
} | |
END { | |
OFS = ","; | |
for (name in piars) { | |
print name, from[name], sent[name], received[name], deleted[name]; | |
} | |
} | |
function parseNameAndDay(line) { | |
if (! match(line, /^(.+) \((.+)\)<\/li$/, a)) return 0; | |
name = a[1]; | |
date = a[2]; | |
if (date == "今日") { | |
date = today_year "/" today_month "/" today_day; | |
} else if (match(date, /^(([0-9]+)年)?([0-9]+)月([0-9]+)日$/, d)) {; | |
date = (d[2] == "" ? today_year : d[2]) "/" d[3] "/" d[4]; | |
} else { | |
date = "**" date; | |
} | |
return 1; | |
} | |
# end of file |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment