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.
This commit is contained in:
0xboobface 2018-08-28 13:04:02 +02:00
parent 4f1f9ce5d5
commit 4c32dc84f5
2 changed files with 21 additions and 20 deletions

View File

@ -2,6 +2,7 @@ package ctbrec.recorder;
import static ctbrec.Recording.STATUS.FINISHED; import static ctbrec.Recording.STATUS.FINISHED;
import static ctbrec.Recording.STATUS.GENERATING_PLAYLIST; import static ctbrec.Recording.STATUS.GENERATING_PLAYLIST;
import static ctbrec.Recording.STATUS.MERGING;
import static ctbrec.Recording.STATUS.RECORDING; import static ctbrec.Recording.STATUS.RECORDING;
import java.io.File; import java.io.File;
@ -31,7 +32,6 @@ import ctbrec.HttpClient;
import ctbrec.Model; import ctbrec.Model;
import ctbrec.ModelParser; import ctbrec.ModelParser;
import ctbrec.Recording; import ctbrec.Recording;
import ctbrec.Recording.STATUS;
import ctbrec.recorder.PlaylistGenerator.InvalidPlaylistException; import ctbrec.recorder.PlaylistGenerator.InvalidPlaylistException;
import ctbrec.recorder.download.Download; import ctbrec.recorder.download.Download;
import ctbrec.recorder.download.HlsDownload; import ctbrec.recorder.download.HlsDownload;
@ -312,7 +312,8 @@ public class LocalRecorder implements Recorder {
} }
private File merge(File recDir) { private File merge(File recDir) {
SegmentMerger segmentMerger = new SegmentMerger(); SegmentMerger segmentMerger = new SimpleSegmentMerger();
//SegmentMerger segmentMerger = new FFmpegSegmentMerger();
segmentMergers.put(recDir, segmentMerger); segmentMergers.put(recDir, segmentMerger);
try { try {
File mergedFile = Recording.mergedFileFromDirectory(recDir); 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.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) { if (Config.getInstance().getSettings().automerge && !Config.getInstance().getSettings().automergeKeepSegments) {
try { try {
LOG.debug("Deleting directory {}", recDir); LOG.debug("Deleting directory {}", recDir);
// TODO validate the size of the merged file before deleting the segments
delete(recDir, mergedFile); delete(recDir, mergedFile);
} catch (IOException e) { } catch (IOException e) {
LOG.error("Couldn't delete directory {}", recDir, e); LOG.error("Couldn't delete directory {}", recDir, e);
@ -494,13 +496,7 @@ public class LocalRecorder implements Recorder {
recording.setSizeInByte(getSize(rec)); recording.setSizeInByte(getSize(rec));
File playlist = new File(rec, "playlist.m3u8"); File playlist = new File(rec, "playlist.m3u8");
recording.setHasPlaylist(playlist.exists()); recording.setHasPlaylist(playlist.exists());
if (recording.hasPlaylist()) {
recording.setStatus(FINISHED);
} else {
// this might be a merged recording
if (Recording.isMergedRecording(rec)) {
recording.setStatus(FINISHED);
} else {
PlaylistGenerator playlistGenerator = playlistGenerators.get(rec); PlaylistGenerator playlistGenerator = playlistGenerators.get(rec);
if (playlistGenerator != null) { if (playlistGenerator != null) {
recording.setStatus(GENERATING_PLAYLIST); recording.setStatus(GENERATING_PLAYLIST);
@ -508,8 +504,14 @@ public class LocalRecorder implements Recorder {
} else { } else {
SegmentMerger merger = segmentMergers.get(rec); SegmentMerger merger = segmentMergers.get(rec);
if (merger != null) { if (merger != null) {
recording.setStatus(STATUS.MERGING); recording.setStatus(MERGING);
recording.setProgress(merger.getProgress()); recording.setProgress(merger.getProgress());
} else {
if (Recording.isMergedRecording(rec)) {
recording.setStatus(FINISHED);
} else {
if (recording.hasPlaylist()) {
recording.setStatus(FINISHED);
} else { } else {
recording.setStatus(RECORDING); recording.setStatus(RECORDING);
} }
@ -596,6 +598,7 @@ public class LocalRecorder implements Recorder {
File directory = new File(recordingsDir, rec.getPath()); File directory = new File(recordingsDir, rec.getPath());
File mergedFile = merge(directory); File mergedFile = merge(directory);
if (!keepSegments) { if (!keepSegments) {
// TODO validate the size of the merged file before deleting the segments
delete(directory, mergedFile); delete(directory, mergedFile);
} }
return mergedFile; return mergedFile;

View File

@ -113,10 +113,8 @@ public class JavaFxRecording extends Recording {
} }
public void update(Recording updated) { public void update(Recording updated) {
if(getStatus() != STATUS.DOWNLOADING && getStatus() != STATUS.MERGING) {
setStatus(updated.getStatus()); setStatus(updated.getStatus());
setProgress(updated.getProgress()); setProgress(updated.getProgress());
}
setSizeInByte(updated.getSizeInByte()); setSizeInByte(updated.getSizeInByte());
} }