SEM (Search Engine's reMastered)

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von Tomekk228, 10.02.2008.

  1. #1 Tomekk228, 10.02.2008
    Tomekk228

    Tomekk228 Lebende Foren Legende

    Dabei seit:
    14.08.2007
    Beiträge:
    2.417
    Zustimmungen:
    0
    Ort:
    /home/tomekk/
    Hey,

    hier habt ihr, mein erstes kleines Projekt in dem ich zum ersten mal Stunden investiert habe :)

    Ich weiß, ihr gurus hättet das in Minuten geschrieben, doch ich bin bash grad am lernen :)

    Hier quellcode >
    Code:
    #! /bin/bash
    echo "3" > $HOME/.semversion
    if [ ! -n "$(which zenity)" ]; then
    clear
    echo "zenity ist nicht installiert!! bitte installier es nach!"
    else
    
    function int {
    
    if [[ -z $(cat .sem.cfg) ]]; then
    FIRST=$(zenity --entry --text "SEM wird zum ersten mal gestartet bitte den Browser eingeben (in kleinschrift) der genutzt werden soll!")
    if [ -z "$FIRST" ];then
    zenity --info --text "Besuchen sie doch unser Board! www.jeegeek.de"
    exit
    else
    echo $FIRST > .sem.cfg
    BROWSER=$(cat .sem.cfg)
    menu
    fi
    else
    BROWSER=$(cat .sem.cfg)
    menu
    fi 
    
    }
    function menu {
    AUSWAHL=$(zenity --list --radiolist --width=700 --height=460 --text "Wo wollen sie Suchen?           Aktueller Browser:   $BROWSER" --title "Suchmaschine by Tomekk" --column="" --column Seite --column Beschreibung \
    \"\" Google			"Beliebteste Suchmaschine" \
    \"\" Google-Linux		"Google Linux abklatsch" \
    \"\" Google-BSD			"Google BSD abklatsch" \
    \"\" Yahoo			"Alternative zu Google" \
    \"\" Alltheweb			"Findet so gut wie alles" \
    \"\" Wikipedia.de		"Das deutsche Wikipedia" \
    \"\" Wikipedia.com		"Das englische Wikipedia" \
    \"\" Youtube			"Youtube - berühmteste Flash Seite" \
    \"\" MyVideo			"Deutscher abklatsch von Youtube" \
    \"\" Clipfish			"Beliebteste deutsche Videosammlung" \
    \"\" "OpenSuse 10.3 Repos"	"Repo Suchmaschine für OpenSuse 10.3" \
    \"\" "Amazon"			"Online Shopping Portal" \
    \"\" "eBay"			"Deutsches Online Aktionshaus" \
    \"\" --				--		       \
    \"\" "Browser ändern"		"Wollen sie ihren Browser ändern?" \
    \"\" "Neue Version überprüfen"  "Überprüft ob es eine neue Version gibt" \
    )
    if [ -z "$AUSWAHL" ];then
    	zenity --info --text "Besuchen sie doch unser Board! www.jeegeek.de"
    elif [ "$AUSWAHL" = Google ];then
    	auswahl_google
    elif [ "$AUSWAHL" = Google-Linux ];then
    	auswahl_googlelinux
    elif [ "$AUSWAHL" = Google-BSD ];then
    	auswahl_googlebsd
    elif [ "$AUSWAHL" = Yahoo ];then
    	auswahl_yahoo
    elif [ "$AUSWAHL" = Alltheweb ];then
    	auswahl_alltheweb
    elif [ "$AUSWAHL" = Wikipedia.de ];then
    	auswahl_wikipediade
    elif [ "$AUSWAHL" = Wikipedia.de ];then
    	auswahl_wikipediade
    elif [ "$AUSWAHL" = Wikipedia.com ];then
    	auswahl_wikipediacom
    elif [ "$AUSWAHL" = Youtube ];then
    	auswahl_youtube
    elif [ "$AUSWAHL" = MyVideo ];then
    	auswahl_myvideo
    elif [ "$AUSWAHL" = Clipfish ];then
    	auswahl_clipfish
    elif [ "$AUSWAHL" = "OpenSuse 10.3 Repos" ];then
    	auswahl_opensuse
    elif [ "$AUSWAHL" = Amazon ];then
    	auswahl_amazon
    elif [ "$AUSWAHL" = eBay ];then
    	auswahl_ebay
    elif [ "$AUSWAHL" = -- ];then
    	auswahl_leer
    elif [ "$AUSWAHL" = "Browser ändern" ];then
    	auswahl_browser
    elif [ "$AUSWAHL" = "Neue Version überprüfen" ];then
    	auswahl_version
    fi
    
    }
    
    function auswahl_leer {
    
    zenity --error --text "Das ist nur ein Platzhalter!"
    
    menu
    
    }
    
    function auswahl_browser { 
    
    BROWSER2=$(zenity --entry --text "Geben sie ihren Neuen Browser ein.")
    if [ -z "$BROWSER2" ];then
    menu
    else
    rm .sem.cfg
    echo $BROWSER2 > .sem.cfg
    int
    fi
    }
    
    function auswahl_google {
    
    SUCHWORTGOOGLE=$(zenity --entry --text "Geben sie ihr Suchwort ein")
    $BROWSER "http://www.google.de/search?hl=de&q=$SUCHWORTGOOGLE"| zenity --warning --text "Google wurde mit dem Suchwort $SUCHWORTGOOGLE geöffnet!"
    menu
    
    }
    
    function auswahl_yahoo {
    
    SUCHWORTYAHOO=$(zenity --entry --text "Geben sie ihr Suchwort ein")
    $BROWSER "http://de.search.yahoo.com/search?p=$SUCHWORTYAHOO"| zenity --warning --text "Yahoo wurde mit dem Suchwort $SUCHWORTYAHOO geöffnet!"
    
    menu
    
    }
    
    function auswahl_alltheweb {
    
    SUCHWORTALLTHEWEB=$(zenity --entry --text "Geben sie ihr Suchwort ein")
    $BROWSER "http://www.alltheweb.com/search?q=$SUCHWORTALLTHEWEB"| zenity --warning --text "Alltheweb wurde mit dem Suchwort $SUCHWORTALLTHEWEB geöffnet!"
    
    menu
    
    }
    
    function auswahl_wikipediade {
    
    SUCHWORTWIKIDE=$(zenity --entry --text "Geben sie ihr Suchwort ein")
    $BROWSER "http://de.wikipedia.org/wiki/Spezial:Search?ns0=1&search=$SUCHWORTWIKIDE&fulltext=Suche"| zenity --warning --text "Wikipedia.de wurde mit dem Suchwort $SUCHWORTWIKIDE geöffnet!"
    
    menu
    
    }
    
    function auswahl_wikipediacom {
    
    SUCHWORTWIKICOM=$(zenity --entry --text "Geben sie ihr Suchwort ein")
    $BROWSER "http://en.wikipedia.org/wiki/Special:Search?search=$SUCHWORTWIKICOM&fulltext=Search"| zenity --warning --text "Wikipedia.org wurde mit dem Suchwort $SUCHWORTWIKICOM geöffnet!"
    
    menu 
    
    }
    
    function auswahl_youtube {
    
    SUCHWORTYOUTUBE=$(zenity --entry --text "Geben sie ihr Suchwort ein")
    $BROWSER "http://www.youtube.com/results?search_query=$SUCHWORTYOUTUBE&search_type=&search=Search"| zenity --warning --text "Youtube wurde mit dem Suchwort $SUCHWORTYOUTUBE geöffnet!"
    
    menu
    
    }
    
    function auswahl_myvideo {
    
    SUCHWORTMYVIDEO=$(zenity --entry --text "Geben sie ihr Suchwort ein")
    $BROWSER "http://www.myvideo.de/news.php?rubrik=uoijv&searchWord=$SUCHWORTMYVIDEO"| zenity --warning --text "MyVideo wurde mit dem Suchwort $SUCHWORTMYVIDEO geöffnet!"
    
    menu
    
    }
    
    function auswahl_clipfish {
    
    SUCHWORTCLIP=$(zenity --entry --text "Geben sie ihr Suchwort ein")
    $BROWSER "http://www.clipfish.de/searchfish.php?word=$SUCHWORTCLIP&type=video&order=hit&x=0&y=0"| zenity --warning --text "Clipfish wurde mit dem Suchwort $SUCHWORTCLIP geöffnet!"
    
    menu
    
    }
    
    function auswahl_opensuse {
    
    SUCHWORTREPO=$(zenity --entry --text "Geben sie ihr Suchwort ein")
    $BROWSER "http://packages.opensuse-community.org/index.jsp?searchTerm=$SUCHWORTREPO&distro=openSUSE_103"| zenity --warning --text "Repo Suche wurde mit dem Suchwort $SUCHWORTREPO geöffnet!"
    
    menu
    
    }
    
    function auswahl_googlelinux {
    
    SUCHWORTLINUX=$(zenity --entry --text "Geben sie ihr Suchwort ein")
    $BROWSER "http://www.google.de/linux?hl=de&q=$SUCHWORTLINUX&btnG=Suche&meta="| zenity --warning --text "Google/linux wurde mit dem Suchwort $SUCHWORTLINUX geöffnet!"
    
    menu
    
    } 
    
    function auswahl_googlebsd {
    
    SUCHWORTBSD=$(zenity --entry --text "Geben sie ihr Suchwort ein")
    $BROWSER "http://www.google.de/bsd?hl=de&q=$SUCHWORTBSD&btnG=Suche&meta="| zenity --warning --text "Google/BSD wurde mit dem Suchwort $SUCHWORTBSD geöffnet!"
    
    menu
    
    }
    
    function auswahl_amazon {
    
    SUCHWORTAMAZON=$(zenity --entry --text "Geben sie ihr Suchwort ein")
    $BROWSER "http://www.amazon.de/s/url=search-alias%3Daps&field-keywords=$SUCHWORTAMAZON&Go.x=0&Go.y=0"| zenity --warning --text "Amazon wurde mit dem Suchwort $SUCHWORTAMAZON geöffnet!"
    
    menu
    
    }
    
    function auswahl_ebay {
    
    SUCHWORTEBAY=$(zenity --entry --text "Geben sie ihr Suchwort ein")
    $BROWSER "http://search.ebay.de/$SUCHWORTEBAY"| zenity --warning --text "eBay wurde mit dem Suchwort $SUCHWORTEBAY geöffnet!"
    
    menu
    
    }
    
    function auswahl_version {
    
    wget www.jeegeek.de/tomekk/sem/.update
    VERSION=$(cat $HOME/.semversion)
    UPDATE=$(cat .update)
    if [ $VERSION = $UPDATE ];then
    rm .update
    zenity --info --text "SEM ist Up2Date!"
    int
    else
    zenity --info --text "Ein Update wurde gefunden, wird installiert!"
    wget www.jeegeek.de/tomekk/sem/sem-$UPDATE
    rm sem
    mv sem-$UPDATE sem
    rm $HOME/.semversion
    mv .update $HOME/.semversion
    chmod u+x sem
    zenity --info --text "SEM wurde erfolgreich aktualisiert!"
    int
    fi
    }
    
    int
    fi
    
    Das file selber ist im anhang :)

    Ich bitte darum, wenn ihr verbesserungen/fixes/addons usw habt, es nicht upzuloaden als anhang usw sondern einfach mir eine PM zu schreiben. Damit ich den Fix/whatever überprüfen kann und per Updater zu verfügung stellen kann.

    Viel Spaß damit.

    Freue mich schon auf eure Kritik/vorschläge/usw :)
     

    Anhänge:

  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 Mitzekotze, 10.02.2008
    Zuletzt bearbeitet: 10.02.2008
    Mitzekotze

    Mitzekotze little man

    Dabei seit:
    01.12.2006
    Beiträge:
    750
    Zustimmungen:
    0
    Nicht schlecht das Skript, auch wenn ich persönlich davon kein praktischen Nutzen hab. Aber eine Frage: Seh ich das richtig das die sem.cfg einfach nur im aktuellen Ordner gespeichert wird und nicht im Home Verzeichnis des Benutzers?

    btw wo ist den dein Link Avatar hin? ^^
     
  4. tr0nix

    tr0nix der-mit-dem-tux-tanzt

    Dabei seit:
    11.07.2003
    Beiträge:
    1.585
    Zustimmungen:
    0
    Ort:
    Schweiz, Opfikon/Glattbrugg
    Also, du willst dich sicher verbessern also brauchst du Kritik :)

    Code:
    if [ -z "$AUSWAHL" ];then
    	zenity --info --text "Besuchen sie doch unser Board! www.jeegeek.de"
    elif [ "$AUSWAHL" = Google ];then
    	auswahl_google
    elif [ "$AUSWAHL" = Google-Linux ];then
    	auswahl_googlelinux
    elif [ "$AUSWAHL" = Google-BSD ];then
    	auswahl_googlebsd
    elif [ "$AUSWAHL" = Yahoo ];then
    	auswahl_yahoo
    elif [ "$AUSWAHL" = Alltheweb ];then
    	auswahl_alltheweb
    elif [ "$AUSWAHL" = Wikipedia.de ];then
    	auswahl_wikipediade
    elif [ "$AUSWAHL" = Wikipedia.de ];then
    	auswahl_wikipediade
    elif [ "$AUSWAHL" = Wikipedia.com ];then
    	auswahl_wikipediacom
    elif [ "$AUSWAHL" = Youtube ];then
    	auswahl_youtube
    elif [ "$AUSWAHL" = MyVideo ];then
    	auswahl_myvideo
    elif [ "$AUSWAHL" = Clipfish ];then
    	auswahl_clipfish
    elif [ "$AUSWAHL" = "OpenSuse 10.3 Repos" ];then
    	auswahl_opensuse
    elif [ "$AUSWAHL" = Amazon ];then
    	auswahl_amazon
    elif [ "$AUSWAHL" = eBay ];then
    	auswahl_ebay
    elif [ "$AUSWAHL" = -- ];then
    	auswahl_leer
    elif [ "$AUSWAHL" = "Browser ändern" ];then
    	auswahl_browser
    elif [ "$AUSWAHL" = "Neue Version überprüfen" ];then
    	auswahl_version
    fi
    -> sowas macht man mit dem "case" Statement in der bash. In anderen Programmiersprachen nennt man es ein switch-Statement.

    Code:
    function auswahl_amazon {
    
    SUCHWORTAMAZON=$(zenity --entry --text "Geben sie ihr Suchwort ein")
    $BROWSER "http://www.amazon.de/s/url=search-alias%3Daps&field-keywords=$SUCHWORTAMAZON&Go.x=0&Go.y=0"| zenity --warning --text "Amazon wurde mit dem Suchwort $SUCHWORTAMAZON geöffnet!"
    
    menu
    
    }
    Schreibe eine generische Funktion und lagere die Informationen ueber die URLs etc. in einen Array aus. Lasse die generische Funktion abhaengig von der uebergebenen Suchmaschine die richtigen Werte aus dem Array holen.

    Gruess
    Joel
     
  5. Ale-x

    Ale-x bash lehrling

    Dabei seit:
    13.04.2007
    Beiträge:
    109
    Zustimmungen:
    0
    Ort:
    Osnabrück
    also...

    wie mein vorgänger schon sagte mit case arbeiten.

    dann öffnen sich zuviele fenster
    eines sagt mir das sich ein fenster öffnet beim suchen -> das weiss ich sonst kann ich ja nix finden,
    dann muss ich noch die werbung weg klicken, find ich auch nervig, lieber woanders einbauen.

    die update funktion ging nicht da sie nur überprüft (if [ $VERSION = $UPDATE ])
    ob die aktuelle version mit deiner übereinstimmt , lieber testen ob die version neuer ist

    hab mich mal kurz dran gesetzt wie ich mir das vorstelle,

    Code:
    #! /bin/bash
    clear
    VERSION=3
    if [ ! -n "$(which zenity)" ]; then  echo "zenity ist nicht installiert!! bitte installier es nach!";exit;fi
    
    function int {
    if ! test -e $HOME/.sem.cfg;then
     FIRST=$(zenity --entry --text "SEM wird zum ersten mal gestartet bitte den Browser eingeben (in kleinschrift) der genutzt werden soll!")
     echo $FIRST > $HOME/.sem.cfg
     BROWSER=$(cat $HOME/.sem.cfg)
     menu
    else
     BROWSER=$(cat $HOME/.sem.cfg)
     menu
    fi
    }
    
    function menu {
    AUSWAHL=$(zenity --list --radiolist --width=700 --height=460 --text "Wo wollen sie Suchen?           Aktueller Browser:   $BROWSER" --title "Suchmaschine by Tomekk www.jeegeek.de" --column="" --column Seite --column Beschreibung \
    \"\" Google			"Beliebteste Suchmaschine" \
    \"\" Google-Linux		"Google Linux abklatsch" \
    \"\" Google-BSD			"Google BSD abklatsch" \
    \"\" Yahoo			"Alternative zu Google" \
    \"\" Alltheweb			"Findet so gut wie alles" \
    \"\" Wikipedia.de		"Das deutsche Wikipedia" \
    \"\" Wikipedia.com		"Das englische Wikipedia" \
    \"\" Youtube			"Youtube - berühmteste Flash Seite" \
    \"\" MyVideo			"Deutscher abklatsch von Youtube" \
    \"\" Clipfish			"Beliebteste deutsche Videosammlung" \
    \"\" "OpenSuse 10.3 Repos"	"Repo Suchmaschine für OpenSuse 10.3" \
    \"\" "Amazon"			"Online Shopping Portal" \
    \"\" "eBay"			"Deutsches Online Aktionshaus" \
    \"\" --				--		       \
    \"\" "Browser ändern"		"Wollen sie ihren Browser ändern?" \
    \"\" "Update"                   "Überprüft ob es eine neue Version gibt" \
    )
    
    case $AUSWAHL in
           "Google") suchwort;$BROWSER "http://www.google.de/search?hl=de&q=$SUCHWORT";;
           "Google-Linux") suchwort;$BROWSER "http://www.google.de/linux?hl=de&q=$SUCHWORT&btnG=Suche&meta=" ;;
           "Google-BSD") suchwort;$BROWSER "http://www.google.de/bsd?hl=de&q=$SUCHWORT&btnG=Suche&meta=";;
           "Yahoo") suchwort;$BROWSER "http://de.search.yahoo.com/search?p=$SUCHWORT";;
           "Alltheweb") suchwort;$BROWSER "http://www.alltheweb.com/search?q=$SUCHWORT";;
           "Wikpedia.de") suchwort;$BROWSER "http://de.wikipedia.org/wiki/Spezial:Search?ns0=1&search=$SUCHWORT&fulltext=Suche";;
           "Wikipedia.com") suchwort;$BROWSER "http://en.wikipedia.org/wiki/Special:Search?search=$SUCHWORT&fulltext=Search";;
           "Youtube") suchwort;$BROWSER "http://www.youtube.com/results?search_query=$SUCHWORT&search_type=&search=Search";;
           "MyVideo") suchwort;$BROWSER "http://www.myvideo.de/news.php?rubrik=uoijv&searchWord=$SUCHWORT";;
           "Clipfish") suchwort;$BROWSER "http://www.clipfish.de/searchfish.php?word=$SUCHWORT&type=video&order=hit&x=0&y=0";;
           "OpenSuse 10.3 Repos") suchwort;$BROWSER "http://packages.opensuse-community.org/index.jsp?searchTerm=$SUCHWORT&distro=openSUSE_103";;
           "Amazon") suchwort;$BROWSER "http://www.amazon.de/s/url=search-alias%3Daps&field-keywords=$SUCHWORT&Go.x=0&Go.y=0";;
           "eBay") suchwort;$BROWSER "http://search.ebay.de/$SUCHWORT";;
           "--") auswahl_leer;;
           "Browser ändern") auswahl_browser;;
           "Update") auswahl_version;;         
      esac
    }
    function auswahl_browser { 
     BROWSER2=$(zenity --entry --text "Geben sie ihren Neuen Browser ein.")
      if [ -z "$BROWSER2" ];then
       menu
      else
       rm $HOME/.sem.cfg
       echo $BROWSER2 > $HOME/.sem.cfg
       int
      fi
    }
    
    function suchwort {
    SUCHWORT=$(zenity --entry --text "Geben sie ihr Suchwort ein")
    }
    
    function auswahl_version {
     UPDATE=$(lynx -dump "www.jeegeek.de/tomekk/sem/.update")
      if ! test $VERSION -lt $UPDATE 
       then
        zenity --info --text "SEM ist Up2Date!"
        int
       else
        zenity --info --text "Ein Update wurde gefunden, wird installiert!"
        wget www.jeegeek.de/tomekk/sem/sem-$UPDATE
        rm sem
        mv sem-$UPDATE sem
        echo "$UPDATE" >  $HOME/.semversion
        chmod u+x sem
        zenity --info --text "SEM wurde erfolgreich aktualisiert!"
        int
       fi
    }
    
    int
    
    
     
  6. #5 Wolfgang, 10.02.2008
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Hab das Ding nur kurz überflogen.
    Sorry,zum Debuggen von fremden Code fehlt mir oft die Lust.

    Aber etwas fällt mir sofort auf.

    Verschachtelte Funktionen sind pöse! ;)

    Ob du mit elif oder case arbeitets, ist nicht so wichtig.
    Solange der Code dabei übersichtlich bleibt, ist es optional.
    Allerdings ist die Stringzuweisung aus einem Array viel überschaubarer und eleganter.
    Auch solltest du alle möglichen (und manchmal auch scheinbar unmögliche) Fehler abfangen.
    Gruß Wolfgang
     
  7. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  8. #6 supersucker, 10.02.2008
    supersucker

    supersucker Foren Gott

    Dabei seit:
    21.02.2005
    Beiträge:
    3.873
    Zustimmungen:
    0
    Du willst Kritik?

    Fein, denn sowas:

    ist eine absolute Katastrophe.

    Du machst hier x Funktionen wo eine völlig ausreicht.
     
  9. #7 Tomekk228, 10.02.2008
    Zuletzt bearbeitet: 10.02.2008
    Tomekk228

    Tomekk228 Lebende Foren Legende

    Dabei seit:
    14.08.2007
    Beiträge:
    2.417
    Zustimmungen:
    0
    Ort:
    /home/tomekk/
    Oh, wie fein :)

    Ok, ich werde mich dran setzen :)

    @Alex: das mt dem Updater funktioniert schon, nur ist halt kein update verfügbar, weswegen er sagt es ist uptodate ;)

    Guck mal im home verzeichnis nach ".semversion" und schreib dort eine 1 hin, dann siehst das es funktioniert :). Geht natürlich auch wenn man ne höhere zahl hinschreibt:devil: Weswegen es eigentlich so besser ist, da man immer dann die Version hat die auf dem Server liegt.

    Edit:
    Hab mich dazu entschieden das mit elif zu lassen. Wegen der Optik her.

    Hab alles gesäubert und besser strukturiert und einige dinge übernommen die hier vorgeschlagen wurden.

    @Alex: Das mit deinem Updater funktioniert nicht ;) Der sagt immer das keine neue version da ist.

    Man kann die neue Version einfach per Update beziehen.
     
Thema:

SEM (Search Engine's reMastered)