From 44fc6f832332dbbdb37d3969a5d9abef6a650284 Mon Sep 17 00:00:00 2001 From: Matthew Neil Date: Fri, 23 Feb 2018 11:02:51 -0500 Subject: [PATCH] feat: add program-date-time tag info to parsed segments (#27) --- src/parser.js | 13 +++++++++++-- test/fixtures/m3u8/dateTime.js | 9 +++++++++ test/fixtures/m3u8/dateTime.m3u8 | 5 ++++- 3 files changed, 24 insertions(+), 3 deletions(-) diff --git a/src/parser.js b/src/parser.js index 11ed4ca..6fb1aca 100644 --- a/src/parser.js +++ b/src/parser.js @@ -268,8 +268,17 @@ export default class Parser extends Stream { this.manifest.discontinuityStarts.push(uris.length); }, 'program-date-time'() { - this.manifest.dateTimeString = entry.dateTimeString; - this.manifest.dateTimeObject = entry.dateTimeObject; + if (typeof this.manifest.dateTimeString === 'undefined') { + // PROGRAM-DATE-TIME is a media-segment tag, but for backwards + // compatibility, we add the first occurence of the PROGRAM-DATE-TIME tag + // to the manifest object + // TODO: Consider removing this in future major version + this.manifest.dateTimeString = entry.dateTimeString; + this.manifest.dateTimeObject = entry.dateTimeObject; + } + + currentUri.dateTimeString = entry.dateTimeString; + currentUri.dateTimeObject = entry.dateTimeObject; }, targetduration() { if (!isFinite(entry.duration) || entry.duration < 0) { diff --git a/test/fixtures/m3u8/dateTime.js b/test/fixtures/m3u8/dateTime.js index b7e1166..ac8b3c5 100644 --- a/test/fixtures/m3u8/dateTime.js +++ b/test/fixtures/m3u8/dateTime.js @@ -4,6 +4,15 @@ "playlistType": "VOD", "segments": [ { + "dateTimeString": "2016-06-22T09:20:16.166-04:00", + "dateTimeObject": new Date("2016-06-22T09:20:16.166-04:00"), + "duration": 10, + "timeline": 0, + "uri": "hls_450k_video.ts" + }, + { + "dateTimeString": "2016-06-22T09:20:26.166-04:00", + "dateTimeObject": new Date("2016-06-22T09:20:26.166-04:00"), "duration": 10, "timeline": 0, "uri": "hls_450k_video.ts" diff --git a/test/fixtures/m3u8/dateTime.m3u8 b/test/fixtures/m3u8/dateTime.m3u8 index 53434c3..f3b8f6c 100644 --- a/test/fixtures/m3u8/dateTime.m3u8 +++ b/test/fixtures/m3u8/dateTime.m3u8 @@ -1,9 +1,12 @@ #EXTM3U #EXT-X-PLAYLIST-TYPE:VOD #EXT-X-MEDIA-SEQUENCE:0 -#EXT-X-PROGRAM-DATE-TIME:2016-06-22T09:20:16.166-04:00 #EXT-X-ALLOW-CACHE:NO #EXT-X-TARGETDURATION:10 +#EXT-X-PROGRAM-DATE-TIME:2016-06-22T09:20:16.166-04:00 +#EXTINF:10 +hls_450k_video.ts +#EXT-X-PROGRAM-DATE-TIME:2016-06-22T09:20:26.166-04:00 #EXTINF:10 hls_450k_video.ts #EXT-X-ENDLIST