#!/usr/bin/python
# -*- coding: iso-8859-15 -*-
import socket
import urllib
import urllib2
##
# Zugriff auf einige Methoden eines FritzRepeaters.
##
class FritzRepeater:
baseurl = 'http://fritz.repeater/cgi-bin/webcm'
getpage = '../html/query.txt'
def __init__(self, password=None):
self.password = password
def _doRequest(self, firstVar, sndVar=None):
if self.password is None:
## Aufruf kann ohne Passwort abgeschickt werden
content = { 'getpage': self.getpage, 'var:n[1]': firstVar }
else:
## verwende das Passwort fuer den Login
content = { 'getpage': self.getpage, 'var:n[1]': firstVar, 'login:command/password': self.password }
if sndVar is not None:
content[firstVar] = sndVar
data = urllib.urlencode(content)
req = urllib2.Request(self.baseurl, data)
return urllib2.urlopen(req)
def play(self, station_id):
self._doRequest('configd:settings/NLR/PlayControl', station_id)
def getPlayedId(self):
## http://fritz.repeater/cgi-bin/webcm?getpage=../html/query.txt&var:n[1]=configd:settings/NLR/PlayStatus
return self._doRequest('configd:settings/NLR/PlayStatus').read().strip()
def getPlayedName(self):
## http://fritz.repeater/cgi-bin/webcm?getpage=../html/query.txt&var:n[1]=configd:settings/NLR/PlayName
return self._doRequest('configd:settings/NLR/PlayName').read().strip()
def getPlayedTitle(self):
## http://fritz.repeater/cgi-bin/webcm?getpage=../html/query.txt&var:n[1]=configd:settings/NLR/PlayText
return self._doRequest('configd:settings/NLR/PlayText').read().strip()
if __name__ == '__main__':
## Wenn password = None ist, so wird einfach der Request ohne Password an den Repeater geschickt. Ist das Passwort gesetzt,
## so wird es bei der Uebertragung verwendet. Lautet das Passwort z.B. test so muss die Zeile wie folgt lauten:
#password = 'test'
password = None
repeater = FritzRepeater(password)
## Spiele Station mit der gegebenen Id ab
repeater.play(1)
## hier kommt es eventuell vor, dass der falsche Index zurückkommt (0), da wir uns noch im Wechsel der Kanäle befinden.
## Ab dem nächsten Abruf sollte es aber wieder stimmen
## Liefert die Id der aktuell abgespielten Station
print 'Aktuell gespielter Index:', repeater.getPlayedId()
## Liefert den Namen der aktuell abgespielten Station
print 'Name der aktuell gespielten Station:', repeater.getPlayedName()
## Liefert den aktuellen Titel der gespielt wird
print 'Atueller Titel:', repeater.getPlayedTitle()