Table of Contents

Facebook API 포스팅 가져오기 #4 PHP로 최신현황 받아오기

Intro

페이스북을 통해서 포스팅을 하게 되면, 여러 사람들이 볼 수 있고 모바일 앱을 이용해 편하게 사용할 수 있긴 하지만, 내 생각과 자료들이 페이스북 플랫폼에 남게 되고 과거 글은 찾아보기 힘들어 불편한 점이 있습니다.

그래서 주기적으로 페이스북 포스팅들을 블로그에 Archive하기 위해 API를 사용하여 블로그에 저장하는 것을 시도해 보았습니다.
해당 결과물은 Facebook Posting Archive 에서 보실 수 있습니다.

  1. Python 으로 데이터 업로드하기 - Image다운, FTP 및 웹제어

순으로 진행해 보도록 하겠습니다.

 

매일 페이스북에 포스팅을 하고 있기 때문에, wiki 페이지 내에 Archiving 된 내용은 최신 현황이 아닐 가능성이 높다.
이전편#다음 에서 밝혔듯, 윈도의 '작업스케쥴러' 등을 이용해 Near Time으로 받아올 수 있지만, 그래도 Archiving 페이지 내에서 최신 글이 몇개가 더 있다는 정보는 보여줄 필요가 있었다.

현재 이용하는 웹호스팅에서 PHP를 지원하기 때문에, PHP를 통해서 페이스북 페이지 정보를 얻어와 항상 최신 현황을 볼 수 있는 스크립트를 만들어 보았다.
PHP는 아주 예전에만 써봤기 때문에 문법 등이 익숙하지 않아 많은 검색을 통해서 작성했다.

아래 그림 부분이 결과물이다.

API 호출

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<?php
	//ini_set('display_errors','true');

	$token = "[[API 액세스 토큰]]";
	$url = "https://graph.facebook.com/v6.0/100300361542753/posts?fields=created_time&limit=50&pretty=0&access_token=" . $token;

	 function get_content($URL){
		  $ch = curl_init();
		  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
		  curl_setopt($ch, CURLOPT_URL, $URL);
		  $data = curl_exec($ch);
		  curl_close($ch);
		  return $data;
	}

최신Archiving 날짜를 받아서 날짜 객체로 만들기

$base_date = $_GET['date'];
	
date_default_timezone_set('UTC');	
$base_date = strtotime($base_date);

json 처리

	$obj = json_decode(get_content($url));
	
	$count_list = count($obj->data);	
	for ($i=0;$i<$count_list;$i++) {
		$time = $obj->data[$i]->created_time;
		$time = strtotime($time);
		if ($i==0 ) $newest_time = $time;
		if ( $time > $base_date ){
			//echo '<br> newer : '. $i . ' : '. date("Y-m-d h:i:s A",$time);
		} else {
			break;
		}
	}

결과 출력하기

	if ($i >= $count_list) {
		$str = "+";
	} else {
		$str = "";
	}
	
	$style = $_GET['style'];
	$front = $_GET['front'];
	$mid = $_GET['mid'];
	$end = $_GET['end'];
	$format = $_GET['format']; //Y-m-d h:i:s A
	
	date_default_timezone_set('Asia/Seoul');
	echo "<body style='".$style."'>". $front . date($format,$newest_time) . $mid . $i . $str . $end ."</body>";

사용

간단한 몇 줄의 코드로 최신 현황을 받아오는 기능을 만들었다. 이를 wiki 페이지에서 보이도록 하기 위해서 <iframe> 기능을 이용해서 해당 php 파일을 embedding 하였다.

 
<iframe src='
http://triviaz.net/[페이지이름].php?
           date="+max(output['created_time']).replace('+','%2B')+"   ''Python내에서 Archiving된 최신 글 작성시간을 전달
           &format=m/d%20H                                           ''월/일 시간 형식으로 날짜 출력
           &front=[최신:%20					   
           &mid=시까지%20
           &end=%20 포스팅이 더 있습니다]			    ''[최신: (날짜 시간)시까지 (글 개수) 포스팅이 더 있습니다]
           &style=font-size:11pt;font-color:%23333333;font-family:Helvetica,Arial,sans-serif;      ''해당 스타일로 출력
'></iframe>

추후 작업해야 할 것

첫번째 목적인 Archiving을 위한 작업은 끝났다.

추후에는

  1. 권한 문제를 해결하여 포스팅별 도달수, 공유수, 좋아요 수, 페이지 좋아요 수 등을 추출할 수 있도록 개선
  2. 해당 내용을 정리하여, 페이지 운영에 필요한 데이터 분석 및 insight 얻기

를 해보도록 해야 겠다.

참고