forked from j62/ctbrec
1
0
Fork 0

Add getSanitizedName to Model

This method provides returns a name, which is safe to use with
filesystem I/O. Fc2Model returns the model ID for this.
This commit is contained in:
0xboobface 2019-02-19 15:28:52 +01:00
parent 75a625bbe0
commit e1eeb830da
8 changed files with 27 additions and 6 deletions

View File

@ -49,6 +49,11 @@ public class JavaFxModel implements Model {
delegate.setName(name); delegate.setName(name);
} }
@Override
public String getSanitizedNamed() {
return delegate.getSanitizedNamed();
}
@Override @Override
public String getPreview() { public String getPreview() {
return delegate.getPreview(); return delegate.getPreview();

View File

@ -349,7 +349,7 @@ public class RecordedModelsTab extends Tab implements TabSelectionListener {
.peek(fxm -> { .peek(fxm -> {
for (Recording recording : recordings) { for (Recording recording : recordings) {
if(recording.getStatus() == Recording.State.RECORDING && if(recording.getStatus() == Recording.State.RECORDING &&
recording.getModelName().equals(fxm.getName())) recording.getModelName().equals(fxm.getSanitizedNamed()))
{ {
fxm.getRecordingProperty().set(true); fxm.getRecordingProperty().set(true);
break; break;

View File

@ -66,6 +66,12 @@ public abstract class AbstractModel implements Model {
this.displayName = name; this.displayName = name;
} }
@Override
public String getSanitizedNamed() {
String sanitizedName = getName();
return sanitizedName.replace(' ', '_').replace('\\', '_').replace('/', '_');
}
@Override @Override
public String getPreview() { public String getPreview() {
return preview; return preview;

View File

@ -137,16 +137,16 @@ public class Config {
File dirForRecording = getDirForRecording(model); File dirForRecording = getDirForRecording(model);
SimpleDateFormat sdf = new SimpleDateFormat(RECORDING_DATE_FORMAT); SimpleDateFormat sdf = new SimpleDateFormat(RECORDING_DATE_FORMAT);
String startTime = sdf.format(new Date()); String startTime = sdf.format(new Date());
File targetFile = new File(dirForRecording, model.getName() + '_' + startTime + ".ts"); File targetFile = new File(dirForRecording, model.getSanitizedNamed() + '_' + startTime + ".ts");
return targetFile; return targetFile;
} }
private File getDirForRecording(Model model) { private File getDirForRecording(Model model) {
switch(getSettings().recordingsDirStructure) { switch(getSettings().recordingsDirStructure) {
case ONE_PER_MODEL: case ONE_PER_MODEL:
return new File(getSettings().recordingsDir, model.getName()); return new File(getSettings().recordingsDir, model.getSanitizedNamed());
case ONE_PER_RECORDING: case ONE_PER_RECORDING:
File modelDir = new File(getSettings().recordingsDir, model.getName()); File modelDir = new File(getSettings().recordingsDir, model.getSanitizedNamed());
SimpleDateFormat sdf = new SimpleDateFormat(RECORDING_DATE_FORMAT); SimpleDateFormat sdf = new SimpleDateFormat(RECORDING_DATE_FORMAT);
String startTime = sdf.format(new Date()); String startTime = sdf.format(new Date());
return new File(modelDir, startTime); return new File(modelDir, startTime);

View File

@ -46,6 +46,11 @@ public interface Model extends Comparable<Model> {
public void setName(String name); public void setName(String name);
/**
* Returns a name, which is safe to use with the filesystem
*/
public String getSanitizedNamed();
public String getPreview(); public String getPreview();
public void setPreview(String preview); public void setPreview(String preview);

View File

@ -59,7 +59,7 @@ public interface Recorder {
List<Recording> recordings = getRecordings(); List<Recording> recordings = getRecordings();
return getModels().stream().filter(m -> { return getModels().stream().filter(m -> {
for (Recording recording : recordings) { for (Recording recording : recordings) {
if (recording.getStatus() == Recording.State.RECORDING && recording.getModelName().equals(m.getName())) { if (recording.getStatus() == Recording.State.RECORDING && recording.getModelName().equals(m.getSanitizedNamed())) {
return true; return true;
} }
} }

View File

@ -58,7 +58,7 @@ public class HlsDownload extends AbstractHlsDownload {
super.model = model; super.model = model;
SimpleDateFormat sdf = new SimpleDateFormat(Config.RECORDING_DATE_FORMAT); SimpleDateFormat sdf = new SimpleDateFormat(Config.RECORDING_DATE_FORMAT);
String startTime = sdf.format(new Date()); String startTime = sdf.format(new Date());
Path modelDir = FileSystems.getDefault().getPath(config.getSettings().recordingsDir, model.getName()); Path modelDir = FileSystems.getDefault().getPath(config.getSettings().recordingsDir, model.getSanitizedNamed());
downloadDir = FileSystems.getDefault().getPath(modelDir.toString(), startTime); downloadDir = FileSystems.getDefault().getPath(modelDir.toString(), startTime);
if(!model.isOnline()) { if(!model.isOnline()) {

View File

@ -394,4 +394,9 @@ public class Fc2Model extends AbstractModel {
public void writeSiteSpecificData(JsonWriter writer) throws IOException { public void writeSiteSpecificData(JsonWriter writer) throws IOException {
writer.name("id").value(id); writer.name("id").value(id);
} }
@Override
public String getSanitizedNamed() {
return id;
}
} }