Let models create their download

Add createDownload to Model. This method is called by the recorder to create
and then start a download. It is a method of Model so that each site and
each download can create a specialized download.
This commit is contained in:
0xboobface 2018-12-17 22:06:13 +01:00
parent ad71f0cf11
commit 32807a2fde
4 changed files with 21 additions and 10 deletions

View File

@ -10,6 +10,7 @@ import com.squareup.moshi.JsonReader;
import com.squareup.moshi.JsonWriter;
import ctbrec.Model;
import ctbrec.recorder.download.Download;
import ctbrec.recorder.download.StreamSource;
import ctbrec.sites.Site;
import javafx.beans.property.BooleanProperty;
@ -212,4 +213,9 @@ public class JavaFxModel implements Model {
public int compareTo(Model o) {
return delegate.compareTo(o);
}
@Override
public Download createDownload() {
return delegate.createDownload();
}
}

View File

@ -9,6 +9,9 @@ import java.util.concurrent.ExecutionException;
import com.squareup.moshi.JsonReader;
import com.squareup.moshi.JsonWriter;
import ctbrec.recorder.download.Download;
import ctbrec.recorder.download.HlsDownload;
import ctbrec.recorder.download.MergedHlsDownload;
import ctbrec.sites.Site;
public abstract class AbstractModel implements Model {
@ -184,4 +187,13 @@ public abstract class AbstractModel implements Model {
public Site getSite() {
return site;
}
@Override
public Download createDownload() {
if(Config.isServerMode()) {
return new HlsDownload(getSite().getHttpClient());
} else {
return new MergedHlsDownload(getSite().getHttpClient());
}
}
}

View File

@ -9,6 +9,7 @@ import com.iheartradio.m3u8.PlaylistException;
import com.squareup.moshi.JsonReader;
import com.squareup.moshi.JsonWriter;
import ctbrec.recorder.download.Download;
import ctbrec.recorder.download.StreamSource;
import ctbrec.sites.Site;
@ -101,6 +102,6 @@ public interface Model extends Comparable<Model> {
public void setSuspended(boolean suspended);
public Download createDownload();
}

View File

@ -61,8 +61,6 @@ import ctbrec.io.HttpClient;
import ctbrec.io.StreamRedirectThread;
import ctbrec.recorder.PlaylistGenerator.InvalidPlaylistException;
import ctbrec.recorder.download.Download;
import ctbrec.recorder.download.HlsDownload;
import ctbrec.recorder.download.MergedHlsDownload;
public class LocalRecorder implements Recorder {
@ -194,13 +192,7 @@ public class LocalRecorder implements Recorder {
}
LOG.debug("Starting recording for model {}", model.getName());
Download download;
if (Config.isServerMode()) {
download = new HlsDownload(client);
} else {
download = new MergedHlsDownload(client);
}
Download download = model.createDownload();
recordingProcesses.put(model, download);
new Thread() {
@Override