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 com.squareup.moshi.JsonWriter;
import ctbrec.Model; import ctbrec.Model;
import ctbrec.recorder.download.Download;
import ctbrec.recorder.download.StreamSource; import ctbrec.recorder.download.StreamSource;
import ctbrec.sites.Site; import ctbrec.sites.Site;
import javafx.beans.property.BooleanProperty; import javafx.beans.property.BooleanProperty;
@ -212,4 +213,9 @@ public class JavaFxModel implements Model {
public int compareTo(Model o) { public int compareTo(Model o) {
return delegate.compareTo(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.JsonReader;
import com.squareup.moshi.JsonWriter; import com.squareup.moshi.JsonWriter;
import ctbrec.recorder.download.Download;
import ctbrec.recorder.download.HlsDownload;
import ctbrec.recorder.download.MergedHlsDownload;
import ctbrec.sites.Site; import ctbrec.sites.Site;
public abstract class AbstractModel implements Model { public abstract class AbstractModel implements Model {
@ -184,4 +187,13 @@ public abstract class AbstractModel implements Model {
public Site getSite() { public Site getSite() {
return site; 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.JsonReader;
import com.squareup.moshi.JsonWriter; import com.squareup.moshi.JsonWriter;
import ctbrec.recorder.download.Download;
import ctbrec.recorder.download.StreamSource; import ctbrec.recorder.download.StreamSource;
import ctbrec.sites.Site; import ctbrec.sites.Site;
@ -101,6 +102,6 @@ public interface Model extends Comparable<Model> {
public void setSuspended(boolean suspended); public void setSuspended(boolean suspended);
public Download createDownload();
} }

View File

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