2017-07-10 2 views
2

Ich habe viele Threads gefunden - sogar ein paar Projekte, die den Beitragskalender mit anderen APIs als der github api einbetten - aber keine dieser Methoden oder Threads antwortet tatsächlich die Frage. One comes close aber es ist ein Nein.Erhalte alle öffentlichen Benutzerbeiträge aka "Kalenderdaten" (github api v3)

ich einfach versuche, die Gesamtzahl der Beiträge für einen Benutzer für den Zugriff auf wie in Ihrem Kalender auf der GitHub Profilseite angezeigt, wie unten gezeigt ...

enter image description here

Die API-Dokumentation beschreiben sammeln Repo Contrib Daten, so habe ich versucht, blind auf die API mit angeblichen Vermutungen stochern ohne Erfolg. Weiß jemand zufällig, ob es tatsächlich einen brauchbaren Endpunkt für diese Daten gibt? Muss ich diese Informationen wirklich selbst berechnen oder einen schmutzigen HTML Scraping Unsinn machen? Das scheint dumm ... Jeder?

UPDATE: Hier ist eine Lösung mit cheerio und Regex für alle, die eine schnelle Web-Suche Lösung Schaben

const axios = require('axios') 
const cheerio = require('cheerio') 
const url = 'https://github.com/archae0pteryx' 

function getCommits(url) { 
    return new Promise((resolve, reject) => { 
     axios.get(url).then(res => { 
      const load = cheerio.load(res.data) 
      const parsed = load('div.js-contribution-graph > h2').text() 
      const reg = /\d+/g 
      const x = parsed.match(reg) 
      resolve(x) 
     }).catch(err => reject(err)) 
    }) 
} 


getCommits(url) 
    .then(x => console.log(x)) 
    .catch(err => console.error(err)) 

Antwort

1

Sie können xmlstartlet verwenden, um die XML-Datei, die Sie aus Ihrem Kalender svg erhalten zu analysieren: https://github.com/users/archae0pteryx/contributions.

Es ist besser als Github Website kratzen, aber immer noch nicht die offizielle API verwenden:

curl -s "https://github.com/users/archae0pteryx/contributions" | \ 
    xmlstarlet sel -t -v "sum(/svg/g/g/rect/@data-count)"