From ac182bd791256ffdb3bbdfaf9f9a1066d3cd722f Mon Sep 17 00:00:00 2001 From: czp3009 Date: Thu, 28 Feb 2019 11:03:46 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../kotlin/com/hiczp/bilibili/api/StreamExtension.kt | 7 ++++--- .../kotlin/com/hiczp/bilibili/api/danmaku/Danmaku.kt | 3 +++ .../com/hiczp/bilibili/api/main/model/ChatList.kt | 6 +++--- .../com/hiczp/bilibili/api/main/model/ChildReply.kt | 4 ++-- .../com/hiczp/bilibili/api/main/model/Reply.kt | 12 ++++++------ .../com/hiczp/bilibili/api/test/DanmakuTest.kt | 7 +++---- 6 files changed, 21 insertions(+), 18 deletions(-) diff --git a/src/main/kotlin/com/hiczp/bilibili/api/StreamExtension.kt b/src/main/kotlin/com/hiczp/bilibili/api/StreamExtension.kt index 8da8033..196ea7b 100644 --- a/src/main/kotlin/com/hiczp/bilibili/api/StreamExtension.kt +++ b/src/main/kotlin/com/hiczp/bilibili/api/StreamExtension.kt @@ -1,17 +1,18 @@ package com.hiczp.bilibili.api +import org.apache.commons.io.IOUtils import org.apache.commons.io.input.BoundedInputStream import org.apache.commons.io.input.BoundedReader import java.io.InputStream import java.nio.charset.Charset +fun InputStream.readFully(length: Int) = IOUtils.readFully(this, length)!! + /** * 以大端模式从流中读取一个 int */ fun InputStream.readInt(): Int { - val byteArray = ByteArray(4).apply { - read(this) - } + val byteArray = readFully(4) return (byteArray[0].toInt() shl 24) or (byteArray[1].toInt() shl 16) or (byteArray[2].toInt() shl 8) or diff --git a/src/main/kotlin/com/hiczp/bilibili/api/danmaku/Danmaku.kt b/src/main/kotlin/com/hiczp/bilibili/api/danmaku/Danmaku.kt index b75655c..f974cc6 100644 --- a/src/main/kotlin/com/hiczp/bilibili/api/danmaku/Danmaku.kt +++ b/src/main/kotlin/com/hiczp/bilibili/api/danmaku/Danmaku.kt @@ -49,6 +49,9 @@ data class Danmaku( /** * 弹幕的内容 + * 注意, 不一定是一个自然语言字符串, 可能是以 [ 开头的具有语义的文本, 如下所示 + * [0,0,"1-1",4.5,"天下第一电击公主,贯穿天地的惊艳落雷!我炮傲娇永世长存!",0,0,0,0.99,500,0,1,"SimHei",true] + * 这可能表示某种特殊的输出格式 */ val content: String ) diff --git a/src/main/kotlin/com/hiczp/bilibili/api/main/model/ChatList.kt b/src/main/kotlin/com/hiczp/bilibili/api/main/model/ChatList.kt index 28ee362..7d9a503 100644 --- a/src/main/kotlin/com/hiczp/bilibili/api/main/model/ChatList.kt +++ b/src/main/kotlin/com/hiczp/bilibili/api/main/model/ChatList.kt @@ -37,7 +37,7 @@ data class ChatList( @SerializedName("ctime") var ctime: Int, // 1541824116 @SerializedName("dialog") - var dialog: Int, // 1136351035 + var dialog: Long, // 1136351035 @SerializedName("dialog_str") var dialogStr: String, @SerializedName("fansgrade") @@ -63,11 +63,11 @@ data class ChatList( @SerializedName("replies") var replies: JsonElement?, // null @SerializedName("root") - var root: Int, // 1136310360 + var root: Long, // 1136310360 @SerializedName("root_str") var rootStr: String, // 1136310360 @SerializedName("rpid") - var rpid: Int, // 1175989845 + var rpid: Long, // 1175989845 @SerializedName("rpid_str") var rpidStr: String, // 1175989845 @SerializedName("state") diff --git a/src/main/kotlin/com/hiczp/bilibili/api/main/model/ChildReply.kt b/src/main/kotlin/com/hiczp/bilibili/api/main/model/ChildReply.kt index 286bd63..5a7ea3b 100644 --- a/src/main/kotlin/com/hiczp/bilibili/api/main/model/ChildReply.kt +++ b/src/main/kotlin/com/hiczp/bilibili/api/main/model/ChildReply.kt @@ -70,7 +70,7 @@ data class ChildReply( @SerializedName("ctime") var ctime: Int, // 1550681500 @SerializedName("dialog") - var dialog: Int, // 0 + var dialog: Long, // 0 @SerializedName("dialog_str") var dialogStr: String, @SerializedName("fansgrade") @@ -133,7 +133,7 @@ data class ChildReply( @SerializedName("ctime") var ctime: Int, // 1550682402 @SerializedName("dialog") - var dialog: Int, // 1405625526 + var dialog: Long, // 1405625526 @SerializedName("dialog_str") var dialogStr: String, @SerializedName("fansgrade") diff --git a/src/main/kotlin/com/hiczp/bilibili/api/main/model/Reply.kt b/src/main/kotlin/com/hiczp/bilibili/api/main/model/Reply.kt index 67cd5a8..c186275 100644 --- a/src/main/kotlin/com/hiczp/bilibili/api/main/model/Reply.kt +++ b/src/main/kotlin/com/hiczp/bilibili/api/main/model/Reply.kt @@ -63,7 +63,7 @@ data class Reply( @SerializedName("ctime") var ctime: Int, // 1550677636 @SerializedName("dialog") - var dialog: Int, // 0 + var dialog: Long, // 0 @SerializedName("dialog_str") var dialogStr: String, @SerializedName("fansgrade") @@ -150,7 +150,7 @@ data class Reply( @SerializedName("ctime") var ctime: Int, // 1550677973 @SerializedName("dialog") - var dialog: Int, // 1405471211 + var dialog: Long, // 1405471211 @SerializedName("dialog_str") var dialogStr: String, @SerializedName("fansgrade") @@ -456,7 +456,7 @@ data class Reply( @SerializedName("ctime") var ctime: Int, // 1550507590 @SerializedName("dialog") - var dialog: Int, // 0 + var dialog: Long, // 0 @SerializedName("dialog_str") var dialogStr: String, @SerializedName("fansgrade") @@ -646,7 +646,7 @@ data class Reply( @SerializedName("ctime") var ctime: Int, // 1550670930 @SerializedName("dialog") - var dialog: Int, // 1405107877 + var dialog: Long, // 1405107877 @SerializedName("dialog_str") var dialogStr: String, @SerializedName("fansgrade") @@ -827,7 +827,7 @@ data class Reply( @SerializedName("ctime") var ctime: Int, // 1550553976 @SerializedName("dialog") - var dialog: Int, // 0 + var dialog: Long, // 0 @SerializedName("dialog_str") var dialogStr: String, @SerializedName("fansgrade") @@ -890,7 +890,7 @@ data class Reply( @SerializedName("ctime") var ctime: Int, // 1550572214 @SerializedName("dialog") - var dialog: Int, // 1401606362 + var dialog: Long, // 1401606362 @SerializedName("dialog_str") var dialogStr: String, @SerializedName("fansgrade") diff --git a/src/test/kotlin/com/hiczp/bilibili/api/test/DanmakuTest.kt b/src/test/kotlin/com/hiczp/bilibili/api/test/DanmakuTest.kt index 890682b..f2ea9d9 100644 --- a/src/test/kotlin/com/hiczp/bilibili/api/test/DanmakuTest.kt +++ b/src/test/kotlin/com/hiczp/bilibili/api/test/DanmakuTest.kt @@ -9,12 +9,11 @@ class DanmakuTest { @Test fun fetchAndParseDanmaku() { runBlocking { - //著名的炮姐视频 你指尖跃动的闪光是我此生不变的信仰 + //著名的炮姐视频 你指尖跃动的电光是我此生不变的信仰 bilibiliClient.danmakuAPI.list(aid = 810872, oid = 1176840).await().let { DanmakuParser.parser(it.byteStream()) - }.let { (map, list) -> - println(map) - println(list) + }.second.forEach { + println("[${it.time}] ${it.content}") } } }