YouTube ๊ฒ€์ƒ‰ ๋ฐ์ดํ„ฐ ๊ฐ€์ ธ์˜ค๊ธฐ - YouTube Data Api ์—ฐ๋™

    ๋ฐ˜์‘ํ˜•

    ์œ ํŠœ๋ธŒ ์ฑ„๋„ ๊ฒ€์ƒ‰์— ๋Œ€ํ•œ ๊ฒฐ๊ณผ๋ฅผ ๋ฆฌ์ŠคํŠธ๋กœ ๊ฐ€์ ธ์˜ค๋Š” ์˜ˆ์ œ ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค.
    ์•„๋ž˜ ์†Œ์Šค์—๋Š” [๊ฒ€์ƒ‰์–ด][๋”๋ณด๊ธฐ] ๊ธฐ๋Šฅ์ด ์ถ”๊ฐ€๋˜์–ด ํ•ด๋‹น ๊ฐ’๋“ค๋„ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋„˜๊ฒจ ๋ฐ›๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

    ์• ์ดˆ์— ํ•ด๋‹น API์—์„œ ๊ฒ€์ƒ‰์–ด๊ฐ€ ์กด์žฌํ•ด์•ผ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๊ณ , ๊ฒฐ๊ณผ์—๋Š” pageToken ์ด ํ•ญ์‹œ ๋„˜์–ด์˜ค๊ณ  ํ•ด๋‹น ํ† ํฐ์„ ๋‚ ๋ ค์„œ ํŽ˜์ด์ง• ์กฐํšŒ๋„ ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ํŽ˜์ด์ง• ๋˜ํ•œ ๊ตฌํ˜„์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

     

    ์ž์„ธํ•œ ํŒŒ๋ผ๋ฏธํ„ฐ ๋ฐ ์•ˆ๋‚ด ์‚ฌํ•ญ์€ ๋‹ค์Œ ์ฃผ์†Œ๋ฅผ ์ฐธ๊ณ ํ•ด์ฃผ์„ธ์š”.

    developers.google.com/youtube/v3/docs/search/list?hl=ko

     

    Search: list  |  YouTube Data API  |  Google Developers

    API ์š”์ฒญ์— ์ง€์ •๋œ ์ฟผ๋ฆฌ ๋งค๊ฐœ๋ณ€์ˆ˜์™€ ์ผ์น˜ํ•˜๋Š” ๊ฒ€์ƒ‰๊ฒฐ๊ณผ์˜ ๋ชจ์Œ์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ๊ฒ€์ƒ‰๊ฒฐ๊ณผ์˜ ์ง‘ํ•ฉ์€ ์ฟผ๋ฆฌ ๋งค๊ฐœ๋ณ€์ˆ˜์™€ ์ผ์น˜ํ•˜๋Š” video, channel, playlist ๋ฆฌ์†Œ์Šค๋ฅผ ์‹๋ณ„ํ•˜์ง€๋งŒ, ํŠน์ • ์œ ํ˜•์˜ ๋ฆฌ

    developers.google.com

     

    package src.lib.youtubeSearchApi;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.lang.reflect.Type;
    import java.net.URL;
    import java.net.URLConnection;
    import java.util.ArrayList;
    import java.util.List;
    import com.google.gson.Gson;
    import com.google.gson.JsonArray;
    import com.google.gson.JsonElement;
    import com.google.gson.JsonObject;
    import com.google.gson.JsonParser;
    import com.google.gson.reflect.TypeToken;
    import com.google.gson.stream.JsonReader;
    import src.lib.myMap.MyCamelMap;
    import src.lib.myMap.MyMap;
    public class youtubeSearchApi {
    	public static MyMap youtubeSearch(MyMap paramMap) {
    		// ๊ฒ€์ƒ‰๊ฒฐ๊ณผ list
    		MyMap result = new MyMap();
    		MyMap info = new MyMap();
    		List<MyCamelMap> resultDataList = new ArrayList<MyCamelMap>();
    		List<MyCamelMap> list = new ArrayList<MyCamelMap>();
    		// key setting
    		String apiKey = "{API ํ‚ค๊ฐ’}";
    		// oauth setting
    		String oauthKey = "{Oauth ํ‚ค๊ฐ’}"; // ๋ฏธ์‚ฌ์šฉ
    		// request parameter setting
    		// ์ฐธ๊ณ  ์‚ฌ์ดํŠธ : https://developers.google.com/youtube/v3/docs/search/list?hl=ko
    		// ๊ฒ€์ƒ‰์–ด
    		String q = paramMap.getStr("searchValue", "");
    		// ๋‹ค์Œ ํŽ˜์ด์ง€ ํ† ํฐ
    		String nextPageToken = paramMap.getStr("nextPageToken", "");
    		// ๊ฒ€์ƒ‰ ์œ ํ˜• ํƒ€์ž…
    		String type = "video"; // ๋น„๋””์˜ค๋งŒ ๊ฒ€์ƒ‰, ํ—ˆ์šฉ ๊ฐ’ : [channel|playlist|video]
    		// request
    		String apiUrl = "https://www.googleapis.com/youtube/v3/search?key=" + apiKey + "&part=snippet" + "&q=" + q + "&type=" + type;
    		if (!nextPageToken.equals("") && !nextPageToken.equals(null)) {
    			// ๋‹ค์Œ ํŽ˜์ด์ง€ ํ˜ธ์ถœ์ธ ๊ฒฝ์šฐ์—๋งŒ ๋‹ค์Œ ํŽ˜์ด์ง€ ํ† ํฐ ๊ฐ’ ํฌํ•จ.
    			apiUrl += "&pageToken=" + nextPageToken;
    		}
    		if (paramMap.getStr("searchValue", "").equals("") || paramMap.getStr("searchValue", "").equals(null)) {
    			// searchValue ์—†์œผ๋ฉด ๋™์ž‘ํ•˜์ง€ ์•Š์Œ.
    		} else {
    			try {
    				// url += URLEncoder.encode(searchValue, "UTF-8");
    				// Connect to the URL using Java's native library
    				URL url = new URL(apiUrl);
    				URLConnection request = url.openConnection();
    				request.connect();
    				// Convert to a JSON object to print data
    				JsonParser jp = new JsonParser(); // from gson
    				JsonReader jr = new JsonReader(new InputStreamReader((InputStream)request.getContent()));
    				jr.setLenient(true);
    				JsonElement root = jp.parse(jr); // Convert the input stream to a json element
    				JsonObject rootobj = root.getAsJsonObject(); // May be an array, may be an object.
    				// info parsing
    				String getNextPageToken = "noMoreResult";
    				// next page token ์ด ์žˆ๋Š” ๊ฒฝ์šฐ ๊ฐ€์ ธ์˜ค๊ณ  ์—†๋Š” ๊ฒฝ์šฐ ์—†๋‹ค๊ณ  ํ‘œ์‹œ.
    				if (!rootobj.has("nextPageToken")) {
    					getNextPageToken = "noMoreResult";
    				} else {
    					getNextPageToken = rootobj.get("nextPageToken").getAsString();
    				}
    				JsonObject pageInfo = rootobj.get("pageInfo").getAsJsonObject(); // May be an array, may be an object.
    				String totalResult = pageInfo.get("totalResults").getAsString();
    				String resultsPerPage = pageInfo.get("resultsPerPage").getAsString();
    				info.put("nextPageToken", getNextPageToken);
    				info.put("totalResult", totalResult);
    				info.put("resultsPerPage", resultsPerPage);
    				// items parsing
    				JsonArray dataList = rootobj.get("items").getAsJsonArray();
    				// map setting
    				// 1. title 2. id 3. description 4. published date 5. thumburl
    				Gson gson = new Gson();
    				Type listType = new TypeToken<ArrayList<MyCamelMap>>() {}.getType();
    				resultDataList = gson.fromJson(dataList.toString(), listType);
    				for (int i = 0; i < resultDataList.size(); i++) {
    					MyCamelMap data = new MyCamelMap();
    					data.put("title", dataList.get(i).getAsJsonObject().get("snippet").getAsJsonObject().get("title").getAsString());
    					data.put("videoId", dataList.get(i).getAsJsonObject().get("id").getAsJsonObject().get("videoId").getAsString());
    					data.put("des", dataList.get(i).getAsJsonObject().get("snippet").getAsJsonObject().get("description").getAsString());
    					data.put("date", dataList.get(i).getAsJsonObject().get("snippet").getAsJsonObject().get("publishedAt").getAsString());
    					data.put("thumbUrl", dataList.get(i).getAsJsonObject().get("snippet").getAsJsonObject().get("thumbnails").getAsJsonObject().get("default").getAsJsonObject().get("url").getAsString());
    					list.add(data);
    				}
    			} catch (Exception e) {
    				e.printStackTrace();
    			}
    			result.put("info", info);
    			result.put("list", list);
    			result.put("paramMap", paramMap);
    		}
    		return result;
    	}
    	
    }
    

    * ํ•ด๋‹น ์†Œ์Šค์—์„œ MyMap ๊ณผ MyCamelMap์€ map ํ˜•์‹์˜ ๊ฐ์ฒด๋ฅผ ๋”ฐ๋กœ ๊ตฌํ˜„ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ•ด๋‹น ๋ถ€๋ถ„์„ ๋ฐ”๊พธ์…”์„œ ์‚ฌ์šฉํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

    728x90
    ๋ฐ˜์‘ํ˜•

    ๋Œ“๊ธ€