Notice: This forum has been recovered from an old backup, so some content, links, and dates may be outdated. The forum is currently read-only while we restore sign-in and registration functionality. Details
If you find this forum valuable and would like to help keep it online, donations to help cover hosting and domain costs are greatly appreciated, but never expected. You can support the forum through Buy Me a Coffee or Ko-fi. Thank you for helping preserve the EventGhost community.
If you find this forum valuable and would like to help keep it online, donations to help cover hosting and domain costs are greatly appreciated, but never expected. You can support the forum through Buy Me a Coffee or Ko-fi. Thank you for helping preserve the EventGhost community.
Bildformat einer DVD in ZP auslesen
-
ze_sniper1
- Posts: 29
- Joined: Sat Aug 19, 2006 2:50 pm
Bildformat einer DVD in ZP auslesen
Hallo!
Der Zoomplayer sendet ja ständig Statuscodes per TCP an EG
Kann man da auch irgendwie das Bildformat auslesen, damit ich meine
Maskierung automatisiert anfahren kann?
ze_sniper1
Der Zoomplayer sendet ja ständig Statuscodes per TCP an EG
Kann man da auch irgendwie das Bildformat auslesen, damit ich meine
Maskierung automatisiert anfahren kann?
ze_sniper1
- Bitmonster
- Site Admin
- Posts: 2239
- Joined: Mon Feb 06, 2006 10:28 pm
-
ze_sniper1
- Posts: 29
- Joined: Sat Aug 19, 2006 2:50 pm
Hab jetzt etwas damit herum gespielt.
DvdArAnamorphic gibt Zoomplayer aber immer aus. Egal ob der Film
1,78:1 - 2,35:1 usw.
Kann man die Sache noch genauer auslesen?
Da fällt mir ein: Es gibt ja die Webserver Funktion.
W├ñre es eventuellm├Âglich eine Seite aufzubauen die per Buttonklick:
1. An Zoomplayer sendet welche DVD er abspielen soll?
2. Gleichzeitig einen IR-Code an die Maskierung versendet?
Die Webseite mit den relevanten Daten k├Ânnte ich mit Access und ASP aufbauen.
Was hälst du davon?
ze_sniper1
DvdArAnamorphic gibt Zoomplayer aber immer aus. Egal ob der Film
1,78:1 - 2,35:1 usw.
Kann man die Sache noch genauer auslesen?
Da fällt mir ein: Es gibt ja die Webserver Funktion.
W├ñre es eventuellm├Âglich eine Seite aufzubauen die per Buttonklick:
1. An Zoomplayer sendet welche DVD er abspielen soll?
2. Gleichzeitig einen IR-Code an die Maskierung versendet?
Die Webseite mit den relevanten Daten k├Ânnte ich mit Access und ASP aufbauen.
Was hälst du davon?
ze_sniper1
Mehr gibt das DVD-Format leider nicht her. Da m├╝sstest du schon das Bild analysieren.ze_sniper1 wrote:Hab jetzt etwas damit herum gespielt.
DvdArAnamorphic gibt Zoomplayer aber immer aus. Egal ob der Film
1,78:1 - 2,35:1 usw.
Kann man die Sache noch genauer auslesen?
Das ginge schon.ze_sniper1 wrote:Da fällt mir ein: Es gibt ja die Webserver Funktion.
W├ñre es eventuellm├Âglich eine Seite aufzubauen die per Buttonklick:
1. An Zoomplayer sendet welche DVD er abspielen soll?
2. Gleichzeitig einen IR-Code an die Maskierung versendet?
Die Webseite mit den relevanten Daten k├Ânnte ich mit Access und ASP aufbauen.
Einfach einen Request mit
Code: Select all
http://ip/?FormatX&X:\Path2DVDNach FormatX kannst du dann deine Maskierung aktivieren und den zweiten Parameter musst du mit einem Python Script auswerten, dass den ZoomPlayer entsprechend ansteuert. Sollte mit wenigen Zeilen gehen.
Wenn du sehr viele Formate haben willst ist es vielleicht besser einen Aufruf wie
Code: Select all
http://localhost/?PlayDVD&1.33&X:\Path2DVDIn eg.event.payload steht dann der Pfad zur DVD. Je nachdem wie die DVD vorliegt m├╝sstest du dann ZP starten. Das m├╝sste man in der "Programm starten" Action finden. Wenn du das mit ASP hinbekommst, wird es am Python Script nicht scheitern.
@Bitmonster
Gibt es eigentlich die M├Âglichkeit das Webserverplugin gegen Zugriff zu sch├╝tzen? Eine einfache idendifikation per Browser, wie man es von htacces gesch├╝tzten Webseiten kennt w├ñre ja schon ausreichend.
Und hat der Payload den du in der Demo mitschickst einen Sinn?
- Bitmonster
- Site Admin
- Posts: 2239
- Joined: Mon Feb 06, 2006 10:28 pm
Authorization wird damit vorläufig nicht gehen. Ich habe keinen Source-Code dafür im Netz gefunden und das selber zu entwickeln fehlt mir die Lust. Der Webserver ist ja auch nur für das Intranet gedacht und bei mir wird der Port einfach in der Firewall dicht gemacht.Bartman wrote: @Bitmonster
Gibt es eigentlich die M├Âglichkeit das Webserverplugin gegen Zugriff zu sch├╝tzen? Eine einfache idendifikation per Browser, wie man es von htacces gesch├╝tzten Webseiten kennt w├ñre ja schon ausreichend.
Und hat der Payload den du in der Demo mitschickst einen Sinn?
Was einfacher gehen würde, wäre ein IP-Filter. Nur der macht in der Regel weder innerhalb noch außerhalb eines Intranets Sinn.
Wenn man volle Webserver-Features haben will, dann sollte man sich eher einen Apache aufsetzen und dann mit einem Skript die Events zu EG schicken.
Das "&withoutRelease" Parameter macht bei der Implementierung des HTML-Demos Sinn, weil dadurch erst die ButtonUp-Events funktionieren.
Standard ist, dass ein Event beim Webserver gleich beendet wird. Mit "&withoutRelease" muss man den Event selber mit "?ButtonReleased" beenden.
EDIT: Oder meintest du die Zahlen? Die hatte ich mal eingebaut, weil der IE sonst Events verschluckt, wenn man mehrmals die absolut gleiche URL anfordert. Deshalb lass ich die Zahlen "wandern".
- Bitmonster
- Site Admin
- Posts: 2239
- Joined: Mon Feb 06, 2006 10:28 pm
Genau wie mit Girder und dem Network Receiver Plugin z.B.Bartman wrote:Wie geht das denn?Bitmonster wrote:Wenn man volle Webserver-Features haben will, dann sollte man sich eher einen Apache aufsetzen und dann mit einem Skript die Events zu EG schicken.
Ich hatte da fr├╝her ein PHP Skript am Laufen, dass einer mal auf der Girder-Seite abgelegt hatte.
-
ze_sniper1
- Posts: 29
- Joined: Sat Aug 19, 2006 2:50 pm
Das mit ASP sollte ich hinkriegen nur in EG brauche ich Hilfe.Wenn du das mit ASP hinbekommst, wird es am Python Script nicht scheitern
Ich w├╝rde also die Anfrage so senden:
Code: Select all
http://localhost/?PlayDVD&1.33&X:\Path2DVDBitte um Details. Danke.Genau wie mit Girder und dem Network Receiver Plugin z.B.
Ich hatte da fr├╝her ein PHP Skript am Laufen, dass einer mal auf der Girder-Seite abgelegt hatte.
ze_sniper1
-
ze_sniper1
- Posts: 29
- Joined: Sat Aug 19, 2006 2:50 pm
- Bitmonster
- Site Admin
- Posts: 2239
- Joined: Mon Feb 06, 2006 10:28 pm
Nein, der interne k├Ânnte nur HTML und Python.
Wenn du den IIS benutzen willst, dann musst du dir halt ein ASP-Script bauen, dass auch mit dem Girder Internet Event Server funktionieren w├╝rde. Also die Events ├╝ber TCP/IP-Sockets verschickt. Vielleicht gibt es Beispiele daf├╝r auf der Girder-Seite. Zumindest f├╝r PHP gab es mal eins.
Wenn du den IIS benutzen willst, dann musst du dir halt ein ASP-Script bauen, dass auch mit dem Girder Internet Event Server funktionieren w├╝rde. Also die Events ├╝ber TCP/IP-Sockets verschickt. Vielleicht gibt es Beispiele daf├╝r auf der Girder-Seite. Zumindest f├╝r PHP gab es mal eins.
Last edited by Bitmonster on Sat Aug 26, 2006 6:25 pm, edited 1 time in total.
-
ze_sniper1
- Posts: 29
- Joined: Sat Aug 19, 2006 2:50 pm
-
ze_sniper1
- Posts: 29
- Joined: Sat Aug 19, 2006 2:50 pm
Konnte bis jetzt leider kein Beispiel finden. Eventuell hast du das PHP Script kann noch irgendwo rumliegenIch hatte da fr├╝her ein PHP Skript am Laufen, dass einer mal auf der Girder-Seite abgelegt hatte
Dann k├Ânnte ich es m├Âglicherweise auf ASP umschreiben.
Hab nämlich meine ganze DVD-Sammlung auf der Webseite. Das wäre schone eine geile Sache die Movies dann gleich mit passender Maskierung von der Seite aus zu starten.
ze_sniper1
- Bitmonster
- Site Admin
- Posts: 2239
- Joined: Mon Feb 06, 2006 10:28 pm
Code: Select all
<?
function sendMsg($args)
{
$fp = fsockopen($args["host"],$args["port"], $errno, $errstr, 10);
if (!$fp)
{ //Something didn't work....
echo "ERROR: $errno - $errstr\n";
return FALSE;
} else {
// First wake up the server, for security reasons it does not
// respond by it self it needs this string, why this odd word ?
// well if someone is scanning ports "connect" would be very obvious
// this one you'd never guess :-)
fputs($fp, "quintessence\n\r");
// The server now returns a cookie, the protocol works like the
// APOP protocol. The server gives you a cookie you add :<password>
// calculate the md5 digest out of this and send it back
// if the digests match you are in.
// We do this so that noone can listen in on our password exchange
// much safer then plain text.
$cookie = fgets($fp, 400);
// Trim all enters and whitespaces off
$cookie = trim($cookie);
// Combine the token <cookie>:$args[pword]
$token = $cookie . ":" . $args["password"];
// Calculate the digest
$digest = md5($token);
// add the enters
$digest = $digest . "\n";
// Send it to the server
fputs($fp, $digest );
// Get the answer
$res = fgets($fp, 400);
// If the password was correct and you are allowed to connect
// to the server, you'll get "accept"
if ( trim($res) != "accept" )
{
fclose($fp);
return FALSE;
}
if (isset($args['payload']))
{
if (is_array($args['payload']))
{
foreach($args['payload'] as $key => $value)
fputs($fp, "payload " . $value . "\n");
}else
{
if ( $args["payload"] <> "" )
fputs($fp, "payload ".$args["payload"]."\n");
}
}
// now just pipe those commands to the server
fputs($fp, $args["eventstring"]."\n");
// tell the server that we are done nicely.
fputs($fp, "close\n");
fclose($fp);
return TRUE;
}
}
if (isset($_GET))
{
if(isset($_GET['host']))
$args['host'] = urldecode($_GET['host']);
else
$args['host'] = '192.168.0.1';
$args['port'] = 32333;
$args['password'] = 'mypassword';
$args['eventstring'] = urldecode($_GET['event']);
foreach($_GET as $key => $value)
if(strcasecmp(substr($key, 0, 3), 'pld') == 0)
$args['payload'][] = urldecode($value);
sendMsg($args);
if(!isset($_GET['REFERER']))
$_GET['REFERER'] = "index.html";
header("Location: http://".$_SERVER['HTTP_HOST']
. dirname($_SERVER['PHP_SELF'])
."/".$_GET["REFERER"]);
}
?>
-
ze_sniper1
- Posts: 29
- Joined: Sat Aug 19, 2006 2:50 pm
-
ze_sniper1
- Posts: 29
- Joined: Sat Aug 19, 2006 2:50 pm
Hallo!
Soweit klappt die Sache jetzt schon ganz gut. Jetzt hab ich noch folgendes Problem. Wenn der Zoomplayer per Website gestartet wird scheint Eventghost keine anderen Befehle mehr per TCP anzunehmen.
Erst wenn die laufende Zoomplayer Instanz geschlossen ist werden Befehle die während des laufens des Zoomplayer abgesendet wurden gestartet.
Hier der Code der den Zoomplayer mit einem bestimmten Pfad startet:
Muss da noch eine Art "Nicht auf Beendigung warten" rein? Wenn ja wie?
ze_sniper1
Soweit klappt die Sache jetzt schon ganz gut. Jetzt hab ich noch folgendes Problem. Wenn der Zoomplayer per Website gestartet wird scheint Eventghost keine anderen Befehle mehr per TCP anzunehmen.
Erst wenn die laufende Zoomplayer Instanz geschlossen ist werden Befehle die während des laufens des Zoomplayer abgesendet wurden gestartet.
Hier der Code der den Zoomplayer mit einem bestimmten Pfad startet:
Code: Select all
import eg
import os
import string
import _winreg
from win32api import ShellExecute
class SpecialPlugin(eg.PluginClass):
def __close__(self):
eg.notice("closing system plugin")
eg.notice("done closing system plugin")
def __init__(self):
self.AddAction(Action1)
# EventGhost will monitor the creation of every new subclass of
# eg.ActionClass, so everything that is finally needed is to call
# self.AddAllActions() to instantiate all defined actions.
self.AddAllActions()
class Action1(eg.ActionClass):
def __call__(self):
file = 'C:\Programme\Zoom Player\zplayer.exe'
os.spawnv(os.P_WAIT, file, (file,) + (eg.event.payload[1],))
ze_sniper1