52 lines
1.8 KiB
Python
52 lines
1.8 KiB
Python
from dateutil.parser import parse
|
|
from datetime import datetime
|
|
import re
|
|
import urlparse
|
|
from src.fb import graph
|
|
from facebook import GraphAPIError
|
|
import json
|
|
import gevent
|
|
|
|
def fbfeedelement(h):
|
|
art={}
|
|
art["text"]=""
|
|
if h.has_key("story"):
|
|
art["text"]=art["text"]+h["story"]+"<br>"
|
|
if h.has_key("attachments") and len(h["attachments"]["data"])>0:
|
|
for a in h["attachments"]["data"]:
|
|
if a.has_key("media") and a["media"].has_key("image") and a["media"]["image"].has_key("src") and not art.has_key("image"):
|
|
art["image"]=a["media"]["image"]["src"]
|
|
if a.has_key("title"):
|
|
art["title"]=a["title"]
|
|
if a.has_key("type") and a["type"] in ["event"]:
|
|
art["url"]=a["url"]
|
|
if a.has_key("description"):
|
|
art["text"]=art["text"]+a["description"]+"<br>"
|
|
|
|
|
|
if not art.has_key("title") and h.has_key("story"):
|
|
art["title"]=h["story"]
|
|
if h.has_key("message"):
|
|
art["text"]=art["text"]+h["message"]
|
|
art["published"] =parse(h["created_time"])
|
|
if not art.has_key("url"):
|
|
art["url"]=urlparse.urlunsplit(("http","www.facebook.at",h["id"],"",""))
|
|
return art
|
|
|
|
|
|
def fbfeed(url, raw, params={}):
|
|
js = json.loads(raw)
|
|
arts=[]
|
|
u=urlparse.urlparse(url)
|
|
for m in js["data"]:
|
|
aa=fbfeedelement(m)
|
|
if not aa.has_key("title"):
|
|
aa["title"] = u[1]+ " at " + aa["published"].strftime("%Y-%m-%d %H:%M")
|
|
aa["section"]="Facebook: "+u[1]
|
|
arts.append(aa)
|
|
nx=None
|
|
if js.has_key("paging") and js["paging"].has_key("next"):
|
|
un=urlparse.urlparse(js["paging"]["next"])
|
|
nx=urlparse.urlunsplit((u[0],u[1],u[2],un[4],un[3]))
|
|
return {"url": url, "next_page": nx,"articles": arts}
|