<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://docbook.org/xml/4.5/docbookx.dtd" [
<!ENTITY legal SYSTEM "legal.xml">
<!ENTITY url_refdocs_base "http://developer.gnome.org/grilo/unstable/">
<!ENTITY url_examples_base "http://git.gnome.org/browse/grilo-plugins/tree/help/examples/">
<!ENTITY uuml "&#252;">
<!ENTITY szlig "&#223;">
<!ENTITY verbar "&#124;">
<!ENTITY copy "&#169;">
<!ENTITY nbsp "&#160;">
]>
<!-- The XSL for developer.gnome.org requires this id. -->
<book id="index" lang="de">

  <bookinfo>

    <title>Grilo-Erweiterungen</title>

    <authorgroup>
      <author><firstname>Murray</firstname> <surname>Cumming</surname></author>
    </authorgroup>

    <abstract>

      <!-- This text is copied from the introduction. -->
      <para>Grilo ist ein Framework zum Durchsuchen von Medieninhalten aus verschiedenen Quellen mit einer einzigen API. Die Grilo-Erweiterungen ermöglichen den Zugriff auf verschiedene Medien und Metadatenquellen.</para>
    </abstract>

    <copyright><year>2012</year> <holder>Openismus GmbH</holder></copyright>

    <legalnotice>
      <para>Das vorliegende Dokument kann gemäß den Bedingungen der GNU Free Documentation License (GFDL), Version 1.2 oder jeder späteren, von der Free Software Foundation veröffentlichten Version ohne unveränderbare Abschnitte sowie ohne Texte auf dem vorderen und hinteren Buchdeckel kopiert, verteilt und/oder modifiziert werden. Eine Kopie der GFDL von der Free Software Foundation finden Sie auf deren Webseite, oder schreiben Sie an: Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301, USA.</para>
    </legalnotice>

  
    <othercredit class="translator">
      <personname>
        <firstname>Christian Kirbach</firstname>
      </personname>
      <email>christian.kirbach@gmail.com</email>
    </othercredit>
    <copyright>
      
        <year>2019</year>
      
      <holder>Christian Kirbach</holder>
    </copyright>
  </bookinfo>

<chapter id="chapter-introduction">
<title>Einführung</title>

<para>Grilo ist ein Framework zum Durchsuchen von Medieninhalten aus verschiedenen Quellen mit einer einzigen API. Die Grilo-Erweiterungen ermöglichen den Zugriff auf verschiedene Medien und Metadatenquellen.</para>
</chapter>


<chapter id="chapter-plugins">
<title>Grilo-Erweiterungen</title>


<sect1 id="sec-plugin-apple-trailers">
<title>Apple Trailers</title>
<para>Dies ist eine Grilo-Erweiterung für Apple Trailers. Die Erweiterungskennung ist <literal>"grl-apple-trailers"</literal></para>
</sect1>

<sect1 id="sec-plugin-bookmarks">
<title>Lesezeichen</title>
<para>Dies ist eine Grilo-Erweiterung für Lesezeichen. Die Erweiterungskennung ist <literal>"grl-bookmarks"</literal></para>
</sect1>

<sect1 id="sec-plugin-dmap">
<title>DMap</title>
<para>Dies ist eine Grilo-Erweiterung für DMap. Die Erweiterungskennung ist <literal>"grl-dmap"</literal></para>
</sect1>

<sect1 id="sec-plugin-filesystem">
<title>Dateisystem</title>
<para>Dies ist eine Grilo-Erweiterung für das Dateisystem. Die Erweiterungskennung ist <literal>"grl-filesystem"</literal></para>
</sect1>

<sect1 id="sec-plugin-flickr">
<title>Flickr</title>
<para>Dies ist eine Grilo-Erweiterung für Flickr. Die Erweiterungskennung ist <literal>"grl-flickr"</literal></para>
</sect1>

<sect1 id="sec-plugin-gravatar">
<title>Gravatar</title>
<para>Dies ist eine Grilo-Erweiterung für Gravatar. Die Erweiterungskennung ist <literal>"grl-gravatar"</literal></para>
</sect1>

<sect1 id="sec-plugin-jamendo">
<title>Jamendo</title>
<para>Dies ist eine Grilo-Erweiterung für Jamendo. Die Erweiterungskennung ist <literal>"grl-jamendo"</literal></para>
</sect1>

<sect1 id="sec-plugin-local-metadata">
<title>Lokale Metadaten</title>
<para>Dies ist eine Grilo-Erweiterung für lokale Metadaten. Die Erweiterungskennung ist <literal>"grl-local-metadata"</literal></para>
</sect1>

<sect1 id="sec-plugin-metadata-store">
<title>Metadaten-Speicher</title>
<para>Dies ist eine Grilo-Erweiterung für Metadatenspeicher. Die Erweiterungskennung ist <literal>"grl-metadata-store"</literal></para>
</sect1>

<sect1 id="sec-plugin-optical-media">
<title>Optische Medien</title>
<para>Dies ist eine Grilo-Erweiterung für optische Medien. Die Erweiterungskennung ist <literal>"grl-optical-media"</literal></para>
</sect1>

<sect1 id="sec-plugin-podcasts">
<title>Podcasts</title>
<para>Dies ist eine Grilo-Erweiterung für Podcasts. Die Erweiterungskennung ist <literal>"grl-podcasts"</literal></para>
</sect1>

<sect1 id="sec-plugin-shoutcast">
<title>Shoutcast</title>
<para>Dies ist eine Grilo-Erweiterung für Shoutcast. Die Erweiterungskennung ist <literal>"grl-shoutcast"</literal></para>
</sect1>

<sect1 id="sec-plugin-tmdb">
<title>TMDb-Erweiterung</title>
<para>Die TMDb-Erweiterung bezieht Informationen zu Filmen vom <ulink url="http://themoviedb.org">TMDb-Onlinedienst</ulink>, welcher eine durch eine Gemeinschaft betreute Fimdatenbank darstellt. Die Erweiterungskennung ist <literal>"grl-tmdb"</literal></para>
<para>Bevor Sie diese Erweiterung verwenden, sollten Sie den TMDB-API-Schlüssel mit <ulink url="http://developer.gnome.org/grilo/unstable/GrlConfig.html#grl-config-set-api-key"><function>grl_config_set_api_key()</function></ulink> setzen.</para>
<para>Sie können dann <ulink url="http://developer.gnome.org/grilo/unstable/GrlSource.html#grl-source-resolve"><function>grl_source_resolve()</function></ulink> verwenden, um Details über ein existierendes GrlMediaItem anzuzeigen.</para>
<para>Diese Erweiterung unterstützt keine Suche mittels <ulink url="http://developer.gnome.org/grilo/unstable/GrlSource.html#grl-source-search"><function>grl_source_search()</function></ulink> oder Abfragen mittels<ulink url="http://developer.gnome.org/grilo/unstable/GrlSource.html#grl-source-query"><function>grl_source_query()</function></ulink>.</para>

<para>Hier ist ein einfaches Beispiel für die Verwendung der Grilo-TMDb-Erweiterung:</para>

<para>Datei: <ulink url="http://git.gnome.org/browse/grilo-plugins/tree/help/examples/example-tmdb.c"><filename>example-tmdb.c</filename></ulink></para>
<programlisting>
/*
 * Copyright (C) 2012 Canonical Ltd.
 *
 * Author: Jens Georg &lt;jensg@openismus.com&gt;
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public License
 * as published by the Free Software Foundation; version 2.1 of
 * the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful, but
 * WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
 * 02110-1301 USA
 *
 */

#include &lt;grilo.h&gt;
#include &lt;stdio.h&gt;

/**
 * This TMDB key is just for testing.
 * For real-world use, please request your own key from
 * http://api.themoviedb.org
 */
#define TMDB_KEY "719b9b296835b04cd919c4bf5220828a"

#define TMDB_PLUGIN_ID "grl-tmdb"

GMainLoop *loop = NULL;
GrlKeyID director_key = 0;

static void
resolve_cb (GrlSource *src, guint operation_id, GrlMedia *media, gpointer user_data, const GError *error)
{
  const char *title, *studio;

  g_assert_no_error (error);
  g_assert (media);

  title = grl_media_get_title (media);
  studio = grl_media_get_studio (media);
  printf ("Media: Title='%s', Studio='%s'\n",
    title, studio);

  if (director_key != 0) {
    const gchar *director =
      grl_data_get_string (GRL_DATA (media), director_key);
    printf ("  Director=%s\n", director);
  }

  g_main_loop_quit (loop);
}

int main (int argc, char *argv[])
{
  GrlRegistry *reg;
  GrlConfig *config;
  GError *error = NULL;
  GrlSource *src;
  gboolean plugin_activated;
  GrlCaps *caps;
  GrlOperationOptions *options;
  GrlMedia *media;
  const GList *keys;
  const GList* l;

  grl_init (&amp;argc, &amp;argv);

  /*
   * Set the TMDB API key:
   * You must use your own TMDB API key in your own application.
   */
  reg = grl_registry_get_default ();
  config = grl_config_new (TMDB_PLUGIN_ID, NULL);
  grl_config_set_api_key (config, TMDB_KEY);
  grl_registry_add_config (reg, config, NULL);
  grl_registry_load_all_plugins (reg, FALSE, NULL);

  /*
   * Get the plugin:
   */
  error = NULL;
  plugin_activated =
    grl_registry_activate_plugin_by_id (reg, TMDB_PLUGIN_ID, &amp;error);
  g_assert (plugin_activated);
  g_assert_no_error (error);

  /*
   * Get the Grilo source:
   */
  src = grl_registry_lookup_source (reg, TMDB_PLUGIN_ID);

  /*
   * Check that it has the expected capability:
   */
  g_assert (grl_source_supported_operations (src) &amp; GRL_OP_RESOLVE);
  caps = grl_source_get_caps (src, GRL_OP_RESOLVE);
  g_assert (caps);

  options = grl_operation_options_new (caps);

  /*
   * A media item that we will give to the TMDB plugin,
   * to discover its details.
   */
  media = grl_media_video_new ();
  grl_media_set_title (media, "Sherlock Holmes");

  /*
   * Discover what keys are provided by the source:
   */
  keys = grl_source_supported_keys (src);
  for (l = keys; l != NULL; l = l-&gt;next) {
    const gchar *name;
    GrlKeyID id = GPOINTER_TO_INT (l-&gt;data);

    g_assert (id);

    name = grl_metadata_key_get_name (id);
    printf ("Supported key: %s\n", name);

    /*
     * Remember this for later use:
     * You may instead use grl_registry_lookup_metadata_key_name().
     */
    if (g_strcmp0 (name, "tmdb-director") == 0) {
      director_key = id;
    }
  }

  /*
   * Ask the TMDB plugin for the media item's details,
   * from the TMDB online service:
   */
  grl_source_resolve (src, media,
    keys, options,
    resolve_cb, NULL);

  /*
   * Start the main loop so our callback can be called:
   */
  loop = g_main_loop_new (NULL, FALSE);
  g_main_loop_run (loop);

  /*
   * Release objects:
   */
  g_object_unref (media);
  g_object_unref (config);
  g_object_unref (options);

  /*
   * Deinitialize Grilo:
   */
  grl_deinit ();
}



</programlisting>

</sect1>

<sect1 id="sec-plugin-tracker">
<title>Tracker</title>
<para>Dies ist eine Grilo-Erweiterung für Tracker. Die Erweiterungskennung ist <literal>"grl-tracker"</literal></para>
</sect1>

<sect1 id="sec-plugin-vimeo">
<title>Vimeo</title>
<para>Dies ist eine Grilo-Erweiterung für Vimeo. Die Erweiterungskennung ist <literal>"grl-vimeo"</literal></para>
</sect1>

<sect1 id="sec-plugin-youtube">
<title>YouTube</title>
<para>Dies ist eine Grilo-Erweiterung für YouTube. Die Erweiterungskennung ist <literal>"grl-youtube"</literal></para>
</sect1>

<sect1 id="sec-plugin-dleyna">
<title>DLeyna</title>
<para>Dies ist eine Grilo-Erweiterung für UPnP/DLNA. Die Erweiterungskennung ist <literal>"grl-dleyna"</literal></para>
</sect1>

</chapter>

</book>
