summaryrefslogtreecommitdiff
path: root/lib/mediaselector.php
diff options
context:
space:
mode:
Diffstat (limited to 'lib/mediaselector.php')
-rw-r--r--lib/mediaselector.php27
1 files changed, 27 insertions, 0 deletions
diff --git a/lib/mediaselector.php b/lib/mediaselector.php
new file mode 100644
index 0000000..df19c8d
--- /dev/null
+++ b/lib/mediaselector.php
@@ -0,0 +1,27 @@
+<?php
+
+const MEDIASELECTOR_BASE = 'https://open.live.bbc.co.uk/mediaselector/6/select';
+
+function mediaselector_lookup(array $options): stdClass {
+ // ['version' => '3.0', 'cvid' => 'urn:bbc:pips:pid:...']
+ $url = MEDIASELECTOR_BASE;
+ $options['format'] = 'json';
+ foreach ($options as $k => $v) {
+ $url .= "/$k/$v";
+ }
+ return json_decode(file_get_contents($url));
+}
+
+function mediaselector_findHls(string $vpid): ?string {
+ $resp = mediaselector_lookup([
+ 'version' => '3.0',
+ 'proto' => 'https',
+ 'transferformat' => 'hls',
+ 'mediaset' => 'pc',
+ 'cvid' => "urn:bbc:pips:pid:$vpid",
+ ]);
+ if (isset($resp->result) && $resp->result == 'selectionunavailable') {
+ return null;
+ }
+ return $resp->media[0]->connection[0]->href;
+}