Я хотел бы знать, какие проекты, размещенные на Google Code, имеют больше всего звезд, особенно при поиске по ярлыку, например:
Как отсортировать / отфильтровать проекты Google Code по звездочкам?
comment
Это похоже на вопрос webapps.stackexchange.com, а не на SO.
- person nemequ   schedule 19.09.2013
Ответы (2)
Сортировка по звездам на странице поиска проектов не поддерживается. Смог написать код для удаления страницы, чтобы получить необходимую информацию.
Надеюсь, поможет.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class ReadGoogleProjectSortByStars {
public static void main(String[] args) throws IOException {
String urlPath = "https://code.google.com/hosting/search?q=label%3AAndroid&filter=0&mode=&start=";
// urlPath = "https://code.google.com/hosting/search?q=label%3AAndroid+stackoverflow&projectsearch=Search+projects&filter=0&mode=&start=";
int start = 0;
List<Project> projects = new ArrayList<Project>();
boolean done = false;
while(!done) {
String urlStr = urlPath + start;
URL url = new URL(urlStr);
BufferedReader in = new BufferedReader(
new InputStreamReader(url.openStream()));
String inputLine;
String projectUrl = null, stars = null;
while ((inputLine = in.readLine()) != null) {
int urlIndex = -1, starIndex = -1;
if(inputLine.contains(" style=\"font-size:medium\">") && (urlIndex = inputLine.indexOf(" href=\"/p/")) != -1) {
if(projectUrl != null) {
Project project = new Project();
project.url = projectUrl;
project.stars = "0";
projects.add(project);
}
String projectTempUrl = inputLine.substring(urlIndex + " href=\"/p/".length());
projectUrl = "https://code.google.com/p/" + projectTempUrl.substring(0, projectTempUrl.indexOf("\""));
}
if((starIndex = inputLine.indexOf("id=\"star_count-")) != -1) {
stars = inputLine.substring(inputLine.indexOf(">") + 1, inputLine.indexOf("</span>"));
Project project = new Project();
project.url = projectUrl;
project.stars = stars;
projects.add(project);
projectUrl = stars = null;
}
if(inputLine.contains(" - did not generate any results.")) {
done = true;
break;
}
}
in.close();
start +=10;
if(projectUrl != null) {
Project project = new Project();
project.url = projectUrl;
project.stars = "0";
projects.add(project);
}
}
Collections.sort(projects, new Comparator<Project>() {
@Override
public int compare(Project project1, Project project2) {
Integer stars1 = Integer.parseInt(project1.stars);
Integer stars2 = Integer.parseInt(project2.stars);
return -stars1.compareTo(stars2);
}
});
System.out.println("Total projects:" +projects.size());
for (Project project : projects) {
System.out.println(project.url + ":" + project.stars);
}
}
}
class Project {
String url;
String stars;
}
person
krishnakumarp
schedule
19.09.2013
Хорошая идея, но я не могу ее здесь протестировать, потому что я нахожусь в среде прокси (поддержка прокси было бы неплохо)
- person MRalwasser; 19.09.2013
См. java.com/en/download/help/proxy_setup.xml. и stackoverflow.com/a/120802/276263
- person krishnakumarp; 19.09.2013
Спасибо, проблема с прокси решена - однако результатов не хватает многим проектам. Например. если вы используете code.google.com/hosting/ в качестве urlpath отсутствует проект guava, у которого более 4300 звезд.
- person MRalwasser; 19.09.2013
интересный. я получил гуаву в определенных пробежках. не появлялся в некоторых других тиражах. Это работает, хотя code.google.com/hosting/ Возможно, некоторые граничные условия не кодируются для ....
- person krishnakumarp; 19.09.2013
Потрясающий! Работает как шарм = D
- person CodeMonkey; 29.11.2013
Я бы сказал, используйте &sort=stars
, как они это делают при поддержке кода Google, но это не работает. К сожалению, я не уверен, что это возможно ...
person
Thomas Ayoub
schedule
17.09.2013