From 4c32dc84f5da145e4dacb1ba815d743b4608b9a4 Mon Sep 17 00:00:00 2001 From: 0xboobface <0xboobface@gmail.com> Date: Tue, 28 Aug 2018 13:04:02 +0200 Subject: [PATCH] Fix status and progress update in recordings table Fix status and progress update in recordings table, which didn't work correctly for the merge process. --- .../java/ctbrec/recorder/LocalRecorder.java | 35 ++++++++++--------- src/main/java/ctbrec/ui/JavaFxRecording.java | 6 ++-- 2 files changed, 21 insertions(+), 20 deletions(-) diff --git a/src/main/java/ctbrec/recorder/LocalRecorder.java b/src/main/java/ctbrec/recorder/LocalRecorder.java index 568ee69b..83ad2043 100644 --- a/src/main/java/ctbrec/recorder/LocalRecorder.java +++ b/src/main/java/ctbrec/recorder/LocalRecorder.java @@ -2,6 +2,7 @@ package ctbrec.recorder; import static ctbrec.Recording.STATUS.FINISHED; import static ctbrec.Recording.STATUS.GENERATING_PLAYLIST; +import static ctbrec.Recording.STATUS.MERGING; import static ctbrec.Recording.STATUS.RECORDING; import java.io.File; @@ -31,7 +32,6 @@ import ctbrec.HttpClient; import ctbrec.Model; import ctbrec.ModelParser; import ctbrec.Recording; -import ctbrec.Recording.STATUS; import ctbrec.recorder.PlaylistGenerator.InvalidPlaylistException; import ctbrec.recorder.download.Download; import ctbrec.recorder.download.HlsDownload; @@ -312,7 +312,8 @@ public class LocalRecorder implements Recorder { } private File merge(File recDir) { - SegmentMerger segmentMerger = new SegmentMerger(); + SegmentMerger segmentMerger = new SimpleSegmentMerger(); + //SegmentMerger segmentMerger = new FFmpegSegmentMerger(); segmentMergers.put(recDir, segmentMerger); try { File mergedFile = Recording.mergedFileFromDirectory(recDir); @@ -336,10 +337,11 @@ public class LocalRecorder implements Recorder { LOG.error("Couldn't move merged file to merge dirctory {}", mergeDir); } } - LOG.debug("Keep segments: {}", Config.getInstance().getSettings().automergeKeepSegments); + if (Config.getInstance().getSettings().automerge && !Config.getInstance().getSettings().automergeKeepSegments) { try { LOG.debug("Deleting directory {}", recDir); + // TODO validate the size of the merged file before deleting the segments delete(recDir, mergedFile); } catch (IOException e) { LOG.error("Couldn't delete directory {}", recDir, e); @@ -494,22 +496,22 @@ public class LocalRecorder implements Recorder { recording.setSizeInByte(getSize(rec)); File playlist = new File(rec, "playlist.m3u8"); recording.setHasPlaylist(playlist.exists()); - if (recording.hasPlaylist()) { - recording.setStatus(FINISHED); + + PlaylistGenerator playlistGenerator = playlistGenerators.get(rec); + if (playlistGenerator != null) { + recording.setStatus(GENERATING_PLAYLIST); + recording.setProgress(playlistGenerator.getProgress()); } else { - // this might be a merged recording - if (Recording.isMergedRecording(rec)) { - recording.setStatus(FINISHED); + SegmentMerger merger = segmentMergers.get(rec); + if (merger != null) { + recording.setStatus(MERGING); + recording.setProgress(merger.getProgress()); } else { - PlaylistGenerator playlistGenerator = playlistGenerators.get(rec); - if (playlistGenerator != null) { - recording.setStatus(GENERATING_PLAYLIST); - recording.setProgress(playlistGenerator.getProgress()); + if (Recording.isMergedRecording(rec)) { + recording.setStatus(FINISHED); } else { - SegmentMerger merger = segmentMergers.get(rec); - if (merger != null) { - recording.setStatus(STATUS.MERGING); - recording.setProgress(merger.getProgress()); + if (recording.hasPlaylist()) { + recording.setStatus(FINISHED); } else { recording.setStatus(RECORDING); } @@ -596,6 +598,7 @@ public class LocalRecorder implements Recorder { File directory = new File(recordingsDir, rec.getPath()); File mergedFile = merge(directory); if (!keepSegments) { + // TODO validate the size of the merged file before deleting the segments delete(directory, mergedFile); } return mergedFile; diff --git a/src/main/java/ctbrec/ui/JavaFxRecording.java b/src/main/java/ctbrec/ui/JavaFxRecording.java index f338f9ef..2bc3e4db 100644 --- a/src/main/java/ctbrec/ui/JavaFxRecording.java +++ b/src/main/java/ctbrec/ui/JavaFxRecording.java @@ -113,10 +113,8 @@ public class JavaFxRecording extends Recording { } public void update(Recording updated) { - if(getStatus() != STATUS.DOWNLOADING && getStatus() != STATUS.MERGING) { - setStatus(updated.getStatus()); - setProgress(updated.getProgress()); - } + setStatus(updated.getStatus()); + setProgress(updated.getProgress()); setSizeInByte(updated.getSizeInByte()); }