DEV 조직 통계를 스프레드시트로 가져오기

DEV용 개인 계정에 대한 통계를 가져오려면 DEV에 API가 있고 이를 수행하는 방법에 대한 훌륭한 자습서가 이미 있기 때문에 쉽게 수행할 수 있지만 DEV 조직인 경우 어떻게 동일하게 수행합니까? ?




조직 수준에는 API가 없지만 내가 작성한 간단한 스크레이퍼를 통해 여전히 데이터를 얻을 수 있습니다. 조직의 대시보드로 이동하기만 하면 됩니다.

대시보드는 공개 페이지와 동일하지 않습니다. 다음과 같은 페이지에 있는지 확인하세요.

https://dev.to/dashboard/organization/ORG_ID>

  • Chrome 열기
  • 조직의 대시보드로 이동
  • Chrome 개발자 도구 열기
  • 아래 코드를 붙여넣으면 표시되는 모든 통계에 대한 CSV가 자동으로 다운로드됩니다.
  • 데이터 검토를 즐기십시오.

  • function articles(){
        const results = []
        const articles = document.querySelectorAll('.single-article')
        let data;
        for(let i = 0; i < articles.length; i++){
            data = article(articles[i])
            if (data) {
                results.push(data)
            }
        }
        return results
    }
    
    function article(article){
        // if there is no time selector that means this article 
        // is not published and will have no useful stats
        if (article.querySelector('time')){
            const name = article.querySelector('h2').innerText
            const tags = article.querySelectorAll('.tag')
            const author = article.querySelector('option[selected=selected]').innerText
            const date = article.querySelector('time').innerText
            const page_view_count = article.querySelector('.page-views-count').innerText
            const reactions_count = article.querySelector('.reactions-count').innerText
            const comments_count = article.querySelector('.comments-count').innerText
            const tags_string = []  
            for(let t = 0; t < tags.length; t++){
                tags_string.push(tags[t].innerText)
            }   
            return [
                name,
                tags_string.join(' '),
                author,
                date,
                page_view_count,
                reactions_count,
                comments_count
            ]
        } else {
            return false        
        }
    }
    
    function save_data(){
        const results = articles()
        results.unshift(['Name','Tags','Author','Date','Page Views Count','Reactions Count','Comments Count'])
    
        const csv_string = []
        for(let i = 0; i < results.length; i++){
            csv_string.push(results[i].join(','))
        }
    
      var blob = new Blob([csv_string.join("\n")], {type: 'text/csv'})
      let e    = document.createEvent('MouseEvents')
      let a    = document.createElement('a')
      const date = new Date().getTime()
      const epoch = Math.round(date / 1000)
    
      a.download = `export-${epoch}.csv`
      a.href = window.URL.createObjectURL(blob)
      a.dataset.downloadurl =  ['text/csv', a.download, a.href].join(':')
      e.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null)
      a.dispatchEvent(e)
    }
    
    save_data()
    

    유일한 단점은 HTML 마크업이 변경되면 이 스크레이퍼가 손상될 수 있으며 이 스크립트를 수정하려면 약간의 변경이 필요하다는 것입니다.

    이 스크립트가 매일 끌어와 Google 스프레드시트로 푸시하고 시간이 지남에 따라 성장하는 것을 보여줄 수 있는 크롬 확장 프로그램으로 패키징되는 것을 볼 수 있었습니다.

    좋은 웹페이지 즐겨찾기