efinf:blc2016:regex

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
efinf:blc2016:regex [2016/11/14 20:37]
Ivo Blöchliger [Ruby]
efinf:blc2016:regex [2016/11/29 14:24] (current)
Ivo Blöchliger
Line 40: Line 40:
 p str.gsub(/a./){|m| p str.gsub(/a./){|m|
   m[0]+m[1].upcase   m[0]+m[1].upcase
-</code> 
 } }
 +</code>
 ==== Eliza ==== ==== Eliza ====
 Ziel: Englische Sätze von der Ich- in die Du-Form umschreiben mittels Regular Expressions. Beispiele: Ziel: Englische Sätze von der Ich- in die Du-Form umschreiben mittels Regular Expressions. Beispiele:
Line 48: Line 48:
   * I told you so -> Can you elaborate on why **you** told **me** so?   * I told you so -> Can you elaborate on why **you** told **me** so?
  
 +Dateien vom Donnerstag 17.11. (bräuchten noch ein bisschen Arbeit):
 +  * {{ :efinf:blc2016:regex:eliza.rb |}}
 +  * {{ :efinf:blc2016:regex:eliza-server.rb |}}
  
-Programm-Skelett: 
-<code ruby> 
-class Eliza 
-  def initialize() 
-    @history = []  # Instanz-Variable, in allen Methoden sichtbar 
-    # Eventuell weitere Variablen für bessere Antworten initialisieren 
-  end 
-   
-  def antwort(satz) 
-    # hier satz und eventuell @history analysieren, antwort darauf aufbauen 
-     
-    @history.push(satz) 
-    return "Sorry, not programmed to answer yet" 
-  end 
-   
-  def is_good_bye?(satz) 
-    # Hier auswerten, ob das Gespräche beendet werden soll 
-    return false 
-  end 
-   
-  def talk() 
-     puts "Please write a line" 
-     while (true) 
-       text = gets.chomp 
-       break if is_good_bye?(text) 
-       puts antwort(text) 
-     end 
-     puts "Good bye!" 
-  end 
-end 
- 
-e = Eliza.new 
-e.talk() 
- 
-</code> 
 ==== Nesa-Pilot ==== ==== Nesa-Pilot ====
   * Installieren Sie den Chrome (sudo apt-get install chromium-browser)   * Installieren Sie den Chrome (sudo apt-get install chromium-browser)
-  * Drücken Sie F12, um die Debug-Suite zu starten und aktivieren Sie den Tab "Network"+  * In Chrome, drücken Sie F12, um die Debug-Suite zu starten und aktivieren Sie den Tab "Network"
   * Gehen Sie auf die Startseite von Nesa: https://ksbg.nesa-sg.ch/loginto.php?mode=0&lang= (oder laden Sie die Seite neu)   * Gehen Sie auf die Startseite von Nesa: https://ksbg.nesa-sg.ch/loginto.php?mode=0&lang= (oder laden Sie die Seite neu)
-  * Rechts-Klick auf ersten Netzwerkzugriff: "copy as cURL"  * Die curl-Kommandozeile in eine Datei speichern (z.B. startseite.curl)+  * Rechts-Klick auf ersten Netzwerkzugriff (mit Code 200): "copy as cURL"  * Die curl-Kommandozeile in eine Datei speichern (z.B. startseite.curl)
  
 Das curl-Kommando muss jetzt noch ein bisschen angepasst werden, damit die Cookies gespeichert und wiederverwendet werden: Das curl-Kommando muss jetzt noch ein bisschen angepasst werden, damit die Cookies gespeichert und wiederverwendet werden:
Line 114: Line 82:
 logincurl = File.read("login.curl") logincurl = File.read("login.curl")
 puts logincurl puts logincurl
-loginseite.gsub!(.....)  # FIXME +logincurl.gsub!(.....)  # FIXME 
-puts loginseite+puts logincurl  # ACHTUNG: Enthält ihr Passwort (eventuell durch regex rausfiltern).
  
 # Erste Seite nach login herunterladen # Erste Seite nach login herunterladen
 nesaseite = `#{loginseite}` nesaseite = `#{loginseite}`
 +</code>
 +
 +Zusammengefasst als Funktion (liefert erste Seite nach Login):
 +<code ruby>
 +def getStartPage
 +  `rm nesa-cookies.txt`
 +  startseite = `bash startseite.curl`.force_encoding("ISO-8859-1").encode("UTF-8")
 +  
 +  # input type="hidden" value="a68ae62b0e4ffd730c315e37f50d0d5d" name="loginhash"
 +  
 +  loginhash=startseite.scan(/value="([0-9a-f]+)"\s+name="loginhash"/)[0][0]
 +  
 +  curllogin=File.read("login.curl")
 +  curllogin.gsub!(/loginhash=([^']+)'/,"loginhash=#{loginhash}'")
 +  `#{curllogin}`.force_encoding("ISO-8859-1").encode("UTF-8")
 +end
 +
 </code> </code>
  
Line 127: Line 112:
  
 Zeichnen Sie dann einen beliebigen Seitenzugriff auf und kopieren sie das curl-Kommando, modifizieren Sie es wie oben und ersetzen die URL durch z.B. 'mypage'. Dieser String wird dann durch die gewünschte URL ersetzt. Zeichnen Sie dann einen beliebigen Seitenzugriff auf und kopieren sie das curl-Kommando, modifizieren Sie es wie oben und ersetzen die URL durch z.B. 'mypage'. Dieser String wird dann durch die gewünschte URL ersetzt.
- 
  
  • efinf/blc2016/regex.1479152242.txt.gz
  • Last modified: 2016/11/14 20:37
  • by Ivo Blöchliger