as: Add APIs required for playing MV

Signed-off-by: Yuan Si <do4suki@gmail.com>
This commit is contained in:
2023-05-23 00:54:04 +08:00
parent c16f0c1ef0
commit 6ae26a512a
8 changed files with 811 additions and 3 deletions
+175
View File
@@ -0,0 +1,175 @@
{
"weekday_state": {
"weekday": 1,
"next_weekday_at": 1684771200
},
"live_daily_list": [
{
"live_daily_master_id": 1,
"live_master_id": 10070,
"end_at": 1684771200,
"remaining_play_count": 5,
"remaining_recovery_count": 9
},
{
"live_daily_master_id": 2,
"live_master_id": 11066,
"end_at": 1684771200,
"remaining_play_count": 5,
"remaining_recovery_count": 9
},
{
"live_daily_master_id": 38,
"live_master_id": 12092,
"end_at": 1684771200,
"remaining_play_count": 5,
"remaining_recovery_count": 9
}
],
"live_campaign_list": [],
"live_daily_campaign_list": [],
"live_campaign_lp_list": [],
"live_campaign_change_drop_list": [],
"live_campaign_notice": null,
"live_event_common_info": null,
"banner_info": {
"banners": []
},
"pickup_info": {
"active_event": null,
"live_campaign_info": {
"live_campaign_end_at": null,
"live_daily_campaign_end_at": null,
"live_extra_campaign_end_at": null,
"live_challenge_campaign_end_at": null
},
"is_lesson_campaign": false,
"appeal_gachas": [
{
"v": "_u3"
}
],
"is_shop_sale": true,
"is_sns_coin_sale": true
},
"user_model_diff": {
"user_status": {
"name": {
"dot_under_text": "梦路2号机@果果厨"
},
"nickname": {
"dot_under_text": "梦路"
},
"last_login_at": 1684754024,
"rank": 122,
"exp": 416263,
"message": {
"dot_under_text": "B站主播:梦路_YumeMichi"
},
"recommend_card_master_id": 200013001,
"max_friend_num": 0,
"live_point_full_at": 1684158189,
"live_point_broken": 150,
"live_point_subscription_recovery_daily_count": 1,
"live_point_subscription_recovery_daily_reset_at": 1656259200,
"activity_point_count": 0,
"activity_point_reset_at": 1684123200,
"activity_point_payment_recovery_daily_count": 10,
"activity_point_payment_recovery_daily_reset_at": 1683734400,
"game_money": 115665089,
"card_exp": 32316167,
"free_sns_coin": 280,
"apple_sns_coin": 0,
"google_sns_coin": 0,
"cash": 0,
"subscription_coin": 30,
"birth_date": null,
"birth_month": 10,
"birth_day": 18,
"latest_live_deck_id": 1,
"main_lesson_deck_id": 1,
"favorite_member_id": 1,
"last_live_difficulty_id": 12092302,
"lp_magnification": 1,
"emblem_id": 13100608,
"device_token": "",
"tutorial_phase": 99,
"tutorial_end_at": 1622217482,
"login_days": 446,
"navi_tap_count": 1,
"navi_tap_recover_at": 1683043200,
"is_auto_mode": false,
"max_score_live_difficulty_master_id": 12037401,
"live_max_score": 40553270,
"max_combo_live_difficulty_master_id": 12037401,
"live_max_combo": 301,
"lesson_resume_status": 1,
"accessory_box_additional": 90,
"terms_of_use_version": 0,
"bootstrap_sifid_check_at": 1683178908,
"gdpr_version": 0,
"member_guild_member_master_id": 1,
"member_guild_last_updated_at": 1659485328
},
"user_member_by_member_id": [],
"user_card_by_card_id": [],
"user_suit_by_suit_id": [],
"user_live_deck_by_id": [],
"user_live_party_by_id": [],
"user_lesson_deck_by_id": [],
"user_live_mv_deck_by_id": [],
"user_live_mv_deck_custom_by_id": [],
"user_live_difficulty_by_difficulty_id": [],
"user_story_main_by_story_main_id": [],
"user_story_main_selected_by_story_main_cell_id": [],
"user_voice_by_voice_id": [],
"user_emblem_by_emblem_id": [],
"user_gacha_ticket_by_ticket_id": [],
"user_gacha_point_by_point_id": [],
"user_lesson_enhancing_item_by_item_id": [],
"user_training_material_by_item_id": [],
"user_grade_up_item_by_item_id": [],
"user_custom_background_by_id": [],
"user_story_side_by_id": [],
"user_story_member_by_id": [],
"user_communication_member_detail_badge_by_id": [],
"user_story_event_history_by_id": [],
"user_recovery_lp_by_id": [],
"user_recovery_ap_by_id": [],
"user_mission_by_mission_id": [],
"user_daily_mission_by_mission_id": [],
"user_weekly_mission_by_mission_id": [],
"user_info_trigger_basic_by_trigger_id": [],
"user_info_trigger_card_grade_up_by_trigger_id": [],
"user_info_trigger_member_guild_support_item_expired_by_trigger_id": [],
"user_info_trigger_member_love_level_up_by_trigger_id": [],
"user_accessory_by_user_accessory_id": [],
"user_accessory_level_up_item_by_id": [],
"user_accessory_rarity_up_item_by_id": [],
"user_unlock_scenes_by_enum": [],
"user_scene_tips_by_enum": [],
"user_rule_description_by_id": [],
"user_exchange_event_point_by_id": [],
"user_school_idol_festival_id_reward_mission_by_id": [],
"user_gps_present_received_by_id": [],
"user_event_marathon_by_event_master_id": [],
"user_event_mining_by_event_master_id": [],
"user_event_coop_by_event_master_id": [],
"user_live_skip_ticket_by_id": [],
"user_story_event_unlock_item_by_id": [],
"user_event_marathon_booster_by_id": [],
"user_reference_book_by_id": [],
"user_review_request_process_flow_by_id": [],
"user_rank_exp_by_id": [],
"user_share_by_id": [],
"user_tower_by_tower_id": [],
"user_recovery_tower_card_used_count_item_by_recovery_tower_card_used_count_item_master_id": [],
"user_story_linkage_by_id": [],
"user_subscription_status_by_id": [],
"user_story_main_part_digest_movie_by_id": [],
"user_member_guild_by_id": [],
"user_member_guild_support_item_by_id": [],
"user_daily_theater_by_daily_theater_id": [],
"user_play_list_by_id": []
}
}
+22
View File
@@ -0,0 +1,22 @@
{
"cleared_ids": [
"CgkI6fnP4IYMEAIQAg",
"CgkI6fnP4IYMEAIQAw",
"CgkI6fnP4IYMEAIQBA",
"CgkI6fnP4IYMEAIQBQ",
"CgkI6fnP4IYMEAIQBg",
"CgkI6fnP4IYMEAIQBw",
"CgkI6fnP4IYMEAIQCA",
"CgkI6fnP4IYMEAIQCQ",
"CgkI6fnP4IYMEAIQCg",
"CgkI6fnP4IYMEAIQAQ",
"CgkI6fnP4IYMEAIQCw",
"CgkI6fnP4IYMEAIQDA",
"CgkI6fnP4IYMEAIQDQ",
"CgkI6fnP4IYMEAIQDg",
"CgkI6fnP4IYMEAIQDw",
"CgkI6fnP4IYMEAIQEA",
"CgkI6fnP4IYMEAIQEQ",
"CgkI6fnP4IYMEAIQEg"
]
}
+123
View File
@@ -0,0 +1,123 @@
{
"uniq_id": 1684755047154917443,
"user_model_diff": {
"user_status": {
"name": {
"dot_under_text": "梦路2号机@果果厨"
},
"nickname": {
"dot_under_text": "梦路"
},
"last_login_at": 1684754024,
"rank": 122,
"exp": 416263,
"message": {
"dot_under_text": "B站主播:梦路_YumeMichi"
},
"recommend_card_master_id": 200013001,
"max_friend_num": 0,
"live_point_full_at": 1684158189,
"live_point_broken": 150,
"live_point_subscription_recovery_daily_count": 1,
"live_point_subscription_recovery_daily_reset_at": 1656259200,
"activity_point_count": 0,
"activity_point_reset_at": 1684123200,
"activity_point_payment_recovery_daily_count": 10,
"activity_point_payment_recovery_daily_reset_at": 1683734400,
"game_money": 115665089,
"card_exp": 32316167,
"free_sns_coin": 280,
"apple_sns_coin": 0,
"google_sns_coin": 0,
"cash": 0,
"subscription_coin": 30,
"birth_date": null,
"birth_month": 10,
"birth_day": 18,
"latest_live_deck_id": 1,
"main_lesson_deck_id": 1,
"favorite_member_id": 1,
"last_live_difficulty_id": 12092302,
"lp_magnification": 1,
"emblem_id": 13100608,
"device_token": "",
"tutorial_phase": 99,
"tutorial_end_at": 1622217482,
"login_days": 446,
"navi_tap_count": 1,
"navi_tap_recover_at": 1684771200,
"is_auto_mode": false,
"max_score_live_difficulty_master_id": 12037401,
"live_max_score": 40553270,
"max_combo_live_difficulty_master_id": 12037401,
"live_max_combo": 301,
"lesson_resume_status": 1,
"accessory_box_additional": 90,
"terms_of_use_version": 0,
"bootstrap_sifid_check_at": 1683178908,
"gdpr_version": 0,
"member_guild_member_master_id": 1,
"member_guild_last_updated_at": 1659485328
},
"user_member_by_member_id": [],
"user_card_by_card_id": [],
"user_suit_by_suit_id": [],
"user_live_deck_by_id": [],
"user_live_party_by_id": [],
"user_lesson_deck_by_id": [],
"user_live_mv_deck_by_id": [],
"user_live_mv_deck_custom_by_id": [],
"user_live_difficulty_by_difficulty_id": [],
"user_story_main_by_story_main_id": [],
"user_story_main_selected_by_story_main_cell_id": [],
"user_voice_by_voice_id": [],
"user_emblem_by_emblem_id": [],
"user_gacha_ticket_by_ticket_id": [],
"user_gacha_point_by_point_id": [],
"user_lesson_enhancing_item_by_item_id": [],
"user_training_material_by_item_id": [],
"user_grade_up_item_by_item_id": [],
"user_custom_background_by_id": [],
"user_story_side_by_id": [],
"user_story_member_by_id": [],
"user_communication_member_detail_badge_by_id": [],
"user_story_event_history_by_id": [],
"user_recovery_lp_by_id": [],
"user_recovery_ap_by_id": [],
"user_mission_by_mission_id": [],
"user_daily_mission_by_mission_id": [],
"user_weekly_mission_by_mission_id": [],
"user_info_trigger_basic_by_trigger_id": [],
"user_info_trigger_card_grade_up_by_trigger_id": [],
"user_info_trigger_member_guild_support_item_expired_by_trigger_id": [],
"user_info_trigger_member_love_level_up_by_trigger_id": [],
"user_accessory_by_user_accessory_id": [],
"user_accessory_level_up_item_by_id": [],
"user_accessory_rarity_up_item_by_id": [],
"user_unlock_scenes_by_enum": [],
"user_scene_tips_by_enum": [],
"user_rule_description_by_id": [],
"user_exchange_event_point_by_id": [],
"user_school_idol_festival_id_reward_mission_by_id": [],
"user_gps_present_received_by_id": [],
"user_event_marathon_by_event_master_id": [],
"user_event_mining_by_event_master_id": [],
"user_event_coop_by_event_master_id": [],
"user_live_skip_ticket_by_id": [],
"user_story_event_unlock_item_by_id": [],
"user_event_marathon_booster_by_id": [],
"user_reference_book_by_id": [],
"user_review_request_process_flow_by_id": [],
"user_rank_exp_by_id": [],
"user_share_by_id": [],
"user_tower_by_tower_id": [],
"user_recovery_tower_card_used_count_item_by_recovery_tower_card_used_count_item_master_id": [],
"user_story_linkage_by_id": [],
"user_subscription_status_by_id": [],
"user_story_main_part_digest_movie_by_id": [],
"user_member_guild_by_id": [],
"user_member_guild_support_item_by_id": [],
"user_daily_theater_by_daily_theater_id": [],
"user_play_list_by_id": []
}
}
+122
View File
@@ -0,0 +1,122 @@
{
"user_model_diff": {
"user_status": {
"name": {
"dot_under_text": "梦路2号机@果果厨"
},
"nickname": {
"dot_under_text": "梦路"
},
"last_login_at": 1684754024,
"rank": 122,
"exp": 416263,
"message": {
"dot_under_text": "B站主播:梦路_YumeMichi"
},
"recommend_card_master_id": 200013001,
"max_friend_num": 0,
"live_point_full_at": 1684158189,
"live_point_broken": 150,
"live_point_subscription_recovery_daily_count": 1,
"live_point_subscription_recovery_daily_reset_at": 1656259200,
"activity_point_count": 0,
"activity_point_reset_at": 1684123200,
"activity_point_payment_recovery_daily_count": 10,
"activity_point_payment_recovery_daily_reset_at": 1683734400,
"game_money": 115665089,
"card_exp": 32316167,
"free_sns_coin": 280,
"apple_sns_coin": 0,
"google_sns_coin": 0,
"cash": 0,
"subscription_coin": 30,
"birth_date": null,
"birth_month": 10,
"birth_day": 18,
"latest_live_deck_id": 1,
"main_lesson_deck_id": 1,
"favorite_member_id": 1,
"last_live_difficulty_id": 12092302,
"lp_magnification": 1,
"emblem_id": 13100608,
"device_token": "",
"tutorial_phase": 99,
"tutorial_end_at": 1622217482,
"login_days": 446,
"navi_tap_count": 1,
"navi_tap_recover_at": 1683043200,
"is_auto_mode": false,
"max_score_live_difficulty_master_id": 12037401,
"live_max_score": 40553270,
"max_combo_live_difficulty_master_id": 12037401,
"live_max_combo": 301,
"lesson_resume_status": 1,
"accessory_box_additional": 90,
"terms_of_use_version": 0,
"bootstrap_sifid_check_at": 1683178908,
"gdpr_version": 0,
"member_guild_member_master_id": 1,
"member_guild_last_updated_at": 1659485328
},
"user_member_by_member_id": [],
"user_card_by_card_id": [],
"user_suit_by_suit_id": [],
"user_live_deck_by_id": [],
"user_live_party_by_id": [],
"user_lesson_deck_by_id": [],
"user_live_mv_deck_by_id": [],
"user_live_mv_deck_custom_by_id": [],
"user_live_difficulty_by_difficulty_id": [],
"user_story_main_by_story_main_id": [],
"user_story_main_selected_by_story_main_cell_id": [],
"user_voice_by_voice_id": [],
"user_emblem_by_emblem_id": [],
"user_gacha_ticket_by_ticket_id": [],
"user_gacha_point_by_point_id": [],
"user_lesson_enhancing_item_by_item_id": [],
"user_training_material_by_item_id": [],
"user_grade_up_item_by_item_id": [],
"user_custom_background_by_id": [],
"user_story_side_by_id": [],
"user_story_member_by_id": [],
"user_communication_member_detail_badge_by_id": [],
"user_story_event_history_by_id": [],
"user_recovery_lp_by_id": [],
"user_recovery_ap_by_id": [],
"user_mission_by_mission_id": [],
"user_daily_mission_by_mission_id": [],
"user_weekly_mission_by_mission_id": [],
"user_info_trigger_basic_by_trigger_id": [],
"user_info_trigger_card_grade_up_by_trigger_id": [],
"user_info_trigger_member_guild_support_item_expired_by_trigger_id": [],
"user_info_trigger_member_love_level_up_by_trigger_id": [],
"user_accessory_by_user_accessory_id": [],
"user_accessory_level_up_item_by_id": [],
"user_accessory_rarity_up_item_by_id": [],
"user_unlock_scenes_by_enum": [],
"user_scene_tips_by_enum": [],
"user_rule_description_by_id": [],
"user_exchange_event_point_by_id": [],
"user_school_idol_festival_id_reward_mission_by_id": [],
"user_gps_present_received_by_id": [],
"user_event_marathon_by_event_master_id": [],
"user_event_mining_by_event_master_id": [],
"user_event_coop_by_event_master_id": [],
"user_live_skip_ticket_by_id": [],
"user_story_event_unlock_item_by_id": [],
"user_event_marathon_booster_by_id": [],
"user_reference_book_by_id": [],
"user_review_request_process_flow_by_id": [],
"user_rank_exp_by_id": [],
"user_share_by_id": [],
"user_tower_by_tower_id": [],
"user_recovery_tower_card_used_count_item_by_recovery_tower_card_used_count_item_master_id": [],
"user_story_linkage_by_id": [],
"user_subscription_status_by_id": [],
"user_story_main_part_digest_movie_by_id": [],
"user_member_guild_by_id": [],
"user_member_guild_support_item_by_id": [],
"user_daily_theater_by_daily_theater_id": [],
"user_play_list_by_id": []
}
}
+65
View File
@@ -1,5 +1,6 @@
package model package model
/* ==== SIF START ==== */
// GameOverResp ... // GameOverResp ...
type GameOverResp struct { type GameOverResp struct {
ResponseData []interface{} `json:"response_data"` ResponseData []interface{} `json:"response_data"`
@@ -653,3 +654,67 @@ type LiveIconInfoResp struct {
CommandNum bool `json:"commandNum"` CommandNum bool `json:"commandNum"`
TimeStamp int64 `json:"timeStamp"` TimeStamp int64 `json:"timeStamp"`
} }
/* ==== SIF END ==== */
/* ==== AS START ==== */
// LiveSaveDeckReq ...
type LiveSaveDeckReq struct {
LiveMasterID int `json:"live_master_id"`
LiveMvDeckType int `json:"live_mv_deck_type"`
MemberMasterIDByPos []int `json:"member_master_id_by_pos"`
SuitMasterIDByPos []int `json:"suit_master_id_by_pos"`
ViewStatusByPos []int `json:"view_status_by_pos"`
}
// LiveSaveDeckResp ...
type LiveSaveDeckResp struct {
UserModel UserModel `json:"user_model"`
}
// UserMemberInfo ...
type UserMemberInfo struct {
MemberMasterID int `json:"member_master_id"`
CustomBackgroundMasterID int `json:"custom_background_master_id"`
SuitMasterID int `json:"suit_master_id"`
LovePoint int `json:"love_point"`
LovePointLimit int `json:"love_point_limit"`
LoveLevel int `json:"love_level"`
ViewStatus int `json:"view_status"`
IsNew bool `json:"is_new"`
}
// UserMemberByMemberID ...
type UserMemberByMemberID interface{}
// UserLiveMvDeckInfo ...
type UserLiveMvDeckInfo struct {
LiveMasterID interface{} `json:"live_master_id"`
MemberMasterID1 interface{} `json:"member_master_id_1"`
MemberMasterID2 interface{} `json:"member_master_id_2"`
MemberMasterID3 interface{} `json:"member_master_id_3"`
MemberMasterID4 interface{} `json:"member_master_id_4"`
MemberMasterID5 interface{} `json:"member_master_id_5"`
MemberMasterID6 interface{} `json:"member_master_id_6"`
MemberMasterID7 interface{} `json:"member_master_id_7"`
MemberMasterID8 interface{} `json:"member_master_id_8"`
MemberMasterID9 interface{} `json:"member_master_id_9"`
MemberMasterID10 interface{} `json:"member_master_id_10"`
MemberMasterID11 interface{} `json:"member_master_id_11"`
MemberMasterID12 interface{} `json:"member_master_id_12"`
SuitMasterID1 interface{} `json:"suit_master_id_1"`
SuitMasterID2 interface{} `json:"suit_master_id_2"`
SuitMasterID3 interface{} `json:"suit_master_id_3"`
SuitMasterID4 interface{} `json:"suit_master_id_4"`
SuitMasterID5 interface{} `json:"suit_master_id_5"`
SuitMasterID6 interface{} `json:"suit_master_id_6"`
SuitMasterID7 interface{} `json:"suit_master_id_7"`
SuitMasterID8 interface{} `json:"suit_master_id_8"`
SuitMasterID9 interface{} `json:"suit_master_id_9"`
SuitMasterID10 interface{} `json:"suit_master_id_10"`
SuitMasterID11 interface{} `json:"suit_master_id_11"`
SuitMasterID12 interface{} `json:"suit_master_id_12"`
}
// UserLiveMvDeckCustomByID ...
type UserLiveMvDeckCustomByID interface{}
+3 -3
View File
@@ -45,14 +45,14 @@ type AsLoginRes struct {
// UserModel ... // UserModel ...
type UserModel struct { type UserModel struct {
UserStatus AsUserStatus `json:"user_status"` UserStatus AsUserStatus `json:"user_status"`
UserMemberByMemberID []interface{} `json:"user_member_by_member_id"` UserMemberByMemberID interface{} `json:"user_member_by_member_id"`
UserCardByCardID []interface{} `json:"user_card_by_card_id"` UserCardByCardID []interface{} `json:"user_card_by_card_id"`
UserSuitBySuitID []interface{} `json:"user_suit_by_suit_id"` UserSuitBySuitID []interface{} `json:"user_suit_by_suit_id"`
UserLiveDeckByID []interface{} `json:"user_live_deck_by_id"` UserLiveDeckByID []interface{} `json:"user_live_deck_by_id"`
UserLivePartyByID []interface{} `json:"user_live_party_by_id"` UserLivePartyByID []interface{} `json:"user_live_party_by_id"`
UserLessonDeckByID []interface{} `json:"user_lesson_deck_by_id"` UserLessonDeckByID []interface{} `json:"user_lesson_deck_by_id"`
UserLiveMvDeckByID []interface{} `json:"user_live_mv_deck_by_id"` UserLiveMvDeckByID []interface{} `json:"user_live_mv_deck_by_id"`
UserLiveMvDeckCustomByID []interface{} `json:"user_live_mv_deck_custom_by_id"` UserLiveMvDeckCustomByID interface{} `json:"user_live_mv_deck_custom_by_id"`
UserLiveDifficultyByDifficultyID []interface{} `json:"user_live_difficulty_by_difficulty_id"` UserLiveDifficultyByDifficultyID []interface{} `json:"user_live_difficulty_by_difficulty_id"`
UserStoryMainByStoryMainID []interface{} `json:"user_story_main_by_story_main_id"` UserStoryMainByStoryMainID []interface{} `json:"user_story_main_by_story_main_id"`
UserStoryMainSelectedByStoryMainCellID []interface{} `json:"user_story_main_selected_by_story_main_cell_id"` UserStoryMainSelectedByStoryMainCellID []interface{} `json:"user_story_main_selected_by_story_main_cell_id"`
@@ -126,7 +126,7 @@ type Message struct {
type AsUserStatus struct { type AsUserStatus struct {
Name Name `json:"name"` Name Name `json:"name"`
Nickname Nickname `json:"nickname"` Nickname Nickname `json:"nickname"`
LastLoginAt int `json:"last_login_at"` LastLoginAt int64 `json:"last_login_at"`
Rank int `json:"rank"` Rank int `json:"rank"`
Exp int `json:"exp"` Exp int `json:"exp"`
Message Message `json:"message"` Message Message `json:"message"`
+239
View File
@@ -306,5 +306,244 @@ func AsRouter(r *gin.Engine) {
ctx.Header("Content-Type", "application/json") ctx.Header("Content-Type", "application/json")
ctx.String(http.StatusOK, string(mm)) ctx.String(http.StatusOK, string(mm))
}) })
s.POST("/card/updateCardNewFlag", func(ctx *gin.Context) {
resp := SignResp(ctx.GetString("ep"), utils.ReadAllText("assets/updateCardNewFlag.json"), sessionKey)
ctx.Header("Content-Type", "application/json")
ctx.String(http.StatusOK, resp)
})
s.POST("/bootstrap/getClearedPlatformAchievement", func(ctx *gin.Context) {
resp := SignResp(ctx.GetString("ep"), utils.ReadAllText("assets/getClearedPlatformAchievement.json"), sessionKey)
ctx.Header("Content-Type", "application/json")
ctx.String(http.StatusOK, resp)
})
s.POST("/live/fetchLiveMusicSelect", func(ctx *gin.Context) {
resp := SignResp(ctx.GetString("ep"), utils.ReadAllText("assets/fetchLiveMusicSelect.json"), sessionKey)
ctx.Header("Content-Type", "application/json")
ctx.String(http.StatusOK, resp)
})
s.POST("/liveMv/start", func(ctx *gin.Context) {
resp := SignResp(ctx.GetString("ep"), utils.ReadAllText("assets/liveMvStart.json"), sessionKey)
ctx.Header("Content-Type", "application/json")
ctx.String(http.StatusOK, resp)
})
s.POST("/liveMv/saveDeck", func(ctx *gin.Context) {
body, err := io.ReadAll(ctx.Request.Body)
if err != nil {
panic(err)
}
defer ctx.Request.Body.Close()
// fmt.Println(string(body))
req := []model.AsReq{}
err = json.Unmarshal(body, &req)
if err != nil {
panic(err)
}
reqBody, ok := req[0].(map[string]interface{})
if !ok {
panic("Assertion failed!")
}
reqB, err := json.Marshal(reqBody)
if err != nil {
panic(err)
}
// fmt.Println(string(reqB))
saveReq := model.LiveSaveDeckReq{}
err = json.Unmarshal(reqB, &saveReq)
if err != nil {
panic(err)
}
// fmt.Println(saveReq)
userLiveMvDeckInfo := model.UserLiveMvDeckInfo{
LiveMasterID: saveReq.LiveMasterID,
}
memberIds := map[int]int{}
for k, v := range saveReq.MemberMasterIDByPos {
if k%2 == 0 {
memberId := saveReq.MemberMasterIDByPos[k+1]
memberIds[v] = memberId
switch v {
case 1:
userLiveMvDeckInfo.MemberMasterID1 = memberId
case 2:
userLiveMvDeckInfo.MemberMasterID2 = memberId
case 3:
userLiveMvDeckInfo.MemberMasterID3 = memberId
case 4:
userLiveMvDeckInfo.MemberMasterID4 = memberId
case 5:
userLiveMvDeckInfo.MemberMasterID5 = memberId
case 6:
userLiveMvDeckInfo.MemberMasterID6 = memberId
case 7:
userLiveMvDeckInfo.MemberMasterID7 = memberId
case 8:
userLiveMvDeckInfo.MemberMasterID8 = memberId
case 9:
userLiveMvDeckInfo.MemberMasterID9 = memberId
case 10:
userLiveMvDeckInfo.MemberMasterID10 = memberId
case 11:
userLiveMvDeckInfo.MemberMasterID11 = memberId
case 12:
userLiveMvDeckInfo.MemberMasterID12 = memberId
}
}
}
// fmt.Println(memberIds)
suitIds := map[int]int{}
for k, v := range saveReq.SuitMasterIDByPos {
if k%2 == 0 {
suitId := saveReq.SuitMasterIDByPos[k+1]
suitIds[v] = suitId
switch v {
case 1:
userLiveMvDeckInfo.SuitMasterID1 = suitId
case 2:
userLiveMvDeckInfo.SuitMasterID2 = suitId
case 3:
userLiveMvDeckInfo.SuitMasterID3 = suitId
case 4:
userLiveMvDeckInfo.SuitMasterID4 = suitId
case 5:
userLiveMvDeckInfo.SuitMasterID5 = suitId
case 6:
userLiveMvDeckInfo.SuitMasterID6 = suitId
case 7:
userLiveMvDeckInfo.SuitMasterID7 = suitId
case 8:
userLiveMvDeckInfo.SuitMasterID8 = suitId
case 9:
userLiveMvDeckInfo.SuitMasterID9 = suitId
case 10:
userLiveMvDeckInfo.SuitMasterID10 = suitId
case 11:
userLiveMvDeckInfo.SuitMasterID11 = suitId
case 12:
userLiveMvDeckInfo.SuitMasterID12 = suitId
}
}
}
// fmt.Println(suitIds)
userLiveMvDeckCustomByID := []model.UserLiveMvDeckCustomByID{}
userLiveMvDeckCustomByID = append(userLiveMvDeckCustomByID, saveReq.LiveMasterID)
userLiveMvDeckCustomByID = append(userLiveMvDeckCustomByID, userLiveMvDeckInfo)
// fmt.Println(userLiveMvDeckCustomByID)
viewStatusIds := map[int]int{}
for k, v := range saveReq.ViewStatusByPos {
if k%2 == 0 {
viewStatusId := saveReq.ViewStatusByPos[k+1]
viewStatusIds[v] = viewStatusId
}
}
// fmt.Println(viewStatusIds)
userMemberByMemberID := []model.UserMemberByMemberID{}
for k, v := range memberIds {
userMemberByMemberID = append(userMemberByMemberID, v)
userMemberByMemberID = append(userMemberByMemberID, model.UserMemberInfo{
MemberMasterID: v,
CustomBackgroundMasterID: 103506600,
SuitMasterID: suitIds[k],
LovePoint: 0,
LovePointLimit: 999999,
LoveLevel: 1,
ViewStatus: viewStatusIds[k],
IsNew: true,
})
}
// fmt.Println(userMemberByMemberID)
saveResp := model.LiveSaveDeckResp{
UserModel: model.UserModel{
UserStatus: CommonUserStatus(),
UserMemberByMemberID: userMemberByMemberID,
UserCardByCardID: []interface{}{},
UserSuitBySuitID: []interface{}{},
UserLiveDeckByID: []interface{}{},
UserLivePartyByID: []interface{}{},
UserLessonDeckByID: []interface{}{},
UserLiveMvDeckByID: []interface{}{},
UserLiveMvDeckCustomByID: userLiveMvDeckCustomByID,
UserLiveDifficultyByDifficultyID: []interface{}{},
UserStoryMainByStoryMainID: []interface{}{},
UserStoryMainSelectedByStoryMainCellID: []interface{}{},
UserVoiceByVoiceID: []interface{}{},
UserEmblemByEmblemID: []interface{}{},
UserGachaTicketByTicketID: []interface{}{},
UserGachaPointByPointID: []interface{}{},
UserLessonEnhancingItemByItemID: []interface{}{},
UserTrainingMaterialByItemID: []interface{}{},
UserGradeUpItemByItemID: []interface{}{},
UserCustomBackgroundByID: []interface{}{},
UserStorySideByID: []interface{}{},
UserStoryMemberByID: []interface{}{},
UserCommunicationMemberDetailBadgeByID: []interface{}{},
UserStoryEventHistoryByID: []interface{}{},
UserRecoveryLpByID: []interface{}{},
UserRecoveryApByID: []interface{}{},
UserMissionByMissionID: []interface{}{},
UserDailyMissionByMissionID: []interface{}{},
UserWeeklyMissionByMissionID: []interface{}{},
UserInfoTriggerBasicByTriggerID: []interface{}{},
UserInfoTriggerCardGradeUpByTriggerID: []interface{}{},
UserInfoTriggerMemberGuildSupportItemExpiredByTriggerID: []interface{}{},
UserInfoTriggerMemberLoveLevelUpByTriggerID: []interface{}{},
UserAccessoryByUserAccessoryID: []interface{}{},
UserAccessoryLevelUpItemByID: []interface{}{},
UserAccessoryRarityUpItemByID: []interface{}{},
UserUnlockScenesByEnum: []interface{}{},
UserSceneTipsByEnum: []interface{}{},
UserRuleDescriptionByID: []interface{}{},
UserExchangeEventPointByID: []interface{}{},
UserSchoolIdolFestivalIDRewardMissionByID: []interface{}{},
UserGpsPresentReceivedByID: []interface{}{},
UserEventMarathonByEventMasterID: []interface{}{},
UserEventMiningByEventMasterID: []interface{}{},
UserEventCoopByEventMasterID: []interface{}{},
UserLiveSkipTicketByID: []interface{}{},
UserStoryEventUnlockItemByID: []interface{}{},
UserEventMarathonBoosterByID: []interface{}{},
UserReferenceBookByID: []interface{}{},
UserReviewRequestProcessFlowByID: []interface{}{},
UserRankExpByID: []interface{}{},
UserShareByID: []interface{}{},
UserTowerByTowerID: []interface{}{},
UserRecoveryTowerCardUsedCountItemByRecoveryTowerCardUsedCountItemMasterID: []interface{}{},
UserStoryLinkageByID: []interface{}{},
UserSubscriptionStatusByID: []interface{}{},
UserStoryMainPartDigestMovieByID: []interface{}{},
UserMemberGuildByID: []interface{}{},
UserMemberGuildSupportItemByID: []interface{}{},
UserDailyTheaterByDailyTheaterID: []interface{}{},
UserPlayListByID: []interface{}{},
},
}
respB, err := json.Marshal(saveResp)
if err != nil {
panic(err)
}
// fmt.Println(string(b))
resp := SignResp(ctx.GetString("ep"), string(respB), sessionKey)
// fmt.Println(resp)
ctx.Header("Content-Type", "application/json")
ctx.String(http.StatusOK, resp)
})
} }
} }
+62
View File
@@ -4,6 +4,7 @@ import (
"fmt" "fmt"
"honoka-chan/config" "honoka-chan/config"
"honoka-chan/encrypt" "honoka-chan/encrypt"
"honoka-chan/model"
"time" "time"
) )
@@ -15,3 +16,64 @@ func SignResp(ep, body, key string) (resp string) {
resp = fmt.Sprintf("[%s,\"%s\"]", signBody, sign) resp = fmt.Sprintf("[%s,\"%s\"]", signBody, sign)
return return
} }
func CommonUserStatus() model.AsUserStatus {
return model.AsUserStatus{
Name: model.Name{
DotUnderText: "梦路2号机@果果厨",
},
Nickname: model.Nickname{
DotUnderText: "梦路",
},
LastLoginAt: time.Now().Unix(),
Rank: 122,
Exp: 416263,
Message: model.Message{
DotUnderText: "B站主播:梦路_YumeMichi",
},
RecommendCardMasterID: 200013001,
MaxFriendNum: 0,
LivePointFullAt: 1684158189,
LivePointBroken: 150,
LivePointSubscriptionRecoveryDailyCount: 1,
LivePointSubscriptionRecoveryDailyResetAt: 1656259200,
ActivityPointCount: 0,
ActivityPointResetAt: 1684123200,
ActivityPointPaymentRecoveryDailyCount: 10,
ActivityPointPaymentRecoveryDailyResetAt: 1683734400,
GameMoney: 115665089,
CardExp: 32316167,
FreeSnsCoin: 280,
AppleSnsCoin: 0,
GoogleSnsCoin: 0,
Cash: 0,
SubscriptionCoin: 30,
BirthDate: nil,
BirthMonth: 10,
BirthDay: 18,
LatestLiveDeckID: 1,
MainLessonDeckID: 1,
FavoriteMemberID: 1,
LastLiveDifficultyID: 12092302,
LpMagnification: 1,
EmblemID: 13100608,
DeviceToken: "",
TutorialPhase: 99,
TutorialEndAt: 1622217482,
LoginDays: 446,
NaviTapCount: 2,
NaviTapRecoverAt: 1684771200,
IsAutoMode: false,
MaxScoreLiveDifficultyMasterID: 12037401,
LiveMaxScore: 40553270,
MaxComboLiveDifficultyMasterID: 12037401,
LiveMaxCombo: 301,
LessonResumeStatus: 1,
AccessoryBoxAdditional: 90,
TermsOfUseVersion: 0,
BootstrapSifidCheckAt: 1683178908,
GdprVersion: 0,
MemberGuildMemberMasterID: 1,
MemberGuildLastUpdatedAt: 1659485328,
}
}