X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Freactor%2Ffilters%2FKickAssTorrentsFilter.java;h=141ab4a0b5d239b81b36017c37b0903d31d529d9;hb=61c4227adddb2683e03474f64c0c8ec27a651037;hp=02a356af9e039f4729cb6f8f4c19ad768bcd699f;hpb=9bb2923cab6693bd736c1bd7d297e94e9d81d150;p=rhynodge.git diff --git a/src/main/java/net/pterodactylus/reactor/filters/KickAssTorrentsFilter.java b/src/main/java/net/pterodactylus/reactor/filters/KickAssTorrentsFilter.java index 02a356a..141ab4a 100644 --- a/src/main/java/net/pterodactylus/reactor/filters/KickAssTorrentsFilter.java +++ b/src/main/java/net/pterodactylus/reactor/filters/KickAssTorrentsFilter.java @@ -17,18 +17,10 @@ package net.pterodactylus.reactor.filters; -import static com.google.common.base.Preconditions.checkState; - -import java.net.URI; -import java.net.URISyntaxException; - import net.pterodactylus.reactor.Filter; -import net.pterodactylus.reactor.State; import net.pterodactylus.reactor.queries.HttpQuery; -import net.pterodactylus.reactor.states.FailedState; import net.pterodactylus.reactor.states.HtmlState; import net.pterodactylus.reactor.states.TorrentState; -import net.pterodactylus.reactor.states.TorrentState.TorrentFile; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; @@ -41,92 +33,74 @@ import org.jsoup.select.Elements; * * @author David ‘Bombe’ Roden */ -public class KickAssTorrentsFilter implements Filter { +public class KickAssTorrentsFilter extends TorrentSiteFilter { + + // + // TORRENTSITEFILTER METHODS + // /** * {@inheritDoc} */ @Override - public State filter(State state) { - if (!state.success()) { - return FailedState.from(state); - } - checkState(state instanceof HtmlState, "state is not an HtmlState but a %s", state.getClass().getName()); - - /* get result table. */ - Document document = ((HtmlState) state).document(); - Elements mainTable = document.select("table.data"); - if (mainTable.isEmpty()) { - /* no main table? */ - return new FailedState(); - } - - /* iterate over all rows. */ - TorrentState torrentState = new TorrentState(); - Elements dataRows = mainTable.select("tr:gt(0)"); - for (Element dataRow : dataRows) { - String name = extractName(dataRow); - String size = extractSize(dataRow); - String magnetUri = extractMagnetUri(dataRow); - String downloadUri; - try { - downloadUri = new URI(((HtmlState) state).uri()).resolve(extractDownloadUri(dataRow)).toString(); - TorrentFile torrentFile = new TorrentFile(name, size, magnetUri, downloadUri); - torrentState.addTorrentFile(torrentFile); - } catch (URISyntaxException use1) { - /* ignore; if uri was wrong, we wouldn’t be here. */ - } - } - - return torrentState; + protected Elements getDataRows(Document document) { + return document.select("table.data").select("tr:gt(0)"); } - // - // STATIC METHODS - // - /** - * Extracts the name from the given row. - * - * @param dataRow - * The row to extract the name from - * @return The extracted name + * {@inheritDoc} */ - private static String extractName(Element dataRow) { + @Override + protected String extractName(Element dataRow) { return dataRow.select("div.torrentname a.normalgrey").text(); } /** - * Extracts the size from the given row. - * - * @param dataRow - * The row to extract the size from - * @return The extracted size + * {@inheritDoc} */ - private static String extractSize(Element dataRow) { + @Override + protected String extractSize(Element dataRow) { return dataRow.select("td:eq(1)").text(); } /** - * Extracts the magnet URI from the given row. - * - * @param dataRow - * The row to extract the magnet URI from - * @return The extracted magnet URI + * {@inheritDoc} */ - private static String extractMagnetUri(Element dataRow) { + @Override + protected String extractMagnetUri(Element dataRow) { return dataRow.select("a.imagnet").attr("href"); } /** - * Extracts the download URI from the given row. - * - * @param dataRow - * The row to extract the download URI from - * @return The extracted download URI + * {@inheritDoc} */ - private static String extractDownloadUri(Element dataRow) { + @Override + protected String extractDownloadUri(Element dataRow) { return dataRow.select("a.idownload:not(.partner1Button)").attr("href"); } + /** + * {@inheritDoc} + */ + @Override + protected int extractFileCount(Element dataRow) { + return Integer.valueOf(dataRow.select("td:eq(2)").text()); + } + + /** + * {@inheritDoc} + */ + @Override + protected int extractSeedCount(Element dataRow) { + return Integer.valueOf(dataRow.select("td:eq(4)").text()); + } + + /** + * {@inheritDoc} + */ + @Override + protected int extractLeechCount(Element dataRow) { + return Integer.valueOf(dataRow.select("td:eq(5)").text()); + } + }