Mini Shell
<?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 "ü">
<!ENTITY szlig "ß">
<!ENTITY verbar "|">
<!ENTITY copy "©">
<!ENTITY nbsp " ">
]>
<!-- The XSL for developer.gnome.org requires this id. -->
<book id="index" lang="pt-BR">
<bookinfo>
<title>Grilo Plugins</title>
<authorgroup>
<author><firstname>Murray</firstname> <surname>Cumming</surname></author>
</authorgroup>
<abstract>
<!-- This text is copied from the introduction. -->
<para>O Grilo é uma estrutura para navegar e pesquisar conteúdo de mídia de várias fontes usando uma única API. Os plug-ins do Grilo Plugins para a estrutura do Grilo fornecem acesso a várias fontes de mídia e metadados.</para>
</abstract>
<copyright><year>2012</year> <holder>Openismus GmbH</holder></copyright>
<legalnotice>
<para>Permissão concedida para copiar, distribuir e/ou modificar este documento sob os termos da Licença de Documentação Livre GNU, Versão 1.2 ou qualquer versão mais recente publicada pela Free Software Foundation; sem Seções Invariantes, Textos de Capa Frontal, e sem Textos de Contracapa. Você pode obter uma cópia da Licença de Documentação Livre GNU da Free Software Foundation visitando seu site ou escrevendo para: Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301, USA.</para>
</legalnotice>
</bookinfo>
<chapter id="chapter-introduction">
<title>Introdução</title>
<para>O Grilo é uma estrutura para navegar e pesquisar conteúdo de mídia de várias fontes usando uma única API. Os plug-ins do Grilo Plugins para a estrutura do Grilo fornecem acesso a várias fontes de mídia e metadados.</para>
</chapter>
<chapter id="chapter-plugins">
<title>Grilo Plugins</title>
<sect1 id="sec-plugin-apple-trailers">
<title>Trailers da Apple</title>
<para>Esse é um plug-in do Grilo para trailers da Apple. Seu ID de plug-in é <literal>“grl-apple-trailers”</literal></para>
</sect1>
<sect1 id="sec-plugin-bookmarks">
<title>Marcadores</title>
<para>Esse é um plug-in do Grilo para marcadores. Seu ID de plug-in é <literal>“grl-bookmarks”</literal></para>
</sect1>
<sect1 id="sec-plugin-dmap">
<title>DMap</title>
<para>Esse é um plug-in do Grilo para DMap. Seu ID de plug-in é <literal>“grl-dmap”</literal></para>
</sect1>
<sect1 id="sec-plugin-filesystem">
<title>Sistema de arquivos</title>
<para>Esse é um plug-in do Grilo para o sistema de arquivos. Seu ID de plug-in é <literal>“grl-filesystem”</literal></para>
</sect1>
<sect1 id="sec-plugin-flickr">
<title>Flickr</title>
<para>Esse é um plug-in do Grilo para Flickr. Seu ID de plug-in é <literal>“grl-flickr”</literal></para>
</sect1>
<sect1 id="sec-plugin-gravatar">
<title>Gravatar</title>
<para>Esse é um plug-in do Grilo para Gravatar. Seu ID de plug-in é <literal>“grl-gravatar”</literal>.</para>
</sect1>
<sect1 id="sec-plugin-jamendo">
<title>Jamendo</title>
<para>Esse é um plug-in do Grilo para Jamendo. Seu ID de plug-in é <literal>“grl-jamendo”</literal></para>
</sect1>
<sect1 id="sec-plugin-local-metadata">
<title>Metadados locais</title>
<para>Esse é um plug-in do Grilo para metadados locais. Seu ID de plug-in é <literal>“grl-local-metadata”</literal></para>
</sect1>
<sect1 id="sec-plugin-metadata-store">
<title>Armazenamento de metadados</title>
<para>Esse é um plug-in do Grilo para armazenamento de metadados. Seu ID de plug-in é <literal>“grl-metadata-store”</literal></para>
</sect1>
<sect1 id="sec-plugin-optical-media">
<title>Mídias óticas</title>
<para>Esse é um plug-in do Grilo para mídias óticas. Seu ID de plug-in é <literal>“grl-optical-media”</literal></para>
</sect1>
<sect1 id="sec-plugin-podcasts">
<title>Podcasts</title>
<para>Esse é um plug-in do Grilo para podcasts. Seu ID de plug-in é <literal>“grl-podcasts”</literal></para>
</sect1>
<sect1 id="sec-plugin-shoutcast">
<title>Shoutcast</title>
<para>Esse é um plug-in do Grilo para shoutcast. Seu ID de plug-in é <literal>“grl-shoutcast”</literal></para>
</sect1>
<sect1 id="sec-plugin-tmdb">
<title>Plug-in TMDb</title>
<para>O plug-in TMDb obtém informações sobre filmes do <ulink url="http://themoviedb.org">serviço on-line TMDb</ulink>, que é um banco de dados de filmes mantido pela comunidade. Seu ID de plug-in é <literal>“grl-tmdb”</literal></para>
<para>Antes de usar esse plug-in, você deve definir a TMDB API Key com <ulink url="http://developer.gnome.org/grilo/unstable/GrlConfig.html#grl-config-set-api-key"><function>grl_config_set_api_key()</function></ulink>.</para>
<para>Você pode usar <ulink url="http://developer.gnome.org/grilo/unstable/GrlSource.html#grl-source-resolve"><function>grl_source_resolve()</function></ulink> para descobrir detalhes sobre um GrlMediaItem existente.</para>
<para>Esse plug-in não oferece suporte a pesquisa via <ulink url="http://developer.gnome.org/grilo/unstable/GrlSource.html#grl-source-search"><function>grl_source_search()</function></ulink> ou consultas via <ulink url="http://developer.gnome.org/grilo/unstable/GrlSource.html#grl-source-query"><function>grl_source_query()</function></ulink>.</para>
<para>Aqui está uma amostra simples do uso do plug-in TMDb do Grilo:</para>
<para>Arquivo: <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 <jensg@openismus.com>
*
* 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 <grilo.h>
#include <stdio.h>
/**
* Essa chave TMDB é só para teste.
* Para uso no mundo real, por favor solicite sua própria chave de
* 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)
{
g_assert_no_error (error);
g_assert (media);
const gchar *title = grl_media_get_title (media);
const gchar *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[])
{
grl_init (&argc, &argv);
/*
* Defina a chave de API do TMDB:
* Você deve usar a sua chave de API do TMDB em seu próprio aplicativo.
*/
GrlRegistry *reg = grl_registry_get_default ();
GrlConfig *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);
/*
* Obtenha o plug-in:
*/
GError *error = NULL;
gboolean plugin_activated =
grl_registry_activate_plugin_by_id (reg, TMDB_PLUGIN_ID, &error);
g_assert (plugin_activated);
g_assert_no_error (error);
/*
* Obtenha a fonte do Grilo:
*/
GrlSource *src =
grl_registry_lookup_source (reg, TMDB_PLUGIN_ID);
/*
* Verifique se ele tenha a capacidade esperada:
*/
g_assert (grl_source_supported_operations (src) & GRL_OP_RESOLVE);
GrlCaps *caps = grl_source_get_caps (src, GRL_OP_RESOLVE);
g_assert (caps);
GrlOperationOptions *options = grl_operation_options_new (caps);
/*
* Um item de mídia que você vai dar ao plug-in TMDB,
* para descobrir seus detalhes.
*/
GrlMedia *media = grl_media_video_new ();
grl_media_set_title (media, "Sherlock Holmes");
/*
* Descobre que chaves são fornecidas pela fonte:
*/
const GList *keys = grl_source_supported_keys (src);
const GList* l = NULL;
for (l = keys; l != NULL; l = l->next) {
GrlKeyID id = GPOINTER_TO_INT (l->data);
g_assert (id);
const gchar *name = grl_metadata_key_get_name (id);
printf ("Supported key: %s\n", name);
/*
* Lembre disso para uso posterior:
* Você também poderia usar grl_registry_lookup_metadata_key_name().
*/
if (g_strcmp0 (name, "tmdb-director") == 0) {
director_key = id;
}
}
/*
* Pede pelo plug-in TMDB para os detalhes do item de mídia,
* do serviço on-line do TMDB:
*/
grl_source_resolve (src, media,
keys, options,
resolve_cb, NULL);
/*
* Inicie o loop principal para que nosso callback possa ser chamado:
*/
loop = g_main_loop_new (NULL, FALSE);
g_main_loop_run (loop);
/*
* Disponibilize os objetos:
*/
g_object_unref (media);
g_object_unref (config);
g_object_unref (options);
/*
* Desinicialize o Grilo:
*/
grl_deinit ();
}
</programlisting>
</sect1>
<sect1 id="sec-plugin-tracker">
<title>Tracker</title>
<para>Esse é um plug-in do Grilo para Tracker. Seu ID de plug-in é <literal>“grl-tracker”</literal></para>
</sect1>
<sect1 id="sec-plugin-vimeo">
<title>Vimeo</title>
<para>Esse é um plug-in do Grilo para Vimeo. Seu ID de plug-in é <literal>“grl-vimeo”</literal></para>
</sect1>
<sect1 id="sec-plugin-youtube">
<title>YouTube</title>
<para>Esse é um plug-in do Grilo para YouTube. Seu ID de plug-in é <literal>“grl-youtube”</literal></para>
</sect1>
<sect1 id="sec-plugin-dleyna">
<title>DLeyna</title>
<para>Esse é um plug-in do Grilo para UPnP/DLNA.. Seu ID de plug-in é <literal>“grl-dleyna”</literal></para>
</sect1>
</chapter>
</book>