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:
parent
4f1f9ce5d5
commit
4c32dc84f5
|
@ -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;
|
||||||
|
|
|
@ -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());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue