검색 엔진은 아니더라도, twitter에도 검색 하는 api를 제공하고 있어서 만들어본 twitter 검색하는 방법.
트위터는 아주 바람직한 서비스인것 같다, 어떤 트윗들이 요새 떠다니는지 검색도 할수 있게 해주고,
또 여러가지 옵션으로 원하는대로 검색을 할수 있으니!!!
그리고 JSON을 지원해줌..(나는 JSON을 너무 사랑함ㅋㅋㅋㅋ, 영어 이름을 jason이라고 지을까 싶다..)
https://dev.twitter.com/docs/api/1/get/search --> 너무나 간단한 Twitter 검색 API 사용법.
package com.hopeisagoodthing.searchtool;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.List;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import android.util.Log;
public class TwitterSearch implements ISearch
{
private static final String TAG = "TwitterSearch";
private static final String BASE_URL = "https://search.twitter.com/search.json";
private static final String[] TARGETS = new String[]{"?"};
private static final String RESULT_TYPE ="recent";
private static final class PARAM{
private static final String QUERY = "q=";// always start with this parameter!!!
private static final String RESULT_SIZE = "&rpp=";
private static final String RESULT_TYPE = "&result_type=";
}
private static final String RESULTS = "results"; // json array.
private static final String TEXT = "text"; // json obj
private final List<String> mAnalyzedList = new ArrayList<String>();
@Override
public List<String> getAnalyze(final String query, final int resultSize, final IAnalyzer analyzer) {
mAnalyzedList.clear();
final StringBuilder builder = new StringBuilder();
for(String target : TARGETS)
{
URL url = null;
try {
url = new URL( BASE_URL + target+
PARAM.QUERY + URLEncoder.encode(query, "UTF-8") +
PARAM.RESULT_TYPE+RESULT_TYPE+
PARAM.RESULT_SIZE+resultSize*20);
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
builder.setLength(0);
try {
URLConnection connection = null;
String line = null;
BufferedReader reader = null;
connection = url.openConnection();
//connection.addRequestProperty("Referer", /* Enter the URL of your site here */);
reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
while((line = reader.readLine()) != null) {
builder.append(line);
}
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
try {
Log.e(TAG,"Google Result START============================================================");
final JSONObject json = new JSONObject(builder.toString());
final JSONArray resultArray = json.getJSONArray(RESULTS);
final int arraySize = resultArray.length();
for(int i = 0; i< arraySize ; i++)
{
final JSONObject result = resultArray.getJSONObject(i);
final String content = result.getString(TEXT);
analyzer.analyze(content,mAnalyzedList);
}
Log.e(TAG,"Google Result END ============================================================");
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return mAnalyzedList;
}
}
'코딩하고 > Android' 카테고리의 다른 글
| ActionBar로 Tab 만들기 (19) | 2012.10.19 |
|---|---|
| App에서 SystemProperties 가지고 오는 방법 (1) | 2012.10.18 |
| 검색 API 사용하기 - google api (0) | 2012.10.05 |
| 검색 API 사용하기 - naver api. (2) | 2012.10.04 |
| 검색 API 사용하기 - daum api. (0) | 2012.10.03 |