Essence は、YouTube ビデオ、Twitter ステータス、ブログ記事などのメディア情報を Web サイトから抽出するためのシンプルな PHP ライブラリです。
すでに Essence 2.xx を使用している場合は、移行ガイドを参照してください。
composer require essence/essence
Essence は非常に使いやすいように設計されています。ライブラリのメイン クラスを使用すると、次の数行で情報を取得できます。
$ Essence = new Essence Essence ();
$ Media = $ Essence -> extract ( ' http://www.youtube.com/watch?v=39e3KYAmXK4 ' );
if ( $ Media ) {
// That's all, you're good to go !
}
次に、そのデータに対して必要な操作を行うだけです。
<article>
<header>
<h1> <?php echo $ Media -> title ; ?> </h1>
<p>By <?php echo $ Media -> authorName ; ?> </p>
</header>
<div class="player">
<?php echo $ Media -> html ; ?>
</div>
</article>
Essence を使用して、主にメディア オブジェクトを操作します。メディアは、URL から取得したすべての情報を格納する単純なコンテナです。
提供されるデフォルトのプロパティは次のとおりです。
これらのプロパティは OEmbed および OpenGraph 仕様から収集され、統一されたインターフェイスに統合されました。このような基準に基づくと、これらのプロパティは確実な出発点となるはずです。
ただし、「非標準」プロパティも設定できます。
メディア プロパティを操作する方法は次のとおりです。
// through dedicated methods
if (! $ Media -> has ( ' foo ' )) {
$ Media -> set ( ' foo ' , ' bar ' );
}
$ value = $ Media -> get ( ' foo ' );
// or directly like a class attribute
$ Media -> customValue = 12 ;
Essence は、 html
プロパティが利用できない場合、常にそれを入力しようとすることに注意してください。
Essence クラスは、情報を確実に取得するための便利なユーティリティ関数をいくつか提供します。
crawl()
メソッドとcrawlUrl()
メソッドを使用すると、Web ページから抽出可能な URL を、ソースから直接、または URL からクロールできます (この場合、Essence がソースの取得を処理します)。
たとえば、ブログ投稿内のすべてのビデオの URL を取得する方法は次のとおりです。
$ urls = $ Essence -> crawlUrl ( ' http://www.blog.com/article ' );
array(2) {
[0] => 'http://www.youtube.com/watch?v=123456',
[1] => 'http://www.dailymotion.com/video/a1b2c_lolcat-fun'
}
その後、抽出されたすべての URL から情報を取得できます。
$ medias = $ Essence -> extractAll ( $ urls );
array(2) {
['http://www.youtube.com/watch?v=123456'] => object(Media) {}
['http://www.dailymotion.com/video/a1b2c_lolcat-fun'] => object(Media) {}
}
Essence は、テキスト内の抽出可能な URL をそれに関する情報で置き換えることができます。デフォルトでは、URL は見つかったメディアのhtml
プロパティに置き換えられます。
echo $ Essence -> replace ( ' Look at this: http://www.youtube.com/watch?v=123456 ' );
Look at this: < iframe src =" http://www.youtube.com/embed/123456 " > </ iframe >
ただし、コールバックを渡して URL を置き換える情報を制御することで、さらに多くのことを行うことができます。
echo $ Essence -> replace ( $ text , function ( $ Media ) {
return <<<HTML
<p class="title"> $ Media -> title </p>
<div class="player"> $ Media -> html </div>
HTML ;
});
Look at this:
< p class =" title " > Video title </ p >
< div class =" player " >
< iframe src =" http://www.youtube.com/embed/123456 " > </ iframe >
< div >
これにより、豊富なテンプレートを簡単に構築したり、テンプレート エンジンを統合したりすることが簡単になります。
echo $ Essence -> replace ( $ text , function ( $ Media ) use ( $ TwigTemplate ) {
return $ TwigTemplate -> render ( $ Media -> properties ());
});
いくつかのオプションをプロバイダーに渡すことができます。
たとえば、OEmbed プロバイダーは、OEmbed 仕様で指定されているmaxwidth
パラメーターとmaxheight
パラメーターを受け入れます。
$ options = [
' maxwidth ' => 800 ,
' maxheight ' => 600
];
$ Media = $ Essence -> extract ( $ url , $ options );
$ medias = $ Essence -> extractAll ( $ urls , $ options );
$ text = $ Essence -> replace ( $ text , null , $ options );
他のプロバイダーは、処理できないオプションを無視します。
Essence は現在、68 の専門プロバイダーをサポートしています。
23hq Deviantart Kickstarter Sketchfab
Animoto Dipity Meetup SlideShare
Aol Dotsub Mixcloud SoundCloud
App.net Edocr Mobypicture SpeakerDeck
Bambuser Flickr Nfb Spotify
Bandcamp FunnyOrDie Official.fm Ted
Blip.tv Gist Polldaddy Twitter
Cacoo Gmep PollEverywhere Ustream
CanalPlus HowCast Prezi Vhx
Chirb.it Huffduffer Qik Viddler
CircuitLab Hulu Rdio Videojug
Clikthrough Ifixit Revision3 Vimeo
CollegeHumor Ifttt Roomshare Vine
Coub Imgur Sapo Wistia
CrowdRanking Instagram Screenr WordPress
DailyMile Jest Scribd Yfrog
Dailymotion Justin.tv Shoudio Youtube
さらに、任意の URL を抽出するために使用できるOEmbed
プロバイダーとOpenGraph
プロバイダー。
インスタンス化時にこれらのプロバイダーを構成できます。
$ Essence = new Essence Essence ([
// the SoundCloud provider is an OEmbed provider with a specific endpoint
' SoundCloud ' => Essence Di Container :: unique ( function ( $ C ) {
return $ C -> get ( ' OEmbedProvider ' )-> setEndpoint (
' http://soundcloud.com/oembed?format=json&url=:url '
);
}),
' filters ' => [
// the SoundCloud provider will be used for URLs that matches this pattern
' SoundCloud ' => ' ~soundcloud.com/[a-zA-Z0-9-_]+/[a-zA-Z0-9-]+~i '
]
]);
デフォルトのものを無効にすることもできます。
$ Essence = new Essence Essence ([
' filters ' => [
' SoundCloud ' => false
]
]);
デフォルトの設定は、Essence の標準 DI コンテナにあります (次の部分を参照)。
Essence のほとんどすべては、依存関係の注入を通じて構成できます。内部では、コンストラクターは依存関係注入コンテナーを使用して、完全に構成された Essence のインスタンスを返します。
Essence の動作をカスタマイズする最も簡単な方法は、Essence のビルド時に注入設定を構成することです。
$ Essence = new Essence Essence ([
// the container will return a unique instance of CustomHttpClient
// each time an HTTP client is needed
' Http ' => Essence Di Container :: unique ( function () {
return new CustomHttpClient ();
})
]);
デフォルトの注入設定は、Standard コンテナー クラスで定義されます。
エッセンスをインストールしたら、ターミナルで./cli/essence.php
を実行してみてください。このスクリプトを使用すると、Essence をすばやくテストできます。
# will fetch and print information about the video
./cli/essence.php extract http://www.youtube.com/watch?v=4S_NHY9c8uM
# will fetch and print all extractable URLs found at the given HTML page
./cli/essence.php crawl http://www.youtube.com/watch?v=4S_NHY9c8uM
ビデオの埋め込みに興味がある場合は、Multiplayer ライブラリを参照してください。これにより、カスタマイズ可能な埋め込みコードを簡単に構築できます。
$ Multiplayer = new Multiplayer Multiplayer ();
if ( $ Media -> type === ' video ' ) {
echo $ Multiplayer -> html ( $ Media -> url , [
' autoPlay ' => true ,
' highlightColor ' => ' BADA55 '
]);
}