자유게시판

전체보기

모바일 상단 메뉴

본문 페이지

[잡담] 캐쉬백 대비 내가 지금까지 얼마 캐시질렀나 확인하기

아이콘 리로벨리아
댓글: 6 개
조회: 994
추천: 2
2024-09-28 21:57:36
17년~24년지금 
넥슨에 캐시지른 금액 확인 방법..

※넥슨 아이디 접속한상태로 
주소이동 
충전 /사용/ 철회내역에서 

F12 클릭하여 
Console 클릭하여
> 에 아래코드 복사 붙여넣기 





복사할 코드 이아랫부분만 복사해서 붙여넣기할것. -----부분은 복사하지않는다.

====================================================


혹시 해당문구가 뜨신다면 콘솔창에 allow pasting을 입력후 엔터 눌러주세요.

--------------------------------------------------------------------------- 


const url='https://member.nexon.com/cash/chargelist.aspx';

const startAt = 'var data';
const endAt = ';';

function sleep(ms) {
  return new Promise((resolve) => {
    setTimeout(resolve, ms);
  });
}

function tcomma(value) {
  return String(value).replace(/B(?=(d{3})+(?!d))/g, ',');
}

async function getAmount(option) {
  const { year, isUsed = false, includeOther = false, month = 12 } = option;
  return new Promise((resolve) => {
    $.get(url, {
      pagecode: isUsed ? 2 : 1,
      year,
      month,
    }, function(response){
      const startIdx = response.indexOf(startAt);
      const endIdx = response.indexOf(endAt, startIdx);
      const usedString = response.substr(startIdx + (startAt.length+1), endIdx - startIdx);

      let used = usedString.split(',').reduce((prev, curr) => prev + Number(curr.replace(/[^0-9]/g, '')), 0);
      if (includeOther && !isUsed) {
        const secondStartIdx = response.indexOf(startAt, endIdx);
        const secondEndIdx = response.indexOf(endAt, secondStartIdx);
        const secondUsedString = response.substr(secondStartIdx + (startAt.length+1), secondEndIdx - secondStartIdx);

        const secondUsed = secondUsedString.split(',').reduce((prev, curr) => prev + Number(curr.replace(/[^0-9]/g, '')), 0);
        used += secondUsed;
      }

      resolve(used);
    });
  });
}

function drawChart(data) {
  const chart1 = [];
  const chart2 = [];
  const chartColumns = [];
  let maxAmount = 0;
  let totalUsed = 0;
  let totalCharged = 0;

  const tableHeader = document.querySelector('.cashListWrap table thead');
  const tableBody = document.querySelector('.cashListWrap table tbody');
  tableHeader.innerHTML='';
  tableBody.innerHTML='';

  const thead = document.createElement('tr');
  thead.innerHTML = '<th>번호</th><th>연도</th><th>충전/사용</th><th>금액</th>';
  tableHeader.appendChild(thead);

  let idx = 1;
  for(const [year, amount] of data.entries()) {
    chartColumns.push(`${year}년`);
    chart1.push(amount.used);
    chart2.push(amount.charged);
    maxAmount = Math.max(maxAmount, amount.used);
    maxAmount = Math.max(maxAmount, amount.charged);

    totalUsed += amount.used;
    totalCharged += amount.charged;

    const chargedRow = document.createElement('tr');
    chargedRow.innerHTML = `<td>${idx}</td><td>${year}년</td><td>충전</td><td>${tcomma(amount.charged)}원</td>`;
    tableBody.appendChild(chargedRow);
    idx += 1;

    const usedRow = document.createElement('tr');
    usedRow.innerHTML = `<td>${idx}</td><td>${year}년</td><td>사용</td><td>${tcomma(amount.used)}원</td>`;
    tableBody.appendChild(usedRow);
    idx += 1;
  }

  const totalRow = document.createElement('tr');
  totalRow.innerHTML = `<td class="totalTxt" colspan="2"><span>총합<span></td><td>충전: ${tcomma(totalCharged)}원</td><td>사용 ${tcomma(totalUsed)}원</td>`;
  tableBody.appendChild(totalRow);

  const option = {
        animate: false,
        seriesColors: ["#6f81f2","#d0d2e0"],
        seriesDefaults: {
            renderer: $.jqplot.BarRenderer,
            pointLabels: { show: false },
            rendererOptions: {
                barWidth: 10
            },
      shadow: false
        },
        axes: {
            xaxis: {
                renderer: $.jqplot.CategoryAxisRenderer,
                ticks: chartColumns,
        tickOptions: {
          showGridline : false
        }
            },
            yaxis: {
        max: maxAmount, numberTicks: 10,
        min: 0,
                tickOptions: {
                  formatString: "%'d원"
        }
            }
        },
        axesStyles: {
            borderWidth: 0
        },
    axesDefaults: {
      tickRenderer: $.jqplot.CanvasAxisTickRenderer,
      tickOptions: {
        fontSize: "10pt",
        fontFamily: "'돋움', 'dotum', 'Trebuchet MS', 'Lucida Grande', 'Tahoma', 'Helvetica', 'Arial', sans-serif"
      }
    },
    grid: {
    backgroundColor: "white",
    borderWidth: 0,
    gridLineColor: "#EEEEEE",
    gridLineWidth: 1,
    borderColor: "#EEEEEE",
    shadow: false
        },
        highlighter: {
            show: true,
            useAxesFormatters: false,
            tooltipAxes: "y",
            tooltipFormatString: "%'d원"
        }
  };

  $.jqplot("graphCharge", [chart1, chart2], option);
}

async function work(includeOther) {
  document.getElementById('graphCharge').innerHTML = '';
  document.querySelector('.graphInfoSec .userType .user1').innerText = '충전금액';
  document.querySelector('.graphInfoSec .userType .user2').innerText = '사용금액';
  const data = new Map();
  const nowYear = new Date().getFullYear();
  const nowMonth = new Date().getMonth() + 1;

  for(let target=2017; target < nowYear; target += 1) {
    data.set(target, {
      used: await getAmount({
        year: target,
        isUsed: true,
        includeOther,
      }),
      charged: await getAmount({
        year: target,
        includeOther,
      }),
    });
    await sleep(1000);
  }

  data.set(nowYear, {
    used: await getAmount({
      year: nowYear,
      isUsed: true,
      includeOther,
      month: nowMonth,
    }),
    charged: await getAmount({
      year: nowYear,
      includeOther,
      month: nowMonth,
    }),
  });

  drawChart(data);
}

work(true).catch(console.log);


결과표 ..


 
네 ... 대충  올해는 110만원정도 질렀네요 지금까지 
16만원정도 사용인건 넥슨 캐쉬 이벤트 당첨되어서 받은캐쉬 사용 인거같아요
(스크린샷 이벤트나 뭐그런거..) 

캐쉬백코인 아바타 한벌받을려면 150개 필요한데 
단순수치로보면 41만원정도 더써야 아바타를 얻을수 있겠네요!! 
다음달 올인원키트 확정 1타 까야하나 

네 지옥을 맛봤습니다 ...혼자만 맛볼수가 없

숙달된 인벤러

Lv74 리로벨리아

망전 즐기는 아재는 컨셉하기도 슬슬 현탐오는중

모바일 게시판 하단버튼

댓글

새로고침
새로고침

모바일 게시판 하단버튼

지금 뜨는 인벤

더보기+

모바일 게시판 리스트

모바일 게시판 하단버튼

글쓰기

모바일 게시판 페이징

최근 HOT한 콘텐츠

  • 마영전
  • 게임
  • IT
  • 유머
  • 연예