YDN 의 역작! YQL 을 써보자.

알아둘일 2009.09.02 16:48 Posted by 1day1
YDN , Yahoo Developer Network 의 약자이다.
예전에 pipe 를 잠깐 써봤던 것이 생각난다.
아주 간단한 RSS 를 불러와서 최신글을 뿌려주는 간단한 pipe.

twitter @ydnkr 에서 본 http://ydnkrblog.com/blog/?p=582 YQL 소개 동영상.
여러 서비스들의 오픈API 를 아주 간단(?)하게 쓸 수 있다.
오호! 그래?  그럼 테스트를 안 해볼 수 없지.

http://developer.yahoo.com/yql/
YQL 은 지난 7월경에 나온듯 하다. 그동안 모르고 있었다.(다른곳에 한눈팔아 미처 못 봤겠지)
사실은 트위터 오픈API 를 이용해서 뭔가 만들려고 했었는데. 마침 YQL 이 눈에 띄었다.
(결과적으로 이런 행운이...)

YQL console 이라는 것이 있어, 직접 쿼리(?)를 날려 테스트 해볼 수 있다.
http://developer.yahoo.com/yql/console/

그 부분은 동영상에서도 소개가 되어 있으니 일단 넘어가고.
바로 트위터에 포스팅 하기를 실험해 봤다.(약간의 삽질기도 있다)

YQL 콘솔상에서는 다음과 같은 쿼리를 날린다.
이런 쿼리이다.
use 'http://yql.1day1.org/yql-twitter-status.xml' as table; insert into table (username,password,status) values('username','password','YQL-twitter test. 22');
자신의 트위터 아이디/암호/내용을 넣으면  트위터에 포스팅이 된다.


1. YOS , php SDK 를 이용하려다 실패.( & 보류 )
자세한 사항은 자세히 보기로...

자세히 보기로

(그에 대한 삽질기록은 http://t.1day1.org/post/177433640 )

2. YOS 가 curl 쓴다면, 난 직접 쓰지뭐.
YOS 가 curl 을 쓴다기에 직접 써보기로 했다.

file_get_contents , simplexml_load_file 같은 php 의 함수를 이용할 수도 있지만,
INSERT/UPDATE/DELETE 등의 쿼리는 POST 로 데이터를 넘겨야 하는 것 같다.
그래서 해당 함수들은 사용할수가 없다. 물론 socket 열어서 직접 post 로 넘기면 되지만.
우린 복잡한거 싫어하잖아요. 간단하게 해야 Cool 하죠. ^^

암튼 curl 을 쓰기로 했다.

우선 완성된 샘플 주소이다.(이 주소는 계속 유지 되지 않습니다.)
http://yql.1day1.org/yql-twitter.php


curl 을 이용한 방법의 핵심부분의 코드이다.

$query = "use 'http://yql.1day1.org/yql-twitter-status.xml' as table;
    insert into table (username,password,status)
    values('" . $_POST['username'] . "','" . $_POST['password'] . "','" . $_POST['status'] . "'); ";

$postData = 'q=' . urlencode($query). '&format=xml';
$yql_uri = 'http://query.yahooapis.com/v1/public/yql';


$options_add = array(
    CURLOPT_URL => $yql_uri  ,
    CURLOPT_REFERER => $referUrl ,
   
    CURLOPT_POST => 1,
    CURLOPT_POSTFIELDS => $postData ,
);

$ch = curl_init( );
curl_setopt_array( $ch, $options_add );

$content = curl_exec( $ch );

curl_close( $ch );
보내고자 하는 쿼리를 
http://query.yahooapis.com/v1/public/yql
으로
$postData = 'q=' . urlencode($query). '&format=xml';
post 형식으로 보내는 것이다.



YOS 가 된다면, 그게 좀더 편하겠지만, curl 로 직접 처리하는 것도 괜찮아 보인다.

YQL 의 매력적인 부분은 자신의 서비스를 오픈테이블(opentable?) 로 공개해서 사용하게 할 수 있다는 것이다. YQL 에서 쓸 수 있도록 따로 등록절차가 필요한지 모르겠지만, 서비스 개발자에게 상당한 자유도,편의성을 제공하는 것 같다.


신고

댓글을 달아 주세요

  1. 궁금이 2014.07.28 09:58 신고  댓글주소  수정/삭제  댓글쓰기

    yql 쿼리에 한글이 들어가면 제대로 작동을 안하는데 어떻게 해야 할까요? 잘 됬었는데 약 1주일전부터 갑자기 안됩니다. 영어 쿼리는 잘 되구요. 조언 좀 부탁드립니다.

    • 1day1 2014.07.28 11:23 신고  댓글주소  수정/삭제

      그동안 잘 되셨다면, YDN 쪽에 뭔가 바뀌었나 보네요.
      그쪽에 문의를 해보시는게 좋을 듯 합니다.

      - 저도 오래전에 작성한 글이라 정확히 판단이 어렵겠네요.

  2. 궁금이 2014.07.28 21:31 신고  댓글주소  수정/삭제  댓글쓰기

    YDN쪽에 문의는 어떻게 해야 하는건지요? 외국사이트라 방법을 잘 모르겠어요. ㅠㅠ

    • 1day1 2014.07.29 09:49 신고  댓글주소  수정/삭제

      https://developer.yahoo.com
      에 가보시면 포럼이나 블로그등이 있습니다.
      그곳을 살펴보시는 것이 더 도움이 될 것 같네요.

      - 큰 도움을 못드리는 것 양해바랍니다.

  3. 궁금이 2014.07.30 10:41 신고  댓글주소  수정/삭제  댓글쓰기

    넵, 답변 주셔서 감사합니다. ^^