Essence adalah pustaka PHP sederhana untuk mengekstrak informasi media dari situs web, seperti video youtube, status twitter, atau artikel blog.
Jika Anda sudah menggunakan Essence 2.xx, Anda harus melihat panduan migrasi.
composer require essence/essence
Essence dirancang agar sangat mudah digunakan. Dengan menggunakan kelas utama perpustakaan, Anda dapat mengambil informasi hanya dalam beberapa baris berikut:
$ Essence = new Essence Essence ();
$ Media = $ Essence -> extract ( ' http://www.youtube.com/watch?v=39e3KYAmXK4 ' );
if ( $ Media ) {
// That's all, you're good to go !
}
Lalu, lakukan saja apa pun yang Anda inginkan dengan data tersebut:
<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>
Menggunakan Essence, Anda terutama akan berinteraksi dengan objek Media. Media adalah wadah sederhana untuk semua informasi yang diambil dari URL.
Berikut adalah properti default yang disediakannya:
Properti ini dikumpulkan dari spesifikasi OEmbed dan OpenGraph, dan digabungkan menjadi satu antarmuka terpadu. Berdasarkan standar tersebut, properti ini harus menjadi titik awal yang kuat.
Namun, properti "non-standar" dapat dan juga akan disetel.
Inilah cara Anda memanipulasi properti Media:
// through dedicated methods
if (! $ Media -> has ( ' foo ' )) {
$ Media -> set ( ' foo ' , ' bar ' );
}
$ value = $ Media -> get ( ' foo ' );
// or directly like a class attribute
$ Media -> customValue = 12 ;
Perhatikan bahwa Essence akan selalu mencoba mengisi properti html
ketika tidak tersedia.
Kelas Essence menyediakan beberapa fungsi utilitas yang berguna untuk memastikan Anda mendapatkan beberapa informasi.
Metode crawl()
dan crawlUrl()
memungkinkan Anda meng-crawl URL yang dapat diekstrak dari halaman web, baik langsung dari sumbernya, atau dari URL-nya (dalam hal ini Essence akan mengurus pengambilan sumbernya).
Misalnya, berikut adalah cara mendapatkan URL semua video di postingan blog:
$ 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'
}
Anda kemudian dapat memperoleh informasi dari semua URL yang diekstraksi:
$ 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 dapat menggantikan URL apa pun yang dapat diekstraksi dalam teks dengan informasi tentangnya. Secara default, URL apa pun akan digantikan oleh properti html
dari Media yang ditemukan.
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 >
Namun Anda dapat berbuat lebih banyak dengan meneruskan panggilan balik untuk mengontrol informasi mana yang akan menggantikan 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 >
Hal ini memudahkan pembuatan template kaya atau bahkan mengintegrasikan mesin template:
echo $ Essence -> replace ( $ text , function ( $ Media ) use ( $ TwigTemplate ) {
return $ TwigTemplate -> render ( $ Media -> properties ());
});
Dimungkinkan untuk memberikan beberapa opsi kepada penyedia.
Misalnya, penyedia OEmbed menerima parameter maxwidth
dan maxheight
, sebagaimana ditentukan dalam spesifikasi OEmbed.
$ options = [
' maxwidth ' => 800 ,
' maxheight ' => 600
];
$ Media = $ Essence -> extract ( $ url , $ options );
$ medias = $ Essence -> extractAll ( $ urls , $ options );
$ text = $ Essence -> replace ( $ text , null , $ options );
Penyedia lain akan mengabaikan opsi yang tidak mereka tangani.
Essence saat ini mendukung 68 penyedia khusus:
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
Ditambah penyedia OEmbed
dan OpenGraph
, yang dapat digunakan untuk mengekstrak URL apa pun.
Anda dapat mengonfigurasi penyedia berikut pada instansi:
$ 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 '
]
]);
Anda juga dapat menonaktifkan yang default:
$ Essence = new Essence Essence ([
' filters ' => [
' SoundCloud ' => false
]
]);
Anda akan menemukan konfigurasi default di wadah DI standar Essence (lihat bagian berikut).
Hampir semua yang ada di Essence dapat dikonfigurasi melalui injeksi ketergantungan. Di balik terpal, konstruktor menggunakan wadah injeksi ketergantungan untuk mengembalikan instance Essence yang dikonfigurasi sepenuhnya.
Untuk menyesuaikan perilaku Essence, cara termudah adalah dengan mengonfigurasi pengaturan injeksi saat membuat 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 ();
})
]);
Pengaturan injeksi default ditentukan di kelas kontainer Standar.
Setelah Anda menginstal esensi, Anda harus mencoba menjalankan ./cli/essence.php
di terminal. Skrip ini memungkinkan Anda menguji Essence dengan cepat:
# 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
Jika Anda tertarik untuk menyematkan video, Anda harus melihat lib Multiplayer. Ini memungkinkan Anda membuat kode sematan yang dapat disesuaikan tanpa kesulitan:
$ Multiplayer = new Multiplayer Multiplayer ();
if ( $ Media -> type === ' video ' ) {
echo $ Multiplayer -> html ( $ Media -> url , [
' autoPlay ' => true ,
' highlightColor ' => ' BADA55 '
]);
}