Navigation Menu

Skip to content

Instantly share code, notes, and snippets.

@mudream4869
Created August 9, 2015 11:32
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mudream4869/b1a143d6c14f27cfd642 to your computer and use it in GitHub Desktop.
Save mudream4869/b1a143d6c14f27cfd642 to your computer and use it in GitHub Desktop.
期末廢文大賽記分板
import requests
import time
import random
import json
import sys
access_token = "access_token=[APP的Token]"
base_url = "https://graph.facebook.com/v2.3/"
start_url = "https://graph.facebook.com/v2.3/832004440226215/feed/?" + access_token
# 832004440226215是活動id
def perr(ss):
sys.stderr.write(ss + "\n")
def get_like_count(id):
get_obj = json.loads(requests.get(base_url + id + "/likes?summary=true&" + access_token).text)
try:
return get_obj["summary"]["total_count"]
except:
perr(repr(get_obj))
return 0
def shorter(msg):
if len(msg) <= 10:
return msg
else:
return msg[:10] + "..."
def timeclear(tm):
ret = str(tm)[:19]
ret = ret[:10] + " " + ret[11:]
return ret
def resolve_msg(row):
try:
return row["message"]
except:
return ""
r = requests.get(start_url)
count = 0
it_url = start_url
collect_data = []
while(1):
obj = json.loads(requests.get(it_url).text)
#print obj
for row in obj["data"]:
new_row = {
"id" : row["id"],
"like" : get_like_count(row["id"]),
"time" : timeclear(row["created_time"]),
"cont" : shorter(resolve_msg(row))
}
sys.stderr.write(repr(new_row) + "\n")
collect_data.append(new_row)
count += len(obj["data"])
if "paging" not in obj: break
if "next" not in obj["paging"]: break
it_url = obj["paging"]["next"]
time.sleep(random.choice([1, 2]))
perr('block ok cnt = '+ str(count) + "\n")
collect_data.sort(key = lambda x: x["like"], reverse=True)
import tornado.template
loader = tornado.template.Loader("template路徑")
new_scorebroad = open("輸出路徑和檔名", "w")
new_scorebroad.write(
loader.load("templ.html").generate(
rows=collect_data[:10],
fw_count=len(collect_data)
)
)
<head>
<meta charset="UTF-8" />
<title> 廢文記分板 </title>
<!-- Latest compiled and minified CSS -->
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js"></script>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css">
<!-- Optional theme -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap-theme.min.css">
<!-- Latest compiled and minified JavaScript -->
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js"></script>
<style>
.body_div{
padding-left: 1%;
padding-right: 1%;
}
</style>
</head>
<body class="body_div">
<div class="page-header">
<h1>有點廢的廢文記分板 <small>期末神馬的爆炸吧</small></h1>
</div>
<div class="row">
<div class="col-md-6 col-md-offset-3">
<p class="lead">廢文總數:{{fw_count}}篇</p>
<table class="table table-hover">
<thead> <td>發佈時間<td> 連結 </td> <td>內文 </td> <td> 讚數</td></thead>
{% for row in rows%}
<tr>
<td>{{row["time"]}}</td>
<td><a href="http://facebook.com/{{row['id']}}">廢文連結</a></td>
<td>{{row["cont"]}}</td>
<td>{{row["like"]}}</td>
</tr>
{% end %}
</table>
</div>
</div>
</body>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment