diff --git a/common/src/main/java/ctbrec/recorder/download/hls/HlsDownload.java b/common/src/main/java/ctbrec/recorder/download/hls/HlsDownload.java index ffdf44ff..a4d8a4bf 100644 --- a/common/src/main/java/ctbrec/recorder/download/hls/HlsDownload.java +++ b/common/src/main/java/ctbrec/recorder/download/hls/HlsDownload.java @@ -1,10 +1,17 @@ package ctbrec.recorder.download.hls; -import java.io.File; -import java.io.FileNotFoundException; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.OutputStream; +import com.iheartradio.m3u8.*; +import com.iheartradio.m3u8.data.*; +import ctbrec.Config; +import ctbrec.Model; +import ctbrec.Recording; +import ctbrec.io.HttpClient; +import ctbrec.io.IoUtils; +import ctbrec.recorder.download.hls.SegmentPlaylist.Segment; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.*; import java.net.MalformedURLException; import java.net.URL; import java.nio.file.FileSystems; @@ -21,23 +28,6 @@ import java.util.concurrent.ExecutorService; import java.util.concurrent.Future; import java.util.regex.Pattern; -import com.iheartradio.m3u8.*; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.iheartradio.m3u8.data.MediaPlaylist; -import com.iheartradio.m3u8.data.Playlist; -import com.iheartradio.m3u8.data.PlaylistType; -import com.iheartradio.m3u8.data.TrackData; -import com.iheartradio.m3u8.data.TrackInfo; - -import ctbrec.Config; -import ctbrec.Model; -import ctbrec.Recording; -import ctbrec.io.HttpClient; -import ctbrec.io.IoUtils; -import ctbrec.recorder.download.hls.SegmentPlaylist.Segment; - public class HlsDownload extends AbstractHlsDownload { private static final Logger LOG = LoggerFactory.getLogger(HlsDownload.class); @@ -67,7 +57,7 @@ public class HlsDownload extends AbstractHlsDownload { @Override public AbstractHlsDownload call() throws Exception { super.call(); - updatePlaylist(); + updatePlaylist(true); return this; } @@ -78,7 +68,7 @@ public class HlsDownload extends AbstractHlsDownload { return segmentPlaylist; } - private void updatePlaylist() { + private void updatePlaylist(boolean ongoing) { downloadExecutor.submit(() -> { addNewSegmentsToPlaylist(); if (segments.isEmpty() || targetDuration <= 0) { @@ -86,7 +76,8 @@ public class HlsDownload extends AbstractHlsDownload { } try { MediaPlaylist playlist = new MediaPlaylist.Builder() - .withPlaylistType(PlaylistType.VOD) + .withPlaylistType(ongoing ? PlaylistType.EVENT : PlaylistType.VOD) + .withIsOngoing(ongoing) .withMediaSequenceNumber(0) .withTargetDuration(Math.round(targetDuration)) .withTracks(segments) @@ -159,6 +150,7 @@ public class HlsDownload extends AbstractHlsDownload { @Override public void finalizeDownload() { + updatePlaylist(false); LOG.debug("Download for {} terminated", model); }