Hallo zusammen,
ich lese schon etwas länger gelegentlich immer mit und konnte bisher auf alle Fragen schon einen passenden Thread finden. Dieses mal leider nicht.
Ich bin aktuell dabei mir basierend auf dem restful-api eine kleine Extension für Raycast zu schreiben, mit der sich mein VDR bequem bedienen lässt. Soweit klappt auch schon einiges, d.h. ich kann das aktuelle Programm aller Sender und z.B. auch alle Timer anzeigen lassen. Beim Erstellen eines Timers scheitere ich klaglos und bin mir inzwischen relativ sicher, dass hier ein Bug vorhanden sein muss.
Gemäß der Dokumentation erwartet die restful-api eine HTTP-POST Anfrage an "http://ip:port/timers" mit den entsprechenden Daten, z.B:
POST /timers HTTP/1.1
Content-Length: 98
Connection: close
file=Ein%20Film&flags=1&start=1400&stop=1615&day=2011-12-24&channel=C-71-71-61920&weekdays=-------
Ein kurzes Pythonskript zum Ausprobieren (erfordert die requests-Library):
#!/usr/bin/env python3
import requests
ip = "192.168.2.93"
port = 8002
data = {
'flags': 1,
'file': "test",
'stop': "2025",
'start': "2026",
'day': "2022-06-05",
'channel': "S19.2E-1-1019-10301",
"weekdays": "-------",
}
requests.post(f"http://{ip}:{port}/timers", data=data)
Alles anzeigen
liefert
Traceback (most recent call last):
File "/usr/local/lib/python3.9/site-packages/urllib3/connectionpool.py", line 703, in urlopen
httplib_response = self._make_request(
File "/usr/local/lib/python3.9/site-packages/urllib3/connectionpool.py", line 449, in _make_request
six.raise_from(e, None)
File "<string>", line 3, in raise_from
File "/usr/local/lib/python3.9/site-packages/urllib3/connectionpool.py", line 444, in _make_request
httplib_response = conn.getresponse()
File "/usr/local/Cellar/python@3.9/3.9.12_1/Frameworks/Python.framework/Versions/3.9/lib/python3.9/http/client.py", line 1377, in getresponse
response.begin()
File "/usr/local/Cellar/python@3.9/3.9.12_1/Frameworks/Python.framework/Versions/3.9/lib/python3.9/http/client.py", line 320, in begin
version, status, reason = self._read_status()
File "/usr/local/Cellar/python@3.9/3.9.12_1/Frameworks/Python.framework/Versions/3.9/lib/python3.9/http/client.py", line 289, in _read_status
raise RemoteDisconnected("Remote end closed connection without"
http.client.RemoteDisconnected: Remote end closed connection without response
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/local/lib/python3.9/site-packages/requests/adapters.py", line 439, in send
resp = conn.urlopen(
File "/usr/local/lib/python3.9/site-packages/urllib3/connectionpool.py", line 785, in urlopen
retries = retries.increment(
File "/usr/local/lib/python3.9/site-packages/urllib3/util/retry.py", line 550, in increment
raise six.reraise(type(error), error, _stacktrace)
File "/usr/local/lib/python3.9/site-packages/urllib3/packages/six.py", line 769, in reraise
raise value.with_traceback(tb)
File "/usr/local/lib/python3.9/site-packages/urllib3/connectionpool.py", line 703, in urlopen
httplib_response = self._make_request(
File "/usr/local/lib/python3.9/site-packages/urllib3/connectionpool.py", line 449, in _make_request
six.raise_from(e, None)
File "<string>", line 3, in raise_from
File "/usr/local/lib/python3.9/site-packages/urllib3/connectionpool.py", line 444, in _make_request
httplib_response = conn.getresponse()
File "/usr/local/Cellar/python@3.9/3.9.12_1/Frameworks/Python.framework/Versions/3.9/lib/python3.9/http/client.py", line 1377, in getresponse
response.begin()
File "/usr/local/Cellar/python@3.9/3.9.12_1/Frameworks/Python.framework/Versions/3.9/lib/python3.9/http/client.py", line 320, in begin
version, status, reason = self._read_status()
File "/usr/local/Cellar/python@3.9/3.9.12_1/Frameworks/Python.framework/Versions/3.9/lib/python3.9/http/client.py", line 289, in _read_status
raise RemoteDisconnected("Remote end closed connection without"
urllib3.exceptions.ProtocolError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/Users/jonathan/Desktop/vdr_restful_timer_test.py", line 18, in <module>
requests.post(url, data=data)
File "/usr/local/lib/python3.9/site-packages/requests/api.py", line 119, in post
return request('post', url, data=data, json=json, **kwargs)
File "/usr/local/lib/python3.9/site-packages/requests/api.py", line 61, in request
return session.request(method=method, url=url, **kwargs)
File "/usr/local/lib/python3.9/site-packages/requests/sessions.py", line 542, in request
resp = self.send(prep, **send_kwargs)
File "/usr/local/lib/python3.9/site-packages/requests/sessions.py", line 655, in send
r = adapter.send(request, **kwargs)
File "/usr/local/lib/python3.9/site-packages/requests/adapters.py", line 498, in send
raise ConnectionError(err, request=request)
requests.exceptions.ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))
[Finished in 743ms with exit code 1]
Alles anzeigen
und bring den VDR auch sofort mit Exit-Code 139 zum Absturz.
Versionen:
vdr 2.6.1
vdr-restfulapi-plugin 0.2.6.5
Ich habe auch mal den Test (HTTPRequests.java) ausprobiert, der im offiziellen Repo des Plugins dabei ist. Natürlich mit entsprechend angepasster IP. Auch hier stürzt der VDR mit Exit-Code 139 ab.
Da ich hier schon andere Threads gesehen habe, in denen User basierend auf dem Plugin eine komplette App geschrieben haben: Übersehe ich hier einfach nur etwas oder ist dies tatsächlich ein Bug, der noch nicht entdeckt wurde?
Danke vorab!