mirror of
https://github.com/czp3009/bilibili-api.git
synced 2024-12-21 20:30:28 +08:00
完成搜索功能
This commit is contained in:
parent
c4953c020e
commit
692d6d1cad
17
README.md
17
README.md
@ -113,6 +113,21 @@ val myInfo = bilibiliClient.appAPI.myInfo().await()
|
||||
|
||||
返回用户 ID, vip 信息等.
|
||||
|
||||
## 搜索
|
||||
当我们想看某些内容时, 我们会首先使用搜索功能, 例如
|
||||
|
||||
```kotlin
|
||||
val searchResult = bilibiliClient.appAPI.search(keyword = "刀剑神域").await()
|
||||
```
|
||||
|
||||
实际上这对应客户端上的 搜索 -> 综合.
|
||||
|
||||
如果要搜索番剧则使用 `bilibiliClient.appAPI.searchBangumi`.
|
||||
|
||||
同理, 搜索直播, 用户, 影视, 专栏分别使用 `searchLive`, `searchUser`, `searchMovie`, `searchArticle`.
|
||||
|
||||
所有的搜索都使用 `pageNumber` 参数来控制翻页(从 1 开始).
|
||||
|
||||
## 获取视频播放地址
|
||||
获取视频实际播放地址的 API 比较特殊, 被单独分了出来, 示例如下
|
||||
|
||||
@ -243,8 +258,6 @@ val season = bilibiliClient.mainAPI.season(seasonId = 25617).await()
|
||||
|
||||
返回值中的 `result.episodes` 包含了当前所选择的季的全部集的 `aid` 与 `cid`.
|
||||
|
||||
搜索视频和番剧的功能绝赞咕咕咕中.
|
||||
|
||||
## 查看视频下面的评论
|
||||
看完了视频当然要看一下傻吊网友都在说些什么. 使用以下 API 获取一个视频的评论.
|
||||
|
||||
|
@ -1,5 +1,6 @@
|
||||
package com.hiczp.bilibili.api.app
|
||||
|
||||
import com.google.gson.JsonObject
|
||||
import com.hiczp.bilibili.api.app.model.*
|
||||
import com.hiczp.bilibili.api.retrofit.CommonResponse
|
||||
import kotlinx.coroutines.Deferred
|
||||
@ -223,4 +224,113 @@ interface AppAPI {
|
||||
@Query("pn") pageNumber: Int = 1,
|
||||
@Query("ps") pageSize: Int = 20
|
||||
): Deferred<FavoriteArticle>
|
||||
|
||||
/**
|
||||
* 搜索(综合)
|
||||
*
|
||||
* 上方搜索栏
|
||||
*
|
||||
* @param duration 不明确
|
||||
* @param keyword 搜索的关键字, 下同
|
||||
* @param from_source 来源, 如果是直接搜索的则为 app_search, 在历史记录里点击的则为 apphistory_search
|
||||
* @param pageNumber 分页, 从 1 开始
|
||||
*/
|
||||
@Suppress("SpellCheckingInspection")
|
||||
@GET("/x/v2/search")
|
||||
fun search(
|
||||
@Query("duration") duration: Int = 0,
|
||||
@Query("from_source") from_source: String = "app_search",
|
||||
@Query("highlight") highlight: Int = 1,
|
||||
@Query("keyword") keyword: String,
|
||||
@Query("pn") pageNumber: Int = 1,
|
||||
@Query("ps") pageSize: Int = 20,
|
||||
@Query("recommend") recommend: Int = 1
|
||||
): Deferred<SearchResult>
|
||||
|
||||
/**
|
||||
* 搜索直播间
|
||||
*
|
||||
* 上方搜索栏 -> 直播
|
||||
*
|
||||
* @param type 搜索的内容的类型, 每种搜索的 type 都是固定的, 下同
|
||||
*/
|
||||
@GET("/x/v2/search/live")
|
||||
fun searchLive(
|
||||
@Query("keyword") keyword: String,
|
||||
@Suppress("SpellCheckingInspection")
|
||||
@Query("order") order: String = "totalrank",
|
||||
@Query("pn") pageNumber: Int = 1,
|
||||
@Query("ps") pageSize: Int = 20,
|
||||
@Query("type") type: Int = 4
|
||||
): Deferred<SearchLiveResult>
|
||||
|
||||
/**
|
||||
* 根据某个类型来进行搜索(自定义)
|
||||
*/
|
||||
@GET("/x/v2/search/type")
|
||||
fun searchType(
|
||||
@Query("keyword") keyword: String,
|
||||
@Query("pn") pageNumber: Int = 1,
|
||||
@Query("ps") pageSize: Int = 20,
|
||||
@Query("type") type: Int,
|
||||
@QueryMap additionParam: Map<String, String>
|
||||
): Deferred<JsonObject>
|
||||
|
||||
/**
|
||||
* 搜索番剧
|
||||
*
|
||||
* 上方搜索栏 -> 番剧
|
||||
*/
|
||||
@GET("/x/v2/search/type")
|
||||
fun searchBangumi(
|
||||
@Query("keyword") keyword: String,
|
||||
@Query("pn") pageNumber: Int = 1,
|
||||
@Query("ps") pageSize: Int = 20,
|
||||
@Query("type") type: Int = 7
|
||||
): Deferred<SearchBangumiResult>
|
||||
|
||||
/**
|
||||
* 搜索用户
|
||||
*
|
||||
* 上方搜索栏 -> 用户
|
||||
*/
|
||||
@GET("/x/v2/search/type")
|
||||
fun searchUser(
|
||||
@Query("highlight") highlight: Int = 1,
|
||||
@Query("keyword") keyword: String,
|
||||
@Suppress("SpellCheckingInspection")
|
||||
@Query("order") order: String = "totalrank",
|
||||
@Query("pn") pageNumber: Int = 1,
|
||||
@Query("ps") pageSize: Int = 20,
|
||||
@Query("type") type: Int = 2,
|
||||
@Query("user_type") userType: Int = 0
|
||||
): Deferred<SearchUserResult>
|
||||
|
||||
/**
|
||||
* 搜索影视(包括动漫的剧场版和纪录片)
|
||||
*
|
||||
* 上方搜索栏 -> 影视
|
||||
*/
|
||||
@GET("/x/v2/search/type")
|
||||
fun searchMovie(
|
||||
@Query("keyword") keyword: String,
|
||||
@Query("pn") pageNumber: Int = 1,
|
||||
@Query("ps") pageSize: Int = 20,
|
||||
@Query("type") type: Int = 8
|
||||
): Deferred<SearchMovieResult>
|
||||
|
||||
/**
|
||||
* 搜索文章
|
||||
*
|
||||
* 上方搜索栏 -> 专栏
|
||||
*/
|
||||
@GET("/x/v2/search/type")
|
||||
fun searchArticle(
|
||||
@Query("category_id") categoryId: Int = 0,
|
||||
@Query("highlight") highlight: Int = 1,
|
||||
@Query("keyword") keyword: String,
|
||||
@Query("pn") pageNumber: Int = 1,
|
||||
@Query("ps") pageSize: Int = 20,
|
||||
@Query("type") type: Int = 6
|
||||
): Deferred<SearchArticleResult>
|
||||
}
|
||||
|
@ -0,0 +1,58 @@
|
||||
package com.hiczp.bilibili.api.app.model
|
||||
|
||||
import com.google.gson.annotations.SerializedName
|
||||
|
||||
data class SearchArticleResult(
|
||||
@SerializedName("code")
|
||||
var code: Int, // 0
|
||||
@SerializedName("data")
|
||||
var `data`: Data,
|
||||
@SerializedName("message")
|
||||
var message: String, // 0
|
||||
@SerializedName("ttl")
|
||||
var ttl: Int // 1
|
||||
) {
|
||||
data class Data(
|
||||
@SerializedName("items")
|
||||
var items: List<Item>,
|
||||
@SerializedName("pages")
|
||||
var pages: Int, // 50
|
||||
@SerializedName("total")
|
||||
var total: Int, // 0
|
||||
@SerializedName("trackid")
|
||||
var trackid: String // 2251647613743955310
|
||||
) {
|
||||
data class Item(
|
||||
@SerializedName("badge")
|
||||
var badge: String, // 专栏
|
||||
@SerializedName("desc")
|
||||
var desc: String, // 今天来和大家说下《刀剑神域3》第19集的先行图剧情,与其说是第19集,确切的讲应该是18.5集,根据先行图来看,这一集是前面的合集,主要讲的是桐人和尤吉欧的经历。在第18集结尾,桐人不小心说出了赛鲁卡的名字,导致爱丽丝记忆发生了错乱,隐约想起了自己的妹妹,而接下来就是桐人会和爱丽丝说关于她的事了,而所说的方式根据先行图来看事回忆杀方式。下面就简单和大家说下官方给出的先行图。先行图01:a姐植入记忆水晶桐人既然要告诉爱丽丝真相,也会给她说这一切的元凶就是最高祭师a姐,从上图先行图可以看出,这是a姐
|
||||
@SerializedName("goto")
|
||||
var goto: String, // article
|
||||
@SerializedName("id")
|
||||
var id: Long, // 2052980
|
||||
@SerializedName("image_urls")
|
||||
var imageUrls: List<String>,
|
||||
@SerializedName("like")
|
||||
var like: Int, // 116
|
||||
@SerializedName("mid")
|
||||
var mid: Int, // 12043763
|
||||
@SerializedName("name")
|
||||
var name: String, // 老白与动漫
|
||||
@SerializedName("param")
|
||||
var `param`: String, // 2052980
|
||||
@SerializedName("play")
|
||||
var play: Int, // 19101
|
||||
@SerializedName("reply")
|
||||
var reply: Int, // 82
|
||||
@SerializedName("template_id")
|
||||
var templateId: Int, // 3
|
||||
@SerializedName("title")
|
||||
var title: String, // <em class="keyword">刀剑神域</em>3第19集先行:桐人告诉爱丽丝真相,又是回忆杀剧情!
|
||||
@SerializedName("uri")
|
||||
var uri: String, // bilibili://article/2052980
|
||||
@SerializedName("view")
|
||||
var view: Int // 19101
|
||||
)
|
||||
}
|
||||
}
|
@ -0,0 +1,100 @@
|
||||
package com.hiczp.bilibili.api.app.model
|
||||
|
||||
import com.google.gson.annotations.SerializedName
|
||||
|
||||
data class SearchBangumiResult(
|
||||
@SerializedName("code")
|
||||
var code: Int, // 0
|
||||
@SerializedName("data")
|
||||
var `data`: Data,
|
||||
@SerializedName("message")
|
||||
var message: String, // 0
|
||||
@SerializedName("ttl")
|
||||
var ttl: Int // 1
|
||||
) {
|
||||
data class Data(
|
||||
@SerializedName("items")
|
||||
var items: List<Item>,
|
||||
@SerializedName("pages")
|
||||
var pages: Int, // 1
|
||||
@SerializedName("total")
|
||||
var total: Int, // 1
|
||||
@SerializedName("trackid")
|
||||
var trackid: String // 1357843021891149439
|
||||
) {
|
||||
data class Item(
|
||||
@SerializedName("area")
|
||||
var area: String, // 日本
|
||||
@SerializedName("badge")
|
||||
var badge: String, // 番剧
|
||||
@SerializedName("badges")
|
||||
var badges: List<Badge>,
|
||||
@SerializedName("cover")
|
||||
var cover: String, // https://i0.hdslb.com/bfs/bangumi/4d9f43eb3dba572797f8915f8f28efce9e58d756.jpg
|
||||
@SerializedName("cv")
|
||||
var cv: String, // 桐人(桐谷和人):松冈祯丞亚丝娜(结城明日奈):户松遥爱丽丝:茅野爱衣尤吉欧:岛崎信长赛鲁卡:前田佳织里罗妮耶·亚拉贝尔:近藤玲奈蒂洁·修特利尼:石原夏织神代凛子:小林沙苗菊冈诚二郎:森川智之莱欧斯·安提诺斯:岩濑周平温贝尔·吉泽克:木岛隆一索尔狄丽娜·塞路尔特:潘惠美沃罗·利凡玎:村田太志诗乃(朝田诗乃):泽城美雪 强尼·布莱克(金本敦):逢坂良太 西莉卡(绫野珪子):日高里菜 莉兹贝特(筱崎里香):高垣彩阳
|
||||
@SerializedName("episodes")
|
||||
var episodes: List<Episode>,
|
||||
@SerializedName("goto")
|
||||
var goto: String, // bangumi
|
||||
@SerializedName("is_atten")
|
||||
var isAtten: Int, // 1
|
||||
@SerializedName("is_selection")
|
||||
var isSelection: Int, // 1
|
||||
@SerializedName("label")
|
||||
var label: String, // 小说改/热血/奇幻/战斗/励志
|
||||
@SerializedName("media_type")
|
||||
var mediaType: Int, // 1
|
||||
@SerializedName("param")
|
||||
var `param`: String, // 130412
|
||||
@SerializedName("ptime")
|
||||
var ptime: Int, // 1538841600
|
||||
@SerializedName("rating")
|
||||
var rating: Double, // 9.2
|
||||
@SerializedName("season_id")
|
||||
var seasonId: Int, // 25510
|
||||
@SerializedName("season_type")
|
||||
var seasonType: Int, // 1
|
||||
@SerializedName("season_type_name")
|
||||
var seasonTypeName: String, // 番剧
|
||||
@SerializedName("staff")
|
||||
var staff: String, // 原作:川原砾原作插画 / 角色设计草案:abec导演:小野学助理导演:佐久间贵史角色设计:足立慎吾、铃木豪、西口智也总作画监督:铃木豪、西口智也动作作画监督:菅野芳弘、竹内哲也美术导演:小川友佳子、渡边佳人美术设定:森冈贤一、谷内优穗色彩设计:中野尚美CG导演:云藤隆太音响导演:岩浪美和效果:小山恭正音响制作:ソニルード音乐:梶浦由记制片:EGG FIRM、Straight Edge制作:A-1 Pictures
|
||||
@SerializedName("style")
|
||||
var style: String, // 小说改/热血/奇幻/战斗/励志
|
||||
@SerializedName("title")
|
||||
var title: String, // 刀剑神域 Alicization
|
||||
@SerializedName("uri")
|
||||
var uri: String, // https://www.bilibili.com/bangumi/play/ss25510/
|
||||
@SerializedName("vote")
|
||||
var vote: Int // 48497
|
||||
) {
|
||||
data class Badge(
|
||||
@SerializedName("bg_color")
|
||||
var bgColor: String, // #FB7299
|
||||
@SerializedName("bg_color_night")
|
||||
var bgColorNight: String, // #BB5B76
|
||||
@SerializedName("bg_style")
|
||||
var bgStyle: Int, // 1
|
||||
@SerializedName("border_color")
|
||||
var borderColor: String, // #FB7299
|
||||
@SerializedName("border_color_night")
|
||||
var borderColorNight: String, // #BB5B76
|
||||
@SerializedName("text")
|
||||
var text: String, // 会员抢先
|
||||
@SerializedName("text_color")
|
||||
var textColor: String, // #FFFFFF
|
||||
@SerializedName("text_color_night")
|
||||
var textColorNight: String // #E5E5E5
|
||||
)
|
||||
|
||||
data class Episode(
|
||||
@SerializedName("index")
|
||||
var index: String, // 21
|
||||
@SerializedName("param")
|
||||
var `param`: String, // 250557
|
||||
@SerializedName("uri")
|
||||
var uri: String // https://www.bilibili.com/bangumi/play/ep250557
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,82 @@
|
||||
package com.hiczp.bilibili.api.app.model
|
||||
|
||||
import com.google.gson.annotations.SerializedName
|
||||
|
||||
data class SearchLiveResult(
|
||||
@SerializedName("code")
|
||||
var code: Int, // 0
|
||||
@SerializedName("data")
|
||||
var `data`: Data,
|
||||
@SerializedName("message")
|
||||
var message: String, // 0
|
||||
@SerializedName("ttl")
|
||||
var ttl: Int // 1
|
||||
) {
|
||||
data class Data(
|
||||
@SerializedName("live_master")
|
||||
var liveMaster: LiveMaster,
|
||||
@SerializedName("live_room")
|
||||
var liveRoom: LiveRoom,
|
||||
@SerializedName("pages")
|
||||
var pages: Int, // 3
|
||||
@SerializedName("total")
|
||||
var total: Int, // 0
|
||||
@SerializedName("trackid")
|
||||
var trackid: String // 14587616663833842975
|
||||
) {
|
||||
data class LiveRoom(
|
||||
@SerializedName("items")
|
||||
var items: List<Item>,
|
||||
@SerializedName("pages")
|
||||
var pages: Int, // 3
|
||||
@SerializedName("total")
|
||||
var total: Int, // 57
|
||||
@SerializedName("trackid")
|
||||
var trackid: String
|
||||
) {
|
||||
data class Item(
|
||||
@SerializedName("area_v2_name")
|
||||
var areaV2Name: String, // 300英雄
|
||||
@SerializedName("attentions")
|
||||
var attentions: Int, // 2
|
||||
@SerializedName("badge")
|
||||
var badge: String, // 直播
|
||||
@SerializedName("cover")
|
||||
var cover: String, // https://i0.hdslb.com/bfs/live/16181996f2260024f861db58d0d3dea2dd390930.jpg
|
||||
@SerializedName("goto")
|
||||
var goto: String, // live
|
||||
@SerializedName("live_status")
|
||||
var liveStatus: Int, // 2
|
||||
@SerializedName("mid")
|
||||
var mid: Long, // 82542745
|
||||
@SerializedName("name")
|
||||
var name: String, // SAO刀剑神域丶
|
||||
@SerializedName("online")
|
||||
var online: Int, // 7
|
||||
@SerializedName("param")
|
||||
var `param`: String, // 3387258
|
||||
@SerializedName("region")
|
||||
var region: Int, // 4
|
||||
@SerializedName("roomid")
|
||||
var roomid: Long, // 3387258
|
||||
@SerializedName("tags")
|
||||
var tags: String, // 点点关注
|
||||
@SerializedName("title")
|
||||
var title: String, // SAO刀剑神域丶的直播间
|
||||
@SerializedName("type")
|
||||
var type: String, // live_room
|
||||
@SerializedName("uri")
|
||||
var uri: String // bilibili://live/3387258?broadcast_type=0
|
||||
)
|
||||
}
|
||||
|
||||
data class LiveMaster(
|
||||
@SerializedName("pages")
|
||||
var pages: Int, // 0
|
||||
@SerializedName("total")
|
||||
var total: Int, // 0
|
||||
@SerializedName("trackid")
|
||||
var trackid: String
|
||||
)
|
||||
}
|
||||
}
|
@ -0,0 +1,92 @@
|
||||
package com.hiczp.bilibili.api.app.model
|
||||
|
||||
import com.google.gson.annotations.SerializedName
|
||||
|
||||
data class SearchMovieResult(
|
||||
@SerializedName("code")
|
||||
var code: Int, // 0
|
||||
@SerializedName("data")
|
||||
var `data`: Data,
|
||||
@SerializedName("message")
|
||||
var message: String, // 0
|
||||
@SerializedName("ttl")
|
||||
var ttl: Int // 1
|
||||
) {
|
||||
data class Data(
|
||||
@SerializedName("items")
|
||||
var items: List<Item>,
|
||||
@SerializedName("pages")
|
||||
var pages: Int, // 1
|
||||
@SerializedName("total")
|
||||
var total: Int, // 2
|
||||
@SerializedName("trackid")
|
||||
var trackid: String // 11415000413319714311
|
||||
) {
|
||||
data class Item(
|
||||
@SerializedName("area")
|
||||
var area: String, // 日本
|
||||
@SerializedName("badge")
|
||||
var badge: String, // 电影
|
||||
/**
|
||||
* badge 的特殊样式
|
||||
*/
|
||||
@SerializedName("badges")
|
||||
var badges: List<Map<String, String>>,
|
||||
@SerializedName("cover")
|
||||
var cover: String, // https://i0.hdslb.com/bfs/bangumi/aef914fac9edfa518c4df9a82d5d3d0cba08a451.jpg
|
||||
/**
|
||||
* 类型为 纪录片 时没有 cv, 其他一些字段同理
|
||||
*/
|
||||
@SerializedName("cv")
|
||||
var cv: String?, // 曹旭鹏、阎萌萌、碧涓、惠霖、梦娇
|
||||
/**
|
||||
* 有些纪录片有分集, 有些没有
|
||||
*/
|
||||
@SerializedName("episodes")
|
||||
var episodes: List<Episode>?,
|
||||
@SerializedName("goto")
|
||||
var goto: String, // movie
|
||||
/**
|
||||
* 一些纪录片没有 label, 其他一些字段同理
|
||||
*/
|
||||
@SerializedName("label")
|
||||
var label: String?, // 演员:曹旭鹏、阎萌萌、碧涓、惠霖、梦娇
|
||||
/**
|
||||
* 2 为剧场版动画, 3 为纪录片
|
||||
*/
|
||||
@SerializedName("media_type")
|
||||
var mediaType: Int, // 2
|
||||
@SerializedName("param")
|
||||
var `param`: String, // 115472
|
||||
@SerializedName("ptime")
|
||||
var ptime: Long, // 1505404800
|
||||
@SerializedName("rating")
|
||||
var rating: Double, // 5.8
|
||||
@SerializedName("season_id")
|
||||
var seasonId: Int, // 12767
|
||||
@SerializedName("season_type")
|
||||
var seasonType: Int, // 2
|
||||
@SerializedName("season_type_name")
|
||||
var seasonTypeName: String, // 电影
|
||||
@SerializedName("staff")
|
||||
var staff: String?, // 导演:伊藤智彦编剧:川原砾
|
||||
@SerializedName("style")
|
||||
var style: String, // 科幻/动画
|
||||
@SerializedName("title")
|
||||
var title: String, // 刀剑神域:序列之争(中文)
|
||||
@SerializedName("uri")
|
||||
var uri: String, // https://www.bilibili.com/bangumi/play/ss12767/
|
||||
@SerializedName("vote")
|
||||
var vote: Int? // 581
|
||||
) {
|
||||
data class Episode(
|
||||
@SerializedName("index")
|
||||
var index: String, // 4
|
||||
@SerializedName("param")
|
||||
var `param`: String, // 250006
|
||||
@SerializedName("uri")
|
||||
var uri: String // https://www.bilibili.com/bangumi/play/ep250006
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
186
src/main/kotlin/com/hiczp/bilibili/api/app/model/SearchResult.kt
Normal file
186
src/main/kotlin/com/hiczp/bilibili/api/app/model/SearchResult.kt
Normal file
@ -0,0 +1,186 @@
|
||||
package com.hiczp.bilibili.api.app.model
|
||||
|
||||
import com.google.gson.JsonElement
|
||||
import com.google.gson.annotations.SerializedName
|
||||
|
||||
data class SearchResult(
|
||||
@SerializedName("code")
|
||||
var code: Int, // 0
|
||||
@SerializedName("data")
|
||||
var `data`: Data,
|
||||
@SerializedName("message")
|
||||
var message: String, // 0
|
||||
@SerializedName("ttl")
|
||||
var ttl: Int // 1
|
||||
) {
|
||||
data class Data(
|
||||
@SerializedName("array")
|
||||
var array: Int, // 1
|
||||
@SerializedName("attribute")
|
||||
var attribute: Int, // 1
|
||||
@SerializedName("item")
|
||||
var item: List<Item>,
|
||||
@SerializedName("items")
|
||||
var items: JsonElement,
|
||||
@SerializedName("nav")
|
||||
var nav: List<Nav>,
|
||||
@SerializedName("page")
|
||||
var page: Int, // 1
|
||||
@SerializedName("trackid")
|
||||
var trackid: String // 9256129479667154639
|
||||
) {
|
||||
data class Nav(
|
||||
@SerializedName("name")
|
||||
var name: String, // 专栏
|
||||
@SerializedName("pages")
|
||||
var pages: Int, // 50
|
||||
@SerializedName("total")
|
||||
var total: Int, // 1000
|
||||
@SerializedName("type")
|
||||
var type: Int // 6
|
||||
)
|
||||
|
||||
data class Item(
|
||||
@SerializedName("area")
|
||||
var area: String, // 日本
|
||||
@SerializedName("author")
|
||||
var author: String, // 那位滑稽
|
||||
@SerializedName("badge")
|
||||
var badge: String, // 专栏
|
||||
@SerializedName("badges")
|
||||
var badges: List<Badge>,
|
||||
@SerializedName("cover")
|
||||
var cover: String, // https://i0.hdslb.com/bfs/archive/a4a58b6772d0de16df6e9a7d3e208fd52a552710.jpg
|
||||
@SerializedName("cv")
|
||||
var cv: String, // 曹旭鹏、阎萌萌、碧涓、惠霖、梦娇
|
||||
@SerializedName("danmaku")
|
||||
var danmaku: Int, // 196
|
||||
@SerializedName("desc")
|
||||
var desc: String, // 刀剑神域第一季作品以 2022 年为舞台,大厂牌电子机械制造商“ARGUS”开发出-“NERvGear”-能连结虚拟世界的机器。完全的虚拟实境终于能够实现。主角桐人使用 NERvGear 游玩 VR MMORPG《Sword Art Online》的玩家,幸运地参与过封测并买下正式版的桐人,和正式营运就马上“完全潜行”享受着正式版的 SAO 世界。就在游戏四小时多后,桐人发现到“登出”指令竟然消失。认为只是系统暂时出错的桐人和开始陷入混乱的所有玩家们一起被传送到开始地点广场,并传来游戏设计者的死亡游戏
|
||||
@SerializedName("duration")
|
||||
var duration: String, // 591:52
|
||||
@SerializedName("episodes")
|
||||
var episodes: List<Episode>,
|
||||
@SerializedName("face")
|
||||
var face: String, // http://i0.hdslb.com/bfs/face/d34c34fca6471f07e60db3a7007cc5c2eb6bd785.jpg
|
||||
@SerializedName("goto")
|
||||
var goto: String, // recommend_word
|
||||
@SerializedName("id")
|
||||
var id: Int, // 2227576
|
||||
@SerializedName("image_urls")
|
||||
var imageUrls: List<String>,
|
||||
@SerializedName("is_atten")
|
||||
var isAtten: Int, // 1
|
||||
@SerializedName("is_selection")
|
||||
var isSelection: Int, // 1
|
||||
@SerializedName("label")
|
||||
var label: String, // 演员:曹旭鹏、阎萌萌、碧涓、惠霖、梦娇
|
||||
@SerializedName("like")
|
||||
var like: Int, // 13
|
||||
@SerializedName("linktype")
|
||||
var linktype: String, // query_rec
|
||||
@SerializedName("list")
|
||||
var list: List<X>,
|
||||
@SerializedName("media_type")
|
||||
var mediaType: Int, // 2
|
||||
@SerializedName("mid")
|
||||
var mid: Long, // 382820503
|
||||
@SerializedName("new_rec_tags")
|
||||
var newRecTags: List<NewRecTag>,
|
||||
@SerializedName("param")
|
||||
var `param`: String, // 33673993
|
||||
@SerializedName("play")
|
||||
var play: Int, // 324938
|
||||
@SerializedName("position")
|
||||
var position: Int, // 21
|
||||
@SerializedName("ptime")
|
||||
var ptime: Long, // 1505404800
|
||||
@SerializedName("rating")
|
||||
var rating: Double, // 5.8
|
||||
@SerializedName("rec_tags")
|
||||
var recTags: List<String>,
|
||||
@SerializedName("reply")
|
||||
var reply: Int, // 4
|
||||
@SerializedName("season_id")
|
||||
var seasonId: Int, // 12767
|
||||
@SerializedName("season_type")
|
||||
var seasonType: Int, // 2
|
||||
@SerializedName("season_type_name")
|
||||
var seasonTypeName: String, // 电影
|
||||
@SerializedName("staff")
|
||||
var staff: String, // 导演:伊藤智彦编剧:川原砾
|
||||
@SerializedName("style")
|
||||
var style: String, // 科幻/动画
|
||||
@SerializedName("template_id")
|
||||
var templateId: Int, // 4
|
||||
@SerializedName("title")
|
||||
var title: String, // 相关推荐
|
||||
@SerializedName("trackid")
|
||||
var trackid: String, // 9256129479667154639
|
||||
@SerializedName("uri")
|
||||
var uri: String, // bilibili://video/33673993?player_width=352&player_height=288&player_rotate=0
|
||||
@SerializedName("view")
|
||||
var view: Int, // 2310
|
||||
@SerializedName("vote")
|
||||
var vote: Int // 581
|
||||
) {
|
||||
data class NewRecTag(
|
||||
@SerializedName("bg_color")
|
||||
var bgColor: String, // #FAAB4B
|
||||
@SerializedName("bg_color_night")
|
||||
var bgColorNight: String, // #BA833F
|
||||
@SerializedName("bg_style")
|
||||
var bgStyle: Int, // 1
|
||||
@SerializedName("border_color")
|
||||
var borderColor: String, // #FAAB4B
|
||||
@SerializedName("border_color_night")
|
||||
var borderColorNight: String, // #BA833F
|
||||
@SerializedName("text")
|
||||
var text: String, // MINECRAFT
|
||||
@SerializedName("text_color")
|
||||
var textColor: String, // #FFFFFFFF
|
||||
@SerializedName("text_color_night")
|
||||
var textColorNight: String // #E5E5E5
|
||||
)
|
||||
|
||||
data class Badge(
|
||||
@SerializedName("bg_color")
|
||||
var bgColor: String, // #FB7299
|
||||
@SerializedName("bg_color_night")
|
||||
var bgColorNight: String, // #BB5B76
|
||||
@SerializedName("bg_style")
|
||||
var bgStyle: Int, // 1
|
||||
@SerializedName("border_color")
|
||||
var borderColor: String, // #FB7299
|
||||
@SerializedName("border_color_night")
|
||||
var borderColorNight: String, // #BB5B76
|
||||
@SerializedName("text")
|
||||
var text: String, // 会员抢先
|
||||
@SerializedName("text_color")
|
||||
var textColor: String, // #FFFFFF
|
||||
@SerializedName("text_color_night")
|
||||
var textColorNight: String // #E5E5E5
|
||||
)
|
||||
|
||||
data class X(
|
||||
@SerializedName("from_source")
|
||||
var fromSource: String, // query_rec_search
|
||||
@SerializedName("param")
|
||||
var `param`: String, // 7852399559249609627
|
||||
@SerializedName("title")
|
||||
var title: String, // FATE 刀剑神域
|
||||
@SerializedName("type")
|
||||
var type: String // query_rec
|
||||
)
|
||||
|
||||
data class Episode(
|
||||
@SerializedName("index")
|
||||
var index: String, // 21
|
||||
@SerializedName("param")
|
||||
var `param`: String, // 250557
|
||||
@SerializedName("uri")
|
||||
var uri: String // https://www.bilibili.com/bangumi/play/ep250557
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,86 @@
|
||||
package com.hiczp.bilibili.api.app.model
|
||||
|
||||
import com.google.gson.annotations.SerializedName
|
||||
|
||||
data class SearchUserResult(
|
||||
@SerializedName("code")
|
||||
var code: Int, // 0
|
||||
@SerializedName("data")
|
||||
var `data`: Data,
|
||||
@SerializedName("message")
|
||||
var message: String, // 0
|
||||
@SerializedName("ttl")
|
||||
var ttl: Int // 1
|
||||
) {
|
||||
data class Data(
|
||||
@SerializedName("items")
|
||||
var items: List<Item>,
|
||||
@SerializedName("pages")
|
||||
var pages: Int, // 2
|
||||
@SerializedName("total")
|
||||
var total: Int, // 0
|
||||
@SerializedName("trackid")
|
||||
var trackid: String // 15623048138266462990
|
||||
) {
|
||||
data class Item(
|
||||
@SerializedName("archives")
|
||||
var archives: Int, // 1
|
||||
@SerializedName("av_items")
|
||||
var avItems: List<AvItem>,
|
||||
@SerializedName("cover")
|
||||
var cover: String, // https://i0.hdslb.com/bfs/face/c3200c52ae76004fbbab44010990431d0604aee5.jpg
|
||||
@SerializedName("fans")
|
||||
var fans: Int, // 3
|
||||
@SerializedName("goto")
|
||||
var goto: String, // author
|
||||
@SerializedName("is_up")
|
||||
var isUp: Boolean, // true
|
||||
@SerializedName("level")
|
||||
var level: Int, // 3
|
||||
@SerializedName("live_status")
|
||||
var liveStatus: Int, // 1
|
||||
@SerializedName("live_uri")
|
||||
var liveUri: String, // bilibili://live/3234638?broadcast_type=0
|
||||
@SerializedName("mid")
|
||||
var mid: Long, // 32557668
|
||||
@SerializedName("official_verify")
|
||||
var officialVerify: OfficialVerify,
|
||||
@SerializedName("param")
|
||||
var `param`: String, // 32557668
|
||||
@SerializedName("roomid")
|
||||
var roomid: Long, // 3234638
|
||||
@SerializedName("sign")
|
||||
var sign: String, // 担心额刚好阿西
|
||||
@SerializedName("title")
|
||||
var title: String, // 刀剑神域小漠
|
||||
@SerializedName("uri")
|
||||
var uri: String // bilibili://author/32557668
|
||||
) {
|
||||
data class OfficialVerify(
|
||||
@SerializedName("type")
|
||||
var type: Int // 127
|
||||
)
|
||||
|
||||
data class AvItem(
|
||||
@SerializedName("cover")
|
||||
var cover: String, // https://i0.hdslb.com/bfs/archive/95be7c1a940dda2bbf4c33213df94eb650e44d10.jpg
|
||||
@SerializedName("ctime")
|
||||
var ctime: Int, // 1535755416
|
||||
@SerializedName("danmaku")
|
||||
var danmaku: Int, // 1
|
||||
@SerializedName("duration")
|
||||
var duration: String, // 3:1
|
||||
@SerializedName("goto")
|
||||
var goto: String, // av
|
||||
@SerializedName("param")
|
||||
var `param`: String, // 30843572
|
||||
@SerializedName("play")
|
||||
var play: Int, // 15
|
||||
@SerializedName("title")
|
||||
var title: String, // 官方认证:非洲正品大酋长
|
||||
@SerializedName("uri")
|
||||
var uri: String // bilibili://video/30843572?player_width=1920&player_height=1080&player_rotate=0
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
41
src/test/kotlin/com/hiczp/bilibili/api/test/SearchTest.kt
Normal file
41
src/test/kotlin/com/hiczp/bilibili/api/test/SearchTest.kt
Normal file
@ -0,0 +1,41 @@
|
||||
package com.hiczp.bilibili.api.test
|
||||
|
||||
import kotlinx.coroutines.runBlocking
|
||||
import org.junit.jupiter.api.Test
|
||||
|
||||
class SearchTest {
|
||||
@Test
|
||||
fun search() {
|
||||
runBlocking {
|
||||
bilibiliClient.appAPI.search(keyword = "鹿乃").await()
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
fun searchBangumi() {
|
||||
runBlocking {
|
||||
bilibiliClient.appAPI.searchBangumi(keyword = "凉宫春日").await()
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
fun searchUser() {
|
||||
runBlocking {
|
||||
bilibiliClient.appAPI.searchUser(keyword = "czp").await()
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
fun searchMovie() {
|
||||
runBlocking {
|
||||
bilibiliClient.appAPI.searchMovie(keyword = "透视人体").await()
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
fun searchArticle() {
|
||||
runBlocking {
|
||||
bilibiliClient.appAPI.searchArticle(keyword = "欧陆风云").await()
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user