diff --git a/insight/postinsight.py b/insight/postinsight.py index f391585..3713803 100644 --- a/insight/postinsight.py +++ b/insight/postinsight.py @@ -12,6 +12,8 @@ class PostInsight() : type = "" link = "" comment = "" + created_time = "" + message = "" data = {} insight_map = {} @@ -21,7 +23,7 @@ class PostInsight() : def setContentInsight(self,content_id): - url ='https://graph.facebook.com/v2.5/%s?fields=link,comments.limit(5),type,insights{values}'%content_id + url ='https://graph.facebook.com/v2.5/%s?fields=message,created_time,link,comments.limit(5),type,insights{values}'%content_id txt = requests.get(url + self.token).text #print url + self.token self.data = json.loads(txt) @@ -58,6 +60,19 @@ class PostInsight() : def getContentInsightAll(self): return self.insight_map + + def setContentCreated_time(self, data): + try: + self.created_time = data['created_time'] + except: + self.created_time = "" + + def setContentMessage(self, data): + try: + self.message = data['created_time'] + except: + self.message = "" + def setContentType(self, data): try: self.type = data['type'] @@ -85,4 +100,16 @@ class PostInsight() : return self.type def getContentCommentUrl(self): - return self.comment \ No newline at end of file + return self.comment + + def getContentCreated_time(self): + try: + return self.created_time.replace('T'," ").replace('+0000',"") + except: + return "" + + def getContentMessage(self): + try: + return self.message.replace('\n'," ").replace('\r'," ").replace('\'',"") + except: + return "" \ No newline at end of file diff --git a/insight/url.py b/insight/url.py index 5347243..a205a71 100644 --- a/insight/url.py +++ b/insight/url.py @@ -17,6 +17,8 @@ class Url() : link = link.replace('\n'," ").replace('\r'," ").replace('\'',"") + print link + if len(link) < 5: continue @@ -31,7 +33,6 @@ class Url() : }) elif self.isrpiki(link) : - print "여기?" print link data.append({ 'bitly_url' : "", @@ -42,7 +43,6 @@ class Url() : }) elif self.isbitly(link): - try: link = "http://bit.ly/" + re.compile('[^./a-zA-Z0-9]+').sub("",link.split("//bit.ly/")[1].split(" ")[0]) @@ -68,6 +68,8 @@ class Url() : except: piki_url = str(0) + print self.rpiki2click(txt[source_bgn:source_end]) + if self.isrpiki(txt[source_bgn:source_end]) : data.append({ 'bitly_url' : str(link), @@ -105,32 +107,51 @@ class Url() : return "0" def rpiki2click(self,url): - #print url + print url api = self.server + "contents_RPIKI_api/" try: fr = url.split("fr=")[1].split("&")[0] except: fr = "" - try: cid = url.split("cid=")[1].split("&")[0] + except: + cid = "" + try: m = url.split("m=")[1].split("&")[0] + except: + m = "" + try: c = url.split("c=")[1].split("&")[0] + except: + c ="" + try: v = url.split("v=")[1].split("&")[0] + except: + v = "" + try: t = url.split("t=")[1].split("&")[0] + except: + t = "" + + try: data = json.loads(requests.get(api + cid + '_' + fr + '_' + m + '_' + c + '_' + v + '_' + t).text) + ret = data['data']['real'] if ret == "": ret = "0" - except: + except Exception as e: + print e ret = "0" return ret def getText2bitly(self,text): - return "http://bit.ly/" + text.split("http://bit.ly/")[1].split(" ")[0] - + try: + return "http://bit.ly/" + text.split("http://bit.ly/")[1].split(" ")[0] + except: + return "" def isdeep(self, url): diff --git a/runcontent.py b/runcontent.py new file mode 100644 index 0000000..6a0c09b --- /dev/null +++ b/runcontent.py @@ -0,0 +1,132 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +from insight.context import Context +from insight.token import Token +from insight.postinsight import PostInsight +from insight.datadb import DataDB + +from insight.url import Url +import time + + +if __name__=='__main__': + + token = Token() + contents_list = [] + + + contents_list.append({"id": "467342726674321_1159260310815889"}) + + + + for content in contents_list: + datadb = DataDB() + time.sleep(1) + p_id = str(content['id'].split('_')[0]) + c_id = str(content['id'].split('_')[1]) + + insight = PostInsight(token) + insight.setContentInsight(content['id']) + + created_time = insight.getContentCreated_time() + message = insight.getContentMessage() + message_url = Url().getText2bitly(message) + + lists =["post_story_adds_unique", + "post_story_adds", + "post_story_adds_by_action_type_unique,comment", + "post_story_adds_by_action_type_unique,like", + "post_story_adds_by_action_type_unique,share", + "post_story_adds_by_action_type,comment", + "post_impressions", + "post_impressions_paid_unique", + "post_impressions_paid", + "post_story_adds_by_action_type,like", + "post_story_adds_by_action_type,share", + "post_impressions_unique", + "post_impressions_organic_unique", + "post_impressions_organic", + "post_impressions_by_story_type_unique,other", + "post_impressions_by_story_type,other", + "post_consumptions_by_type_unique,other clicks", + "post_consumptions_by_type_unique,photo view", + "post_consumptions_by_type_unique,video play", + "post_consumptions_by_type_unique,link clicks", + "post_consumptions_by_type,other clicks", + "post_consumptions_by_type,photo view", + "post_consumptions_by_type,video play", + "post_consumptions_by_type,link clicks", + "post_engaged_users", + "post_video_views", + "post_video_views_unique", + "post_video_views_paid", + "post_video_views_autoplayed", + "post_video_views_10s", + "post_video_views_10s_unique", + "post_video_views_10s_paid", + "post_video_views_10s_organic", + "post_video_views_10s_clicked_to_play", + "post_video_views_10s_autoplayed", + "post_video_views_10s_sound_on", + "post_video_views_sound_on", + "post_video_view_time", + "post_video_complete_views_organic", + "post_video_complete_views_paid"] + + sqlprefix = "insert into facebook_insights2 (" + sqlreplace = "REPLACE into facebook_insights2_last (" + sqlvalues = " values (" + + sqlprefix += "`p_id`, " + sqlprefix += "`c_id`, " + sqlprefix += "`type`, " + sqlprefix += "`message`, " + sqlprefix += "`message_url`, " + sqlprefix += "`comment_url`, " + sqlprefix += "`created_time`, " + sqlprefix += "`loging_time`, " + + sqlprefix += "`bit_url`, " + sqlprefix += "`bit_click`, " + sqlprefix += "`origin_url`, " + sqlprefix += "`piki_cid`, " + sqlprefix += "`rpiki_click`, " + + sqlvalues += p_id + ", " + sqlvalues += c_id + ", " + sqlvalues += "'" + insight.getContentType() + "', " + sqlvalues += "'" + message + "', " + sqlvalues += "'" + message_url + "', " + sqlvalues += "'" + insight.getContentCommentUrl() + "', " + sqlvalues += "'" + created_time + "', " + sqlvalues += "NOW(), " + + + + url_data = Url().url2dic([insight.getLinkUrl(),message_url,insight.getContentCommentUrl()])[0] + + sqlvalues += "'" + url_data['bitly_url'] + "', " + sqlvalues += url_data['bitly_click'] + ", " + sqlvalues += "'" + url_data['origin_url'] + "', " + sqlvalues += url_data['piki_cid'] + ", " + sqlvalues += url_data['rpiki_click'] + ", " + + for list in lists: + sqlprefix += "`" + list.replace(',','_') + "`, " + sqlvalues += str(insight.getContentInsightByKey(list)) + ", " + + sqlprefix = sqlprefix[:len(sqlprefix)-2] + ")" + sqlvalues = sqlvalues[:len(sqlvalues)-2] + ");" + + print sqlprefix + sqlvalues + + datadb.fb_insert(sqlprefix + sqlvalues) + datadb.fb_insert(sqlreplace + sqlprefix[32:] + sqlvalues) + + + del(datadb) + del(insight) + + +