페이스 북의 친구 수의 추이, 게시 수의 추이를 API를 사용하지 않고 취득
개요
facebook 의 친구수나 투고수 등을, API 를 사용하지 않고 취득, 가공한다.
방법
우선 친구 수의 추이를 얻어 본다
fbdice.sh#!/bin/bash
basedir=/mnt/virya/Downloads/facebook-takeyukikojima
htmldir=${basedir}/html
awk -v today=20170131 -f friends.awk ${htmldir}/friends.htm
# end of file
friends.awkBEGIN {
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
만들어 본 친구 수 추이 그래프
그 중 게시 수의 시간 경과에 따른 추이 그래프도
Reference
이 문제에 관하여(페이스 북의 친구 수의 추이, 게시 수의 추이를 API를 사용하지 않고 취득), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/unau/items/1147c1748b3a7a3901d1
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
#!/bin/bash
basedir=/mnt/virya/Downloads/facebook-takeyukikojima
htmldir=${basedir}/html
awk -v today=20170131 -f friends.awk ${htmldir}/friends.htm
# end of file
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
Reference
이 문제에 관하여(페이스 북의 친구 수의 추이, 게시 수의 추이를 API를 사용하지 않고 취득), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/unau/items/1147c1748b3a7a3901d1텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)