Vergleichen von Dateien/Variablen/Arrays

  • 15 Antworten
  • Letztes Antwortdatum
L

LenovoP780

Stamm-User
84
Hallo,

bei folgender Aufgabenstellung bräuchte ich eure Hilfe:

Meine Uni stellt in unregelmäßigen Abständen sogenannte Mitteilungsblätter online, um das nicht händisch checken zu müssen würde ich das gerne automatisieren und im Falle einer neuen Mitteilung eine Notification erhalten.

Die Uni-Seite ist recht simpel aufgebaut und ist einfach eine Liste der Dokumente die wie folgt aussieht:

Mitteilungsblatt X vom dd.mm.jjjj

Wobei X von eins weg durchnummeriert ist, das Datum entspricht leider nicht dem Tag an dem es online gestellt wird.

Ich wollte jetzt mit http get die Website als .txt abspeichern und mit der .txt-Datei vom Vortag vergleichen - sind diese nicht ident so muss ein neues Blatt online sein.

Allerdings scheitere ich beim Vergleichen - ich habe leider nichts gefunden um die zwei Dateien miteinander zu vergleichen. Sei es Dateigröße, Array Größe (das Array das man erhält, wenn man Variable Search Replace mit "Mitteilungsblatt" durchlaufen lässt erhält), oder Variable Größe.

Falls jemand von euch weiß wie man die Größe eines Arrays, einer Datei... mit Tasker herausfindet würde ich mich über einen Beitrag freuen.

Oder hat von euch jemand einen ganz anderen (besseren?) Ansatz für mein Problem?

Bin gespannt...

LG

Der ursprüngliche Beitrag von 16:18 Uhr wurde um 16:49 Uhr ergänzt:

Habe es jetzt momentan mit folgenden Task probiert, wobei die Mitteilungsblatt.txt folgenden Text enthält "Mitteilungsblatt X" mit X als Nummer der neuen Mitteilung.

So wie ich das sehe, scheitert es an der If-Bedingung, leider weiß ich nicht, wie ich die korrekt formulieren muss...

Code:
Mitteilungsblatt (88)
A1: HTTP Get [ Server:Port:www.dummy.com Path: Attributes: Cookies: User Agent: Timeout:50 Mime Type: Output File:Tasker/Mitteilungsblatt_neu.txt Trust Any Certificate:Off ] 
A2: Read File [ File:Tasker/Mitteilungsblatt_neu.txt To Var:%neu ] 
A3: Read File [ File:Tasker/Mitteilungsblatt.txt To Var:%var ] 
A4: If [ %neu ~ %var ]
A5: Stop [ With Error:Off Task: ] 
A6: Else 
A7: AutoNotification [ Configuration:Title: Neues Mitteilungsblatt
Text: Antippen um zur Website zu gelangen.
Url: www.dummy.com
Icon: /storage/sdcard0/DCIM/Logo.png
Status Bar Icon: ic_action_plusone
Dismiss on Touch: true
Vibration: 0,400 Package:com.joaomgcd.autonotification Name:AutoNotification Timeout (Seconds):0 ] 
A8: Variable Split [ Name:%var Splitter: Delete Base:Off ] 
A9: Variable Add [ Name:%var2 Value:1 Wrap Around:0 ] 
A10: Write File [ File:Tasker/Mitteilungsblatt.txt Text:%var1 %var2 Append:Off Add Newline:Off ] 
A11: End If


Der ursprüngliche Beitrag von 16:49 Uhr wurde um 17:01 Uhr ergänzt:

Auch If %neu ~ *%var* hat leider nichts genutzt, obwohl es eigentlich so klappen sollte...
 
Zuletzt bearbeitet:
Hallo,

mal ganz naiv:

Code:
%neu = %var

???

Grüße, Jürgen.
 
Hatte ich auch schon probiert und hat leider auch nicht geklappt.
 
Probier mal mit globalen Variablen, als %Alt und %Var...
 
:confused2::confused2::confused2:

Screenshot_2015-02-10-11-53-51.png

Aktion 1 ist natürlich "Variable Set %neu to Test"
 
Sieht ja recht lustig aus ;-)

Hat da jemand eine Erklärung dafür?
Habe es jetzt auch mit globalen Variablen probiert, hat aber nichts geändert.
 
Zuletzt bearbeitet:
Also die Dateien sind zu 100% ident, da ich sie kopiert habe.

Danke für den Link (habe ihn vorhin auch gerade über Google gefunden), dass / kommt bei einem Quelltext naturgemäß des öfteren vor. Wenn es nur daran liegt könnte man das ja mit einem einfachen Variable Search Replace lösen.

Edit:
Search and Replace hat jetzt mal nichts genützt

Der ursprüngliche Beitrag von 19:16 Uhr wurde um 19:24 Uhr ergänzt:

Was mir in diesem Fall auch helfen würde ist die Größe eines Arrays zu wissen, da das neue Array größer sein muss als das alte Array, wenn es ein neues Blatt gibt. Aber wie man diese herausfindet weiß ich leider auch nicht
 
Funktioniert es denn wenn z.B. nur "Hallo" in den beiden Textfiles steht? Dann müsste man schauen, ob außer "/" noch andere Zeichen Probleme machen. Spielt eventuell die Dateigröße eine Rolle?

Der ursprüngliche Beitrag von 13:27 Uhr wurde um 13:39 Uhr ergänzt:

File -> TestFile
Type = Size
 
  • Danke
Reaktionen: LenovoP780
Hallo,

gibt es unter Android (z.B. in BusyBox) kein md5sum?
Wäre doch die einfachste Möglichkeit, Unterschiede zu finden.
 
  • Danke
Reaktionen: LenovoP780
Ja,

da habe ich auch gerade nach gesucht. Geht sogar mit Tasker (für Variablen):

Action->Variables->Variable Convert

Function: To MD5 Digest
 
  • Danke
Reaktionen: LenovoP780
Hallo,

md5sum sagt mir leider nichts - aber TestFile -> Size hat in einem kurzen Test jetzt mal geklappt!

Habe jetzt mal Wikipedia bezgl. Md5 befragt und das klingt auch gut.

Das einzige Problem (bei diesen beiden Möglichkeiten) ist dann, dass der Task bei der kleinsten Änderung anspringt, ich müsste also mal austesten ob sich sonst wirklich nichts im Quellcode ändert.

Momentan tendiere ich noch zur Variante die Dateigröße zu vergleichen, da ich hierbei das mathematische = verwenden kann und ich den kuriosen Fall der am Screenshot zu sehen ist umgehen.

Gibt es eine Möglichkeit die ArrayGröße herauszufinden, also wie viele Felder belegt sind?

Lg
 
Zuletzt bearbeitet:
Hallo,

md5 ist eine Hash-Funktion. Damit könntest du auch Dateien gleicher Größe auf gleichen Inhalt prüfen.

Message-Digest Algorithm 5

Wäre trotzdem noch interessant zu wissen, warum das mit dem Variablenvergleich nicht funktioniert...

Grüße, Jürgen.

Der ursprüngliche Beitrag von 14:36 Uhr wurde um 14:43 Uhr ergänzt:

Hallo!

LenovoP780 schrieb:
Gibt es eine Möglichkeit die ArrayGröße herauszufinden, also wie viele Felder belegt sind?

Das verstehe ich jetzt nicht...


Eventuell könntest du mit ReadLine arbeiten, und dann "Miteilungsblatt X" auswerten? Das wäre dann unabhängig von sonstigen Änderungen.

Grüße, Jürgen.
 
Ja, md5 klingt, wie gesagt, auch gut nur ist da dann wieder die mögliche Fehlerquelle mit dem Vergleich da :-/

Wenn da einer weiß woran das liegt... Ich würde es gerne wissen :)

Am liebsten wäre mir ja die Variante "Mitteilungsblatt" zählen, die werden dann automatisch in einem Array gespeichert, aber ich weiß nicht wie ich die Anzahl der Felder eines Arrays herausfinden kann. Wsl nur mit einer Schleife mit ArrayPop und einer Count Variable und das Ganze dann so oft durchlaufen lassen bis die Variable nicht mehr gesetzt ist...
Nur ist das nicht gerade elegant, vor allem, wenn es 50+ solcher Dokumente gibt...
 
%myArray(#)

????
 
  • Danke
Reaktionen: LenovoP780
Danke :)
Damit müsste es jetzt klappen!! Werde es gleich ausprobieren.

Edit:
Jetzt klappt es wunderbar - zumindest im Testbetrieb, aber ich denke, dass der Task jetzt zuverlässig arbeiten wird. Danke für den Tip mit %Array(#)!

Falls jemand trotzdem noch eine Idee bzw. Lösung für das Problem mit den Variablen hat bitte melden :)
 
Zuletzt bearbeitet:

Ähnliche Themen

0
Antworten
4
Aufrufe
273
0karsten
0
O
Antworten
5
Aufrufe
444
rtwl
rtwl
marspoki
Antworten
3
Aufrufe
634
Mathens
Mathens
Zurück
Oben Unten