In Tasker wurde die Funktion "HTTP Get" integriert. Diese speichert den Quelltext einer Webseite in der Variable %HTTPD. Der Quelltext kann dann auf Veränderungen hin analysiert werden.
Ich benutze das "RCMix HD" (Link zu Thread) ROM aus dem xda-developers Forum. Zum Zeitpunkt dieses Posts lautet der Thread Titel:
[ROM][May 02]RCMix HD v6.1.0.1 Evolutionary Sense! RUU 2.36.405.8|SENSE 3 SMS,WEATHER
Im Threadtitel finden sich also alle nötigen Informationen zur aktuellen Version. Während der Thread Titel mit jeder neuen Version angepasst wird, bleibt die Adresse zum Thread immer gleich. Diese lautet:http://forum.xda-developers.com/showthread.php?t=984822
Nun muss also nur die Thread Adresse mit "HTTP Get" aufgerufen werden und der Threadtitel aus dem Quelltext extrahiert werden. Um den aktuellen Titel mit der Version seit dem letzten Aufruf vergleichen zu können, muss dieser in einer Variablen gespeichert werden.
Um den Titel aus dem Quelltext zu extrahieren, nutzen wir die Funktion "Variable Split". Ich habe als ersten Splitter "[ROM]" genutzt, da diese Zeichenkette nur im Titel vorkommt und gleich danach der für mich interessante Teil kommt. Als zweiten Splitter habe ich "RUU" gewählt. Nun habe ich also den Quelltext der kompletten Seite auf folgende Zeichenkette gekürzt:
[May 02]RCMix HD v6.1.0.1 Evolutionary Sense!
In dieser Zeichenkette befinden sich nun alle wichtigen Informationen. Das Datum und die Versionsnummer, damit können wir sicher sein das diese Zeichenkette sich ändern wird wenn das eine neue Version verfürgbar ist.
Nun können wir also den Thread Titel extrahieren und mit der in einer Variablen abgelegten alten Version vergleichen. Um nun auch benachrichtigt zu werden, nutzen wir die Aktion "Alert -> Notify". Diese erstellt eine Benachrichtigung in der Benachrichtigungsleiste. Um die Updateroutine zu triggern nutzen wir den "Time" Kontext. Ich lasse die Routine zwischen 09:00 und 22:00 Uhr aller zwei Stunden laufen. Man kann diese natürlich auch nur einmal täglich laufen lassen.
Hier nun das komplette Profil:
- Profil 1: "ROM Update"
- Trigger: "Time" From 09:00 every 2h Till 22:00
- Tasks:
- HTTP Get
- Server:Port: http://forum.xda-developers.com/showthread.php?t=984822
- Timeout: 30
- Mime Type: text/html
- Variable Split
- Name: %HTTPD
- Splitter: [ROM]
- Variable Split
- Name: %HTTPD2
- Splitter: RUU
- Notify
- Title: ROM Update verfügbar
- Text: %HTTPD21
- Icon: eins raussuchen
- If %HTTPD21 !~ %ROM
- Variable Set
- Name: %ROM
- To: %HTTPD21
- Profil 2: "ROM Browser"
- Trigger: Notification Click
- Owner Application: Tasker
- Title: ROM Update verfügbar
- Tasks:
- Browse URL
- URL: http://forum.xda-developers.com/showthread.php?t=984822
[Update]
Ich habe nun einen praktikablen Weg gefunden, wie das Updateskript sehr eifnach für jedes ROM angepasst werden kann. Ich habe nun zwei Splitter gefunden mit denen sich der Threadtitel jedes ROM-Threads universell extrahieren lässt. Die einzigen zwei Voraussetzungen sind, dass erstens ein Thread aus dem xda-developers Forum genutzt wird und zweitens dieser mit "[ROM]" beginnt. Anstelle der "123456" muss natürlich die Threadnummer. Diese kann einfach aus der Browseradressleiste abgelesen werden.
Hier das komplette Update Profil:
- Profil 1: "ROM Update"
- Trigger: "Time" From 09:00 every 2h Till 22:00
- Tasks:
- HTTP Get
- Server:Port: http://forum.xda-developers.com/showthread.php?t=123456
- Timeout: 30
- Mime Type: text/html
- Variable Split
- Name: %HTTPD
- Splitter: [ROM]
- Variable Split
- Name: %HTTPD2
- Splitter: ,
- Notify
- Title: ROM Update verfügbar
- Text: %HTTPD21
- Icon: eins raussuchen
- If %HTTPD21 !~ %ROM
- Variable Set
- Name: %ROM
- To: %HTTPD21
Wie sieht denn die Situation mit einem Variable split aus? z.B. beim GingerVillain-Rom.
AntwortenLöschenSteige leider nicht ganz mit dem "httpd21" durch.
Danke schonmal
hi,
AntwortenLöschenhast du dir mein Tutorial zum "Variable Split" mal angesehen? Hab dort eigentlich ganz gut erklärt wie die Ziffern zustande kommen. Im Endeffekt sind das Indexe, wenn du die Variable %HTTPD teilst entstehen mehrere Teilvariablen, um auf jeden Teil zugreifen zu können haben alle einen Index. der erste Teil trägt den Index 1, also ist in %HTTPD1 alles was vor dem ersten Splitter steht. die Variable %HTTPD21 entstand durch das Teilen der Variablen %HTTPD2
also hab jetzt das Ginger Vaillant ROM gefunden:
http://forum.xda-developers.com/showthread.php?t=880465
Wenn man im Quelltext schaut, findet man den Threadtitel das erste mal in der 8. Zeile, in dieser befindet sich die Zeichenkette:
[ROM-GingerBread] Ginger Villain 2.2 (30-04),
Da vorher keine eckige Klammer im Quelltext auftaucht, wird zuert mit "[" gesplittet. In %HTTPD1 steht nun alles vor "[", das brauchen wir aber nicht, uns interessieren die Zeichen danach, deswegen nehmen wir %HTTPD2 hier stehen alle zeichen zwischen der 1. und 2. "[" drin.
Da wir aber nur den Titel brauchen, teilen wir die Zeichenkette %HTTPD2 noch und zwar mit "," als Splitter, da das "," de Threadtitel in der Zeile oben abschließt. Nun interessiert uns alles vor dem 1. "," also brauchen wir den Index 1, also %HTTPD21, in dieser Variable befindet sich nun folgende Zeichenkette:
ROM-GingerBread] Ginger Villain 2.2 (30-04)
und somit alles was wir brauchen...
Nochmal ich:
AntwortenLöschenHabe mich jetzt die ganze Nacht mit dem Thema http get und dem "variable split" beschäftigt.
Generell bräuchte ich ja für den Thread Titel beim Ginger-Villain-Rom keinen Teiler. Dennoch muss aber der alte Threadtitel mit einem möglichen neuen abgeglichen werden.
Irgendwie steh ich atm aufn Schlauch :(
Nachtrag: Habe deinen Post jetzt irgendwie noch nicht gesehen?! Danke schonmal für die Erklärung. Werde mich die nächste Zeit damit auseinandersetzen!
AntwortenLöschenUnd nochmal: konfus - die Uhrzeit beim Blog stimmt bei mir nicht. Dachte, du hast gegen Mitternacht geschrieben.
AntwortenLöschenWerde es jetzt mal so einstellen, wie du beschrieben hast - Vielen Dank
Joa das ist mir auch schon aufgefallen, mal schaun ob i das noch hinbekomme
AntwortenLöschenNoch eine Verständnisfrage: Bei deinem ersten variable split steht "Splitter: %ROM". Müsste der Splitter dann nicht "[ROM" heißen?
AntwortenLöschenWie müsste eigentlich die "set variable" bei dem Gingervillain-Rom aussehen?
ja das stimmt, ich habe es geändert, danke für den Hinweis.
AntwortenLöschenDas Set Variable bleibt gleich, da in %HTTPD21 ja die gesplittete Zeichenkette hinterlegt ist, in deinem Fall also der Titel des Vaillant ROMS, da du HTTPGet ja mit der Adresse zu deinem Thread ausführst. Und dann mit Variable Split den Threadtitel rauspickst und zum Schluss in der Variable %ROM speicherst.
Vielen Dank. Vom Verständnis habe ich fast alles begriffen: Wird also in deinem fünften Punkt eine neue Variable "%ROM" gesetzt, die dann mit der Variable "HTTPD21" gefüllt wird und dann beim nächsten mal im vierten Punkt deiner Ausführung mit der dann aktuellen Variable verglichen wird.
AntwortenLöschenSomit könnte ich das Profil (bzw. die Notification) mit dem integrierten Button nur testen, wenn ich den "if"-Wert mal manuell abändere in "=" z.B. ?!
Aber mal unabhängig dieses Profiles möchte ich mich nochmals für die jetzt schon online gesetzten Profiles und Tutorials in deinem Blog bedanken und hoffe, dass noch weitere folgen!
Wenn du einen Donate-Button hast, kannste dich mal melden! ;)
Jop genauso ist es :)
AntwortenLöschendu kannst das Profil auch testen indem du die Variable %ROM in einem anderen Task überschreibst, die Variablen sind in allen Tasks und Profilen bekannt. So hab ich das am Anfang gemacht.
Es werden natürlich weitere Profile und auch Tutorials folgen, der Updatezyklus wird sich mir etwas verlängern, da ich jetzt alle schon ausgearbeiteten Profile gepostet habe, aber ich habe ständig neue Ideen die nun implementiert werden wollen :)
Wenn du Ideen für Tutorials hast nur her damit :) Da ich ja nicht immer weiß wo es am Anfang hakt :)
Und nochmal was: Habe jetzt in meiner Notification bar (oben) beim runterscrollen zwar den Hinweis auf das neue Update, aber müsste da nicht noch der Inhalt der Variable "HTTPD21" stehen? Oder habe ich noch etwas übersehen?
AntwortenLöschenBei mir steht dort nur HTTPD21.
es muss %HTTPD21 heißen, das % zeigt immer eine Variable an, ohne % ist es nur eine Zeichenkette. Ich habe den Fehler korrigiert. Danke
AntwortenLöschenDieser Kommentar wurde vom Autor entfernt.
AntwortenLöschenDieser Kommentar wurde vom Autor entfernt.
AntwortenLöschenmal eine Frage, ich habe den Task (ursprüngliche) Variante mal abgetippt. Soweit klappt das auch, aber jedesmal wenn ich den Task manuell laufen lasse, kommt die Notification. Müsste nicht %ROM im fünften Punkt mit %HTTPD21 gleichgesetzt werden? Dann dürfte die Abfrage beim nächsten Mal doch keine Notification mehr auswerfen, weil %HTTPD21 und %ROM dann gleich sind. VG Robert
AntwortenLöschenHallo,
AntwortenLöschenich schon wieder ;-)
Ich habe leider immer noch das gleiche Problem.
Vorgestern gab es bei "meinem" ROM ein Update, das wurde auch
zuverlässig angezeigt, allerdings kommt jetzt jeden Tag zweimal (ich lasse alle 5 Stunden innerhalb eines bestimmten Zeitraums abfragen) die Meldung, dass ein Update vorhanden ist, obwohl sich am ROM seit Vorgestern nichts mehr verändert hat.
Warum passiert das? Nach der Abfrage, wird doch %ROM mit %HTTPD21 gleichgesetzt.
VG Robert