Essence는 YouTube 비디오, 트위터 상태 또는 블로그 기사와 같은 웹사이트에서 미디어 정보를 추출하는 간단한 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()
메소드를 사용하면 소스에서 직접 또는 URL(이 경우 Essence가 소스 가져오기를 처리함)에서 웹 페이지에서 추출 가능한 URL을 크롤링할 수 있습니다.
예를 들어, 블로그 게시물에 있는 모든 동영상의 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 ();
})
]);
기본 주입 설정은 표준 컨테이너 클래스에 정의되어 있습니다.
Essence를 설치한 후에는 터미널에서 ./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 = new Multiplayer Multiplayer ();
if ( $ Media -> type === ' video ' ) {
echo $ Multiplayer -> html ( $ Media -> url , [
' autoPlay ' => true ,
' highlightColor ' => ' BADA55 '
]);
}