Embed, 从任何网络服务或者网页中获取信息

分享于 

11分钟阅读

GitHub

  繁體 雙語
Laravel & Lumen URL Preview for Api
  • 源代码名称:Embed
  • 源代码网址:http://www.github.com/oscarotero/Embed
  • Embed源代码文档
  • Embed源代码下载
  • Git URL:
    git://www.github.com/oscarotero/Embed.git
    Git Clone代码到本地:
    git clone http://www.github.com/oscarotero/Embed
    Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/oscarotero/Embed
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
    
    嵌入

    Build StatusQuality ScoreReference StatusLatest Version on PackagistTotal DownloadsMonthly DownloadsSoftware LicenseSensioLabs Insight

    PHP库从任何网页( 使用 oembed。opengraph。twitter卡。废弃html等等) 获取信息。 它与任何web服务(。youtube,vimeo,flickr,Instagram 等) 兼容,并且具有适用于 (archive.org, github。facebook等网站的适配器。

    要求:

    • PHP 5.5 +
    • 安装了Curl库
    • 如果你需要 PHP 5.3支持,请使用 1.x 版本
    • 如果你需要 PHP 5.4支持,请使用 2.x 版本

    在线演示

    http://oscarotero.com/embed3/demo

    安装

    这个软件包是安装和autoloadable通过 Composer 作为嵌入/嵌入。

    
    $ composer require embed/embed
    
    
    
    

    如果不能使用,只需在代码中包含 PSR-4 autoload.php 文件( )。

    用法

    useEmbedEmbed;//Load any url:$info=Embed::create('https://www.youtube.com/watch?v=PP1xn5wHtxE');//Get content info$info->title; //The page title$info->description; //The page description$info->url; //The canonical url$info->type; //The page type (link, video, image, rich)$info->tags; //The page keywords (tags)$info->images; //List of all images found in the page$info->image; //The image choosen as main image$info->imageWidth; //The width of the main image$info->imageHeight; //The height of the main image$info->code; //The code to embed the image, video, etc$info->width; //The width of the embed code$info->height; //The height of the embed code$info->aspectRatio; //The aspect ratio (width/height)$info->authorName; //The resource author$info->authorUrl; //The author url$info->providerName; //The provider name of the page (Youtube, Twitter, Instagram, etc)$info->providerUrl; //The provider url$info->providerIcons; //All provider icons found in the page$info->providerIcon; //The icon choosen as main icon$info->publishedDate; //The published date of the resource$info->license; //The license url of the resource$info->linkedData; //The linked-data info (http://json-ld.org/)$info->feeds; //The RSS/Atom feeds

    适配器

    适配器是从提供者获取页面所有信息的类,并为每个值选择最佳结果。 例如,页面可以提供多个标题来源于 opengraph,Twitter 卡,<title> html元素等,从而选择最佳的标题。

    uri有一个称为"网页"的通用适配器,但也有一些特定的适配器,如 archive.org, facebook。

    适配器的可用选项包括:

    名称 类型 描述
    min_image_widthint用于选择主图像的最小图像宽度
    min_image_heightint用于选择主图像的最小图像高度
    choose_bigger_imagebool选择较大的图像作为主要图像( 而第一个发现的,通常是最相关的)。
    images_blackliststring | array你不想使用的图像。 可以是纯文本或者 Uri 匹配 Pattern。
    url_blackliststring | array不希望使用的url。 可以是纯文本或者 Uri 匹配 Pattern。
    follow_canonicalbool是否重定向到规范 URL。
    custom_adapters_namespacestring | array用于加载自定义适配器的命名空间。 这允许覆盖现有适配器的行为或者增加对更多站点的支持。

    提供程序

    提供程序从不同来源获取数据。 每个源都有自己的提供者。 例如对于 oembed,其他为 oembed,html,提供了一个提供程序,用于 oembed,html,一些提供程序可以配置,并且如下所示:

    oembed

    用于从 oembed api获取数据,如果它可用:

    名称 类型 描述
    parametersarray使用oembed请求发送的额外查询参数
    embedly_keystring如果已经定义,则使用 embed.ly api作为备用oembed提供程序。
    iframely_keystring如果已经定义,则使用 iframe.ly api作为备用oembed提供程序。

    html

    用于直接从页面的html代码中获取数据:

    名称 类型 描述
    max_imagesint从html代码( 搜索 <img> 元素) 获取的图像的最大数目。 默认为 -1 ( 无限制)。 使用 0不获取图像。
    external_imagesbool | array默认情况下为 false,这表示不允许位于其他域中的图像。 可以设置 true ( 全部允许) 或者提供url模式的array。

    google

    仅用于 谷歌地图 生成嵌入代码。

    名称 类型 描述
    keystring这个键使用了作为嵌入 api。

    仅用于页面,使用它的api获取信息。

    名称 类型 描述
    keystring用于从API获取信息的密钥。

    facebook

    仅用于facebook事件( 对于帖子。图片等不需要的),使用它的api获取信息。

    名称 类型 描述
    keystring用于从 facebook graph API获取信息的访问令牌。
    events_fieldsstring用来查询facebook事件的字段的逗号分隔列表。 请参考的Facebook文档获得可用字段的完整列表。
    videos_fieldsstring逗号分隔的字段列表,用于查询facebook视频。 请参考的Facebook文档获得可用字段的完整列表。

    所有选项的示例:

    选项作为第二个参数传递,你可以在下面的示例中看到这些选项:

    $info=Embed::create($url, ['min_image_width'=>100,'min_image_height'=>100,'choose_bigger_image'=>true,'images_blacklist'=>'example.com/*','url_blacklist'=>'example.com/*','follow_canonical'=>true,'html'=> ['max_images'=>10,'external_images'=>true ],'oembed'=> ['parameters'=> [],'embedly_key'=>'YOUR_KEY','iframely_key'=>'YOUR_KEY', ],'google'=> ['key'=>'YOUR_KEY', ],'soundcloud'=> ['key'=>'YOUR_KEY', ],'facebook'=> ['key'=>'YOUR_KEY','fields'=>'field1,field2,field3'// default : cover,description,end_time,id,name,owner,place,start_time,timezone ],]);

    调度程序

    要发送http请求,嵌入包括接口 EmbedHttpDispatcherInterface。 默认情况下使用curl库,但你可以创建自己的调度程序来使用任何其他库,如 guzzle:

    useEmbedEmbed;useEmbedHttpDispatcherInteface;useEmbedHttpUrl;useEmbedHttpResponse;useEmbedHttpImageResponse;classMyDispatcherimplementsDispatcherInterface{publicfunctiondispatch(Url$url) {$result= function_to_execute_request($url);returnnewResponse($url, $result['url'], $result['status'], $result['type'], $result['content'], $result['headers']); }publicfunctiondispatchImages(array$urls) {$responses= [];foreach ($urlsas$url) {$result= function_to_get_image_size($url);if ($result) {$responses[] =newImageResponse($url, $result['url'], $result['status'], $result['type'], $result['size'], $result['headers']); } }return$responses; }}//Use the dispatcher passing as third argument$info=Embed::create('http://example.com', null, newMyDispatcher());

    默认的curl调度程序接受与 curl_setopt PHP函数相同的选项。 你可以编辑默认值:

    useEmbedEmbed;useEmbedHttpCurlDispatcher;$dispatcher=newCurlDispatcher([CURLOPT_MAXREDIRS=>20,CURLOPT_CONNECTTIMEOUT=>10,CURLOPT_TIMEOUT=>10,CURLOPT_SSL_VERIFYPEER=>false,CURLOPT_SSL_VERIFYHOST=>false,CURLOPT_ENCODING=>'',CURLOPT_AUTOREFERER=>true,CURLOPT_USERAGENT=>'Embed PHP Library',CURLOPT_IPRESOLVE=>CURL_IPRESOLVE_V4,]);$info=Embed::create('http://example.com', null, $dispatcher);

    访问高级数据

    适配器从所有提供程序获取数据并选择最佳值。 但是你可以获得直接访问每个提供者的所有可用值。 还可以检查为调试而执行的所有http请求:

    useEmbedEmbed;//Get the info$info=Embed::create('https://www.youtube.com/watch?v=PP1xn5wHtxE');//Get all providers$providers=$info->getProviders();//Get the oembed provider$oembed=$providers['oembed'];//Get the oembed title value:echo$oembed->getTitle();//Get any value returned by the oembed apiecho$oembed->bag->get('author_name');//Get the main response object$response=$info->getResponse();//Get any http response header$lastModified=$response->getHeader('Last-Modifier');//Get the html body as DOMDocument$html=$response->getHtmlContent();//Get all http request executed (oembed endpoints, images, apis, etc...)$dispatcher=$adapter->getDispatcher();foreach ($dispatcher->getAllResponses() as$response) {echo'The request to '.$response->getStartingUrl();echo' is resolved to '.$response->getUrl();}

    如果这个库对你有用,那么说感谢给我买啤酒


    WEB  服务  INF  info  GET  
    相关文章