YoutubeAPI 快速入门
本教程需要外网环境。
本教程参考一下博客:
- 使用Youtube Data API 抓取有趣的Youtube影片
- Java解析JSON的四种方式
- 使用Youtube官方API获取频道及视频数据
- Android中解析json数据的三种方式
申请 API Key
首先去开发者平台申请API Key,第一次登录需要简单注册一下,然后创建一个新的项目,创建完成后,点击控制台。
然后搜索 youtube api v3
接着创建并启用此API
回到控制台可以查看已启用API的密钥
开发者文档
在使用之前可以先看一下YoutubeAPI官方的开发文档,地址为:YoutubeAPI官方文档
这里的文档介绍的特别详细,还可以在线测试接口,生成代码示例,非常好用。
右侧就是测试接口返回的数据,对面板中的请求参数,在文档中都可以搜索出来,并且有详细的介绍和实时生成代码示例。
数据处理
本示例采用的是原生态json数据处理工具,因所需数据简单,未采用第三方解析json工具。解析简单的数据只需要记得{}中的是对象用jsonObject承接,[]是数据对象用JSONArray承接。示例代码如下:
json数据:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
| { "items": [ { "id": { "videoId": "Ijst2ZQdLiQ" }, "snippet": { "title": "Kartik Aaryan & Kiara Advani's Latest 2022 Blockbuster Hindi Full Movie | Tabu, Rajpal Yadav", "description": "Directed by: Anees Bazmee Written by: Aakash Kaushik Farhad Samji (dialogues) Starring: Tabu Kartik Aaryan Kiara Advani ...", "thumbnails": { "default": { "url": "https://i.ytimg.com/vi/Ijst2ZQdLiQ/default.jpg" } } } }, { "id": { "videoId": "s_DK4jJbWRc" }, "snippet": { "title": "Jangan M.A.5.U.K Rumahku 2022 Full Movie", "description": "Jangan Masuk Rumahku 2022 Full Movie Jangan Lupa Like View & Subscribe Untuk Lebih Banyak Movie Yang Menarik ...", "thumbnails": { "default": { "url": "https://i.ytimg.com/vi/s_DK4jJbWRc/default.jpg" } } } }, { "id": { "videoId": "a-t1px788N4" }, "snippet": { "title": "Jugjugg Jeeyo (2022) Hindi Full Movie in 4K UHD | Varun Dhawan, Anil Kapoor, Kiara Advani", "description": "Directed by: Raj Mehta Written by: Rishhabh Sharrma Starring: Neetu Kapoor Anil Kapoor Varun Dhawan Kiara Advani © RG ...", "thumbnails": { "default": { "url": "https://i.ytimg.com/vi/a-t1px788N4/default.jpg" } } } } ] }
|
解析代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| try { //解析第一层 JSONObject jsonObject = new JSONObject(res); JSONArray items = jsonObject.optJSONArray("items"); //解析第二层 for (int i = 0; i < items.length(); i++) { JSONObject item = items.optJSONObject(i); JSONObject id = item.optJSONObject("id"); String videoId = id.getString("videoId"); Log.d(TAG, "videoId: "+videoId); JSONObject snippet = item.getJSONObject("snippet"); String title = snippet.getString("title"); Log.d(TAG, "title: "+title); String description = snippet.getString("description"); Log.d(TAG, "description: "+description); JSONObject thumbnails = snippet.optJSONObject("thumbnails"); //JSONObject default1 = thumbnails.optJSONObject("default");//120x90 //JSONObject default1 = thumbnails.optJSONObject("medium");//320x180 //JSONObject default1 = thumbnails.optJSONObject("high");//480x360 JSONObject default1 = thumbnails.optJSONObject("medium"); String bgImageUrl = default1.getString("url"); Log.d(TAG, "url: "+bgImageUrl); String videoUrl = VIDEOURL+videoId; Movie movie = new Movie(title,description,bgImageUrl,bgImageUrl,videoUrl); }
return movies; } catch (JSONException e) { e.printStackTrace(); }
|
其中res是将json数据转换成String数据。
注意事项
不用的方法接口消耗的API配额不同,个人申请的配额每日只有10000个