feat: 新版贴子 API

This commit is contained in:
HuanCheng65 2023-03-11 00:04:32 +08:00
parent b9daed6d59
commit c82ed238fe
No known key found for this signature in database
GPG Key ID: E9031EF91A805148
6 changed files with 148 additions and 50 deletions

View File

@ -63,33 +63,54 @@ fun buildAppPosInfo(): AppPosInfo {
fun buildCommonRequest(
context: Context = App.INSTANCE,
clientVersion: ClientVersion = ClientVersion.TIEBA_V11
): CommonRequest = buildCommonRequest(context, clientVersion.version)
): CommonRequest = when (clientVersion) {
ClientVersion.TIEBA_V11 ->
CommonRequest(
BDUSS = AccountUtil.getBduss(),
_client_id = ClientUtils.clientId ?: RetrofitTiebaApi.randomClientId,
_client_type = 2,
_client_version = clientVersion.version,
_os_version = "${Build.VERSION.SDK_INT}",
_phone_imei = MobileInfoUtil.getIMEI(context),
_timestamp = System.currentTimeMillis(),
brand = Build.BRAND,
c3_aid = UIDUtil.getAid(),
cuid = CuidUtils.getNewCuid(),
cuid_galaxy2 = CuidUtils.getNewCuid(),
cuid_gid = "",
from = "1024324o",
is_teenager = 0,
lego_lib_version = "3.0.0",
model = Build.MODEL,
net_type = "1",
oaid = OAID().toJson(),
pversion = "1.0.3",
sample_id = ClientUtils.sampleId,
stoken = AccountUtil.getSToken(),
)
fun buildCommonRequest(
context: Context = App.INSTANCE,
clientVersion: String,
): CommonRequest {
return CommonRequest(
BDUSS = AccountUtil.getBduss(),
_client_id = ClientUtils.clientId ?: RetrofitTiebaApi.randomClientId,
_client_type = 2,
_client_version = clientVersion,
_os_version = "${Build.VERSION.SDK_INT}",
_phone_imei = MobileInfoUtil.getIMEI(context),
_timestamp = System.currentTimeMillis(),
brand = Build.BRAND,
c3_aid = UIDUtil.getAid(),
cuid = CuidUtils.getNewCuid(),
cuid_galaxy2 = CuidUtils.getNewCuid(),
cuid_gid = "",
from = "1024324o",
is_teenager = 0,
lego_lib_version = "3.0.0",
model = Build.MODEL,
net_type = "1",
oaid = OAID().toJson(),
pversion = "1.0.3",
sample_id = ClientUtils.sampleId,
stoken = AccountUtil.getSToken(),
)
ClientVersion.TIEBA_V12 ->
CommonRequest(
BDUSS = AccountUtil.getBduss(),
_client_id = ClientUtils.clientId ?: RetrofitTiebaApi.randomClientId,
_client_type = 2,
_client_version = clientVersion.version,
_os_version = "${Build.VERSION.SDK_INT}",
_phone_imei = MobileInfoUtil.getIMEI(context),
_timestamp = System.currentTimeMillis(),
brand = Build.BRAND,
c3_aid = UIDUtil.getAid(),
cuid = CuidUtils.getNewCuid(),
cuid_galaxy2 = CuidUtils.getNewCuid(),
cuid_gid = "",
from = "1024324o",
is_teenager = 0,
lego_lib_version = "3.0.0",
model = Build.MODEL,
net_type = "1",
oaid = UIDUtil.getOAID(),
pversion = "1.0.3",
sample_id = ClientUtils.sampleId,
stoken = AccountUtil.getSToken(),
)
}

View File

@ -7,6 +7,7 @@ import com.huanchengfly.tieba.post.api.models.*
import com.huanchengfly.tieba.post.api.models.protos.forumRecommend.ForumRecommendResponse
import com.huanchengfly.tieba.post.api.models.protos.frsPage.FrsPageResponse
import com.huanchengfly.tieba.post.api.models.protos.hotThreadList.HotThreadListResponse
import com.huanchengfly.tieba.post.api.models.protos.pbPage.PbPageResponse
import com.huanchengfly.tieba.post.api.models.protos.personalized.PersonalizedResponse
import com.huanchengfly.tieba.post.api.models.protos.profile.ProfileResponse
import com.huanchengfly.tieba.post.api.models.protos.threadList.ThreadListResponse
@ -1225,4 +1226,16 @@ interface ITiebaApi {
fun userProfileFlow(
uid: Long
): Flow<ProfileResponse>
/**
* 贴子页Flow
*
* @param threadId 贴子 ID
*/
fun pbPageFlow(
threadId: Long,
page: Int,
sortType: Int = 0,
forumId: Long? = null,
): Flow<PbPageResponse>
}

View File

@ -1005,4 +1005,62 @@ object MixedTiebaApiImpl : ITiebaApi {
)
)
}
override fun pbPageFlow(
threadId: Long,
page: Int,
sortType: Int,
forumId: Long?
): Flow<PbPageResponse> {
return RetrofitTiebaApi.OFFICIAL_PROTOBUF_TIEBA_V12_API.pbPageFlow(
buildProtobufRequestBody(
PbPageRequest(
PbPageRequestData(
common = buildCommonRequest(clientVersion = ClientVersion.TIEBA_V12),
kz = threadId,
ad_param = com.huanchengfly.tieba.post.api.models.protos.pbPage.AdParam(
load_count = 0,
refresh_count = 1,
is_req_ad = 1
),
app_pos = buildAppPosInfo(),
back = 0,
banner = 1,
broadcast_id = 0,
floor_rn = 4,
floor_sort_type = 1,
forum_id = forumId ?: 0,
from_push = 0,
from_smart_frs = 0,
immersion_video_comment_source = 0,
is_comm_reverse = 0,
is_fold_comment_req = 0,
is_jumpfloor = 0,
jumpfloor_num = 0,
need_repost_recommend_forum = 0,
obj_locate = "",
obj_param1 = "2",
obj_source = "",
ori_ugc_type = 0,
pb_rn = 0,
pid = 0,
pn = page,
q_type = 1,
r = sortType,
rn = 15,
s_model = 0,
scr_dip = App.ScreenInfo.DENSITY.toDouble(),
scr_h = getScreenHeight(),
scr_w = getScreenWidth(),
source_type = 2,
st_type = "personalize_page",
thread_type = 0,
weipost = 0,
with_floor = 1
)
),
clientVersion = ClientVersion.TIEBA_V12
)
)
}
}

View File

@ -3,6 +3,7 @@ package com.huanchengfly.tieba.post.api.retrofit.interfaces
import com.huanchengfly.tieba.post.api.models.protos.forumRecommend.ForumRecommendResponse
import com.huanchengfly.tieba.post.api.models.protos.frsPage.FrsPageResponse
import com.huanchengfly.tieba.post.api.models.protos.hotThreadList.HotThreadListResponse
import com.huanchengfly.tieba.post.api.models.protos.pbPage.PbPageResponse
import com.huanchengfly.tieba.post.api.models.protos.personalized.PersonalizedResponse
import com.huanchengfly.tieba.post.api.models.protos.profile.ProfileResponse
import com.huanchengfly.tieba.post.api.models.protos.threadList.ThreadListResponse
@ -53,4 +54,9 @@ interface OfficialProtobufTiebaApi {
fun profileFlow(
@Body body: MyMultipartBody,
): Flow<ProfileResponse>
@POST("/c/f/pb/page?cmd=302001&format=protobuf")
fun pbPageFlow(
@Body body: MyMultipartBody,
): Flow<PbPageResponse>
}

View File

@ -5,7 +5,7 @@ package tieba.pbPage;
option java_package = "com.huanchengfly.tieba.post.api.models.protos.pbPage";
message AdParam {
int32 load_count = 1;
optional int32 load_count = 1;
int32 refresh_count = 2;
string yoga_lib_version = 3;
int32 is_req_ad = 4;

View File

@ -10,18 +10,18 @@ import "CommonRequest.proto";
import "PbPage/AdParam.proto";
message PbPageRequestData {
int32 pb_rn = 1;
optional int32 pb_rn = 1;
int32 mark = 2;
int32 back = 3;
optional int32 back = 3;
int64 kz = 4;
int32 lz = 5;
int32 r = 6;
int64 pid = 7;
optional int32 r = 6;
optional int64 pid = 7;
int32 with_floor = 8;
int32 floor_rn = 9;
int32 weipost = 10;
optional int32 weipost = 10;
int32 message_id = 11;
int32 s_model = 12;
optional int32 s_model = 12;
int32 rn = 13;
int32 scr_w = 14;
int32 scr_h = 15;
@ -29,7 +29,7 @@ message PbPageRequestData {
int32 q_type = 17;
int32 pn = 18;
string st_type = 19;
int32 thread_type = 20;
optional int32 thread_type = 20;
int32 banner = 21;
int32 arround = 22;
int32 last = 23;
@ -42,9 +42,9 @@ message PbPageRequestData {
int64 st_task = 30;
int32 issdk = 31;
string query_word = 32;
int32 is_comm_reverse = 33;
int32 is_jumpfloor = 34;
int32 jumpfloor_num = 35;
optional int32 is_comm_reverse = 33;
optional int32 is_jumpfloor = 34;
optional int32 jumpfloor_num = 35;
string da_idfa = 42;
string platform = 43;
uint64 jid = 44;
@ -52,31 +52,31 @@ message PbPageRequestData {
string jfrom = 46;
string yuelaou_locate = 47;
string yuelaou_params = 48;
string obj_source = 50;
string obj_locate = 51;
string obj_param1 = 52;
optional string obj_source = 50;
optional string obj_locate = 51;
optional string obj_param1 = 52;
AppPosInfo app_pos = 53;
uint32 from_smart_frs = 54;
optional uint32 from_smart_frs = 54;
string feed_nid = 55;
int64 forum_id = 56;
int32 need_repost_recommend_forum = 57;
optional int64 forum_id = 56;
optional int32 need_repost_recommend_forum = 57;
AdParam ad_param = 58;
int32 need_log = 59;
string call_url = 60;
string shoubai_cuid = 61;
string ori_ugc_nid = 62;
string ori_ugc_tid = 63;
int32 ori_ugc_type = 65;
optional int32 ori_ugc_type = 65;
string ori_ugc_vid = 66;
string ad_context_list = 68;
string up_schema = 69;
int32 from_push = 71;
optional int32 from_push = 71;
string ad_ext_params = 72;
int64 broadcast_id = 73;
optional int64 broadcast_id = 73;
int32 floor_sort_type = 74;
int32 source_type = 75;
int32 immersion_video_comment_source = 76;
optional int32 immersion_video_comment_source = 76;
AppTransmitData app_transmit_data = 77;
int32 is_fold_comment_req = 78;
optional int32 is_fold_comment_req = 78;
int32 is_edit_comment_req = 79;
}