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.tvsubtitles.JTVSubtitlesApi;
import org.lodder.subtools.multisubdownloader.subtitleproviders.tvsubtitles.model.TVsubtitlesSubtitleDescriptor;
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 JTVsubtitlesAdapter implements JSubAdapter, SubtitleProvider {
private static JTVSubtitlesApi jtvapi;
private static final Logger LOGGER = LoggerFactory.getLogger(JTVsubtitlesAdapter.class);
public JTVsubtitlesAdapter(Manager manager) {
try {
if (jtvapi == null) jtvapi = new JTVSubtitlesApi(manager);
} catch (Exception e) {
LOGGER.error("API JTVsubtitles INIT", e);
}
}
@Override
public String getName() {
return "TvSubtitles";
}
@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) {
List<TVsubtitlesSubtitleDescriptor> lSubtitles = new ArrayList<TVsubtitlesSubtitleDescriptor>();
List<Subtitle> listFoundSubtitles = new ArrayList<Subtitle>();
try {
String showName = "";
if (tvRelease.getOriginalShowName().length() > 0) {
showName = tvRelease.getOriginalShowName();
} else {
showName = tvRelease.getShow();
}
if (showName.length() > 0) {
if (showName.contains("(") && showName.contains(")")) {
String alterName = showName.substring(0, showName.indexOf("(") - 1).trim();
lSubtitles =
jtvapi.searchSubtitles(alterName, tvRelease.getSeason(), tvRelease
.getEpisodeNumbers().get(0), tvRelease.getTitle(), sublanguageids[0]);
}
lSubtitles.addAll(jtvapi.searchSubtitles(showName, tvRelease.getSeason(), tvRelease
.getEpisodeNumbers().get(0), tvRelease.getTitle(), sublanguageids[0]));
}
} catch (Exception e) {
LOGGER.error("API JTVsubtitles searchSubtitles using title", e);
}
for (TVsubtitlesSubtitleDescriptor sub : lSubtitles) {
listFoundSubtitles.add(new Subtitle(Subtitle.SubtitleSource.TVSUBTITLES, sub.Filename,
sub.Url, sublanguageids[0],
ReleaseParser.getQualityKeyword(sub.Filename + " " + sub.Rip),
SubtitleMatchType.EVERYTHING, ReleaseParser.extractReleasegroup(sub.Filename,
FilenameUtils.isExtension(sub.Filename, "srt")), sub.Author, false));
}
return listFoundSubtitles;
}
@Override
public List<Subtitle> searchSubtitles(MovieRelease movieRelease, String... sublanguageids) {
// TODO Auto-generated method stub
return null;
}
}