Qiita 좋아요 숫자 순위 API 만들기

TL;DR



QiitaAPI , Google Apps Script , Glitch , Firebase 을 이용하여 Qiita 좋아요 번호 순위 API 을 만들었습니다.
활용하세요!
https://us-central1-qiita-trend-web-scraping.cloudfunctions.net/qiitaScraiping/{type}/{YYYY-MM-DD}

{type}


  • daily ... 일별 순위
  • weekly ... 주별 순위

  • {YYYY-MM-DD}



    랭킹 등록일.
    ※2018/9/23 이후가 취득 가능.

    e.g.)
  • URL
    h tps : // u-sen t et al. c ぉ d 훈 c 치온 s. 네 t/쿠이타 Sc 라이핑 g/우에 kly/2018-09-23
  • Response
  • {
      "data": [
        {
          "updated_at": "2018-09-19T12:29:34+09:00",
          "url": "https://qiita.com/mikan3rd/items/ba4737023f08bb2ca161",
          "user": {
            "items_count": 24,
            "name": "",
            "followees_count": 19,
            "id": "mikan3rd",
            "website_url": "https://www.wantedly.com/users/809162",
            "github_login_name": "mikan3rd",
            "profile_image_url": "https://avatars2.githubusercontent.com/u/27764298?v=3",
            "followers_count": 71,
            "location": "Tokyo",
            "twitter_screen_name": "mikan_the_third",
            "organization": "",
            "permanent_id": 178077,
            "facebook_id": "",
            "linkedin_id": "",
            "description": "文系から転職したエンジニア2年生。\r\nReactとPythonがちょっと書ける"
          },
          "id": "ba4737023f08bb2ca161",
          "tags": [
            {
              "versions": [],
              "name": "Python"
            },
            {
              "name": "Instagram",
              "versions": []
            },
            {
              "name": "GoogleCloudPlatform",
              "versions": []
            }
          ],
          "created_at": "2018-09-17T21:12:27+09:00",
          "title": "[2018] 個人でも使える!おすすめAPI一覧",
          "likes_count": 1209
        },
        {
          "url": "https://qiita.com/tkrkt/items/2fc9a9a59ce679aab728",
          "user": {
            "facebook_id": "",
            "linkedin_id": "",
            "description": "趣味エンジニアです。",
            "items_count": 15,
            "name": "",
            "followees_count": 4,
            "id": "tkrkt",
            "website_url": "",
            "github_login_name": "tkrkt",
            "profile_image_url": "https://qiita-image-store.s3.amazonaws.com/0/60243/profile-images/1473695175",
            "followers_count": 34,
            "location": "",
            "twitter_screen_name": null,
            "organization": "",
            "permanent_id": 60243
          },
          "id": "2fc9a9a59ce679aab728",
          "tags": [
            {
              "versions": [],
              "name": "コメント"
            },
            {
              "name": "VSCode",
              "versions": []
            }
          ],
          "created_at": "2018-09-20T21:19:45+09:00",
          "title": "なぜ我々はいまだに文字列でコメントを書いているのか",
          "likes_count": 909,
          "updated_at": "2018-09-21T18:34:38+09:00"
        },
        {"以下略"}
      ]
    }
    

    소개



    정보 수집에 있어서 항상 이 기사를 읽고 있습니다. 신세를지고 있습니다!
    【매일 자동 갱신】 Qiita의 데일리 스톡 랭킹! 주간도 있습니다.

    기사를 읽는 동안 문득 생각했습니다. 이것은 어떻게 랭킹을 만들고 있는 거야? ?
    그래서, 학습도 겸해 바퀴의 재발명을 실시하기로 했습니다.
    (참고: '바퀴의 재발명'을 부인하는 것은 잘못되었을 수 있다. )

    목표



    이번에는 우선 다음을 목표로 합니다.
  • 무료 서비스만 이용
  • 순위가 자동으로 업데이트됩니다
  • (모처럼이므로) WebAPI 화

  • QiitaAPI



    어쨌든 Qiita 데이터를 집계하고 순위를 만들어야합니다. Qiita의 모든 페이지를 확인하는 것은 현실적이지 않으므로 QiitaAPI을 스크래핑하는 것으로 가정합니다.
    특정 날짜로 작성된 기사 목록을 검색하고, 좋아하는 숫자로 정렬하고, 순위 데이터를 작성합니다.

    GoogleAppsScript



    QiitaAPI를 스크래핑하고 순위를 자동으로 업데이트해야하므로 작업 스케줄러를 위해 자동으로 시작하는 것이 필요합니다. 무료로 사용할 수 있고 cron처럼 움직일 수 있는 것을 찾았는데, Google Apps Script 을 만났습니다.
    이쪽을 활용해, 우선 랭킹 데이터는 2시간 두고 갱신하는 것으로 합니다.

    Firebase



    우선 무료로 무언가를 만드는 것이라면 Firebase이 편합니다.
    그 중, 이번은 이하가 이용하기 쉽다고 합니다.

  • Cloud Functions
    →WebAPI의 엔드포인트로 이용.

  • Cloud Firestore
    →자동 갱신한 데이터의 저장처로서 이용.

  • 지금까지의 정보를 조합하면 다음과 같은 구성이 됩니다.


    하지만 여기에서 CloudFuncons의 무료 테두리에서는 Google 이외의 서비스에 요청을 던질 수 없다는 주제가 발생했습니다.

    Glitch



    위의 문제를 해결하기 위해 Glitch이라는 무료 Node.js 서버를 활용하십시오.
    Glitch에서 QiitaAPI를 호출하고 데이터를 성형한 후 CloudFunctions를 통해 데이터를 등록합니다.

    완성형



    여기까지 모두 무료 서비스로 시스템을 정리할 수 있었습니다.
    위를 모두 정리하면 다음과 같습니다.



    끝에



    무료 웹 서비스 전용 조합으로 WebAPI를 만들 수 있었습니다.
    또한 이것을 사용하여 Qiita-Trend-PWA이라는 사이트를 만들었습니다.
    무료 서비스를 결합하면 무엇이든 할 수 있습니다.

    여러분도 무료 서비스를 꼭 활용해 주세요!

    참고


  • 【매일 자동 갱신】 Qiita의 데일리 스톡 랭킹! 주간도 있습니다.
  • '바퀴의 재발명'을 부인하는 것은 잘못되었을 수 있다.
  • 좋은 웹페이지 즐겨찾기