feat: add music

This commit is contained in:
77e8377a-ca5c-42d5-8b2b-506123abec0e 2025-01-25 12:54:50 +08:00
parent 7a54773e89
commit 9bab65364e
12 changed files with 476 additions and 537 deletions

View File

@ -1,17 +0,0 @@
import json
from sdgb import sdgb_api
def character(userId):
data = json.dumps({
"userId": int(userId),
"nextIndex":10000000000,
"maxCount":1000000000
})
character_result = json.loads(sdgb_api(data, "GetUserCharacterApi", userId))
return character_result
if __name__ == "__main__":
print(character(int(input())))

View File

@ -1,13 +0,0 @@
import json
from sdgb import sdgb_api
def charge(userId):
data = json.dumps({
"userId": userId,
})
charge_result = json.loads(sdgb_api(data, "GetUserChargeApi", userId))
return charge_result

18
item.py
View File

@ -1,18 +0,0 @@
import json
from sdgb import sdgb_api
def item(userId):
data = json.dumps({
"userId": int(userId),
"nextIndex":60000000000,
"maxCount":1000000000
})
item_result = json.loads(sdgb_api(data, "GetUserItemApi", userId))
return item_result
if __name__ == "__main__":
a = json.dumps(len(item(11593052)['userItemList']))
print(a)

View File

@ -1,16 +0,0 @@
import json
from sdgb import sdgb_api
def item(userId):
data = json.dumps({
"userId": int(userId),
"nextIndex":0,
"maxCount":2000
})
login_bonus_result = json.loads(sdgb_api(data, "GetUserLoginBonusApi", userId))
return login_bonus_result
print(item(11593052))

132
main.py
View File

@ -5,125 +5,17 @@ from datetime import datetime
from flask import Flask,request,redirect,jsonify from flask import Flask,request,redirect,jsonify
from flask_cors import CORS from flask_cors import CORS
from sdgb import felica, sdgb_api, aimedb_api
from logout import logout from logout import logout
from login import login from login import login
from ticket import get_ticket from process import *
from charge import charge
from map import map
from userdata import userdata
from character import character
from sdgb import sdgb_api, felica
from mapstock import music_with_retry as mapstock from mapstock import music_with_retry as mapstock
from music import music_with_retry as music from music import music_with_retry as music
from unlock_all import music_with_retry as unlock from unlock_all import music_with_retry as unlock
from map_clear import music_with_retry as map_clear from map_clear import music_with_retry as map_clear
from bonus9 import music_with_retry as login_bonus from bonus9 import music_with_retry as login_bonus
def find_map(mapId, user_map_data):
for single in user_map_data:
if single["mapId"] == mapId:
return single
else:
continue
def isNewMapList(mapId, user_map_data):
if ('{"mapId": ' + str(mapId)) in user_map_data:
return 0
else:
return 1
def item(item_data, user_character_list):
item_list = []
character_list = []
for single in item_data:
if single['kind'] == 9:
if ('{"characterId": ' + str(single['id'])) in user_character_list:
pass
else:
data = ({
"characterId":single['id'],
"level":1,
"awakening":0,
"useCount": 0
})
character_list.append(data)
else:
data = ({
"itemKind": single['kind'],
"itemId": single['id'],
"stock": 1,
"isValid": True
})
item_list.append(data)
return item_list, character_list, item_data[-1]['distance']
def aimedb_userId(IDm):
return aimedb_api(felica(IDm)), felica(IDm)
def bonus_list_gen(userId):
with open('login_bonus.json') as file:
cache = json.load(file)
bonus_data = []
for item in cache:
bonus_data.append(item['id'])
cache = []
data = json.dumps({
"userId": int(userId),
"nextIndex":0,
"maxCount":2000
})
user_bonus = json.loads(sdgb_api(data, "GetUserLoginBonusApi", userId))['userLoginBonusList']
for item in user_bonus:
cache.append(item['bonusId'])
bonus_list_unexist = list(set(bonus_data) - set(cache))
bonus_list = []
for item in user_bonus:
if item['isComplete'] == False:
if item['bonusId'] in [12, 29, 30, 38, 43, 604]:
data = ({
"bonusId": item['bonusId'],
"point": 4,
"isCurrent": item['isCurrent'],
"isComplete": False
})
else:
data = ({
"bonusId": item['bonusId'],
"point": 9,
"isCurrent": item['isCurrent'],
"isComplete": False
})
bonus_list.append(data)
elif item['bonusId'] == 999:
data = ({
"bonusId": 999,
"point": item['point'] // 10 * 10 + 9,
"isCurrent": item['isCurrent'],
"isComplete": False
})
bonus_list.append(data)
else:
pass
for item in bonus_list_unexist:
if item in [12, 29, 30, 38, 43, 604]:
data = ({
"bonusId": item,
"point": 4,
"isCurrent": False,
"isComplete": False
})
else:
data = ({
"bonusId": item,
"point": 9,
"isCurrent": False,
"isComplete": False
})
bonus_list.append(data)
return bonus_list
app = Flask(__name__) app = Flask(__name__)
app.json.sort_keys = False app.json.sort_keys = False
app.json.ensure_ascii = False app.json.ensure_ascii = False
@ -150,7 +42,7 @@ def bad_request(e):
@app.route("/") @app.route("/")
def index(): def index():
return jsonify({"status": "200 OK", "timestamp": int(time.time()), "info": "Project Fragrance","availableApi": ["qr", "ticket", "mapstock", "unlock", "map"], "date": datetime.now(pytz.timezone('Asia/Shanghai')).strftime('%a, %d %b %Y %H:%M:%S GMT+8')}), 200 return jsonify({"status": "200 OK", "timestamp": int(time.time()), "info": "Sennoza - Project Fragrance","availableApi": ["felica", "ticket", "mapstock", "unlock", "music", "map", "bonus"], "date": datetime.now(pytz.timezone('Asia/Shanghai')).strftime('%a, %d %b %Y %H:%M:%S GMT+8')}), 200
@app.route("/felica") @app.route("/felica")
def felica_lookup(): def felica_lookup():
@ -199,8 +91,8 @@ def ticket():
ticket_data = get_ticket(userId) ticket_data = get_ticket(userId)
if ticket_data['returnCode'] == 0: if ticket_data['returnCode'] == 0:
logout(userId, accessCode, timestamp) logout(userId, accessCode, timestamp)
returnCode = 405 returnCode = 403
status = "405 Method Not Allowed" status = "403 Forbidden"
info = "WARNING: THIS INFO SHOULD NEVER APPEARS. IF YOU SEE THIS WARNING PLEASE CONTACT Telegram@sasakure. Unable to operate. Successfully Logged in. Probably User has had one ticket." info = "WARNING: THIS INFO SHOULD NEVER APPEARS. IF YOU SEE THIS WARNING PLEASE CONTACT Telegram@sasakure. Unable to operate. Successfully Logged in. Probably User has had one ticket."
log = {"UserLoginApiStatus": 1, "UserLogoutApiStatus": 1} log = {"UserLoginApiStatus": 1, "UserLogoutApiStatus": 1}
elif ticket_data['returnCode'] == 1: elif ticket_data['returnCode'] == 1:
@ -295,13 +187,15 @@ def unlock_process():
@app.route("/music", methods=['POST']) @app.route("/music", methods=['POST'])
def music_post(): def music_post():
request_data = request.get_json() request_data = request.get_json()
if 'userId' in request_data and 'music' in request_data: if 'IDm' in request_data and 'music' in request_data:
if request_data['userId'] is None or isinstance(request_data['userId'], int) is False or len(str(request_data['userId'])) != 8: if request_data['IDm'] is None or len(str(request_data['IDm'])) != 16:
return jsonify({"apiName": "music", "apiInfo": "Overwrite Music Data in UserData.", "apiUsage": ""}) return jsonify({"apiName": "music", "apiInfo": "Overwrite Music Data in UserData.", "apiUsage": ""})
else: else:
userId = int(request_data['userId']) IDm = request_data['IDm']
userId = aimedb_userId(IDm)[0]
accessCode = aimedb_userId(IDm)[1]
timestamp = int(time.time()) timestamp = int(time.time())
login_data = login(userId, timestamp) login_data = login(userId, accessCode, timestamp)
if login_data['returnCode'] == 102: if login_data['returnCode'] == 102:
returnCode = 403 returnCode = 403
status = "403 Forbidden" status = "403 Forbidden"
@ -313,9 +207,9 @@ def music_post():
info = "Unable to operate. Probably User has logged in." info = "Unable to operate. Probably User has logged in."
log = {} log = {}
elif login_data['returnCode'] == 1: elif login_data['returnCode'] == 1:
logout(userId, timestamp) logout(userId, accessCode, timestamp)
music_data = request_data['music'] music_data = request_data['music']
music(userId, music_data) music(userId, accessCode, music_data)
returnCode = 200 returnCode = 200
status = "200 OK" status = "200 OK"
info = "Succeed." info = "Succeed."

17
map.py
View File

@ -1,17 +0,0 @@
import json
from sdgb import sdgb_api
def map(userId):
data = json.dumps({
"userId": int(userId),
"nextIndex": 0,
"maxCount": 600
})
map_result = json.loads(sdgb_api(data, "GetUserMapApi", userId))
return map_result
if __name__ == "__main__":
print(map(int(input())))

108
music.py
View File

@ -30,22 +30,11 @@ def CalcRandom():
timestamp = int(time.time()) timestamp = int(time.time())
def music(userId, music_data): def music(userId, accessCode, music_data):
music = music_data
musicId = music['musicId']
level = music['level']
playCount = music['playCount']
achievement = music['achievement']
comboStatus = music['comboStatus']
syncStatus = music['syncStatus']
deluxscoreMax = music['deluxscoreMax']
scoreRank = music['scoreRank']
# UserLogin # UserLogin
login_result = login(userId, timestamp) login_result = login(userId, accessCode, timestamp)
login_id = login_result['loginId'] login_id = login_result['loginId']
login_date = login_result['lastLoginDate'] login_date = login_result['lastLoginDate']
@ -61,22 +50,23 @@ def music(userId, music_data):
# UserLog # UserLog
data = json.dumps({ playloglist = []
"userId": int(userId),
"userPlaylog": { for music in music_data:
data = ({
"userId": 0, "userId": 0,
"orderId": 0, "orderId": 0,
"playlogId": login_id, "playlogId": login_id,
"version": 1041000, "version": 1050000,
"placeId": placeId, "placeId": placeId,
"placeName": placeName, "placeName": placeName,
"loginDate": int(time.time()), "loginDate": int(time.time()),
"playDate": datetime.now(pytz.timezone('Asia/Shanghai')).strftime('%Y-%m-%d'), "playDate": datetime.now(pytz.timezone('Asia/Shanghai')).strftime('%Y-%m-%d'),
"userPlayDate": datetime.now(pytz.timezone('Asia/Shanghai')).strftime('%Y-%m-%d %H:%M:%S') + '.0', "userPlayDate": datetime.now(pytz.timezone('Asia/Shanghai')).strftime('%Y-%m-%d %H:%M:%S') + '.0',
"type": 0, "type": 0,
"musicId": int(musicId), "musicId": music['musicId'],
"level": int(level), "level": music['level'],
"trackNo": 1, "trackNo": len(music_data) - music_data.index(music),
"vsMode": 0, "vsMode": 0,
"vsUserName": "", "vsUserName": "",
"vsStatus": 0, "vsStatus": 0,
@ -109,9 +99,9 @@ def music(userId, music_data):
"characterId5": userdata['userData']['charaSlot'][4], "characterId5": userdata['userData']['charaSlot'][4],
"characterLevel5": random.randint(1000,6500), "characterLevel5": random.randint(1000,6500),
"characterAwakening5": 5, "characterAwakening5": 5,
"achievement": int(achievement), "achievement": music['achievement'],
"deluxscore": int(deluxscoreMax), "deluxscore": music['deluxscoreMax'],
"scoreRank": int(scoreRank), "scoreRank": music['scoreRank'],
"maxCombo": random.randint(400,500), "maxCombo": random.randint(400,500),
"totalCombo": random.randint(700,900), "totalCombo": random.randint(700,900),
"maxSync": 0, "maxSync": 0,
@ -170,12 +160,18 @@ def music(userId, music_data):
"trialPlayAchievement": -1, "trialPlayAchievement": -1,
"extNum1": 0, "extNum1": 0,
"extNum2": 0, "extNum2": 0,
"extNum4": 3020, "extNum4": 2020,
"extBool1": False "extBool1": False,
} "extBool2": False
})
playloglist.append(data)
data = json.dumps({
"userId": int(userId),
"userPlaylogList": playloglist
}) })
userlog_result = json.loads(sdgb_api(data, "UploadUserPlaylogApi", userId)) userlog_result = json.loads(sdgb_api(data, "UploadUserPlaylogListApi", userId))
# 获取 User Extend # 获取 User Extend
data = json.dumps({ data = json.dumps({
@ -226,9 +222,11 @@ def music(userId, music_data):
"upsertUserAll": { "upsertUserAll": {
"userData": [ "userData": [
{ {
"accessCode": "", "accessCode": int(accessCode),
"userName": userdata['userData']['userName'], "userName": userdata['userData']['userName'],
"isNetMember": 1, "isNetMember": 1,
"point": userdata['userData']['point'],
"totalPoint": userdata['userData']['totalPoint'],
"iconId": userdata['userData']['iconId'], "iconId": userdata['userData']['iconId'],
"plateId": userdata['userData']['plateId'], "plateId": userdata['userData']['plateId'],
"titleId": userdata['userData']['titleId'], "titleId": userdata['userData']['titleId'],
@ -251,7 +249,7 @@ def music(userId, music_data):
"renameCredit": 0, "renameCredit": 0,
"mapStock": userdata['userData']['mapStock'], "mapStock": userdata['userData']['mapStock'],
"eventWatchedDate": userdata['userData']['eventWatchedDate'], "eventWatchedDate": userdata['userData']['eventWatchedDate'],
"lastGameId": "SDGB", "lastGameId": "SDGA",
"lastRomVersion": userdata['userData']['lastRomVersion'], "lastRomVersion": userdata['userData']['lastRomVersion'],
"lastDataVersion": userdata['userData']['lastDataVersion'], "lastDataVersion": userdata['userData']['lastDataVersion'],
"lastLoginDate": login_date, "lastLoginDate": login_date,
@ -269,7 +267,7 @@ def music(userId, music_data):
"lastSelectTicket": 0, "lastSelectTicket": 0,
"lastSelectCourse": userdata['userData']['lastSelectCourse'], "lastSelectCourse": userdata['userData']['lastSelectCourse'],
"lastCountCourse": 0, "lastCountCourse": 0,
"firstGameId": "SDGB", "firstGameId": "SDGA",
"firstRomVersion": userdata['userData']['firstRomVersion'], "firstRomVersion": userdata['userData']['firstRomVersion'],
"firstDataVersion": userdata['userData']['firstDataVersion'], "firstDataVersion": userdata['userData']['firstDataVersion'],
"firstPlayDate": userdata['userData']['firstPlayDate'], "firstPlayDate": userdata['userData']['firstPlayDate'],
@ -304,6 +302,7 @@ def music(userId, music_data):
"playerOldRating": userdata['userData']['playerOldRating'], "playerOldRating": userdata['userData']['playerOldRating'],
"playerNewRating": userdata['userData']['playerNewRating'], "playerNewRating": userdata['userData']['playerNewRating'],
"banState": 0, "banState": 0,
"friendRegistSkip": 1,
"dateTime": timestamp "dateTime": timestamp
} }
], ],
@ -315,38 +314,32 @@ def music(userId, music_data):
"userLoginBonusList": [], "userLoginBonusList": [],
"userRatingList": [user_rating['userRating']], "userRatingList": [user_rating['userRating']],
"userItemList": [], "userItemList": [],
"userMusicDetailList": [ "userMusicDetailList": music_data,
{
"musicId": musicId,
"level": level,
"playCount": playCount,
"achievement": achievement,
"comboStatus": comboStatus,
"syncStatus": syncStatus,
"deluxscoreMax": deluxscoreMax,
"scoreRank": scoreRank,
"extNum1": 0
}
],
"userCourseList": [], "userCourseList": [],
"userFriendSeasonRankingList": [], "userFriendSeasonRankingList": [],
"userChargeList": user_charge['userChargeList'], "userChargeList": user_charge['userChargeList'],
"userFavoriteList": [], "userFavoriteList": [],
"userActivityList": [user_activity['userActivity']], "userActivityList": [user_activity['userActivity']],
"userMissionDataList": [],
"userWeeklyData": {
"lastLoginWeek": "2025-01-20 04:00:00",
"beforeLoginWeek": "2024-09-02 04:00:00",
"friendBonusFlag": True
},
"userGamePlaylogList": [ "userGamePlaylogList": [
{ {
"playlogId": login_id, "playlogId": login_id,
"version": "1.41.00", "version": "1.50.00",
"playDate": datetime.now(pytz.timezone('Asia/Shanghai')).strftime('%Y-%m-%d %H:%M:%S') + '.0', "playDate": datetime.now(pytz.timezone('Asia/Shanghai')).strftime('%Y-%m-%d %H:%M:%S') + '.0',
"playMode": 0, "playMode": 0,
"useTicketId": -1, "useTicketId": -1,
"playCredit": 1, "playCredit": 1,
"playTrack": 1, "playTrack": len(music_data),
"clientId": clientId, "clientId": clientId,
"isPlayTutorial": False, "isPlayTutorial": False,
"isEventMode": False, "isEventMode": False,
"isNewFree": False, "isNewFree": False,
"playCount": 0, "playCount": 8,
"playSpecial": CalcRandom(), "playSpecial": CalcRandom(),
"playOtherUserId": 0 "playOtherUserId": 0
} }
@ -360,14 +353,23 @@ def music(userId, music_data):
"placeId": 0, "placeId": 0,
"user2pPlaylogDetailList": [] "user2pPlaylogDetailList": []
}, },
"userIntimateList": [],
"userShopItemStockList": [],
"userGetPointList": [],
"userTradeItemList": [],
"userFavoritemusicList": [],
"userKaleidxScopeList": [],
"isNewCharacterList": "", "isNewCharacterList": "",
"isNewMapList": "", "isNewMapList": "",
"isNewLoginBonusList": "", "isNewLoginBonusList": "",
"isNewItemList": "", "isNewItemList": "",
"isNewMusicDetailList": "0", "isNewMusicDetailList": "0" * len(music_data),
"isNewCourseList": "0", "isNewCourseList": "",
"isNewFavoriteList": "", "isNewFavoriteList": "",
"isNewFriendSeasonRankingList": "" "isNewFriendSeasonRankingList": "",
"isNewUserIntimateList": "",
"isNewFavoritemusicList": "",
"isNewKaleidxScopeList": ""
} }
}) })
@ -381,12 +383,12 @@ def music(userId, music_data):
return data return data
def music_with_retry(userId, music_data): def music_with_retry(userId, accessCode, music_data):
for i in range(5): for i in range(5):
try: try:
music(userId, music_data) music(userId, accessCode, music_data)
return logout(userId, timestamp) return logout(userId, accessCode, timestamp)
except ValueError as e: except ValueError as e:
logout(userId, timestamp) logout(userId, accessCode, timestamp)
time.sleep(3) time.sleep(3)
return json.dumps({"status": "500 Internal Server Error"}), 500 return json.dumps({"status": "500 Internal Server Error"}), 500

180
process.py Normal file
View File

@ -0,0 +1,180 @@
import json
import pytz
import time
from sdgb import sdgb_api, aimedb_api, felica
from datetime import datetime, timedelta
from settings import regionId, clientId, placeId
from logout import logout
from login import login
def find_map(mapId, user_map_data):
for single in user_map_data:
if single["mapId"] == mapId:
return single
else:
continue
def isNewMapList(mapId, user_map_data):
if ('{"mapId": ' + str(mapId)) in user_map_data:
return 0
else:
return 1
def item(item_data, user_character_list):
item_list = []
character_list = []
for single in item_data:
if single['kind'] == 9:
if ('{"characterId": ' + str(single['id'])) in user_character_list:
pass
else:
data = ({
"characterId":single['id'],
"level":1,
"awakening":0,
"useCount": 0
})
character_list.append(data)
else:
data = ({
"itemKind": single['kind'],
"itemId": single['id'],
"stock": 1,
"isValid": True
})
item_list.append(data)
return item_list, character_list, item_data[-1]['distance']
def bonus_list_gen(userId):
with open('login_bonus.json') as file:
cache = json.load(file)
bonus_data = []
for item in cache:
bonus_data.append(item['id'])
cache = []
data = json.dumps({
"userId": int(userId),
"nextIndex":0,
"maxCount":2000
})
user_bonus = json.loads(sdgb_api(data, "GetUserLoginBonusApi", userId))['userLoginBonusList']
for item in user_bonus:
cache.append(item['bonusId'])
bonus_list_unexist = list(set(bonus_data) - set(cache))
bonus_list = []
for item in user_bonus:
if item['isComplete'] == False:
if item['bonusId'] in [12, 29, 30, 38, 43, 604]:
data = ({
"bonusId": item['bonusId'],
"point": 4,
"isCurrent": item['isCurrent'],
"isComplete": False
})
else:
data = ({
"bonusId": item['bonusId'],
"point": 9,
"isCurrent": item['isCurrent'],
"isComplete": False
})
bonus_list.append(data)
elif item['bonusId'] == 999:
data = ({
"bonusId": 999,
"point": item['point'] // 10 * 10 + 9,
"isCurrent": item['isCurrent'],
"isComplete": False
})
bonus_list.append(data)
else:
pass
for item in bonus_list_unexist:
if item in [12, 29, 30, 38, 43, 604]:
data = ({
"bonusId": item,
"point": 4,
"isCurrent": False,
"isComplete": False
})
else:
data = ({
"bonusId": item,
"point": 9,
"isCurrent": False,
"isComplete": False
})
bonus_list.append(data)
return bonus_list
def aimedb_userId(IDm):
return aimedb_api(felica(IDm)), felica(IDm)
def map(userId):
data = json.dumps({
"userId": int(userId),
"nextIndex": 0,
"maxCount": 600
})
map_result = json.loads(sdgb_api(data, "GetUserMapApi", userId))
return map_result
def character(userId):
data = json.dumps({
"userId": int(userId),
"nextIndex":10000000000,
"maxCount":1000000000
})
character_result = json.loads(sdgb_api(data, "GetUserCharacterApi", userId))
return character_result
def userdata(userId):
data = json.dumps({
"userId": int(userId)
})
userdata_result = json.loads(sdgb_api(data, "GetUserDataApi", userId))
return userdata_result
def charge(userId):
data = json.dumps({
"userId": userId,
})
charge_result = json.loads(sdgb_api(data, "GetUserChargeApi", userId))
return charge_result
def get_ticket(userId):
data = json.dumps({
"userId": userId,
"userCharge": {
"chargeId": 6,
"stock": 1,
"purchaseDate": (datetime.now(pytz.timezone('Asia/Shanghai')) - timedelta(hours=1)).strftime("%Y-%m-%d %H:%M:%S.0"),
"validDate": (datetime.now(pytz.timezone('Asia/Shanghai')) - timedelta(hours=1) + timedelta(days=90)).replace(hour=4, minute=0, second=0).strftime("%Y-%m-%d %H:%M:%S")
},
"userChargelog": {
"chargeId": 6,
"price": 4,
"purchaseDate": (datetime.now(pytz.timezone('Asia/Shanghai')) - timedelta(hours=1)).strftime("%Y-%m-%d %H:%M:%S.0"),
"placeId": placeId,
"regionId": regionId,
"clientId": clientId
}
})
ticket_result = json.loads(sdgb_api(data, "UpsertUserChargelogApi", userId))
return ticket_result

View File

@ -1,4 +1,4 @@
requests httpx
pycryptodome pycryptodome
pytz pytz
flask flask

View File

@ -2,7 +2,7 @@ import json
import zlib import zlib
import pytz import pytz
import hashlib import hashlib
import requests import httpx
from binascii import unhexlify, hexlify from binascii import unhexlify, hexlify
import socket import socket
@ -56,8 +56,7 @@ def sdgb_api(data, useApi, userId):
data_def = zlib.compress(data) data_def = zlib.compress(data)
data_enc = aes.encrypt(data_def) data_enc = aes.encrypt(data_def)
endpoint = "https://mai2exp.sic-rd1.jp:42081/Maimai2Servlet/" endpoint = "https://mai2exp.sic-rd1.jp:42081/Maimai2Servlet/"
requests.packages.urllib3.disable_warnings() r = httpx.post(
r = requests.post(
endpoint + get_hash_api(useApi), endpoint + get_hash_api(useApi),
headers = { headers = {
"User-Agent": "%s#%d"%(get_hash_api(useApi), userId), "User-Agent": "%s#%d"%(get_hash_api(useApi), userId),

View File

@ -1,43 +0,0 @@
import json
import pytz
import time
from sdgb import sdgb_api
from datetime import datetime, timedelta
from settings import regionId
from settings import clientId
from settings import placeId
from logout import logout
from login import login
def get_ticket(userId):
data = json.dumps({
"userId": userId,
"userCharge": {
"chargeId": 6,
"stock": 1,
"purchaseDate": (datetime.now(pytz.timezone('Asia/Shanghai')) - timedelta(hours=1)).strftime("%Y-%m-%d %H:%M:%S.0"),
"validDate": (datetime.now(pytz.timezone('Asia/Shanghai')) - timedelta(hours=1) + timedelta(days=90)).replace(hour=4, minute=0, second=0).strftime("%Y-%m-%d %H:%M:%S")
},
"userChargelog": {
"chargeId": 6,
"price": 4,
"purchaseDate": (datetime.now(pytz.timezone('Asia/Shanghai')) - timedelta(hours=1)).strftime("%Y-%m-%d %H:%M:%S.0"),
"placeId": placeId,
"regionId": regionId,
"clientId": clientId
}
})
ticket_result = json.loads(sdgb_api(data, "UpsertUserChargelogApi", userId))
return ticket_result
if __name__ == "__main__":
timestamp = int(time.time())
print(timestamp)
print(login(timestamp))
print(get_ticket())
print(logout(timestamp))

View File

@ -1,12 +0,0 @@
import json
from sdgb import sdgb_api
def userdata(userId):
data = json.dumps({
"userId": int(userId)
})
userdata_result = json.loads(sdgb_api(data, "GetUserDataApi", userId))
return userdata_result