2015-05-29 22 views

Odpowiedz

16

Wygląda na to, że GitHub używa interfejsu API do napisania strony trendującej i nie wyświetla jej ponownie jako konkretnego interfejsu API. Musisz użyć Repository Search API. Mam następnie na examples on this page, która mogłaby rozwiązać swoje potrzeby przez:

# We'll use the `date` command to get the date for "7 days ago" 
$ date -v-7d '+%Y-%m-%d' 
# => 2013-07-15 

curl -G https://api.github.com/search/repositories --data-urlencode "sort=stars" --data-urlencode "order=desc" --data-urlencode "q=language:java" --data-urlencode "q=created:>`date -v-7d '+%Y-%m-%d'`" 

a następnie przejść stamtąd. Można także swoje życie o wiele łatwiejsze, instalując jq na OS X lub innych platform, aby uzyskać ładniejszą wyjście:

curl -G https://api.github.com/search/repositories --data-urlencode "sort=stars" --data-urlencode "order=desc" --data-urlencode "q=language:java" --data-urlencode "q=created:>`date -v-7d '+%Y-%m-%d'`" | jq ".items[0,1,2] | {name, description, language, watchers_count, html_url}" 
    % Total % Received % Xferd Average Speed Time Time  Time Current 
           Dload Upload Total Spent Left Speed 
    0  0 0  0 0  0  0  0 --:--:-- --:--:-- -- 77 161k 77 125k 0  0 131k  0 0:00:01 --:--:-- 0100 161k 100 161k 0  0 163k  0 --:--:-- --:--:-- --:--:-- 163k 
{ 
    "name": "vibrant.js", 
    "description": "Extract prominent colors from an image. JS port of Android's Palette.", 
    "language": "JavaScript", 
    "watchers_count": 1466, 
    "html_url": "https://github.com/jariz/vibrant.js" 
} 
{ 
    "name": "JSPatch", 
    "description": "JSPatch bridge Objective-C and JavaScript using the Objective-C runtime. You can call any Objective-C class and method in JavaScript by just including a small engine.", 
    "language": "Objective-C", 
    "watchers_count": 830, 
    "html_url": "https://github.com/bang590/JSPatch" 
} 
{ 
    "name": "KRVideoPlayer", 
    "description": "类似Weico的播放器,支持竖屏模式下全屏播放", 
    "language": "Objective-C", 
    "watchers_count": 524, 
    "html_url": "https://github.com/36Kr-Mobile/KRVideoPlayer" 
} 
+5

ładne, ale jeśli się nie mylę, zażądać za pomocą parametru "q = stworzony:>' date" powróci repozytoria utworzone później niż 7 dni temu. Myślę, że repozytorium trendów jest tym, które ma najwięcej gwiazdek, pomimo daty utworzenia – Lester

+0

Ten parametr w połączeniu z '--data-urlencode" sort = stars "--data-urlencode" order = desc "' daje najbardziej oznaczone repo z ostatni tydzień. Możesz filtrować to do mniej niż tygodnia, jeśli chcesz, ale to dobry początek! – mbb

+5

To nie prawda. Ten sam link, który wskazałeś, mówi, że ten kod to "Znajdź najgorętsze repozytoria utworzone w zeszłym tygodniu". Strona trendów GitHub zawiera informacje o najczęstszych elementach w zakresie czasu. Nie ma sposobu, aby uzyskać te informacje z aktualną wersją API. Rozwiązaniem, które zobaczyłem w innych miejscach, było przeanalizowanie kodu HTML strony. –

1

Obecnie nie ma GitHub API do listy trendów repozytoriów dostać. Jedynym sposobem jest przemieszczenie elementów ze strony internetowej za pomocą selektorów. Można otworzyć https://github.com/trending w Chrome i uruchom następujący kod w konsoli DevTools:

wyjściowy
$$('ol.repo-list li h3').forEach(el => console.log(el.innerText)); 

Ta wola listę trendów repozytoriów nazwy. Aby uczynić go bardziej zautomatyzowanym, rozważ Headles Chrome lub inne podobne narzędzia.

Istnieje również kilka projektów, które już rozwiązały to zadanie w różnych językach. Na przykład:

Powiązane problemy