[Python] Script "installeren"/draaien

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • Atmoz
  • Registratie: Juli 2001
  • Laatst online: 15-05 06:36

Atmoz

Techno!!

Topicstarter
Graag zou ik het Python script dat hieronder staat uitvoeren op mijn (Synology) NAS.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# Scan/Authenticate
$ lgtv scan
{
    "count": 1,
    "list": [
        {
            "address": "192.168.1.31",
            "model": "UF830V",
            "uuid": "10f34f86-0664-f223-4b8f-d16a772d9baf"
        }
    ],
    "result": "ok"
}
$ lgtv auth 192.168.1.31

$ lgtv on
$ lgtv off

# If you have the youtube plugin
$ lgtv openYoutubeURL https://www.youtube.com/watch?v=dQw4w9WgXcQ

# Otherwise, this works reasonably well
$ lgtv openBrowserAt https://www.youtube.com/tv#/watch?v=dQw4w9WgXcQ


Script komt van hier: https://github.com/klattimer/LGWebOSRemote

Ik heb daarvoor zojuist Python3 (dat standaard in het "Package Center" op de NAS beschikbaar staat) geïnstalleerd. Vervolgens maak ik via Putty een verbinding met de NAS en voer ik het volgende commando uit:

code:
1
python -m venv lgtv-venv


Dat commando komt uit de "installatie-handleiding" uit eerder genoemde URL:
Install
Requires wakeonlan, websocket for python and arp (in Debian/Ubuntu: apt-get install net-tools)

python -m venv lgtv-venv
source lgtv-venv/bin/activate
pip install git+https://github.com/klattimer/LGWebOSRemote
Ik krijg echter een foutmelding in Putty: /bin/python: No module named venv

Moet ik eerst toch nog iets anders installeren ofzo? En is deze "installatie-documentatie" dus gewoonweg niet compleet c.q. te beknopt waardoor het niet werkt?

Uiteindelijk is het de bedoeling om dat Python-script via PHP aan te kunnen roepen.
Maargoed, als dit al niet werkt.... O-)

Of is er misschien een beter idee (directere manier?) om die code (via PHP) uit te voeren?
Alvast bedankt voor het meedenken _/-\o_

Alle reacties


Acties:
  • +1 Henk 'm!

  • GlowMouse
  • Registratie: November 2002
  • Niet online
Probeer het eens met python3 en pip3, dus:
code:
1
2
3
python3 -m venv lgtv-venv
source lgtv-venv/bin/activate
pip3 install git+https://github.com/klattimer/LGWebOSRemote

[ Voor 65% gewijzigd door GlowMouse op 09-02-2020 14:53 ]


Acties:
  • 0 Henk 'm!

  • Atmoz
  • Registratie: Juli 2001
  • Laatst online: 15-05 06:36

Atmoz

Techno!!

Topicstarter
GlowMouse schreef op zondag 9 februari 2020 @ 14:52:
Probeer het eens met python3 en pip3, dus:
code:
1
2
3
python3 -m venv lgtv-venv
source lgtv-venv/bin/activate
pip3 install git+https://github.com/klattimer/LGWebOSRemote
Thanks!
Daarmee kom ik in ieder geval al (veel) verder _/-\o_

Maar bij het uitvoeren van: "pip3 install git+https://github.com/klattimer/LGWebOSRemote" komt deze melding:
pip3 install git+https://github.com/klattimer/LGWebOSRemote
Collecting git+https://github.com/klattimer/LGWebOSRemote
Cloning https://github.com/klattimer/LGWebOSRemote to /tmp/pip-artlhx0x-build
Error [Errno 2] No such file or directory: 'git' while executing command git clone -q https://github.com/klattimer/LGWebOSRemote /tmp/pip-artlhx0x-build
Cannot find command 'git'
You are using pip version 7.1.2, however version 20.0.2 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
(lgtv-venv) admin@NAS:~$
---> No such file or directory: 'git' wordt daarmee een directory bedoeld op m'n NAS?
En zoja: waar moet ik die ergens vinden of maken?


[edit]

You should consider upgrading via the 'pip install --upgrade pip' command.

Dat heb ik meteen ook maar even gedaan :)

[ Voor 5% gewijzigd door Atmoz op 09-02-2020 15:12 ]


Acties:
  • +1 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Cannot find command 'git'

Je zult git moeten installeren.

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • Atmoz
  • Registratie: Juli 2001
  • Laatst online: 15-05 06:36

Atmoz

Techno!!

Topicstarter
RobIII schreef op zondag 9 februari 2020 @ 15:12:
Cannot find command 'git'

Je zult git moeten installeren.
Merci 8)

Ook dat is inmiddels gedaan :9

Nu komt er een foutmelding waaruit het lijkt alsof er iets mis is met dat eerder genoemde script:
(lgtv-venv) admin@NAS:~$ python3 test.py
File "test.py", line 2
$ lgtv scan
^
SyntaxError: invalid syntax
(lgtv-venv) admin@NAS:~$
Ik heb dat hele script (zie TS) gecopy-pasted naar test.py.
Vervolgens komt dan dus die foutmelding. (zodra ik het script run met phyton3 test.py)

Is het script niet compleet?
Of moet er eerst (net zoals bij PHP bijvoorbeeld) nog iets voor en achter? (<?php....)

[ Voor 3% gewijzigd door Atmoz op 09-02-2020 15:24 ]


Acties:
  • +1 Henk 'm!

  • GlowMouse
  • Registratie: November 2002
  • Niet online
Dat is geen Pythonscript maar dat zijn gewoon shellcommando's net zoals python3. Typ maar eens gewoon 'lgtv scan'.

Acties:
  • 0 Henk 'm!

  • Atmoz
  • Registratie: Juli 2001
  • Laatst online: 15-05 06:36

Atmoz

Techno!!

Topicstarter
GlowMouse schreef op zondag 9 februari 2020 @ 15:25:
Dat is geen Pythonscript maar dat zijn gewoon shellcommando's net zoals python3. Typ maar eens gewoon 'lgtv scan'.
Hmzzz, ok. Thanks!!
Dat werkt inderdaad wel.

Maar als ik vervolgens lgtv auth 192.168.1.31 uitvoer, dan komt weer een foutmelding:
Error: TV name is required for auth
LGTV Controller
Author: Karl Lattimer <karl@qdh.org.uk>
Usage: lgtv <command> [parameter]
Zou dat komen omdat ook die regels die bovenin het script staan moeten worden uitgevoerd?
(heb ik geprobeerd, gewoon vanuit de Prompt, maar dat werkt dus niet).

Ik heb 't idee dat ik er bijna ben (ofja, dat het in ieder geval "handmatig" via Putty werkt) :D :+

Maar hoe kom ik van deze nieuwe foutmelding af? O-)

Acties:
  • +1 Henk 'm!

  • Osiris
  • Registratie: Januari 2000
  • Niet online
Atmoz schreef op zondag 9 februari 2020 @ 15:43:
[...]


Maar hoe kom ik van deze nieuwe foutmelding af? O-)
Na het IP-adres een naam opgeven. Kun je gewoon uit de code halen.

Wel enorm brak dat de voorbeelden in de README niet kloppen met de huidige code :') README is aardig verouderd zo te zien, heel de code heeft een flinke update gehad.

[ Voor 20% gewijzigd door Osiris op 09-02-2020 16:25 ]


Acties:
  • 0 Henk 'm!

  • Atmoz
  • Registratie: Juli 2001
  • Laatst online: 15-05 06:36

Atmoz

Techno!!

Topicstarter
Osiris schreef op zondag 9 februari 2020 @ 16:22:
[...]

Na het IP-adres een naam opgeven. Kun je gewoon uit de code halen.
Wow, thanks _/-\o_
Slim! Zo ver had ik nog niet nagedacht :|


Weer een stapje verder 8)

Ik kreeg alweer zo'n melding op de tv of ik de authenticatie wilde goedkeuren (uiteraard ook gedaan), dus dat ziet er in ieder geval goed uit.

Maar als ik nu als vervolgcommando het volgende doe: lgtv openBrowserAt https://www.nu.nl dan komt weer een vette foutmelding:
Traceback (most recent call last):
File "/volume1/homes/admin/lgtv-venv/lib/python3.5/site-packages/LGTV/__init__.py", line 153, in main
args = parseargs(sys.argv[2], sys.argv[3:])
File "/volume1/homes/admin/lgtv-venv/lib/python3.5/site-packages/LGTV/__init__.py", line 45, in parseargs
args = getargspec(LGTVRemote.__dict__[command])
KeyError: 'https://www.nu.nl'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/volume1/homes/admin/lgtv-venv/bin/lgtv", line 9, in <module>
load_entry_point('LGTV==0.2', 'console_scripts', 'lgtv')()
File "/volume1/homes/admin/lgtv-venv/lib/python3.5/site-packages/LGTV/__init__.py", line 157, in main
usage(e.message)
AttributeError: 'KeyError' object has no attribute 'message'
Redelijk heavy als je niet in Python (enzo) thuis bent :P


[edit]
Wel enorm brak dat de voorbeelden in de README niet kloppen met de huidige code :') README is aardig verouderd zo te zien, heel de code heeft een flinke update gehad.
Precies!
Daar kwam ik bij de "Issues" op GitHub ook een topic van iemand over tegen :+

[ Voor 12% gewijzigd door Atmoz op 09-02-2020 16:33 ]


Acties:
  • +1 Henk 'm!

  • Osiris
  • Registratie: Januari 2000
  • Niet online
Bij alle commando's behalve scan en auth moet je als 1e parameter de naam opgeven die je bij auth gebruikt hebt. Geen idee of dat het fixt, maar als ik de code goed lees, moet je dus bijv. doen:

lgtv mijnLgTv openBrowserAt https://www.nu.nl

[ Voor 38% gewijzigd door Osiris op 09-02-2020 16:43 ]


Acties:
  • 0 Henk 'm!

  • Atmoz
  • Registratie: Juli 2001
  • Laatst online: 15-05 06:36

Atmoz

Techno!!

Topicstarter
Osiris schreef op zondag 9 februari 2020 @ 16:42:
Bij alle commando's behalve scan en auth moet je als 1e parameter de naam opgeven die je bij auth gebruikt hebt. Geen idee of dat het fixt, maar als ik de code goed lees, moet je dus bijv. doen:

lgtv mijnLgTv openBrowserAt https://www.nu.nl
YESSSSSSSSSSSSS!!! HET WERKT 8) 8) 8) 8)

Thanks _/-\o_

Ow, echt super gaaf!!

Nu alleen nog "even" zorgen dat dit allemaal in een Python scriptje komt zodat ik dat middels PHP kan aanroepen.

Zoals gezegd: zeer ontzettend super bedankt _/-\o_ Ook voor de anderen.

Echt cool dat het zo goed werkt :9~

Acties:
  • +1 Henk 'm!

  • Osiris
  • Registratie: Januari 2000
  • Niet online
Atmoz schreef op zondag 9 februari 2020 @ 16:47:
[...]

Nu alleen nog "even" zorgen dat dit allemaal in een Python scriptje komt zodat ik dat middels PHP kan aanroepen.
Waarom zou je een Python-script in een Python-script willen stoppen?

Acties:
  • 0 Henk 'm!

  • Atmoz
  • Registratie: Juli 2001
  • Laatst online: 15-05 06:36

Atmoz

Techno!!

Topicstarter
Osiris schreef op zondag 9 februari 2020 @ 16:59:
[...]

Waarom zou je een Python-script in een Python-script willen stoppen?
Hoe bedoel je dat?
Ik heb (hopelijk, want het lukt nog niet echt*) straks een Python3 script (met dus daarin die commando's waar we het de hele tijd over hebben achter elkaar gezet). En dat wil ik vervolgens door een PHP scirpt (dat vervolgens weer wordt aangeroepen door een Arduino, maar daar hoeven we het niet over te hebben want dat werkt al :+)

Is er een betere/snellere/mooiere manier dan om deze commando's vanuit PHP te laten starten?


* Ik heb op dit moment dit Python-scriptje:

code:
1
2
source lgtv-venv/bin/activate
lgtv LGwebOSTV openBrowserAt http://192.168.1.202/Deurbel/9-2-2020/9-2-2020_13_34_42_deurbel_2.jpg


Maar zodra ik dat opstart met: "python3 test.py" dan komt deze foutmelding:
File "test.py", line 1
source lgtv-venv/bin/activate
^
SyntaxError: invalid syntax

Acties:
  • +1 Henk 'm!

  • Osiris
  • Registratie: Januari 2000
  • Niet online
Hetgeen wat je nu steeds uitvoert, `lgtv` is een Python-script. Ik snap niet zo goed waarom je PHP -> Python -> Python zou willen. Klinkt als een nutteloze tussenstap. Waarom niet direct vanuit PHP `lgtv` aansturen?
Atmoz schreef op zondag 9 februari 2020 @ 17:03:
Ik heb (hopelijk, want het lukt nog niet echt*) straks een Python3 script (met dus daarin die commando's waar we het de hele tijd over hebben achter elkaar gezet). En dat wil ik vervolgens door een PHP scirpt (dat vervolgens weer wordt aangeroepen door een Arduino, maar daar hoeven we het niet over te hebben want dat werkt al :+)

Is er een betere/snellere/mooiere manier dan om deze commando's vanuit PHP te laten starten?
Euh, gewoon direct vanuit PHP?
Atmoz schreef op zondag 9 februari 2020 @ 17:03:
* Ik heb op dit moment dit Python-scriptje:

code:
1
2
source lgtv-venv/bin/activate
lgtv LGwebOSTV openBrowserAt http://192.168.1.202/Deurbel/9-2-2020/9-2-2020_13_34_42_deurbel_2.jpg


Maar zodra ik dat opstart met: "python3 test.py" dan komt deze foutmelding:


[...]
Ja natuurlijk krijg je een foutmelding. Die twee lijntjes die jij een Python-script noemt, is helemaal geen Python-script. Heck, dat is geen enkel script.

Acties:
  • 0 Henk 'm!

  • Atmoz
  • Registratie: Juli 2001
  • Laatst online: 15-05 06:36

Atmoz

Techno!!

Topicstarter
Osiris schreef op zondag 9 februari 2020 @ 17:56:
[...]

Hetgeen wat je nu steeds uitvoert, `lgtv` is een Python-script. Ik snap niet zo goed waarom je PHP -> Python -> Python zou willen. Klinkt als een nutteloze tussenstap. Waarom niet direct vanuit PHP `lgtv` aansturen?

[...]

Euh, gewoon direct vanuit PHP?


[...]

Ja natuurlijk krijg je een foutmelding. Die twee lijntjes die jij een Python-script noemt, is helemaal geen Python-script. Heck, dat is geen enkel script.
Thanks!
Ik ben waarschijnlijk (weer 8)7) te moeilijk aan het denken.

Dus eigenlijk bedoel je dat ik onderstaand PHP-script gewoon zou moeten kunnen runnen?

code:
1
2
3
4
5
6
7
8
9
10
11
12
<?php

  echo "begin";

  shell_exec("python -m venv lgtv-venv");
  shell_exec("source lgtv-venv/bin/activate");
  shell_exec("lgtv auth 192.168.1.33 LGwebOSTV");
  shell_exec("lgtv LGwebOSTV openBrowserAt http://192.168.1.202/Deurbel/9-2-2020/9-2-2020_13_34_42_deurbel_2.jpg");

  echo "eind";

?>


Als ik dit in de browser van m'n PC "trigger" dan komt er helemaal niets in het scherm (ook geen foutmelding ofzo). [edit] alleen "begin + eind"

Helaas reageert de TV ook niet ;(

Het moeilijkste van dit hele project was het beeld (een foto uit een IP-camera die op de voordeur staat gericht) op de tv krijgen. Dat is allemaal al gelukt, nu dit "probleempje" nog even en ik ben een ZEER tevreden man _/-\o_

[ Voor 3% gewijzigd door Atmoz op 09-02-2020 18:14 ]


Acties:
  • +1 Henk 'm!

  • Osiris
  • Registratie: Januari 2000
  • Niet online
Atmoz schreef op zondag 9 februari 2020 @ 18:09:
[...]


Thanks!
Ik ben waarschijnlijk (weer 8)7) te moeilijk aan het denken.

Dus eigenlijk bedoel je dat ik onderstaand PHP-script gewoon zou moeten kunnen runnen?

code:
1
2
3
4
5
6
7
<?php
  shell_exec("python -m venv lgtv-venv");
  shell_exec("source lgtv-venv/bin/activate");
  shell_exec("lgtv auth 192.168.1.33");
  shell_exec("lgtv LGwebOSTV openBrowserAt http://192.168.1.202/Deurbel/9-2-2020/9-2-2020_13_34_42_deurbel_2.jpg");

?>


Als ik dit in de browser van m'n PC "trigger" dan komt er helemaal niets in het scherm (ook geen foutmelding ofzo).
Hm, die venv kan wel eens roet in 't eten gooien. Sowieso hoef je die maar één keer aan te maken, wat die 1e line van je doet. Hoef je niet te herhalen. Het activeren van line 2 dan weer wel. Als ik de source code goed begrepen heb, slaat het script een authenticatie op in de configuratie-file, dus de `lgtv auth` (waarbij je de naam van de TV weer vergeten bent.....) hoef je ook maar één keer te doen als het succesvol is. Wat wellicht zou werken in 1x:

PHP:
1
2
3
<?php
shell_exec("source /full/path/naar/lgtv-venv/bin/activate && lgtv LGwebOSTV openBrowserAt http://192.168.1.202/Deurbel/9-2-2020/9-2-2020_13_34_42_deurbel_2.jpg");
?>

Acties:
  • 0 Henk 'm!

  • Atmoz
  • Registratie: Juli 2001
  • Laatst online: 15-05 06:36

Atmoz

Techno!!

Topicstarter
Osiris schreef op zondag 9 februari 2020 @ 18:15:
[...]

Hm, die venv kan wel eens roet in 't eten gooien. Sowieso hoef je die maar één keer aan te maken, wat die 1e line van je doet. Hoef je niet te herhalen. Het activeren van line 2 dan weer wel. Als ik de source code goed begrepen heb, slaat het script een authenticatie op in de configuratie-file, dus de `lgtv auth` (waarbij je de naam van de TV weer vergeten bent.....) hoef je ook maar één keer te doen als het succesvol is. Wat wellicht zou werken in 1x:

PHP:
1
2
3
<?php
shell_exec("source /full/path/naar/lgtv-venv/bin/activate && lgtv LGwebOSTV openBrowserAt http://192.168.1.202/Deurbel/9-2-2020/9-2-2020_13_34_42_deurbel_2.jpg");
?>
Je hebt gelijk, ik was wat dingen vergeten, maar had de post ondertussen al aangepast.

Wat betreft de authenticatie heb je ook gelijk: daar wordt inderdaad mooi een config-file voor aangemaakt.

Als ik jou code in 2 delen rechtstreeks vanuit Putty draai werkt het perfect _/-\o_
Dus dat is zeker alweer een stap vooruit!! (en betekend dus ook dat ik nooit "handmatig" hoef goed te keuren op de tv).

Nu nog de boel werkend krijgen vanuit PHP :9
Pagina: 1