Prezentacja treści za pomocą oEmbed w Django

Dzięki oEmbed w prosty sposób możemy zamieniać linki do serwisów multimedialnych w interaktywne widżety prezentujące ich zawartość (grafiki, odtwarzacze klipów itp.)

oEmbed to format prezentacji adresów URL różnych serwisów (społecznościowych, multimedialnych jak YouTube, Flickr). Na własnej stronie w treści posta podajemy link do klipu, czy link do prezentacji slideshare i poprzez bibliotekę obsługującą oEmbed możemy w łatwy sposób zamienić te linki na embedowane odtwarzacze, czy linki podpięte pod miniaturki. Listę większości serwisów obsługujących oEmbed znajdziemy na embed.ly.

Serwis oferujący obsługę oEmbed musi podać adres URL obsługujący żądania np. http://www.flickr.com/services/oembed/ oraz podać jakie linki są rozpoznawane przez to api, np: http://www.flickr.com/photos/*. Mając te dane można użyć API, np:

http://www.flickr.com/services/oembed/?url=http://www.flickr.com/photos/91784720@N00/4868367542/in/pool-astrometry/
Co zwróci:
<oembed>
<version>1.0</version>
<type>photo</type>
<title>LAGOON AND TRIFFID IN H ALPHA</title>
<author_name>Narayan Mukkavilli</author_name>
<author_url>http://www.flickr.com/photos/91784720@N00/</author_url>
<cache_age>3600</cache_age>
<provider_name>Flickr</provider_name>
<provider_url>http://www.flickr.com/</provider_url>
<width>500</width>
<height>325</height>
<url>
http://farm5.static.flickr.com/4096/4868367542_8b1c2f8997.jpg
</url>
</oembed>

W Pythonie mamy do dyspozycji python-oembed oraz django-oembed. W przypadku aplikacji Django dostajemy gotową aplikację obsługującą większość popularnych serwisów - w bazie danych ma gotowe reguły dl 61 providerów oEmbed i nie musimy ich wprowadzać ręcznie.

Django-oembed

By zainstalować aplikację pobieramy źródła:
svn checkout http://django-oembed.googlecode.com/svn/trunk/ django-oembed
I instalujemy przez:
python setup.py install
W settings.py naszego projektu Django dodajemy aplikację 'oembed' do INSTALLED_APPS i synchronizujemy bazę danych (syncdb). Należy upewnić się czy załaduje fixtures do stworzonych tabel. Jeżeli nie to kopiujemy oembed/fixtures/initial_data.json do katalogu projektu i wykonujemy:
python manage.py loaddata initial_data.json

Aplikacja gotowa jest do działania.

Teraz w szablonach Django możemy załadować tagi - {% load oembed_tags %} i używać ich:
{{ blog.content|oembed:"600x600" }}

czy np.:

{% oembed %}{{ blog.additional_content }}
<p>blablabla</p>
http://www.flickr.com/photos/riklaunim/4859954938/
<p>blaa</p>
{% endoembed %}
Parser zastosowany w tagach oEmbed jest dość wybredny i może nie wyłapać linków jeżeli treść nie będzie miała struktury dokumentu HTML (muszą być jakieś tagi, inna zawartość). Efektem działania parsera będzie:
oembed
blog comments powered by Disqus

Kategorie

Strony