Suchagent für den AnzeigenChef entwickeln

Entwicklungsumgebung

Der AnzeigenChef wird mit C++ entwickelt, als Framework verwenden wir Qt (qt.io). Für die Entwicklung von eigenen Suchagenten stellen wir euch ein Interface zu Verfügung, mit dem Ihr die entsprechenden Implementierungen vornehmen könnt.

Interface

Folgende Funktionen sollen implementiert werden (Objekttypen entnimmst Du bitte dem Interface):

  • Search
    Resultat der Suche ist eine QList<SearchResult>, die alle gefundenen Artikel enthält. Übergeben wird die SuchURL und die max. Anzahl an Seiten, die durchsucht werden sollen
  • GetPlatformName
    Gibt den Namen der Plattform zurück, z.B. eBay, Hood etc.
  • GetPlatformHash
    Gibt einen eindeutigen Hash zurück, mit dem euer Plugin identifiziert wird. Darf gerne eine UID sein, möglichst nicht zu kurz, um Dopplungen zu Vermeiden
  • GetLastError
    Gibt den zuletzt aufgetretenen Fehler zurück, falls die Suche abgebrochen wird
  • GetCustomerHelpMessage
    Dieser Text erscheint beim anlegen des Suchagenten, wenn euer Plugin ausgewählt wird. Hier könnte eine kurze Anweisung stehen, wie z.B. “Kopiere die URL aus dem Webbrowser”
  • GetPlatformLetters
    Gib hier ein bis zwei Buchstaben zurück, die später an den Suchergebnissen dran stehen. Bei uns z.B. m für marktde, k für kalaydo, ek für eBay Kleinazeigen
  • SendQuestionToAdOwner
    Diese Funktion wird aufgerufen, wenn der Nutzer eine Nachricht senden möchte. Hier wird optional ein Benutzername und Passwort übergeben, sowie die Nachricht, Telefon, Name und AnzeigenId
/****************************************************************************
**
** Copyright (C) 2017 RoundCubes UG.
** Contact: https://roundcubes.de
**
** This file is part of the Pluginsystem of AnzeigenChef.
**
** Add this interface to your Pluginproject
****************************************************************************/
#ifndef SEARCHAGENTINTERFACE_H
#define SEARCHAGENTINTERFACE_H

#include <QtCore>

class SearchResult
{
public:
    QString AdId;
    QString AdTitle;
    QString AdDescription;
    QString AdSeoUrl;
    QDateTime AdStart;
    QDateTime AdEnd;
    QString AdImageUrl;
    QString AdDistance;
    int AdPrice = 0;
    int AdPriceType = 0;
};

enum PriceType
{
    Negotiating = 1, // VB @eBay
    FixPrice = 0,
    GiveAway = 2,
    Trade = 3, // Only markt.de
    BestPrice = 4 // Only markt.de
};

class SearchAgentInterface
{
public:
    virtual ~SearchAgentInterface() {}
    virtual QList<SearchResult> Search(const QUrl& rUrl, int rReadpages) = 0;
    virtual QString GetPlatformName() = 0;
    virtual QString GetPlatformHash() = 0;
    virtual QString GetLastError() = 0;
    virtual QString GetCustomerHelpMessage() = 0;
    virtual QString GetPlatformLetters() = 0;
    virtual bool SendQuestionToAdOwner(const QString &accountUsername, const QString &accountPassword, const QString &myName, const QString &myPhone, const QString &advertId) = 0;
};

#define SearchAgentInterface_iid "MG.AnzeigenChef.SearchAgentInterface"

Q_DECLARE_INTERFACE(SearchAgentInterface, SearchAgentInterface_iid)

#endif // SEARCHAGENTINTERFACE_H

Dein Plugin wird im AnzeigenChef Datenverzeichnis unter plugins/agents gespeichert.