Google Suggest Script

Themen aus Kultur und Politik zur Informationsfreiheit

Google Suggest Script

Beitragvon Orbiter » Fr Mai 31, 2013 4:38 pm

das hier könnte auch in die dev-Ecke hingehören, aber da machen wir mal lieber nur YaCy-Sachen rein.

Für einen Vortrag war ich dabei ein paar Google-Suggest Screenshots zu machen, die dann ganz lustig waren und dann hab ich versucht die Google-Suggest-Funktion zu hacken. Dabei ist folgendes Script rausgekommen:
Code: Alles auswählen
#!/bin/sh
# call google suggest
APPNAME="suggest"
cat <<EOF 1>/tmp/"$APPNAME".java 2>&1
import java.io.*; import java.net.*; import java.util.*;
public class suggest {
    private final static String googlestub = "http://suggestqueries.google.com/complete/search?output=toolbar&hl=de&q=";
    public static String[] getGoogleSuggestions(String query) {
        BufferedReader in = null;
        try {
            TreeMap<Integer, String> st = new TreeMap<Integer, String>();
            in = new BufferedReader(new InputStreamReader((new URL(googlestub + query.replace(' ', '+'))).openStream(), "iso-8859-15"));
            String[] ls0 = in.readLine().split("suggestion data=\"");
            for (String l: ls0) {
                String[] ls1 = l.split("\"/><num_queries int=\"");
                if (ls1.length < 2) continue;
                st.put(-Integer.parseInt(ls1[1].split("\"/></")[0]), ls1[0].replaceAll("&amp;", "&"));
            }
            String[] suggestions = new String[st.size()];
            int i = 0;
            for (String s: st.values()) suggestions[i++] = s;
            return suggestions;
        } catch (Throwable e) {} finally {try {in.close();} catch (IOException e) {}}
        return new String[0];
    }
    public static void main(String[] args) {
        String[] suggestions = getGoogleSuggestions(args[0].replace(' ', '+'));
        for (String s: suggestions) System.out.println(s);
    }
}
EOF
cd /tmp
javac "$APPNAME".java
java "$APPNAME" $1
rm "$APPNAME".*


(Vorsicht: perverses java-in-shell-selfcompile-script)
Basiert auf der undokumentierten Google-Suggest API mit Calls ähnlich wie
Code: Alles auswählen
http://suggestqueries.google.com/complete/search?output=toolbar&hl=de&q=schokolade

Das ganze so benutzen: in eine Datei namens 'suggest.sh' kopieren, dann 'chmod 755 suggest.sh' ausführen.

Beispielbenutzung:
Code: Alles auswählen
admin$ ./suggest.sh deutschland+ist
deutschland ist eine gmbh
deutschland ist eine firma
deutschland ist sch?n
deutschland ist pleite
deutschland ist vegan
deutschland ist das coolste land der welt
deutschland ist kein staat
deutschland ist ein besetztes land und wird es auch bleiben
deutschland ist ein einwanderungsland
deutschland ist kein einwanderungsland

man muss mehrere Wörter beim Aufruf des Scripts noch mit '+' trennen, sonst gehts nicht. Wer dafür einen Verbesserungsvorschlag hat, nur her damit.
Das Ganze hab ich auch schon in meinem debilen 'TVTroll'-Projekt benutzt um 'Search Trails' zu Fernsehsendungen anzuzeigen.
Natürlich überlege ich schon wie ich ähnliches aus YaCy rauskitzeln kann, aber ohne die Sucheingaben zu benutzen (das geht ja nicht, die sind ja privat und zu wenig). Statt dessen könnte man Sätze im Index nehmen die mit den Suchworten anfangen. Die zu finden sollte nicht so schwer sein...
Orbiter
 
Beiträge: 5797
Registriert: Di Jun 26, 2007 10:58 pm
Wohnort: Frankfurt am Main

Zurück zu Panorama

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste