Ankündigung
Einklappen
Keine Ankündigung bisher.
- √ - Urllib, Dynamische Webabfrage von passwortgeschützter Seite?
Einklappen
X
-
sorry das hatte ich beim Telefonbuchbaustein auch gerade bemerkt das die String encode/decode Funktionen nicht auf dem HS funktionieren. Ich hatte jedoch vergessen wo ich das in letzter Zeit noch in der Form eingebaut hatte. Hier war das alsoZitat von woda Beitrag anzeigen1. kleiner Fehler in der Urllib behoben:
ersetzt durch:Code:if len(auth)>0: sock.send("Authorization: Basic "+auth.encode('base64')+"\r\n")
Code:if len(auth)>0: sock.send("Authorization: Basic "+__import__('base64').encodestring(auth)+"\r\n")
Einen Kommentar schreiben:
-
Jetzt läufts!
1. kleiner Fehler in der Urllib behoben:
ersetzt durch:Code:if len(auth)>0: sock.send("Authorization: Basic "+auth.encode('base64')+"\r\n")
Der Rest sieht jetzt so aus:Code:if len(auth)>0: sock.send("Authorization: Basic "+__import__('base64').encodestring(auth)+"\r\n")
Ab jetzt nur noch Feinarbeit...Code:# -*- coding: iso8859-1 -*- ## ----------------------------------------------------- ## urllib : Musicpal Favoriten Abfrage ### V0.4 ## ## erstellt am: 2010-06-01 20:16 ## ----------------------------------------------------- ## Copyright © 2010, knx-user-forum e.V, All rights reserved. ## ## This program is free software; you can redistribute it and/or modify it under the terms ## of the GNU General Public License as published by the Free Software Foundation; either ## version 3 of the License, or (at your option) any later version. ## ## This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; ## without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. ## See the GNU General Public License for more details. ## ## You should have received a copy of the GNU General Public License along with this program; ## if not, see <http://www.gnu.de/documents/gpl-3.0.de.html>. #5000|"Text"|Remanent(1/0)|Anz.Eingänge|.n.|Anzahl Ausgänge|.n.|.n. #5001|Anzahl Eingänge|Ausgänge|Offset|Speicher|Berechnung bei Start #5002|Index Eingang|Default Wert|0=numerisch 1=alphanummerisch #5003|Speicher|Initwert|Remanent #5004|ausgang|Initwert|runden binär (0/1)|typ (1-send/2-sbc)|0=numerisch 1=alphanummerisch #5012|abbruch bei bed. (0/1)|bedingung|formel|zeit|pin-ausgang|pin-offset|pin-speicher|pin-neg.ausgang 5000|"woda\MusicPal_Favoritenabfrage"|0|4|"E1 Musicpal_IP"|"E2 Username"|"E3 Passwort"|"E4 Trigger"|8|"A1 Anzahl"|"A2 Fav.01"|"A3 Fav.02"|"A4 Fav.03"|"A5 Fav.04"|"A6 Fav.05"|"A7 Fav.06"|"A8 DEBUG" 5001|4|8|0|3|1 # EN[x] 5002|1|"192.168.0.5"|1 #* IP 5002|2|""|1 #* Username 5002|3|""|1 #* Passwort 5002|4|""|0 #* Trigger # Speicher 5003|1||0 #* Klassenspeicher 5003|2||0 #* HTMLSpeicher 5003|3||0 #* RegexSpeicher # Ausgänge 5004|1|""|0|1|0 #* Anzahl der Favoriten 5004|2|""|0|1|1 #* Fav. 1 5004|3|""|0|1|1 #* 5004|4|""|0|1|1 #* 5004|5|""|0|1|1 #* 5004|6|""|0|1|1 #* 5004|7|""|0|1|1 #* 5004|8|""|0|1|1 #* DEBUG ################################################# 5012|0|"EI"|"eval(compile(__import__('base64').decodestring('CmlmIEVJPT0xOiAgICAKICAgIGNsYXNzIEtOWFVGX3VybGxpYjoKICAgICAgICBkZWYgX19pbml0X18oc2VsZixvYmopOgogICAgICAgICAgICBzZWxmLk1DID0gb2JqLk1DCiAgICAgICAgICAgIHNlbGYucmVjdXJzaXY9MAogICAgICAgIGRlZiByZXNvbHZlKHNlbGYsaG9zdCk6CiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLk1DLkROU1Jlc29sdmVyLmdldEhvc3RJUChob3N0KQogICAgICAgICAgICBleGNlcHQ6CiAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9faW1wb3J0X18oJ3NvY2tldCcpLmdldGhvc3RieW5hbWUoaG9zdCkKICAgICAgICAgICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgICAgICAgICByYWlzZSAiSG9zdDogIiArIGhvc3QgKyAiIG5vdCBmb3VuZCIKICAgICAgICBkZWYgb3BlbihzZWxmLHVybCxtZXRob2Q9J0dFVCcsIGRhdGE9JycsIHJlZmVyZXI9JycsIGFnZW50PSJHSVJBIEhvbWVzZXJ2ZXIiLGF1dGg9JycsbGFuZz0iZGUtZGUsZGU7cT0wLjgsZW4tdXM7cT0wLjU7ZW47cT0wLjMiLGZvbGxvdz0xLHRpbWVvdXQ9MSxoZWFkZXI9MCxjb250ZW50PTEsc2VwZXJhdG9yPSIjIik6CiAgICAgICAgICAgIGlmIHNlbGYucmVjdXJzaXY+MjoKICAgICAgICAgICAgICAgIHJldHVybiAiIgogICAgICAgICAgICBoYXZlQmVoYXZpb3VyPVRydWUKICAgICAgICAgICAgaWYgYWdlbnQ9PSJNU0lFIjoKICAgICAgICAgICAgICAgIGFnZW50PSJNb3ppbGxhLzQuMCAoY29tcGF0aWJsZTsgTVNJRSA3LjA7IFdpbmRvd3MgTlQgNi4wKSIKICAgICAgICAgICAgICAgIGhhdmVCZWhhdmlvdXI9RmFsc2UKICAgICAgICAgICAgaWYgYWdlbnQ9PSJGRjIiOgogICAgICAgICAgICAgICAgYWdlbnQ9Ik1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyBXaW5kb3dzIE5UIDUuMTsgZGU7IHJ2OjEuOC4xLjIwKSBHZWNrby8yMDA4MTIxNyBGaXJlZm94LzIuMC4wLjIwIgogICAgICAgICAgICAgICAgaGF2ZUJlaGF2aW91cj1GYWxzZQogICAgICAgICAgICBtZXRob2Q9bWV0aG9kLnVwcGVyKCkKICAgICAgICAgICAgdXJsPXVybC5zcGxpdCgiLyIpCiAgICAgICAgICAgIHByb3RvPXVybFswXS5sb3dlcigpCiAgICAgICAgICAgIGlmIHByb3RvPT0iaHR0cDoiOgogICAgICAgICAgICAgICAgcG9ydD04MAogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgcG9ydD0yMwogICAgICAgICAgICBob3N0PXVybFsyXS5sb3dlcigpCiAgICAgICAgICAgIGlmIGhvc3QuZmluZCgiOiIpPjA6CiAgICAgICAgICAgICAgICAoaG9zdCwgcG9ydCkgPSBob3N0LnNwbGl0KCI6IikKICAgICAgICAgICAgICAgIHBvcnQ9aW50KHBvcnQpCiAgICAgICAgICAgIGRzdF9hZGRyID0gc2VsZi5yZXNvbHZlKGhvc3QpCiAgICAgICAgICAgIHVybC5wb3AoMCkKICAgICAgICAgICAgdXJsLnBvcCgwKQogICAgICAgICAgICB1cmwucG9wKDApCiAgICAgICAgICAgIHNvY2sgPSBfX2ltcG9ydF9fKCdzb2NrZXQnKS5zb2NrZXQoX19pbXBvcnRfXygnc29ja2V0JykuQUZfSU5FVCxfX2ltcG9ydF9fKCdzb2NrZXQnKS5TT0NLX1NUUkVBTSkKICAgICAgICAgICAgaWYgZmxvYXQoX19pbXBvcnRfXygnc3lzJykudmVyc2lvblswOjNdKT4yLjI6CiAgICAgICAgICAgICAgICBzb2NrLnNldHRpbWVvdXQodGltZW91dCkKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgc29jay5jb25uZWN0KChkc3RfYWRkcixwb3J0KSkKICAgICAgICAgICAgZXhjZXB0OgogICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAgICAgICAgc29jay5jbG9zZSgpCiAgICAgICAgICAgICAgICByZXR1cm4gIkVSUk9SOiBDb25uZWN0aW9uIEZhaWwiCiAgICAgICAgICAgIHVybD0iLyIuam9pbih1cmwpICAgICAgICAgICAgICAgIAogICAgICAgICAgICBpZiBwcm90bz09Imh0dHA6IjoKICAgICAgICAgICAgICAgIHVybCA9IF9faW1wb3J0X18oJ3VybGxpYicpLnF1b3RlX3BsdXMoIi8iK3VybCwiLz8mPSUjIikKICAgICAgICAgICAgICAgIHBvc3RkYXRhPSIiCiAgICAgICAgICAgICAgICBpZiBsZW4oZGF0YSk+MDoKICAgICAgICAgICAgICAgICAgICBzZW5kZGF0YT1fX2ltcG9ydF9fKCd1cmxsaWInKS5xdW90ZV9wbHVzKGRhdGEsIiY9IikKICAgICAgICAgICAgICAgICAgICBpZiBtZXRob2QgPT0gIkdFVCI6CiAgICAgICAgICAgICAgICAgICAgICAgIHVybCs9Ij8iK2RhdGEKICAgICAgICAgICAgICAgICAgICAgICAgc2VuZGRhdGE9IiIKICAgICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICAgICBwb3N0ZGF0YSA9IkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkXHJcbiIKICAgICAgICAgICAgICAgICAgICAgICAgcG9zdGRhdGErPSJDb250ZW50LUxlbmd0aDogIitzdHIobGVuKGRhdGEpKSsiXHJcbiIKICAgICAgICAgICAgICAgICAgICAgICAgcG9zdGRhdGErPSJDb25lY3Rpb246IGNsb3NlXHJcblxcclxuIgogICAgICAgICAgICAgICAgc29jay5zZW5kKG1ldGhvZCsiICIrdXJsKyIgSFRUUC8xLjFcclxuIikKICAgICAgICAgICAgICAgIHNvY2suc2VuZCgiSE9TVDogIitob3N0KyJcclxuIikKICAgICAgICAgICAgICAgIHNvY2suc2VuZCgiVXNlci1BZ2VudDogIithZ2VudCsiXHJcbiIpCiAgICAgICAgICAgICAgICBpZiBub3QgaGF2ZUJlaGF2aW91cjoKICAgICAgICAgICAgICAgICAgICBzb2NrLnNlbmQoIkFjY2VwdDogIisidGV4dC94bWwsYXBwbGljYXRpb24veG1sLGFwcGxpY2F0aW9uL3hodG1sK3htbCx0ZXh0L2h0bWw7cT0wLjksdGV4dC9wbGFpbjtxPTAuOCxpbWFnZS9wbmcsKi8qO3E9MC41XHJcbiIpCiAgICAgICAgICAgICAgICAgICAgc29jay5zZW5kKCJBY2NlcHQtTGFuZ3VhZ2U6ICIgKyBsYW5nLmxvd2VyKCkgKyAiXHJcbiIpCiAgICAgICAgICAgICAgICAgICAgc29jay5zZW5kKCJBY2NlcHQtQ2hhcnNldDogIisgIklTTy04ODU5LTEsdXRmLTg7cT0wLjcsKjtxPTAuN1xyXG4iKQogICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICBzb2NrLnNlbmQoIkFjY2VwdC1MYW5ndWFnZTogIiArIGxhbmcubG93ZXIoKSArICJcclxuIikKICAgICAgICAgICAgICAgIGlmIGxlbihhdXRoKT4wOgogICAgICAgICAgICAgICAgICAgIHNvY2suc2VuZCgiQXV0aG9yaXphdGlvbjogQmFzaWMgIitfX2ltcG9ydF9fKCdiYXNlNjQnKS5lbmNvZGVzdHJpbmcoYXV0aCkrIlxyXG4iKQogICAgICAgICAgICAgICAgaWYgbGVuKHJlZmVyZXIpPjA6CiAgICAgICAgICAgICAgICAgICAgc29jay5zZW5kKCJSZWZlcmVyOiAiK3JlZmVyZXIrIlxyXG4iKQogICAgICAgICAgICAgICAgaWYgbGVuKHBvc3RkYXRhKT4wOgogICAgICAgICAgICAgICAgICAgIHNvY2suc2VuZChwb3N0ZGF0YSkKICAgICAgICAgICAgICAgICAgICBzb2NrLnNlbmQoc2VuZGRhdGEpCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIHNvY2suc2VuZCgiXHJcbiIpCiAgICAgICAgICAgICAgICAgICAgc29jay5zZW5kKCJcclxuIikKICAgICAgICAgICAgZWxpZiBwcm90bz09InRlbG5ldDoiOgogICAgICAgICAgICAgICAgaGVhZGVyPTEKICAgICAgICAgICAgICAgIGNvbnRlbnQ9MQogICAgICAgICAgICAgICAgaWYgdXJsLmZpbmQoc2VwZXJhdG9yKSE9LTE6CiAgICAgICAgICAgICAgICAgICAgZm9yIGNtZCBpbiB1cmwuc3BsaXQoc2VwZXJhdG9yKToKICAgICAgICAgICAgICAgICAgICAgICAgc29jay5zZW5kKGNtZCsiXHJcbiIpCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIHNvY2suc2VuZCh1cmwrIlxyXG4iKQogICAgICAgICAgICBzb2NrLnNodXRkb3duKDEpCiAgICAgICAgICAgIHJlY2VpdmVkPSIiCiAgICAgICAgICAgIHdoaWxlIFRydWU6CiAgICAgICAgICAgICAgICByZWFkPXNvY2sucmVjdigxMDI0KQogICAgICAgICAgICAgICAgaWYgbm90IHJlYWQ6CiAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgIHJlY2VpdmVkKz1yZWFkCiAgICAgICAgICAgIHNvY2suY2xvc2UoKQogICAgICAgICAgICByZWNlaXZlZCA9IF9faW1wb3J0X18oJ3JlJykuc3BsaXQoIlxyXG5cclxuIixyZWNlaXZlZCkKICAgICAgICAgICAgcmVkaXJlY3QgPSBfX2ltcG9ydF9fKCdyZScpLmZpbmRhbGwociIoP20pXkxvY2F0aW9uOlxzKC4qKVxyXG4iLCByZWNlaXZlZFswXSkKICAgICAgICAgICAgaWYgcmVkaXJlY3Q6CiAgICAgICAgICAgICAgICBpZiBmb2xsb3c9PTE6CiAgICAgICAgICAgICAgICAgICAgc2VsZi5yZWN1cnNpdis9MQogICAgICAgICAgICAgICAgICAgIGlmIHJlZGlyZWN0WzBdLmZpbmQoImh0dHA6Ly8iKT09LTE6CiAgICAgICAgICAgICAgICAgICAgICAgIHJlZGlyZWN0WzBdPSJodHRwOi8vIitob3N0K3JlZGlyZWN0WzBdCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYub3BlbihyZWRpcmVjdFswXSxtZXRob2Q9bWV0aG9kLCBkYXRhPWRhdGEsIHJlZmVyZXI9cmVmZXJlciwgYWdlbnQ9YWdlbnQsYXV0aD1hdXRoLHRpbWVvdXQ9dGltZW91dCxsYW5nPWxhbmcsaGVhZGVyPWhlYWRlcixjb250ZW50PWNvbnRlbnQsc2VwZXJhdG9yPXNlcGVyYXRvcikKICAgICAgICAgICAgaWYgcmVjZWl2ZWRbMF1bOToxMl0gIT0gIjIwMCIgYW5kIHByb3RvPT0iaHR0cDoiOgogICAgICAgICAgICAgICAgcmV0dXJuICJFUlJPUjogIiArIHJlY2VpdmVkWzBdLnNwbGl0KCJcXHJcXG4iKVswXQogICAgICAgICAgICByZXQ9IiIKICAgICAgICAgICAgaWYgaGVhZGVyOgogICAgICAgICAgICAgICAgcmV0Kz1yZWNlaXZlZFswXQogICAgICAgICAgICBpZiBjb250ZW50OgogICAgICAgICAgICAgICAgaWYgaGVhZGVyOgogICAgICAgICAgICAgICAgICAgIHJldCs9IlxyXG5cclxuIgogICAgICAgICAgICAgICAgcmVjZWl2ZWQucG9wKDApCiAgICAgICAgICAgICAgICByZXQrPSJcclxuXHJcbiIuam9pbihyZWNlaXZlZCkKICAgICAgICAgICAgc2VsZi5yZWN1cnNpdj0wCiAgICAgICAgICAgIHJldHVybiByZXQK'),'<10901_urllib>','exec'))"|""|0|0|0|0 ## Klasse auf SN[1] 5012|0|"EI"|"KNXUF_urllib(self)"|""|0|0|1|0 ## Abfrage 5012|0|"(EC[1] or EC[2] or EC[3] or EC[4]) and len(EN[1])>0"|"SN[1].open('http://'+EN[1]+'/admin/cgi-bin/state.cgi?fav=1',auth=EN[2]+':'+EN[3])"|""|7|0|2|0 ## Regex als Array auf SN[3] 5012|0|"len(SN[2])>0"|"__import__('re').findall(r'(?s)<name>(?P<name>.*?)</name>.*?<url>(?P<url>.*?)</url>',SN[2])"|""|0|0|3|0 ## Abbruch bei Fehler #5012|1|"str(type(SN[3])).find('SRE_Match') == -1"|""|""|0|0|0|0 ## Ausgabe ## jeweils Name,URL ## momentan wird der URL nicht verwendet #Anzahl der Favoriten ausgeben 5012|0|"len(SN[2])>0"|"len(SN[3])"|""|1|0|0|0 #Wenn Array SN[3] grösser 0 dann .... 5012|0|"len(SN[3])>0"|"SN[3][0][0]"|""|2|0|0|0 #5012|0|"len(SN[3])>0"|"SN[3][0][1]"|""|2|0|0|0 #Wenn Array SN[3] grösser 1 dann .... 5012|0|"len(SN[3])>1"|"SN[3][1][0]"|""|3|0|0|0 #Wenn Array SN[3] grösser 2 dann .... 5012|0|"len(SN[3])>2"|"SN[3][2][0]"|""|4|0|0|0 #Wenn Array SN[3] grösser 3 dann .... 5012|0|"len(SN[3])>3"|"SN[3][3][0]"|""|5|0|0|0 #Wenn Array SN[3] grösser 4 dann .... 5012|0|"len(SN[3])>4"|"SN[3][4][0]"|""|6|0|0|0 #Wenn Array SN[3] grösser 5 dann .... 5012|0|"len(SN[3])>5"|"SN[3][5][0]"|""|7|0|0|0
Mein Python Verständnis wird langsam besser ;-)
Danke Nils
Gute Nacht
Einen Kommentar schreiben:
-
OK, der findall unterstütz die NamedGroups nicht.
## evtl. die \n in \\n ändernCode:## Regex als Array auf SN[3] 5012|0|"len(SN[2])>0"|"__import__('re').findall(r'(?s)<name>(?P<name>.*?)</name>.*?<url>\n(?P<url>.*?)\n</url>',SN[2])"|""|0|0|3|0 ## jeweils immer Name,URL Wenn Array SN[3] grösser 0 dann .... 5012|0|"len(SN[3])>0"|"SN[3][0][0]"|""|3|0|0|0 5012|0|"len(SN[3])>0"|"SN[3][0][1]"|""|4|0|0|0 Wenn Array SN[3] grösser 1 dann .... 5012|0|"len(SN[3])>1"|"SN[3][0][0]"|""|5|0|0|0 5012|0|"len(SN[3])>1"|"SN[3][0][1]"|""|6|0|0|0 Wenn Array SN[3] grösser 2 dann .... 5012|0|"len(SN[3])>2"|"SN[3][0][0]"|""|7|0|0|0 5012|0|"len(SN[3])>2"|"SN[3][0][1]"|""|8|0|0|0
Einen Kommentar schreiben:
-
Ok hab ich getestet, jetzt spuckt er mir eine Fehlermeldung aus:
Code:[B]12.06.2010 22:53:42 (1)[/B] File "/hs/compile/hs_logik.py", line 170, in calc File "formula", line 0, in ? AttributeError: 'tuple' object has no attribute 'group' [5012L, 10101L, 0L, 'len(SN[3])]0', "SN[3][0].group('name')", '', 1L, 0L, 0L, 0L]
Einen Kommentar schreiben:
-
Code:## Regex als Array auf SN[3] 5012|0|"len(SN[2])>0"|"__import__('re').findall('(?s)<name>(?P<name>.*?)</name>.*?<url>(?P<url>.*?)</url>',SN[2])"|""|0|0|3|0 Wenn Array SN[3] grösser 0 dann .... 5012|0|"len(SN[3])>0"|"SN[3][0].group('name')"|""|3|0|0|0 5012|0|"len(SN[3])>0"|"SN[3][0].group('url')"|""|4|0|0|0 Wenn Array SN[3] grösser 1 dann .... 5012|0|"len(SN[3])>1"|"SN[3][0].group('name')"|""|5|0|0|0 5012|0|"len(SN[3])>1"|"SN[3][0].group('url')"|""|6|0|0|0 Wenn Array SN[3] grösser 2 dann .... 5012|0|"len(SN[3])>2"|"SN[3][0].group('name')"|""|7|0|0|0 5012|0|"len(SN[3])>2"|"SN[3][0].group('url')"|""|8|0|0|0
aber wie immer
ungetestet
Einen Kommentar schreiben:
-
Hallo Regex Experten,
da ich dank der von Nils modifizierten Urllib jetzt auch auf meinen Musikpal zugreifen kann, gehts einen Schritt weiter.
Nächster Schritt, nächstes Problem ;-)
Ich scheitere an einer flexiblen Regex Abfrage der Musicpal Favoriten.
Da die Anzahl der Favoriten natürlich fexibel ist scheitert die unten verwendete Abfrage sobald weniger als 6 Favoriten gespeichert sind.
Natürlich möchte ich im Endausbau mindestens 20 Favoriten auslesen.
Vermutlich sollte ich die Abfrage auf mehrere Einzelabfragen verteilen.
Noch besser fänd ich zuerst die Anzahl der Favoriten abzufragen und dann in einer Schleife die Einträge in ein Array zu schreiben.
Leider kann ich das aber nicht umsetzen.
Hier die unflexible Abfrage:
....und ein Ausschnitt aus dem auzuwertenden XML:Code:## Regex 5012|0|"len(SN[2])>0"|"__import__('re').search(r'(?s)(?:<name>(?P<fav01>.*?)</name>.*?)(?:<name>(?P<fav02>.*?)</name>.*?)(?:<name>(?P<fav03>.*?)</name>.*?)(?:<name>(?P<fav04>.*?)</name>.*?)(?:<name>(?P<fav05>.*?)</name>.*?)(?:<name>(?P<fav06>.*?)</name>.*?)',SN[2])"|""|0|0|3|0
Wie löst ihr das Problem einer Urllib bzw. Regex Abfrage mit flexibler Datenmenge aber identischen XML Tags?Code:<favorite> <name>Rasta Music</name> − <url> http://freecom.vtuner.com/setupapp/fc/asp/func/dynamOD.asp?ex45v=0001DB09F344&id=11826 </url> <length>-1</length> </favorite> − <favorite> <name>CyberFM Reggae</name> − <url> http://freecom.vtuner.com/setupapp/fc/asp/func/dynamOD.asp?ex45v=0001DB09F344&id=30752 </url> <length>-1</length> </favorite> − <favorite> <name>Tropical 100 Bacharengue</name> − <url> http://freecom.vtuner.com/setupapp/fc/asp/func/dynamOD.asp?ex45v=0001DB09F344&id=32305 </url> <length>-1</length> </favorite> − <favorite> <name>ClubFM Merengue</name> − <url> http://freecom.vtuner.com/setupapp/fc/asp/func/dynamOD.asp?ex45v=0001DB09F344&id=24503 </url> <length>-1</length> </favorite>
Einen Kommentar schreiben:
-
So hier ist die urllib mit auth.
Code:einfach nur auth='user:pass' als weiteren Parameter übergeben
Angehängte Dateien
Einen Kommentar schreiben:
-
Hallo Nils,
natürlich hab ich solange Zeit.
Bei dem Wetter gibts eh anderes zu tun: Grillen, Gartenarbeit, Grillen...
Gruß Wolfgang
Einen Kommentar schreiben:
-
Ja hab ich nicht drin, wenn du ein bisschen Zeit hast bau ichs am Montag ein.
Einen Kommentar schreiben:
-
woda hat ein Thema erstellt HS/FS - √ - Urllib, Dynamische Webabfrage von passwortgeschützter Seite?.- √ - Urllib, Dynamische Webabfrage von passwortgeschützter Seite?
Hallo zusammen,
Ich versuch mich an einem Logikbaustein der mit Hilfe der Urllib eine Webabfrage an meinem Musikpal durchführt.
Ziel ist es die ja nicht immer in gleicher Anzahl gespeicherten Favoriten auszulesen und die ersten 15 auszugeben.
Wie krieg ich Username und Passwort mit der Urllib übermittelt?
So gehts anscheinend nicht
Code:# -*- coding: iso8859-1 -*- ## ----------------------------------------------------- ## urllib : Musicpal Favoriten Abfrage ### V0.1 ## ## erstellt am: 2010-06-01 20:16 ## ----------------------------------------------------- ## Copyright © 2010, knx-user-forum e.V, All rights reserved. ## ## This program is free software; you can redistribute it and/or modify it under the terms ## of the GNU General Public License as published by the Free Software Foundation; either ## version 3 of the License, or (at your option) any later version. ## ## This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; ## without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. ## See the GNU General Public License for more details. ## ## You should have received a copy of the GNU General Public License along with this program; ## if not, see <http://www.gnu.de/documents/gpl-3.0.de.html>. #5000|"Text"|Remanent(1/0)|Anz.Eingänge|.n.|Anzahl Ausgänge|.n.|.n. #5001|Anzahl Eingänge|Ausgänge|Offset|Speicher|Berechnung bei Start #5002|Index Eingang|Default Wert|0=numerisch 1=alphanummerisch #5003|Speicher|Initwert|Remanent #5004|ausgang|Initwert|runden binär (0/1)|typ (1-send/2-sbc)|0=numerisch 1=alphanummerisch #5012|abbruch bei bed. (0/1)|bedingung|formel|zeit|pin-ausgang|pin-offset|pin-speicher|pin-neg.ausgang 5000|"woda\MusicPal_Favoritenabfrage"|0|4|"E1 Musicpal_IP"|"E2 Username"|"E3 Passwort"|"E4 Trigger"|7|"A1 Fav.01"|"A2 Fav.02"|"A3 Fav.03"|"A4 Fav.04"|"A5 Fav.05"|"A6 Fav.06"|"A7 DEBUG" 5001|3|7|0|3|1 # EN[x] 5002|1|"192.168.0.5"|1 #* IP 5002|2|""|1 #* Username 5002|3|""|1 #* Passwort 5002|4|""|0 #* Trigger # Speicher 5003|1||0 #* Klassenspeicher 5003|2||0 #* HTMLSpeicher 5003|3||0 #* RegexSpeicher # Ausgänge 5004|1|""|0|1|1 #* Fav. 1 5004|2|""|0|1|1 #* 5004|3|""|0|1|1 #* 5004|4|""|0|1|1 #* 5004|5|""|0|1|1 #* 5004|6|""|0|1|1 #* 5004|7|""|0|1|1 #* DEBUG ################################################# 5012|0|"EI"|"eval(compile(__import__('base64').decodestring('CmlmIEVJPT0xOiAgICAKICAgIGNsYXNzIEtOWFVGX3VybGxpYjoKICAgICAgICBkZWYgX19pbml0X18oc2VsZixvYmopOgogICAgICAgICAgICBzZWxmLk1DID0gb2JqLk1DCiAgICAgICAgICAgIHNlbGYucmVjdXJzaXY9MAogICAgICAgIGRlZiByZXNvbHZlKHNlbGYsaG9zdCk6CiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLk1DLkROU1Jlc29sdmVyLmdldEhvc3RJUChob3N0KQogICAgICAgICAgICBleGNlcHQ6CiAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9faW1wb3J0X18oJ3NvY2tldCcpLmdldGhvc3RieW5hbWUoaG9zdCkKICAgICAgICAgICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgICAgICAgICByYWlzZSAiSG9zdDogIiArIGhvc3QgKyAiIG5vdCBmb3VuZCIKICAgICAgICBkZWYgb3BlbihzZWxmLHVybCxtZXRob2Q9J0dFVCcsIGRhdGE9JycsIHJlZmVyZXI9JycsIGFnZW50PSJHSVJBIEhvbWVzZXJ2ZXIiLGxhbmc9ImRlLWRlLGRlO3E9MC44LGVuLXVzO3E9MC41O2VuO3E9MC4zIixmb2xsb3c9MSx0aW1lb3V0PTEsaGVhZGVyPTAsY29udGVudD0xLHNlcGVyYXRvcj0iIyIpOgogICAgICAgICAgICBpZiBzZWxmLnJlY3Vyc2l2PjI6CiAgICAgICAgICAgICAgICByZXR1cm4gIiIKICAgICAgICAgICAgaGF2ZUJlaGF2aW91cj1UcnVlCiAgICAgICAgICAgIGlmIGFnZW50PT0iTVNJRSI6CiAgICAgICAgICAgICAgICBhZ2VudD0iTW96aWxsYS80LjAgKGNvbXBhdGlibGU7IE1TSUUgNy4wOyBXaW5kb3dzIE5UIDYuMCkiCiAgICAgICAgICAgICAgICBoYXZlQmVoYXZpb3VyPUZhbHNlCiAgICAgICAgICAgIGlmIGFnZW50PT0iRkYyIjoKICAgICAgICAgICAgICAgIGFnZW50PSJNb3ppbGxhLzUuMCAoV2luZG93czsgVTsgV2luZG93cyBOVCA1LjE7IGRlOyBydjoxLjguMS4yMCkgR2Vja28vMjAwODEyMTcgRmlyZWZveC8yLjAuMC4yMCIKICAgICAgICAgICAgICAgIGhhdmVCZWhhdmlvdXI9RmFsc2UKICAgICAgICAgICAgbWV0aG9kPW1ldGhvZC51cHBlcigpCiAgICAgICAgICAgIHVybD11cmwuc3BsaXQoIi8iKQogICAgICAgICAgICBwcm90bz11cmxbMF0ubG93ZXIoKQogICAgICAgICAgICBpZiBwcm90bz09Imh0dHA6IjoKICAgICAgICAgICAgICAgIHBvcnQ9ODAKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHBvcnQ9MjMKICAgICAgICAgICAgaG9zdD11cmxbMl0ubG93ZXIoKQogICAgICAgICAgICBpZiBob3N0LmZpbmQoIjoiKT4wOgogICAgICAgICAgICAgICAgKGhvc3QsIHBvcnQpID0gaG9zdC5zcGxpdCgiOiIpCiAgICAgICAgICAgICAgICBwb3J0PWludChwb3J0KQogICAgICAgICAgICBkc3RfYWRkciA9IHNlbGYucmVzb2x2ZShob3N0KQogICAgICAgICAgICB1cmwucG9wKDApCiAgICAgICAgICAgIHVybC5wb3AoMCkKICAgICAgICAgICAgdXJsLnBvcCgwKQogICAgICAgICAgICBzb2NrID0gX19pbXBvcnRfXygnc29ja2V0Jykuc29ja2V0KF9faW1wb3J0X18oJ3NvY2tldCcpLkFGX0lORVQsX19pbXBvcnRfXygnc29ja2V0JykuU09DS19TVFJFQU0pCiAgICAgICAgICAgIGlmIGZsb2F0KF9faW1wb3J0X18oJ3N5cycpLnZlcnNpb25bMDozXSk+Mi4yOgogICAgICAgICAgICAgICAgc29jay5zZXR0aW1lb3V0KHRpbWVvdXQpCiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIHNvY2suY29ubmVjdCgoZHN0X2FkZHIscG9ydCkpCiAgICAgICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgICAgICAgIHJhaXNlICJLZWluZSBWZXJiaW5kdW5nIHp1IEhvc3QgIitob3N0KyIgYXVmIFBvcnQgIitzdHIocG9ydCkKICAgICAgICAgICAgICAgIHNvY2suY2xvc2UoKQogICAgICAgICAgICAgICAgcmV0dXJuICIiCiAgICAgICAgICAgIHVybD0iLyIuam9pbih1cmwpICAgICAgICAgICAgICAgIAogICAgICAgICAgICBpZiBwcm90bz09Imh0dHA6IjoKICAgICAgICAgICAgICAgIHVybCA9IF9faW1wb3J0X18oJ3VybGxpYicpLnF1b3RlX3BsdXMoIi8iK3VybCwiLz8mPSUjIikKICAgICAgICAgICAgICAgIHBvc3RkYXRhPSIiCiAgICAgICAgICAgICAgICBpZiBsZW4oZGF0YSk+MDoKICAgICAgICAgICAgICAgICAgICBzZW5kZGF0YT1fX2ltcG9ydF9fKCd1cmxsaWInKS5xdW90ZV9wbHVzKGRhdGEsIiY9IikKICAgICAgICAgICAgICAgICAgICBpZiBtZXRob2QgPT0gIkdFVCI6CiAgICAgICAgICAgICAgICAgICAgICAgIHVybCs9Ij8iK2RhdGEKICAgICAgICAgICAgICAgICAgICAgICAgc2VuZGRhdGE9IiIKICAgICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICAgICBwb3N0ZGF0YSA9IkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkXHJcbiIKICAgICAgICAgICAgICAgICAgICAgICAgcG9zdGRhdGErPSJDb250ZW50LUxlbmd0aDogIitzdHIobGVuKGRhdGEpKSsiXHJcbiIKICAgICAgICAgICAgICAgICAgICAgICAgcG9zdGRhdGErPSJDb25lY3Rpb246IGNsb3NlXHJcblxyXG4iCiAgICAgICAgICAgICAgICBzb2NrLnNlbmQobWV0aG9kKyIgIit1cmwrIiBIVFRQLzEuMVxyXG4iKQogICAgICAgICAgICAgICAgc29jay5zZW5kKCJIT1NUOiAiK2hvc3QrIlxyXG4iKQogICAgICAgICAgICAgICAgc29jay5zZW5kKCJVc2VyLUFnZW50OiAiK2FnZW50KyJcclxuIikKICAgICAgICAgICAgICAgIGlmIG5vdCBoYXZlQmVoYXZpb3VyOgogICAgICAgICAgICAgICAgICAgIHNvY2suc2VuZCgiQWNjZXB0OiAiKyJ0ZXh0L3htbCxhcHBsaWNhdGlvbi94bWwsYXBwbGljYXRpb24veGh0bWwreG1sLHRleHQvaHRtbDtxPTAuOSx0ZXh0L3BsYWluO3E9MC44LGltYWdlL3BuZywqLyo7cT0wLjVcclxuIikKICAgICAgICAgICAgICAgICAgICBzb2NrLnNlbmQoIkFjY2VwdC1MYW5ndWFnZTogIiArIGxhbmcubG93ZXIoKSArICJcclxuIikKICAgICAgICAgICAgICAgICAgICBzb2NrLnNlbmQoIkFjY2VwdC1DaGFyc2V0OiAiKyAiSVNPLTg4NTktMSx1dGYtODtxPTAuNywqO3E9MC43XHJcbiIpCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIHNvY2suc2VuZCgiQWNjZXB0LUxhbmd1YWdlOiAiICsgbGFuZy5sb3dlcigpICsgIlxyXG4iKQogICAgICAgICAgICAgICAgaWYgbGVuKHJlZmVyZXIpPjA6CiAgICAgICAgICAgICAgICAgICAgc29jay5zZW5kKCJSZWZlcmVyOiAiK3JlZmVyZXIrIlxyXG4iKQogICAgICAgICAgICAgICAgaWYgbGVuKHBvc3RkYXRhKT4wOgogICAgICAgICAgICAgICAgICAgIHNvY2suc2VuZChwb3N0ZGF0YSkKICAgICAgICAgICAgICAgICAgICBzb2NrLnNlbmQoc2VuZGRhdGEpCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIHNvY2suc2VuZCgiXHJcbiIpCiAgICAgICAgICAgICAgICAgICAgc29jay5zZW5kKCJcclxuIikKICAgICAgICAgICAgZWxpZiBwcm90bz09InRlbG5ldDoiOgogICAgICAgICAgICAgICAgaGVhZGVyPTEKICAgICAgICAgICAgICAgIGNvbnRlbnQ9MQogICAgICAgICAgICAgICAgaWYgdXJsLmZpbmQoc2VwZXJhdG9yKSE9LTE6CiAgICAgICAgICAgICAgICAgICAgZm9yIGNtZCBpbiB1cmwuc3BsaXQoc2VwZXJhdG9yKToKICAgICAgICAgICAgICAgICAgICAgICAgc29jay5zZW5kKGNtZCsiXHJcbiIpCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIHNvY2suc2VuZCh1cmwrIlxyXG4iKQogICAgICAgICAgICBzb2NrLnNodXRkb3duKDEpCiAgICAgICAgICAgIHJlY2VpdmVkPSIiCiAgICAgICAgICAgIHdoaWxlIFRydWU6CiAgICAgICAgICAgICAgICByZWFkPXNvY2sucmVjdigxMDI0KQogICAgICAgICAgICAgICAgaWYgbm90IHJlYWQ6CiAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgIHJlY2VpdmVkKz1yZWFkCiAgICAgICAgICAgIHNvY2suY2xvc2UoKQogICAgICAgICAgICByZWNlaXZlZCA9IF9faW1wb3J0X18oJ3JlJykuc3BsaXQoIlxyXG5cclxuIixyZWNlaXZlZCkKICAgICAgICAgICAgcmVkaXJlY3QgPSBfX2ltcG9ydF9fKCdyZScpLmZpbmRhbGwociIoP20pXkxvY2F0aW9uOlxzKFx3KzouKilcclxuIiwgcmVjZWl2ZWRbMF0pCiAgICAgICAgICAgIGlmIHJlZGlyZWN0OgogICAgICAgICAgICAgICAgaWYgZm9sbG93PT0xOgogICAgICAgICAgICAgICAgICAgIHNlbGYucmVjdXJzaXYrPTEKICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5vcGVuKHJlZGlyZWN0WzBdLG1ldGhvZD1tZXRob2QsIGRhdGE9ZGF0YSwgcmVmZXJlcj1yZWZlcmVyLCBhZ2VudD1hZ2VudCx0aW1lb3V0PXRpbWVvdXQsaGVhZGVyPWhlYWRlcixjb250ZW50PWNvbnRlbnQsc2VwZXJhdG9yPXNlcGVyYXRvcikKICAgICAgICAgICAgcmV0PSIiCiAgICAgICAgICAgIGlmIGhlYWRlcjoKICAgICAgICAgICAgICAgIHJldCs9cmVjZWl2ZWRbMF0KICAgICAgICAgICAgaWYgY29udGVudDoKICAgICAgICAgICAgICAgIGlmIGhlYWRlcjoKICAgICAgICAgICAgICAgICAgICByZXQrPSJcclxuXHJcbiIKICAgICAgICAgICAgICAgIHJlY2VpdmVkLnBvcCgwKQogICAgICAgICAgICAgICAgcmV0Kz0iXHJcblxyXG4iLmpvaW4ocmVjZWl2ZWQpCiAgICAgICAgICAgIHJldHVybiByZXQK'),'<10101_urllib_Musikpal_Favoritenabfrage>','exec'))"|""|0|0|0|0 ## Klasse auf SN[1] 5012|0|"EI"|"KNXUF_urllib(self)"|""|0|0|1|0 ## Abfrage 5012|0|"(EC[1] or EC[2] or EC[3] or EC[4]) and len(EN[1])>0"|"SN[1].open('http://'+EN[2]+':'+EN[3]+'@'+EN[1]+'/admin/cgi-bin/state.cgi?fav=1')"|""|7|0|2|0 ## Regex 5012|0|"len(SN[2])>0"|"__import__('re').search(r'<name>(?P<fav01>)[</name>]',SN[2])"|""|0|0|3|0 ## Abbruch bei Fehler 5012|1|"str(type(SN[3])).find('SRE_Match') == -1"|""|""|0|0|0|0 ## AUsgabe 5012|0|"SN[3]"|"SN[3].group('fav01')"|""|1|0|0|0 5012|0|"SN[3]"|"SN[3].group('fav02')"|""|2|0|0|0 5012|0|"SN[3]"|"SN[3].group('fav03')"|""|3|0|0|0 5012|0|"SN[3]"|"SN[3].group('fav04')"|""|4|0|0|0 5012|0|"SN[3]"|"SN[3].group('fav05')"|""|5|0|0|0 5012|0|"SN[3]"|"SN[3].group('fav06')"|""|6|0|0|0Stichworte: -


Einen Kommentar schreiben: