eBay-Artikel Beobachtungsliste

Hallo,

hat vielleicht jemand von Euch ein funktionierendes Script um die beobachteten eBay - Artikel im Webfront anzuzeigen ???

Wäre super wenn diejenigen, die sowas schon umgesetzt haben, das hier veröffentlichen könnten.

Vielen Dank !!!

Proxima

Hallo,

ebay bietet einen Haufen APIs für die freie Verwendung. Unter anderem habe ich auch ein paar PHP Sachen gesehen. Da müsste was draus zu machen sein:

https://www.x.com/developers/ebay

Gruß
Walter

Hallo,

leider bin ich, was PHP angeht, noch ein echter Snob.

Dachte das vielleicht schon jemand was Fertiges hat???

Gruß Proxima

Hallo zusammen,

mir geht es ähnlich, bin der totale PHP Dau.

Eine Ebayintegration ins Webfront wäre wirklich genial. Am besten noch mit einer TTS Erinnerung 10 min. bevor eine beobachtete Auktion ausläuft.

Könnte sich denn da ein kluges Köpfchen nicht mal schaffen? ganz lieb gefragt

Vielen, vielen Dank!

Hallo alle zusammen.

Das klingt interessant. Schau ich mir mal an.
Kann aber was dauern!

Moin…

hab ne Seite gefunden wo beschrieben wird wie das per PHP funzt, mit Script!
Ebay hat ne API und mit einem entsprechenden Developer-Account ist das kein Problem.

Hier mal die Links…

  1. Mit PHP eine eBay-Auktion starten

  2. Mit der eBay-API seine Auktionen beobachten

Ach ja… nicht vom Namen abschrecken lassen!! :slight_smile:

Gruß,

Peter

Kurzer Zwischenbericht:

Ich bin noch am Ball!
Ich bin bei eBay als Developer angemeldet.
Ich habe die passende API gefunden.
Ich teste gerade.

Das Ganze wird aber noch was dauern!
Ich bin beruflich momentan stark eingebunden.
Die einzige Zeit, die ich am Tage habe, sind 20 Minuten morgens vor der Arbeit.
Dazu kommt, dass ich in 1,5 Wochen Urlaub habe.

Das wird was. Ganz sicher. Aber nicht in Kürze!!

Hallo alle zusammen!

Hat jemand lust und Zeit mein eBay Projekt zu übernehmen?

Ich bin beruflich wie privat zu stark eingebunden und finde einfach
nicht die Freiräume um mich weiter damit zu beschäftigen.

Bei dem Projekt ist die Nuss geknackt. Das Ganze muss nur noch ausgerollt werden.

Es sollte wenn möglich jemand sein der etwas Erfahrungen mit xml hat.

Schon mal besten Dank im Voraus!!

Vielleicht ein Projekt fuer die IPSLibrary.
Aber warum im Beta-Bereich - so geheim ?

Ich glaube, dass ich hier eher jemanden finde!

Interesse?

Ich kenne nur den Thread hier http://www.ip-symcon.de/forum/f52/ebay-artikel-beobachtungsliste-17650/#post155304
Da ist aber weder ein Script noch genau was das Ding eigentlich machen soll ausser beobachten.

Ich verstehe zwar einen Hintergrund deiner Gedanken dazu… aber sehe eher einen Reziproke vom Erfolg zum „public viewing“ …

Ok, ich werde was ich bis jetzt habe mal zusammenschreiben.

Hallo alle zusammen!

Hier nun die Beschreibung:

  1. Meldet Euch bei eBay als Developer an. Das geht hier.

  1. Erstellt Euch „Production-Keys“.
  2. Für Euer eBay Account (nicht den Developer sonder der Account mit dem Du Shoppen gehst) musst Du einen „User Token“ erstellen.
    Achtung! Sichert Euch den Token sofort!!! Keine Angst. Der „User-Token“ hat bei mir über 900 Zeichen.

  1. Die „Production-Keys“ und den „User-Token“ in mein Skript eintragen.

<?
/*=============================================================
eBayWatchList - Martin Heinzel - 30.06.2012
Version: 0.1

Beschreibung:
Mit diesem Script wird die eBay Beobachtungsliste eingelesen und als
HTML - String ausgegeben. Somit kann das Ergebnis direkt im Webfront
angezeigt werden.


Änderungen
----------

tt.mm.jjjj von Version x.x -> y.y

Beschreibung:

================================================================*/

// Variablen Deklaration --------------------------------------

//#################################### Bitte einstellen #######################

$DEVID            =  "ee50.....";
$AppID            =  "Mart......";
$CertID           =  "c32........";
$UserToken        =  "AgAAAA**.....";

//#############################################################################


// Variablen
//--------------
$filename         =  IPS_GetKernelDir()."data\\IPSeBay\\GetInfo.xml";

//-------------------------------------------------------------

//--------------------------- Main ----------------------------

$responseDoc 			= new DomDocument();
$responseDoc->loadXML(callEbay($DEVID, $AppID, $CertID, $UserToken, $filename));

$responses 				= $responseDoc->getElementsByTagName("WatchList");
foreach ($responses as $response)
{

	$totalNumberOfEntries  = $response->getElementsByTagName("TotalNumberOfEntries")->item(0)->nodeValue;
	$items  = $response->getElementsByTagName("Item");
   for($i=0; $i<$totalNumberOfEntries; $i++)
   {

		$ItemID     				=  $items->item($i)->getElementsByTagName('ItemID')->item(0)->nodeValue;
		$StartTime  				=  $items->item($i)->getElementsByTagName('StartTime')->item(0)->nodeValue;
		$EndTime    				=  $items->item($i)->getElementsByTagName('EndTime')->item(0)->nodeValue;
		$ViewItemURL				=  $items->item($i)->getElementsByTagName('ViewItemURL')->item(0)->nodeValue;
		$ListingType  				=  $items->item($i)->getElementsByTagName('ListingType')->item(0)->nodeValue;
		$FeedbackScore				=  $items->item($i)->getElementsByTagName('FeedbackScore')->item(0)->nodeValue;
		$FeedbackRatingStar		=  $items->item($i)->getElementsByTagName('FeedbackRatingStar')->item(0)->nodeValue;
		$UserID     				=  $items->item($i)->getElementsByTagName('UserID')->item(0)->nodeValue;
		$CurrentPrice 				=  $items->item($i)->getElementsByTagName('CurrentPrice')->item(0)->nodeValue;
		$Title	     				=  $items->item($i)->getElementsByTagName('Title')->item(0)->nodeValue;
		$GalleryURL					=  $items->item($i)->getElementsByTagName('GalleryURL')->item(0)->nodeValue;

      echo "ItemID = " . $ItemID . "
";
      echo "StartTime = " . $StartTime . "
";
      echo "EndTime = " . $EndTime . "
";
      echo "ViewItemURL = " . $ViewItemURL . "
";
      echo "ListingType = " . $ListingType . "
";
      echo "UserID = " . $UserID . "
";
      echo "CurrentPrice = " . $CurrentPrice . "
";
      echo "Title = " . $Title . "
";
      echo "GalleryURL = " . $GalleryURL . "
";


   }
}

//------------------------- Main ENDE --------------------------

//------------------------ Funktionen -------------------------

/**
 * Returns the Output of GetMyeBayBuying .
 *
 * @param  string $DEVID		-> The eBay DEVID
 * @param  string $AppID		-> The eBay AppID
 * @param  string $CertID		-> The eBay CertID
 * @param  string $UserToke	-> The eBay UserToke
 * @param  string $filename	-> The location of the GetInfo.xml
 * @return xml						-> xml answere from eBay.
 */
function callEbay($DEVID, $AppID, $CertID, $UserToken, $filename)
{

	$connection = curl_init();
   curl_setopt($connection, CURLOPT_URL, 'https://api.ebay.com/ws/api.dll');
   curl_setopt($connection, CURLOPT_SSL_VERIFYPEER, 0);
   curl_setopt($connection, CURLOPT_SSL_VERIFYHOST, 0);

   $headers = array (
						   'X-EBAY-API-COMPATIBILITY-LEVEL: 779',
            			'X-EBAY-API-DEV-NAME: ' .	$DEVID,
            			'X-EBAY-API-APP-NAME: ' . 	$AppID,
            			'X-EBAY-API-CERT-NAME: ' . $CertID,
            			'X-EBAY-API-CALL-NAME: GetMyeBayBuying',
            			'X-EBAY-API-SITEID: 77',
        				  );

   curl_setopt($connection, CURLOPT_HTTPHEADER, $headers);
   curl_setopt($connection, CURLOPT_POST, 1);

	$requestXmlBody	= file_get_contents($filename);
   $requestBody		= str_replace('%%USER_TOKEN%%',$UserToken, $requestXmlBody);

   curl_setopt($connection, CURLOPT_POSTFIELDS, $requestBody);
   curl_setopt($connection, CURLOPT_RETURNTRANSFER, 1);
   $responseXml = curl_exec($connection);
   curl_close($connection);

   return $responseXml;

}

function CreateVariableByName($id, $name, $type, $profile = "")
{
    global $IPS_SELF;
    $vid = @IPS_GetVariableIDByName($name, $id);
    if($vid === false)
    {
        $vid = IPS_CreateVariable($type);
        IPS_SetParent($vid, $id);
        IPS_SetName($vid, $name);
        IPS_SetInfo($vid, "this variable was created by script #$IPS_SELF");
        if($profile !== "") { IPS_SetVariableCustomProfile($vid, $profile); }
    }
    return $vid;
}

//--------------------- Funktionen ENDE ------------------------
?>

  1. Die GetInfo.xml ablegen und die Variable $filename einstellen!!

Das war‘s. Als Antwort bekommst Du von eBay eine xml-Antwort die es zu Parsen gilt.
In Meinen Script ist ein Beispiel für Element „0“ „Startzeit“.
Die Antwort von eBay findet Ihr hierunter „Output“ und dort unter „WatchList“.

Meine Idee war es, die Beobachtungsliste in eine HTML-Tabelle zu packen.
3 Spalten.
Spalte 1 -> die Artikel Grafik
Spalte 2 -> Beschreibung
Spalte 3 -> Preis

Das Ganze dann in eine String-Variable. Somit kann das jeder verwenden. (WebFront, Dashboard)

GetInfo.xml (343 Bytes)

Eben nicht! Das habe ich vergessen. :rolleyes: Scheisse!
Das hole ich nach. Heute Abend.

Hab das Skript auf Schloff gebracht.

Es werden nun einige Elemente als Beispiel ausgegeben.

Wenn es noch Fragen gibt meldet Euch bitte!!

Kann sich da noch jemand erbarmen?

Gesendet von meinem GT-I9100 mit Tapatalk 2

Hallo alle zusammen,

ich habe mich jetzt selber erbarmt!! :wink:


<?
/*=============================================================
eBayWatchList - Martin Heinzel - 30.06.2012
Version: 0.1

Beschreibung:
Mit diesem Script wird die eBay Beobachtungsliste eingelesen und als
HTML - String ausgegeben. Somit kann das Ergebnis direkt im Webfront
angezeigt werden.


Änderungen
----------

tt.mm.jjjj von Version x.x -> y.y

Beschreibung:

================================================================*/

// Variablen Deklaration --------------------------------------

//#################################### Bitte einstellen #######################

$DEVID            =  "ee50.....";
$AppID            =  "Mart......";
$CertID           =  "c32........";
$UserToken        =  "AgAAAA**.....";

//#############################################################################


// Variablen
//--------------
$filename         =  IPS_GetKernelDir()."data\\IPSeBay\\GetInfo.xml";
$browser          =  "";

//-------------------------------------------------------------

//--------------------------- Main ----------------------------

$responseDoc 			= new DomDocument();
$responseDoc->loadXML(callEbay($DEVID, $AppID, $CertID, $UserToken, $filename));

$responses 				= $responseDoc->getElementsByTagName("WatchList");
$browser             =  '<table border="1" cellpadding="1" cellspacing="1" summary="ebay">';

foreach ($responses as $response)
{

	$totalNumberOfEntries  = $response->getElementsByTagName("TotalNumberOfEntries")->item(0)->nodeValue;
	$items  = $response->getElementsByTagName("Item");
   for($i=0; $i<$totalNumberOfEntries; $i++)
   {
		//Berechnen der verbleibenden Zeit
		$EndTime    				=  $items->item($i)->getElementsByTagName('EndTime')->item(0)->nodeValue;
		$EndJahr                =  substr($EndTime, 0, 4);
		$EndMonat               =  substr($EndTime, 5, 2);
		$EndTag                 =  substr($EndTime, 8, 2);
		$EndStunde              =  substr($EndTime, 11, 2);
		$EndMinute              =  substr($EndTime, 14, 2);
		$EndSekunde             =  substr($EndTime, 17, 2);
		$TimeDiff               =  mktime((int)$EndStunde, (int)$EndMinute, (int)$EndSekunde, (int)$EndMonat, (int)$EndTag, (int)$EndJahr) +(2*60*60) -time();
		$Tage                   =  (int)($TimeDiff/86400);
		$Stunden                =  (int)(($TimeDiff -($Tage*86400))/3600);
		$Minuten                =  (int)(($TimeDiff -($Tage*86400) -($Stunden*3600))/60);
		if($TimeDiff >= 0)
		{
			$Restzeit            =  $Tage.'T'.$Stunden.'H'.$Minuten.'M';
		}
		else
		{
			$Restzeit            =  'Beendet';
		}

		$ViewItemURL				=  $items->item($i)->getElementsByTagName('ViewItemURL')->item(0)->nodeValue;
		$FeedbackScore				=  $items->item($i)->getElementsByTagName('FeedbackScore')->item(0)->nodeValue;
		$UserID     				=  $items->item($i)->getElementsByTagName('UserID')->item(0)->nodeValue;
		$CurrentPrice 				=  $items->item($i)->getElementsByTagName('CurrentPrice')->item(0)->nodeValue;
		$Title	     				=  $items->item($i)->getElementsByTagName('Title')->item(0)->nodeValue;
		if(strlen($Title)>=70)		$Title   = substr($Title, 0, 64)." ...";
		$GalleryURL					=  $items->item($i)->getElementsByTagName('GalleryURL')->item(0)->nodeValue;

		//zusammenbauen der Zeile
      $browser             	.= '<tr>';
      $browser             	.= '<td><img src="'.$GalleryURL.'" alt="not Found"></td>';
      $browser             	.= '<td width="600px"><a href="'.$ViewItemURL.'" target="_blank">'.formatText($Title).'</a></br>'.$UserID.' | '.$FeedbackScore.'</td>';
      $browser             	.= '<td width="150px" align="center">'.$CurrentPrice.' €</td>';
      $browser             	.= '<td width="150px" align="center">'.$Restzeit.'</td>';
      $browser             	.= '</tr>';
   }
}

$browser             .=  '</table>';

SetValue(CreateVariableByName($IPS_SELF, "ebayWatchList", 3, "~HTMLBox"), $browser);
//------------------------- Main ENDE --------------------------

//------------------------ Funktionen -------------------------

/**
 * Returns the Output of GetMyeBayBuying .
 *
 * @param  string $DEVID		-> The eBay DEVID
 * @param  string $AppID		-> The eBay AppID
 * @param  string $CertID		-> The eBay CertID
 * @param  string $UserToke	-> The eBay UserToke
 * @param  string $filename	-> The location of the GetInfo.xml
 * @return xml						-> xml answere from eBay.
 */
function callEbay($DEVID, $AppID, $CertID, $UserToken, $filename)
{

	$connection = curl_init();
   curl_setopt($connection, CURLOPT_URL, 'https://api.ebay.com/ws/api.dll');
   curl_setopt($connection, CURLOPT_SSL_VERIFYPEER, 0);
   curl_setopt($connection, CURLOPT_SSL_VERIFYHOST, 0);

   $headers = array (
						   'X-EBAY-API-COMPATIBILITY-LEVEL: 779',
            			'X-EBAY-API-DEV-NAME: ' .	$DEVID,
            			'X-EBAY-API-APP-NAME: ' . 	$AppID,
            			'X-EBAY-API-CERT-NAME: ' . $CertID,
            			'X-EBAY-API-CALL-NAME: GetMyeBayBuying',
            			'X-EBAY-API-SITEID: 77',
        				  );

   curl_setopt($connection, CURLOPT_HTTPHEADER, $headers);
   curl_setopt($connection, CURLOPT_POST, 1);

	$requestXmlBody	= file_get_contents($filename);
   $requestBody		= str_replace('%%USER_TOKEN%%',$UserToken, $requestXmlBody);

   curl_setopt($connection, CURLOPT_POSTFIELDS, $requestBody);
   curl_setopt($connection, CURLOPT_RETURNTRANSFER, 1);
   $responseXml = curl_exec($connection);
   curl_close($connection);

   return $responseXml;

}

// Textformatierung
function formatText($text)
{
    $text = html_entity_decode($text);
    $text = str_replace("ö", "oe", $text);
    $text = str_replace("Ü", "Ue", $text);
    $text = str_replace("ü", "ue", $text);
    $text = str_replace("ä", "ae", $text);
    $text = str_replace("ß", "ss", $text);
    $text = str_replace("&ndash;", "-", $text);
    $text = str_replace('&#039;', "`", $text);
    $text = str_replace("&", "&", $text);
    $text = str_replace("Ö", "Oe", $text);
    $text = str_replace("„", "\"", $text);
    $text = str_replace("“", "\"", $text);
    $text = str_replace("–", "-", $text);
    $text = str_replace("„", "\"", $text);
    $text = str_replace("“", "\"", $text);
    $text = str_replace("„", "\"", $text);
    $text = str_replace("–", "-", $text);
    $text = str_replace("–", "-", $text);
    $text = str_replace("é", "é", $text);
    $text = str_replace("Ä", "Ae", $text);
    return $text;
}

function CreateVariableByName($id, $name, $type, $profile = "")
{
    global $IPS_SELF;
    $vid = @IPS_GetVariableIDByName($name, $id);
    if($vid === false)
    {
        $vid = IPS_CreateVariable($type);
        IPS_SetParent($vid, $id);
        IPS_SetName($vid, $name);
        IPS_SetInfo($vid, "this variable was created by script #$IPS_SELF");
        if($profile !== "") { IPS_SetVariableCustomProfile($vid, $profile); }
		  IPS_SetScriptTimer($IPS_SELF, 300);
    }
    return $vid;
}
//--------------------- Funktionen ENDE ------------------------
?&gt;

Die Beschreibung ist in Post #14.

Das Script erzeugt eine Variable die im Webfront angezeigt werden kann.

Hallo,

ich bekomme immer wieder folgenden Fehler nach dem Aktualisierungsereignis:

Empy String bla bla …

Gruß Proxima

P.S: Ansonsten läuft das Skript tadellos !!! :D:D:D

Hallo Proxima,

da stimmt was nicht mit der Zeile 43. Das ist diese:

$responseDoc->loadXML(callEbay($DEVID, $AppID, $CertID, $UserToken, $filename));

Kontrolliere mal bitte die Parameter:


$DEVID, $AppID, $CertID, $UserToken

Stimmt die Position der Datei „GetInfo.xml“ in Zeile 35?

$filename         =  IPS_GetKernelDir()."data\\IPSeBay\\GetInfo.xml";