package io.lumify.youtube;
import io.lumify.core.ingest.FileImportSupportingFileHandler;
import io.lumify.core.model.properties.types.StreamingLumifyProperty;
import org.securegraph.VertexBuilder;
import org.securegraph.Visibility;
import org.securegraph.property.StreamingPropertyValue;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
public class YoutubeTranscriptFileImportSupportingFileHandler extends FileImportSupportingFileHandler {
public static final String YOUTUBE_CC_FILE_NAME_SUFFIX = ".youtubecc";
public static final StreamingLumifyProperty YOUTUBE_CC = new StreamingLumifyProperty("http://lumify.io#youtubecc");
@Override
public boolean isSupportingFile(File f) {
return f.getName().endsWith(YOUTUBE_CC_FILE_NAME_SUFFIX);
}
@Override
public AddSupportingFilesResult addSupportingFiles(VertexBuilder vertexBuilder, File f, Visibility visibility) throws Exception {
File mappingJsonFile = new File(f.getParentFile(), f.getName() + YOUTUBE_CC_FILE_NAME_SUFFIX);
if (mappingJsonFile.exists()) {
final FileInputStream youtubeccIn = new FileInputStream(mappingJsonFile);
StreamingPropertyValue youtubeValue = new StreamingPropertyValue(youtubeccIn, byte[].class);
youtubeValue.searchIndex(false);
YOUTUBE_CC.setProperty(vertexBuilder, youtubeValue, visibility);
return new AddSupportingFilesResult() {
@Override
public void close() throws IOException {
youtubeccIn.close();
}
};
}
return null;
}
}