一番街にゃ

Last-modified: 2024-03-14 (木) 21:39:43

スラム街用のスクリプトもおいておくにゃ。スラム街は雀魂と違ってhttps通信にゃ。基本的なリクエストなどは雀魂と同じにゃ。なんで似てるんにゃろなぁ…:thinking_momo:

観戦から取得できる現在同卓してるユーザーリストにゃ

import requests
import json
import dotenv
import os

dotenv.load_dotenv()


def get_from_riichi_city() -> list:
    # リクエストヘッダーを設定
    headers = {
        "Content-Type": "application/json",
        "Cookies": f'{{"channel":"default","deviceid":"{os.environ["deviceid"]}","lang":"en","sid":"{os.environ["sid"]}","version":"2.0.6.31622","platform":"linux"}}',
    }

    # リクエストボディを設定(.envから読み取る)
    payload = {"passwd": os.environ["passwd"], "email": os.environ["email"]}

    # リクエストを送信
    response = requests.post("https://alicdn.mahjong-jp.net/users/emailLogin", json=payload, headers=headers)

    # レスポンスを表示
    print(response.text)
    emailLoginRes = response.json()
    if emailLoginRes["code"] == 0:
        print("Logged into Riichi city as " + emailLoginRes["data"]["user"]["nickname"])

        # return emailLoginRes
    else:
        print("Failed to log into Riichi city")
        # return None

    deviceid = os.environ["deviceid"]
    SID = os.environ["sid"]
    UID = emailLoginRes["data"]["user"]["id"]
    version = "2.0.6.31622"
    cookies = {
        "channel": "default",
        "lang": "en",
        "deviceid": deviceid,
        "sid": SID,
        "uid": UID,
        "region": "cn",
        "platform": "pc",
        "version": version,
    }
    headers = {
        "User-Agent": "UnityPlayer/2020.3.42f1c1 (UnityWebRequest/1.0, libcurl/7.52.0-DEV)",
        "Content-Type": "application/json",
        "Cookies": json.dumps(cookies),
        "Accept": "application/json",
        "X-Unity-Version": "2020.3.42f1c1",
    }
    payload = {
        "stageType": 4,
        "round": 2,
        "playerCount": 3,
        "gamePlay": 1001,
        "frends": False,
    }
    readOnlineRoomRes = requests.post(
        "https://alicdn.mahjong-jp.net/record/readOnlineRoom", json=payload, headers=headers
    )
    readOnlineRoomResJson = readOnlineRoomRes.json()
    print(readOnlineRoomResJson)
    if readOnlineRoomResJson["code"] == 0:
        print("Successfully read online room")
        readOnlineRoomResJson["data"]
    # format teest
    res = []

    for item in readOnlineRoomResJson["data"]:
        players = item["players"]
        nicknames = [player["nickname"] for player in players]
        print(f"対局中のプレイヤー: {', '.join(nicknames)}")
        res.append(nicknames)
    return res

get_from_riichi_city()

牌譜の取得にゃ

import requests
import json
import dotenv
import os

dotenv.load_dotenv()

# リクエストヘッダーを設定
headers = {
    "Content-Type": "application/json",
    "Cookies": f'{{"channel":"default","deviceid":"{os.environ["deviceid"]}","lang":"en","sid":"{os.environ["sid"]}","version":"2.0.6.31622","platform":"linux"}}',
}

# リクエストボディを設定(.envから読み取る)
payload = {"passwd": os.environ["passwd"], "email": os.environ["email"]}

# リクエストを送信
response = requests.post("https://alicdn.mahjong-jp.net/users/emailLogin", json=payload, headers=headers)

# レスポンスを表示
print(response.text)
emailLoginRes = response.json()
if emailLoginRes["code"] == 0:
    print("Logged into Riichi city as " + emailLoginRes["data"]["user"]["nickname"])

    # return emailLoginRes
else:
    print("Failed to log into Riichi city")
    # return None

deviceid = os.environ["deviceid"]
SID = os.environ["sid"]
UID = emailLoginRes["data"]["user"]["id"]
version = "2.0.6.31622"
cookies = {
    "channel": "default",
    "lang": "en",
    "deviceid": deviceid,
    "sid": SID,
    "uid": UID,
    "region": "cn",
    "platform": "pc",
    "version": version,
}
headers = {
    "User-Agent": "UnityPlayer/2020.3.42f1c1 (UnityWebRequest/1.0, libcurl/7.52.0-DEV)",
    "Content-Type": "application/json",
    "Cookies": json.dumps(cookies),
    "Accept": "application/json",
    "X-Unity-Version": "2020.3.42f1c1",
}

# ここに牌譜IDを入れるにゃ↓
payload = {"isObserve": False, "keyValue": "cni8r269nc78kahoitb0"}


getRoomDataRes = requests.post("https://alicdn.mahjong-jp.net/record/getRoomData", json=payload, headers=headers)
getRoomDataResJson = getRoomDataRes.json()
print(getRoomDataResJson)
with open("gameDataSample.json", "w") as f:
    json.dump(getRoomDataResJson, f)
    f.close()