Wpis z mikrobloga

Potrzebuje pomocy, z góry zaznaczam, że jestem totalnie zielony z programowania. Po uruchomieniu kodu otrzymuje taki błąd

orangepi@orangepi:~/domoticz/scripts$ sudo python sendkey2ncplus.py
[sudo] password for orangepi:
File "send
key2ncplus.py", line 2
import os, sys, urllib2 HOST = "192.168.0.163" PORT = 8080 UUID =
^
SyntaxError: invalid syntax

#programowanie #python #linux #domoticz
Tutaj cały kod


import os, sys, urllib2

HOST = "192.168.0.163"
PORT = 8080
UUID = "195f5340-0000-0000-b74a-686359694193"

keys={'VOD' : 361,
'POWER' : 116,
'N' : 174,
'EPG' : 365,
'HOME' : 102,

'INFO' : 358,
'APP' : 367,
'OPT' : 357,

'VOLP' : 115,
'VOL
M' : 114,

'UP' : 103,
'LEFT' : 105,
'OK' : 352,
'RIGHT' : 106,
'DOWN' : 108,

'PRP' : 402,
'PR
M' : 403,

'BACK' : 158,

'STOP' : 128,
'REV' : 168,
'PAUSE' : 119,
'PLAY' : 207,
'FF' : 159,
'REC' : 167,

'MUTE' : 113,
'PORTAL' : 102,
'TEXT' : 388,
'LIST' : 395,

'RADIO' : 385,

'RED' : 398,
'GREEN' : 399,
'YELLOW' : 400, # music+ wimp
'BLUE' : 401, # netVOD+

'1' : 2,
'2' : 3,
'3' : 4,
'4' : 5,
'5' : 6,
'6' : 7,
'7' : 8,
'8' : 9,
'9' : 10,
'0' : 11,

'SETUP' : 367,
'STAR' : 1,
}

def sendsoap(status, key):
msg = """xml version="1.0" encoding="utf-8"?

ev=%s,code=%d

""" % (status, key)
url = "http://%s:%d/upnpfun/ctrl/uuid
%s/04" % (HOST, PORT, UUID)
req = urllib2.Request(url, msg);
req.addheader("SOAPACTION", '"urn:adbglobal.com:service:XADBRemoteControl:1#ProcessInputEvent"');
req.add
header('Content-type', 'application/xml');
res = urllib2.urlopen(req, timeout=1).read();
#print res
return res

def sendkey(key):
#print key
k =keys.get(key.upper(),-1)
#print k
res = send
soap("keydn", k)
res += sendsoap("keyup", k)
return res

def main():
res = send
key(sys.argv[1])
print res

if _name == "main_":
main()
  • 9
@nesti32: Ogólnie pobrany plik wygląda zupełnie inaczej, praktycznie wszystko jest w jednej linii. Po otwarciu pliku w konsoli, zmienia on postać, na taką, jaką tutaj wkleiłem.
Widzę, że miałeś podobny problem, więc jeśli jeszcze nie rozwiązałeś tego to podrzucam rozwiązanie.

Skrypt, który chciałeś uruchomić jest dość stary i rzuca HTTP 403. Znalazłem inny adres pod którym działa i zrobiłem swój skrypt. Jak coś uruchamiaj go w Pythonie 3.

import sys
import urllib.request
import urllib.parse

IP = "192.168.2.40"

ALLOWEDKEYS = [
"Info",
"Guide",
"Menu",
"ProgramUp",
"ProgramDown",
"Back",
"Mute",
"VolumeDown",
"VolumeUp",
"Up",
"Down",
"Right",
"Left",
"Play",
"Rewind",
"FForward",
"Record",
@mojetymczasowekonto - próbuję ogarnąć uruchomienie Twojego skryput, ale wyrzuca mi:

index = list(map(lambda name: name.lower(), ALLOWEDKEYS)).index(key.lower())
^
IndentationError: expected an indented block

Przy okazji, czy jest szansa wysłać komendę URLem - na zasadzie "http://adrestunera:8080/control/rcu/StandBy" ?
@prawdziwy-kangur: Spróbuj sobie cos takiego:
import urllib.request
import urllib.parse
import requests
import json

IP = "192.168.x.x"

def sendkey(key):
url = "http://" + IP + ":8080/control/rcu"
address = 'http://' + IP + ':8080/control/rcu'
response = requests.post(url, data={'Keypress': 'Key' + str(key)})

def main():
res = send
key(sys.argv[1])
print(res)

if _name == "main":
main()

przy wklejaniu sprawdz czy taby w kodzie sa ok, musza byc jednakowe, wywolujesz skrypt python3 nazwa.py