디시인사이드 갤러리

갤러리 이슈박스, 최근방문 갤러리

갤러리 본문 영역

패보 뷰어 쟝타마 사용법

ㅇㅇ(118.220) 2022.08.09 17:02:31
조회 1156 추천 14 댓글 14
														


7ceb857fbd806cf339e698bf06d60403f63867e048a23ad96f




24b0d121e09c28a8699fe8b115ef046c64f02d4999ef



대충 패보 일괄로 다운로드해서 보여주는거

각국의 결과 표시, 점봉 그래프, 패보 재생, 방총 목록, 스탯 표시 등등


다운로드 링크 https://github.com/majaneye/JANTAMA/releases/download/v2.0.0/JantamaViewer_Win-v2.0.0.zip


사용하기 위해서는 패보 리스트를 다운받고 리스트에 있는 패보를 일괄 다운받고 폴더에 집어넣으면 됨



패보 리스트, 패보 일괄 다운받는 법

아래 스크립트를 브라우저 개발자 콘솔에 붙여넣고 엔터


function paifulist(type) {

    let namesub = "";
    if(type==2){ namesub = "danni"; }
    else if(type==1){ namesub = "yuujin"; }
    else if(type==4){ namesub = "taikai"; }
    else if(type==0){ namesub = "all"; }
    else {return; }

    function download(data, fileName) {
        let a = document.createElement("a");
        a.href = URL.createObjectURL(
            new Blob([JSON.stringify(data, null, "  ")],
            {type: "text/plain"}));
        a.download = fileName;
        a.style.display = "none";
        document.body.appendChild(a);
        a.click();
        document.body.removeChild(a);
    }
    function sleep(msec) {
        return new Promise(function(resolve) {setTimeout(function() {resolve();}, msec);});
    }
    async function getRecords(type,namesub) {
        let uuidArray = new Array();
        let loopEndFlag = false;
    for (let i = 0;; i += 20) {
        app.NetAgent.sendReq2Lobby(
                "Lobby",
                "fetchGameRecordList",
                // type 2 マッチング type 1 友人 type 4 大会戦 type 0 段位・友人・大会全て
                {start:i, count:20, type:type},
                function(error, Records) {
                    if (Records.record_list.length == 0) {
                        loopEndFlag = true;
                        return;
                    }
                    for (const record of Records.record_list) {
                        uuidArray.push(record.uuid);
                        console.log(i + " データ取得中 / Downloading");
                    }
                });
            if (loopEndFlag) {
                break;
            }
            await sleep(1000);
        }
        download(uuidArray, "mahjongsoul_" + namesub + "_uuid_list.txt");
    }
    getRecords(type,namesub);
}


그리고 또 아래 스크립트를 복붙하고 엔터. 숫자 2는 단위전, 3은 우인전, 4는 대회

paifulist(2)




24b0d121e09c28a8699fe8b115ef046ecc4dcff7


그럼 이렇게 .txt파일로 다운로드가 됨 아마 1000개까지밖에 못뽑는대

이제 위에 리스트에 있는 패보를 일괄로 다운로드 해야함


아래 스크립트 붙여넣고 엔터

async function paifus(array) {

    for (let index = 0; index < array.length; index++)
    {
        function sleep(msec) {
            return new Promise(function(resolve) {setTimeout(function() {resolve();}, msec);});
        }

        uuid = array[index];
        uuid = uuid.replace(/^.*=(.*)_a.*$/, '$1');
        const pbWrapper = net.ProtobufManager.lookupType(".lq.Wrapper");
        const pbGameDetailRecords = net.ProtobufManager.lookupType(".lq.GameDetailRecords");
        function parseRecords(gameDetailRecords, json) {
            try {
                if (gameDetailRecords.version == 0) {
                    for (let i in gameDetailRecords.records) {
                        const record = (pbWrapper.decode(gameDetailRecords.records[i]));
                        const pb = net.ProtobufManager.lookupType(record.name);
                        const data = JSON.parse(JSON.stringify((pb.decode(record.data))));
                        json.records[i] = {name:record.name, data:data};
                    }
                }
                else if (gameDetailRecords.version == 210715) {
                    for (let i in gameDetailRecords.actions) {
                        if (gameDetailRecords.actions[i].type == 1) {
                            const record = (pbWrapper.decode(gameDetailRecords.actions[i].result));
                            const pb = net.ProtobufManager.lookupType(record.name);
                            const data = JSON.parse(JSON.stringify((pb.decode(record.data))));
                            json.actions[i].result = {name:record.name, data:data};
                        }
                    };
                }
                else {
                    throw ("Unknown version: " + gameDetailRecords.version);
                }
            }
            catch (e) {
                console.log(e);
            }
            return json;
        }
        async function fetchData(url) {
            const response = await fetch(url);
            const arrayBuffer = await response.arrayBuffer();
            return new Uint8Array(arrayBuffer);
        }
        function download(data, uuid) {
            let a = document.createElement("a");
            a.href = URL.createObjectURL(
                new Blob([JSON.stringify(data, null, "  ")],
                {type: "text/plain"}));
            a.download = "mahjongsoul_paifu_" + uuid + ".txt";
            a.style.display = "none";
            document.body.appendChild(a);
            a.click();
            document.body.removeChild(a);
        }

        
        app.NetAgent.sendReq2Lobby(
            "Lobby",
            "fetchGameRecord",
            {game_uuid:uuid, client_version_string:GameMgr.Inst.getClientVersion()},
            async function(error, gameRecord) {
                if (gameRecord.data == "") {
                    gameRecord.data = await fetchData(gameRecord.data_url);
                }
                const gameDetailRecordsWrapper = pbWrapper.decode(gameRecord.data);
                const gameDetailRecords = pbGameDetailRecords.decode(gameDetailRecordsWrapper.data);
                let gameDetailRecordsJson = JSON.parse(JSON.stringify(gameDetailRecords));
                gameDetailRecordsJson = parseRecords(gameDetailRecords, gameDetailRecordsJson);
                gameRecord.data = "";
                let gameRecordJson = JSON.parse(JSON.stringify(gameRecord));
                gameRecordJson.data = {name:gameDetailRecordsWrapper.name, data:gameDetailRecordsJson};
                download(gameRecordJson, uuid);
            });

        console.log((index+1) + "/" + array.length + "(" + uuid + ")" + " データ取得中 / Downloading");

        await sleep(2000);
    }
}


그리고 또 아래 스크립트 양식대로 붙여넣고 엔터 "uuid" 부분에는 아까 뽑은 패보 uuid 붙여넣으면 됨

paifus(["uuid0",

  "uuid1",
  "uuid2",])



24b0d121e09c28a8699fe8b115ef046c62f32a49

24b0d121e09c28a8699fe8b115ef046547aafd


요런식으로 ㅇㅇ 하면 패보(paifu) 다운끝임 전부 아까 받은 쟝타마에 Paifu 폴더에 붙여넣으면 됨





24b0d121e09c28a8699fe8b115ef0468e1aceabf65


패보 3개만 불러왔음

위에 리그 버튼 누르면 패보에 있는 모든 플레이어 스탯 뽑고 점수도 매길 수 있음 10-20, 10-30, m리그 등등 난 잘 모르겠다


개인적으로 km리그에서 잘 쓸 수 있을지 않을까 해서 가져옴 아님말궁


추천 비추천

14

고정닉 10

0

댓글 영역

전체 댓글 0
등록순정렬 기준선택
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 제목 글쓴이 작성일 조회 추천
설문 경제관념 부족해서 돈 막 쓸 것 같은 스타는? 운영자 24/05/13 - -
AD 나혼렙 어라이즈 그랜드 론칭! 운영자 24/05/09 - -
공지 작혼 가이드 [62] ㅋㅇ.갤로그로 이동합니다. 19.09.02 425988 162
공지 공지용으로 작성한 초보자를 위한 역설명 [112] 찬타(211.200) 13.01.22 245248 258
2074173 천만 치다가 작혼 넘어왔는데 작갤러(182.213) 18:06 8 1
2074172 뉴비 초심을 못벗어남... 썡뉴비(218.152) 18:03 21 0
2074171 뉴비 장풍패 질문 있습니다 작갤러(118.235) 17:54 10 0
2074170 아름다운 마작 해왔음 18000점 노랑노랑갤로그로 이동합니다. 17:43 19 0
2074169 개인적으로 느낀 1번가 작혼 [1] ㅇㅇ(119.195) 17:42 32 0
2074168 자꾸팅기는데 작갤러(112.149) 17:38 11 0
2074167 콜라보캐때문에 일섭계정 사려는데 ㅇㅇ(118.235) 17:22 15 0
2074166 글자패 이건 처음에 2개떠도 그냥 버리는게 나은거같은데[ 작갤러(39.118) 17:05 18 0
2074165 작혼 중간에 번개표시뜨는거 뭐임?? [1] 작갤러(211.224) 17:01 22 0
2074163 작사달았음!! [5] 네임캐슬갤로그로 이동합니다. 15:43 81 3
2074162 치또이가... 하고싶어요... [1] ㅇㅇ갤로그로 이동합니다. 15:30 37 0
2074161 알러지검사 결과 유동(223.39) 15:11 43 0
2074160 마작 처음 배워보려면 어떤걸로 해야함? [4] 작갤러(220.73) 15:06 48 0
2074159 스킨투표이거 주작이잔아 [1] 시로하갤로그로 이동합니다. 15:00 66 0
2074158 뉴비 순정구련보등 해왔어 [3] ㅇㅇ(220.126) 14:57 67 6
2074157 동2국에 0점 없는 상황에서 끝나버렸는데 왜 끝난거임 [3] 작갤러(211.177) 14:39 74 0
2074156 친뽀냐 ㅇㅇ(121.188) 14:29 34 1
2074155 일번가는 리세계없나? 작갤러(211.223) 14:17 29 0
2074154 무츠키쨩 존나꼴리네 [4] ㅇㅇ(49.165) 13:30 90 0
2074137 나는 왜 거기서 그걸 냈을까 작갤러(211.53) 12:28 24 0
2074136 작혼콘 울트라 출시!!! [3] 뀨효미갤로그로 이동합니다. 12:10 112 3
2074135 정신병자 갤러리 [2] 작갤러(1.237) 11:06 84 1
2074133 무좆금으로 할거면 작혼 1번가 뭐가 맞음 [7] ㅇㅇ(106.250) 10:36 197 0
2074132 현시간부로 아침작을 실시한다 [1] 동장의마녀갤로그로 이동합니다. 08:57 88 1
2074130 1번가 작혼 둘다해보고 느낀점 ㅇㅇ(211.234) 06:17 149 0
2074129 히비키 라이브 스킨 작갤러(210.121) 05:48 64 0
2074128 나도 1등 하고 싶어 나도 1등 하고 싶어 나도 1등 하고 싶어 ㅇㅇ갤로그로 이동합니다. 05:33 44 0
2074124 첫역만햇서요 [2] ㅇㅇ갤로그로 이동합니다. 03:57 100 3
2074122 일번가 리세 40번째인데 언제쯤 가능? [1] 작갤러(114.30) 03:50 87 0
2074121 마작 힘드네 [2] 미카엘.갤로그로 이동합니다. 03:37 123 0
2074115 왜 다들 딸깍만관 딸깍하네만 딸깍배만을 하는데스? [1] Arachne갤로그로 이동합니다. 02:48 119 0
2074114 로리 좋아하면 안되는 이유가 대체 뭐죠? ㅇㅇ(125.182) 02:44 77 0
2074113 작혼 패보 영상으로 어캐 저장함? 작갤러(116.32) 02:43 26 0
2074111 작혼 가챠 어떰? 창렬임? [6] ㅇㅇ(211.224) 02:34 150 0
2074109 바닥 레잔도데숭 [1] Arachne갤로그로 이동합니다. 02:29 65 0
2074101 뉴빈데 특정 캐릭터 뽑고 싶은데 이거 확률업 이벤트같은거 잇나요? [3] ㅇㅇ(125.241) 01:45 68 0
2074100 뉴비 도움!!!! [3] 작갤러(121.167) 01:44 78 0
2074099 응애 뉴비 작걸 달았서요 하와와와... [1] Nomad갤로그로 이동합니다. 01:41 57 0
2074095 아키하바라에서 작혼봄 [1] ㅇㅇ(220.126) 01:29 109 0
2074092 작린이 승단했삼 [1] 위례성갤로그로 이동합니다. 00:48 47 1
2074091 아 미친놈들아 [1] ㅇㅇ갤로그로 이동합니다. 00:33 63 0
2074090 작혼 계정 팔면 보통 얼마함 arran갤로그로 이동합니다. 00:19 62 0
2074089 일번가 스킨보고 작혼 지웠다 [1] 작갤러(121.162) 00:06 144 1
2074087 캐르릉... 캐르릉... [1] 황조롱이갤로그로 이동합니다. 05.13 52 1
2074085 국사무쌍 했다 [2] 작갤러(218.147) 05.13 93 1
2074084 작혼뉴비 리치브금만 갖고싶음 [1] 작갤러(221.133) 05.13 62 0
2074082 님들아 일번가 게스트 이거 머에요? [5] 해해해해해갤로그로 이동합니다. 05.13 179 0
2074074 마작 뉴비가 생각했던 마작vs실제 마작 작갤러(121.131) 05.13 122 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2