我想根据大小和关键字参数搜索Github repos。这是我写的Java代码:
package searchTest;
import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.eclipse.egit.github.core.SearchRepository;
import org.eclipse.egit.github.core.client.GitHubClient;
import org.eclipse.egit.github.core.service.RepositoryService;
public class GithubSearch {
private static Map<String, String> searchQuery = new HashMap<String, String>();
public static void main(String[] args) throws IOException {
GitHubClient client = new GitHubClient();
client.setCredentials("username", "password");
RepositoryService service = new RepositoryService(client);
searchQuery.put("keyword","microsoft");
searchQuery.put("size","304");
List<SearchRepository> searchRes = service.searchRepositories(searchQuery);
System.out.println("Search result "+searchRes.toString());
}
}
但我得到的输出是空的:
Search result []
我检查了GitHub Java API javadoc,但找不到解决方法。
谢谢!
答案 0 :(得分:2)
试试jcabi-github(我是其开发者之一):
final Github github = new RtGithub();
final JsonResponse resp = github.entry()
.uri().path("/search/repositories")
.queryParam("q", "java").back()
.fetch()
.as(JsonResponse.class);
final List<JsonObject> items = resp.json().readObject()
.getJsonArray("items")
.getValuesAs(JsonObject.class);
for (final JsonObject item : items) {
System.out.println(
String.format(
"repository found: %s",
item.get("full_name").toString()
)
);
}
完整的例子在这里:https://github.com/jcabi/jcabi-github/tree/master/examples/search-repos
答案 1 :(得分:1)
我为关键字“java”
运行了如下所示的示例代码,但没有大小Map<String, String> searchQuery = new HashMap<String, String>();
searchQuery.put("keyword", "java");
List<SearchRepository> searchRes = null;
try {
searchRes = service.searchRepositories(searchQuery);
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("Search result "+searchRes.toString());
输出如下:
Search result [michaelriha/WASC-Essay, sayems/Keyword-Driven-Framework, youdevise/karg, frinknet/DBG.js, andorp/testkeys, jpolitz/defaults.js, lsmith/article--javascript-this, qiaoyu314/TwitterMiner, cookieglitch/SearchToDB_Twitter, snoooze03/costOfVolatile, dziaduZLasu/java-critical-section-synchro, tvalletta/this-presentation, youdevise/jpoeisis, Sixtease/RtkInputMethod, metabrain/java8-plugin-persitent-local-vars, atestology/roark, jsmreese/pureshare-javascript-api, kentcdodds/genie, TARUNTEJAKOPPULA/Runnung-java-code-with-another-java-program, aleSuglia/SitesLook, neetsdkasu/LittleLisp, odbol/Port-Java-to-C, artfulgeek/Hybrid-Search-and-Delivery-of-Learning-Objects, itcuties/Java-XStream-Complex-Example, codeheadzxc/TomsMovieFinder, truongsinh/generator, nsdevaraj/SwizDAO, dineshkummarc/jameleon-test-suite-3.3-RC1]
现在为查询搜索添加了大小196:
Map<String, String> searchQuery = new HashMap<String, String>();
searchQuery.put("keyword", "java");
searchQuery.put("size", "196");
List<SearchRepository> searchRes = null;
try {
searchRes = service.searchRepositories(searchQuery);
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("Search result "+searchRes.toString());
输出如下:
Search result [michaelriha/WASC-Essay]
我认为“size”参数不是为了修复搜索限制的数量,而是仅获取具有该大小的那些存储库。
答案 2 :(得分:0)
也许您应该尝试仅搜索关键字。我认为他们不支持大小搜索。