
Plugins für cree.py
Plugins für cree.py
Die Architektur von cree.py ermöglicht mehrere benutzerdefinierte Quellen für Geolokalisierungsinformationen. Diese Quellen werden als Plugins definiert und können in creepy installiert werden, indem man sie in den Plugins-Ordner unter dem Installationsverzeichnis kopiert.
Erstelle einen Pull-Request für ein neues Plugin, wenn du es mit anderen Benutzern teilen möchtest, und ich werde es überprüfen und in das Repository übernehmen.
Plugins für creepy benötigen mindestens 3 Dateien:
Die Modularchitektur wird mit Hilfe von yapsy (http://yapsy.sourceforge.net.) erstellt.
Bitte nimm die folgenden Informationen in deine plugin_name.yapsy-plugin-Datei auf:
[Core]
Name = Plugin Name
Module = plugin_name
[Documentation]
Author =
Version =
Website =
Description =
Die Python-Datei, die die Logik des Plugins enthält. Sie muss die InputPugin-Klasse erweitern und mindestens eine Reihe von Methoden implementieren. Du solltest sie also wie folgt definieren (siehe Inline-Kommentare):
from models.InputPlugin import InputPlugin
class PluginName(InputPlugin):
name="plugin_name"
'''
If your plugin configuration needs to invoke a wizard
(for example for oAuth authorization) this must be set to true
'''
hasWizard=True
def searchForTargets(self, search_term):
'''
Parameters
----------
search_term : str
The search term that the user entered in the New Project wizard. It could be a mail, id,
username, full name, it is the plugin's responsibility to differentiate between
different types if needed
Accepts a string parameter from the user and performs a search in the respective service/source
for identifying possible targets to be included in the process.
Returns a list of dictionaries, one for each identified target or an empty list if no results were
found. The dictionaries need to include the following keys :
target = {'pluginName':'Plugin Name',
'targetUserid' : 'The userid of the target in the service/source',
'targetUsername' : 'The username of the target in the service/source',
'targetPicture' : 'the filename of the profile picture of the target ( profile_pic_targetUserid )',
'targetFullname' : 'The full name of the target'}
'''
your_code_here()
def runConfigWizard(self):
'''
If your plugin's configuration needs a wizard, create it here. You need to save the configuration
values to the plugin's config file before returning.
Access to the plugin configuration file is offered through the
readConfiguration(category) method that is inhereted from from the InputPlugin. This returns a tuple
config,options where
-- config is the ConfigObj file that you can use to save the configuration by
calling it's write() method
-- options is the dictionary containing your configuration category options.
'''
def isConfigured(self):
'''
Returns a tuple. The first element is True or False, depending if the plugin is configured or not. The second
element contains an optional message for the user
'''
def returnLocations(self, target, search_params):
'''
Parameters
----------
target : dict
search_params : dict
Returns a list of location dictionaries (or empty list if no locations were found) for the specified
target using the specified search parameters
Target is a dictionary with information as defined in searchForTargets and search_params is a
dictionary with search parameters that you would have defined as available in your configuration file
(see plugin_name.conf below).
The location dictionary needs to contain the following keys :
loc = {'plugin' : 'twitter'
'context' : 'Context of the location"
'infowindow' : "HTML with information in the location to be shown in the infoWindow on the map"
'date' : 'a datetime.datetime object with information on when the gelocation was created'
'lat' : 'latitude of the location'
'lon' : 'longitude of the location'
'shortName' : 'short name describing the location, empty string if not available'}
'''
Wenn dein Plugin externe Module benötigt, die nicht mit Python ausgeliefert werden, musst du dies den Benutzern ausdrücklich mitteilen, idealerweise zusammen mit Anweisungen zur Installation der Abhängigkeiten auf jeder Plattform.
Die Datei enthält alle deine Konfigurationsoptionen und sollte die folgenden Abschnitte aufweisen (einige oder alle können leer sein):
[string_options]
key1 = value
[boolean_options]
key2 = True
key3 = False
[search_string_options]
key4 = some value
[search_boolean_options]
key5 = True
Die string_options und boolean_options werden als Konfigurationsoptionen im Plugin-Konfigurationsdialog angezeigt.
Die search_string_options und search_boolean_options stehen als Suchoptionen im Assistenten für neue Projekte zur Verfügung.
Wenn ein Wert in der GUI maskiert werden soll (z. B. Passwörter, Zugriffstokens usw.), setze dem Schlüssel das Präfix hidden_ voran und cree.py kümmert sich darum.
Wenn du möchtest, dass deine Konfigurationsoptionen in der GUI einen benutzerfreundlicheren Namen haben, kannst du hier Labels für diese angeben. Wenn du beispielsweise die obige conf-Datei als Referenz verwendest, könnte deine Datei plugin_name.labels wie folgt aussehen:
[labels]
key1 = Label For Key 1
key2 = Label For Key 2
key3 = Label For Key 3
key4 = Label For Key 4
key5 = Label For Key 5
Wenn du kein Label für einen Schlüssel angibst, wird stattdessen der Schlüssel in der GUI angezeigt.
Sammle alle oben genannten Dateien in einem Ordner namens plugin_name und kopiere den Ordner in das plugins-Verzeichnis der installierten Anwendung. So einfach ist das!