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.addic7ed.JAddic7edApi; import org.lodder.subtools.multisubdownloader.subtitleproviders.addic7ed.model.Addic7edSubtitleDescriptor; 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.MovieRelease; import org.lodder.subtools.sublibrary.model.Release; import org.lodder.subtools.sublibrary.model.Subtitle; import org.lodder.subtools.sublibrary.model.SubtitleMatchType; import org.lodder.subtools.sublibrary.model.TvRelease; import org.lodder.subtools.sublibrary.util.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class JAddic7edAdapter implements JSubAdapter, SubtitleProvider { private static JAddic7edApi jaapi; private static final Logger LOGGER = LoggerFactory.getLogger(JAddic7edAdapter.class); public JAddic7edAdapter(boolean isLoginEnabled, String username, String password, boolean speedy, Manager manager) { try { if (jaapi == null) { if (isLoginEnabled) { jaapi = new JAddic7edApi(username, password, speedy, manager); } else { jaapi = new JAddic7edApi(speedy, manager); } } } catch (Exception e) { LOGGER.error("API JAddic7ed INIT: ", e); } } @Override public String getName() { return "Addic7ed"; } @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<Addic7edSubtitleDescriptor> lSubtitles = new ArrayList<Addic7edSubtitleDescriptor>(); List<Subtitle> listFoundSubtitles = new ArrayList<Subtitle>(); try { String showName = ""; if (tvRelease.getShow().length() > 0) { showName = jaapi.searchSerieName(tvRelease.getShow()); } if (showName.length() == 0) { if (tvRelease.getOriginalShowName().length() > 0) { showName = jaapi.searchSerieName(tvRelease.getOriginalShowName()); } } if (showName.length() > 0) { lSubtitles.addAll(jaapi.searchSubtitles(showName, tvRelease.getSeason(), tvRelease .getEpisodeNumbers().get(0), tvRelease.getTitle())); } } catch (Exception e) { LOGGER.error("API JAddic7ed searchSubtitles using title ", e); } for (Addic7edSubtitleDescriptor sub : lSubtitles) { if (sub.getLanguage().equals("Dutch")) sub.setLanguage("nl"); if (sub.getLanguage().equals("English")) sub.setLanguage("en"); if (sublanguageids[0].equals(sub.getLanguage())) { listFoundSubtitles.add(new Subtitle(Subtitle.SubtitleSource.ADDIC7ED, StringUtils .removeIllegalFilenameChars(sub.getTitel() + " " + sub.getVersion()), sub.getUrl(), sub .getLanguage(), ReleaseParser.getQualityKeyword(sub.getTitel() + " " + sub.getVersion()), SubtitleMatchType.EVERYTHING, ReleaseParser.extractReleasegroup(sub.getTitel() + " " + sub.getVersion(), FilenameUtils.isExtension(sub.getTitel() + " " + sub.getVersion(), "srt")), sub .getUploader(), sub.isHearingImpaired())); } } return listFoundSubtitles; } @Override public List<Subtitle> searchSubtitles(MovieRelease movieRelease, String... sublanguageids) { // TODO Auto-generated method stub return null; } }