/* This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ /* Copyright 2010 Jamie Walters based on code by Joe Robinson */ import java.net.URL; import java.net.URLConnection; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; public class blasearch { public static void main(String[] args) throws IOException { String query = ""; String version = "v1.5.1"; /* Build query from query or arguments, depending on whether arguments were given. */ if (args.length == 0) { try { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); query = br.readLine(); } catch (Exception e) { System.err.println("Error:" + e.getMessage()); System.exit(1); } } else { for (int i = 0; i < args.length; i++) { query += args[i]; } } if (query.equals("-v") || query.equals("--version")) { System.out.println(version); System.exit(0); } if (query.equals("-h") || query.equals("--help")) { System.out.println("Usage: !search [-n pageNumber] search query | Examples: !search bla : Returns first 2 search results for 'bla'. | !search bla -n 2 : Searches for the second two results for 'bla'"); System.exit(0); } String[] qParts = query.split(" "); int offset = 0; int start = 0; query = ""; for (int i = 0; i < qParts.length; i++) { if (qParts[i].equals("-n") && i < qParts.length-1) { try { if(Integer.parseInt(qParts[i+1]) > 0) { offset = Integer.parseInt(qParts[i+1])-1; start = (offset / 2)*4; offset = (offset %2)*2; i++; } else { start = 0; offset = 0; i++; } } catch (NumberFormatException e) { start = 0; offset = 0; } } else { query += qParts[i]+"+"; } } // Change all ' ' to '+' query = query.replaceAll(" ", "+"); String[] parts = null; //URL which provides XML response URL url = new URL("http://ajax.googleapis.com/ajax/services/search/web?v=1.0&q="+ query+"&start="+start); URLConnection urlc = url.openConnection(); BufferedReader br = new BufferedReader(new InputStreamReader(urlc.getInputStream())); String line; String[] lines; ArrayList results = new ArrayList(); ArrayList urls = new ArrayList(); String result = ""; String tempString = ""; //Read every line while ((line = br.readLine()) != null) { // Splits the google output by the commas lines = line.split(","); for(int i=0; i 1) { for (int j = 1; j < searchParts.length; j++) { int hexVal = Integer.parseInt(searchParts[j].substring(0,4),16); searchResult += (char)hexVal; searchResult += searchParts[j].substring(4); } } results.add(searchResult); } } } // Print results if(results.size() > 0){ for(int i=(offset); i<(offset+2); i++){ if (i != 0) { System.out.print(" | "); } int count = i + 1; System.out.print("Result " + (count+start) + ": " + results.get(i)); } } else { System.out.print("Error: no results.\n"); System.exit(1); } System.out.print("\n"); } }