Inbox 알림 알림 내보내기

오늘 Google이 Inbox by Gmail의 폐쇄를 발표했습니다.
지금까지 매일 신세를 지고 왔습니다만, 향후 업데이트되지 않으면 Gmail로 이행할 수밖에 없을까라고 생각하고 있습니다.

Inbox에는 몇 가지 고유한 기능이 있으며 그 중 알림(Google Reminders)은 후속 서비스인 Google ToDo로 데이터가 이전되지 않습니다.
내보내려고 해도, API도 준비되어 있지 않기 때문에 곤란해 버렸습니다. .

여러가지 시도한 결과, Google Calendar의 통신을 해석해, Google의 클로즈드 API를 사용하는 것으로 데이터의 export가 가능했으므로 방법을 정리합니다.

포인트



  • htps : // 사마귀 x. 오, ぇ. 코m/이 사용하는 API의 끝점은 https://inbox.google.com/sync/u/0/i/bv와 같은 독특한 형식이므로 오픈 API에 가까운 형식의 Google Calendar API를 사용합니다.
  • 자격 증명은 브라우저로 로그인 한 것을 그대로 사용하면 간단합니다
  • 타임 스탬프는 밀리 세컨드 단위로 표기

  • Google Calendar에서 사용하는 Closed API



    Google 캘린더를 열고 '내 캘린더'의 '알림'을 선택하면 먼저 알림을 표시합니다.

    Chrome 개발자 도구의 '네트워크' 탭을 열면 많은 통신이 이루어지므로 검색 폭스에 'reminders/list'를 입력하면 해당 통신을 찾을 수 있습니다.


    list?key=XXX와 같은 이름의 통신을 찾아 마우스 오른쪽 버튼으로 클릭하고 "Copy", "Copy as cURL"및 메뉴를 클릭하여 cURL에 대한 명령을 복사 할 수 있습니다.

    여기에는 쿠키 등 자격 증명도 포함되어 있으므로 그대로 붙여 넣으면 CLI로 인증에 시달리지 않습니다.

    다음과 유사한 명령이 복사되어야 합니다(사용자별 다른 값은 XXX로 대체됨).
    curl 'https://reminders-pa.clients6.google.com/v1internalOP/reminders/list?key=XXX' \
    -H 'cookie: SID=XXX; HSID=XXX; SSID=XXX; APISID=XXX; SAPISID=XXX; NID=XXX; 1P_JAR=XXX; SIDCC=XXX' \
    -H 'origin: https://reminders-pa.clients6.google.com' \
    -H 'accept-encoding: gzip, deflate, br' \
    -H 'x-origin: https://calendar.google.com' \
    -H 'accept-language: XXX' \
    -H 'authorization: SAPISIDHASH XXX' \
    -H 'x-requested-with: XMLHttpRequest' \
    -H 'x-client-data: XXX' \
    -H 'x-goog-authuser: XXX' \
    -H 'pragma: no-cache' \
    -H 'x-clientdetails: appVersion=XXX&platform=XXX&userAgent=XXX' \
    -H 'x-goog-encode-response-if-executable: base64' \
    -H 'user-agent: XXX' \
    -H 'content-type: application/json+protobuf' \
    -H 'accept: */*' \
    -H 'cache-control: no-cache' \
    -H 'authority: reminders-pa.clients6.google.com' \
    -H 'referer: https://reminders-pa.clients6.google.com/static/proxy.html?usegapi=XXX&jsh=XXX' \
    -H 'x-javascript-user-agent: google-api-javascript-client/1.1.0' \
    -H 'x-referer: https://calendar.google.com' \
    --data-binary '{"1":{"4":"WRP / /WebCalendar/calendar_180906.14_p2"},"2":[{"1":3},{"1":16},{"1":1},{"1":8},{"1":11},{"1":5},{"1":6},{"1":13},{"1":4},{"1":12},{"1":7},{"1":17}],"5":0,"6":100,"16":"XXX"}' \
    --compressed
    

    요청 내용은 --data-binary의 JSON에 설명되어 있습니다.

    요청 내용 세부정보



    요청의 JSON을 형성하고 살펴 보겠습니다.
    {
      "1": {
        "4": "WRP / /WebCalendar/calendar_180906.14_p2"
      },
      "2": [
        {
          "1": 3
        },
        {
          "1": 16
        },
        {
          "1": 1
        },
        {
          "1": 8
        },
        {
          "1": 11
        },
        {
          "1": 5
        },
        {
          "1": 6
        },
        {
          "1": 13
        },
        {
          "1": 4
        },
        {
          "1": 12
        },
        {
          "1": 7
        },
        {
          "1": 17
        }
      ],
      "5": 0,
      "6": 100,
      "16": "1514732400000"
    }
    

    숫자로 표기되어 있기 때문에 의미 불명입니다만, 추측하면서 검증해 본 결과, 이하와 같은 의미였습니다.
    14, 24, 25는 알림 상태가 완료된 경우에 사용합니다.

    덧붙여서, 이러한 숫자로 표기되고 있는 것은 Protocol Buffer로 구현된 API이기 때문이라고 예상됩니다.



    의미
    필수
    기본


    1
    요청 소스 정보
    거짓

    2
    검색할 데이터
    거짓

    5
    알림 상태(0: 미완료만/1: 완료 포함)
    거짓
    0

    6
    취득 최대 건수
    거짓
    100

    14
    알 수 없음
    거짓

    16
    범위 지정(종료일시)
    거짓
    모두

    24
    범위 지정(종료일시)
    거짓
    모두

    25
    범위 지정(시작일시)
    거짓
    모두


    실제 요청



    실제 요청으로 추천은 다음과 같은 형태입니다.
    생략한 부분은 브라우저에서 복사한 상태를 사용하십시오.
    curl --data-binary '{"5": 1, "6": 10000}' \
    > reminders.json
    



    내보낸 데이터를 jq 등으로 성형하면 필요한 데이터만 꺼낼 수 있어 편리합니다.
    예를 들어, 알림 내용만 추출하려면 다음과 같이 합니다.
    cat reminders.json | jq '.["1"][]["3"]'
    

    좋은 웹페이지 즐겨찾기