langleyfoxall/press-association-tv-api-wrapper

📺⌚️ 提供有关电视频道、时间和时间项目的相关信息

v1.5.2 2018-11-26 13:33 UTC

This package is auto-updated.

Last update: 2024-08-27 02:57:31 UTC


README

Packagist

此软件包提供对Press Association TV API客户端的支持。

它提供了有关电视频道、时间和时间项目的相关信息。

Press Association (PA)是英国和爱尔兰的国家新闻机构,也是网络、移动、广播和印刷领域的领先的多媒体内容提供商。在过去145年里,PA一直提供快速、准确的文章、数据、照片和视频。今天,该业务越来越专注于为数字和印刷客户提供完整的产品。

安装

要安装,只需从项目的根目录运行以下Composer命令。

composer require langleyfoxall/press-association-tv-api-wrapper

使用方法

首先使用您的API密钥实例化客户端。

$client = new \LangleyFoxall\PressAssociationTvApi\Client('API_KEY');

频道

要获取有关频道的详细信息,请调用getChannel方法,传递频道ID。如果您想一次性获取多个频道的详细信息,可以调用getChannels方法,传递频道ID数组。

这些方法分别返回一个Channel对象或一组Channel对象。

您可能希望将此方法调用放在try catch块中,以捕获任何网络异常。

$channel = $client->getChannel('da015cc7-a71e-3137-a110-30dc51262eef');

$channels = $client->getChannels([
    'da015cc7-a71e-3137-a110-30dc51262eef',
    '3b205a49-a866-32a0-b391-c727d52b1e79',
    '7cd38a6c-bb1f-306a-a6c6-00c7f7558432',
]);

示例Channel对象

以下示例显示了与Channel对象一起提供的可用公共属性。

object(LangleyFoxall\PressAssociationTvApi\Objects\Channel)#1804 (2) {
  ["title"]=>
  string(20) "Sky Sports Action HD"
  ["images"]=>
  object(Illuminate\Support\Collection)#1803 (1) {
    ["items":protected]=>
    array(1) {
      [0]=>
      object(stdClass)#1800 (2) {
        ["kind"]=>
        string(12) "picture:logo"
        ["rendition"]=>
        object(stdClass)#1801 (3) {
          ["default"]=>
          object(stdClass)#1798 (1) {
            ["href"]=>
            string(43) "http://tv.static.press.net/logo/p329131.png"
          }
          ["transparent-light"]=>
          object(stdClass)#1794 (1) {
            ["href"]=>
            string(50) "http://tv.static.press.net/logo/p2201707181414.png"
          }
          ["transparent-dark"]=>
          object(stdClass)#1795 (1) {
            ["href"]=>
            string(50) "http://tv.static.press.net/logo/p1201707181414.png"
          }
        }
      }
    }
  }
}

时间表

您可以通过调用getScheduleForToday方法获取今天的节目表,传递频道ID数组。同样,您还可以使用getScheduleForDay方法获取特定日期的节目表,传递频道ID数组和Carbon日期对象。

这两个方法都将返回一个Schedule对象。

您可能希望将此方法调用放在try catch块中,以捕获任何网络异常。

$schedule = $client->getScheduleForToday([
    'da015cc7-a71e-3137-a110-30dc51262eef',
    '3b205a49-a866-32a0-b391-c727d52b1e79',
    '7cd38a6c-bb1f-306a-a6c6-00c7f7558432',
]);

$tomorrowSchedule = $client->getScheduleForDay([
        'da015cc7-a71e-3137-a110-30dc51262eef',
        '3b205a49-a866-32a0-b391-c727d52b1e79',
        '7cd38a6c-bb1f-306a-a6c6-00c7f7558432',
    ], \Carbon\Carbon::now()->addDay());

然后,您可以调用Schedule对象的all方法获取所有时间项目。

$items = $schedule->all();

或者,您可以通过调用Schedule对象的getByGenre方法获取按类型筛选的时间项目。此方法接受类型或运动名称,例如足球网球拳击

$items = $schedule->getByGenre('Football');

示例ScheduleItem对象

以下示例显示了与ScheduleItem对象一起提供的可用公共属性。

object(LangleyFoxall\PressAssociationTvApi\Objects\ScheduleItem)#1542 (5) {
  ["title"]=>
  string(27) "Hockey: China v Netherlands"
  ["episodeTitle"]=>
  string(27) "Hockey: China v Netherlands"
  ["dateTime"]=>
  object(Carbon\Carbon)#1538 (3) {
    ["date"]=>
    string(26) "2018-07-27 23:00:00.000000"
    ["timezone_type"]=>
    int(1)
    ["timezone"]=>
    string(6) "+00:00"
  }
  ["channel"]=>
  object(LangleyFoxall\PressAssociationTvApi\Objects\Channel)#1533 (2) {
    ["title"]=>
    string(10) "BT Sport 2"
    ["images"]=>
    object(Illuminate\Support\Collection)#1534 (1) {
      ["items":protected]=>
      array(1) {
        [0]=>
        object(stdClass)#1531 (2) {
          ["kind"]=>
          string(12) "picture:logo"
          ["rendition"]=>
          object(stdClass)#1532 (3) {
            ["default"]=>
            object(stdClass)#1529 (1) {
              ["href"]=>
              string(43) "http://tv.static.press.net/logo/p388708.png"
            }
            ["transparent-light"]=>
            object(stdClass)#1530 (1) {
              ["href"]=>
              string(50) "http://tv.static.press.net/logo/p2201805121806.png"
            }
            ["transparent-dark"]=>
            object(stdClass)#1506 (1) {
              ["href"]=>
              string(50) "http://tv.static.press.net/logo/p1201805121806.png"
            }
          }
        }
      }
    }
  }
  ["genres"]=>
  object(Illuminate\Support\Collection)#1535 (1) {
    ["items":protected]=>
    array(1) {
      [0]=>
      string(6) "hockey"
    }
  }
}

限制

此库目前不处理API分页。这不应该是一个问题,因为频道每天通常不会有超过1000个时间项目。