package org.lodder.subtools.multisubdownloader.subtitleproviders.adapters;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.io.FilenameUtils;
import org.lodder.subtools.multisubdownloader.subtitleproviders.SubtitleProvider;
import org.lodder.subtools.multisubdownloader.subtitleproviders.subsmax.JSubsMaxApi;
import org.lodder.subtools.multisubdownloader.subtitleproviders.subsmax.model.SubMaxSubtitleDescriptor;
import org.lodder.subtools.sublibrary.JSubAdapter;
import org.lodder.subtools.sublibrary.Manager;
import org.lodder.subtools.sublibrary.control.ReleaseParser;
import org.lodder.subtools.sublibrary.model.Release;
import org.lodder.subtools.sublibrary.model.TvRelease;
import org.lodder.subtools.sublibrary.model.MovieRelease;
import org.lodder.subtools.sublibrary.model.Subtitle;
import org.lodder.subtools.sublibrary.model.SubtitleMatchType;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class JSubsMaxAdapter implements JSubAdapter, SubtitleProvider {
private static JSubsMaxApi jsmapi;
private static final Logger LOGGER = LoggerFactory.getLogger(JPodnapisiAdapter.class);
public JSubsMaxAdapter(Manager manager) {
try {
if (jsmapi == null) {
jsmapi = new JSubsMaxApi(manager);
}
} catch (Exception e) {
LOGGER.error("API JSubsMax INIT", e);
}
}
@Override
public String getName() {
return "SubsMax";
}
@Override
public List<Subtitle> search(Release release, String languageCode) {
if (release instanceof MovieRelease) {
return this.searchSubtitles((MovieRelease) release, languageCode);
} else if (release instanceof TvRelease) {
return this.searchSubtitles((TvRelease) release, languageCode);
}
return new ArrayList<Subtitle>();
}
@Override
public List<Subtitle> searchSubtitles(TvRelease tvRelease, String... sublanguageids) {
String showName = "";
if (tvRelease.getOriginalShowName().length() > 0) {
showName = tvRelease.getOriginalShowName();
} else {
showName = tvRelease.getShow();
}
List<SubMaxSubtitleDescriptor> lSubtitles =
jsmapi.searchSubtitles(showName, tvRelease.getSeason(), tvRelease.getEpisodeNumbers()
.get(0), sublanguageids[0]);
List<Subtitle> listFoundSubtitles = new ArrayList<Subtitle>();
for (SubMaxSubtitleDescriptor sub : lSubtitles) {
listFoundSubtitles.add(new Subtitle(Subtitle.SubtitleSource.SUBSMAX, sub.getFilename(), sub
.getLink(), sublanguageids[0], ReleaseParser.getQualityKeyword(sub.getFilename()),
SubtitleMatchType.EVERYTHING, ReleaseParser.extractReleasegroup(sub.getFilename(),
FilenameUtils.isExtension(sub.getFilename(), "srt")), "", false));
}
return listFoundSubtitles;
}
@Override
public List<Subtitle> searchSubtitles(MovieRelease movieRelease, String... sublanguageids) {
// TODO Auto-generated method stub
return null;
}
}