From 98446222c9f35a19a848eedcdbe1a857a143e706 Mon Sep 17 00:00:00 2001 From: KZ Date: Fri, 14 Aug 2015 22:20:51 +0100 Subject: [PATCH] Metasearch , fix for empty queries being converted to a single space, parent categories are now autoexpanded. --- src/Jackett/Content/custom.css | 1 + src/Jackett/Content/custom.js | 232 ++++++++++++++----- src/Jackett/Content/index.html | 89 ++++++- src/Jackett/Controllers/AdminController.cs | 82 ++++++- src/Jackett/Controllers/PotatoController.cs | 16 +- src/Jackett/Controllers/TorznabController.cs | 6 +- src/Jackett/Indexers/AlphaRatio.cs | 2 +- src/Jackett/Indexers/BB.cs | 2 +- src/Jackett/Indexers/BeyondHD.cs | 2 +- src/Jackett/Indexers/BitHdtv.cs | 3 +- src/Jackett/Indexers/BitMeTV.cs | 3 +- src/Jackett/Indexers/Demonoid.cs | 3 +- src/Jackett/Indexers/FileList.cs | 19 +- src/Jackett/Indexers/FrenchTorrentDb.cs | 6 +- src/Jackett/Indexers/Freshon.cs | 5 +- src/Jackett/Indexers/HDSpace.cs | 3 +- src/Jackett/Indexers/HDTorrents.cs | 3 +- src/Jackett/Indexers/IPTorrents.cs | 2 +- src/Jackett/Indexers/ImmortalSeed.cs | 5 +- src/Jackett/Indexers/ManualSearchResult.cs | 15 ++ src/Jackett/Indexers/MoreThanTV.cs | 3 +- src/Jackett/Indexers/Pretome.cs | 4 +- src/Jackett/Indexers/PrivateHD.cs | 3 +- src/Jackett/Indexers/RUTor.cs | 2 +- src/Jackett/Indexers/SceneAccess.cs | 3 +- src/Jackett/Indexers/SceneTime.cs | 3 +- src/Jackett/Indexers/ShowRSS.cs | 1 - src/Jackett/Indexers/Strike.cs | 4 +- src/Jackett/Indexers/TVChaosUK.cs | 2 +- src/Jackett/Indexers/ThePirateBay.cs | 3 +- src/Jackett/Indexers/TorrentBytes.cs | 2 +- src/Jackett/Indexers/TorrentDay.cs | 2 +- src/Jackett/Indexers/TorrentLeech.cs | 2 +- src/Jackett/Indexers/TorrentShack.cs | 2 +- src/Jackett/Indexers/Torrentz.cs | 2 +- src/Jackett/Indexers/nCore.cs | 6 +- src/Jackett/Jackett.csproj | 2 + src/Jackett/Models/AdminSearch.cs | 15 ++ src/Jackett/Models/TorznabQuery.cs | 24 ++ 39 files changed, 465 insertions(+), 119 deletions(-) create mode 100644 src/Jackett/Indexers/ManualSearchResult.cs create mode 100644 src/Jackett/Models/AdminSearch.cs diff --git a/src/Jackett/Content/custom.css b/src/Jackett/Content/custom.css index 2d4a2e427..e448e7719 100644 --- a/src/Jackett/Content/custom.css +++ b/src/Jackett/Content/custom.css @@ -214,6 +214,7 @@ hr { .modal-fillwidth { width: 1200px; + min-width:80%; } .indexer-caps { diff --git a/src/Jackett/Content/custom.js b/src/Jackett/Content/custom.js index 89e4540c3..491a9a7b5 100644 --- a/src/Jackett/Content/custom.js +++ b/src/Jackett/Content/custom.js @@ -50,61 +50,61 @@ $("#jackett-show-releases").click(function () { var item = { releases: data, Title: 'Releases' }; var releaseDialog = $(releaseTemplate(item)); releaseDialog.find('table').DataTable( - { - "pageLength": 20, - "lengthMenu": [[10, 20, 50, -1], [10, 20, 50, "All"]], - "order": [[0, "desc"]], - "columnDefs": [ - { - "targets": 0, - "visible": false, - "searchable": false, - "type": 'date' - }, - { - "targets": 1, - "visible": false, - "searchable": false, - "type": 'date' - }, - { - "targets": 2, - "visible": true, - "searchable": false, - "iDataSort": 0 - }, - { - "targets": 3, - "visible": true, - "searchable": false, - "iDataSort": 1 - } - ], - initComplete: function () { - var count = 0; - this.api().columns().every(function () { - count++; - if (count === 5 || count === 7) { - var column = this; - var select = $('') - .appendTo($(column.footer()).empty()) - .on('change', function () { - var val = $.fn.dataTable.util.escapeRegex( - $(this).val() - ); + { + "pageLength": 20, + "lengthMenu": [[10, 20, 50, -1], [10, 20, 50, "All"]], + "order": [[0, "desc"]], + "columnDefs": [ + { + "targets": 0, + "visible": false, + "searchable": false, + "type": 'date' + }, + { + "targets": 1, + "visible": false, + "searchable": false, + "type": 'date' + }, + { + "targets": 2, + "visible": true, + "searchable": false, + "iDataSort": 0 + }, + { + "targets": 3, + "visible": true, + "searchable": false, + "iDataSort": 1 + } + ], + initComplete: function () { + var count = 0; + this.api().columns().every(function () { + count++; + if (count === 5 || count === 7) { + var column = this; + var select = $('') + .appendTo($(column.footer()).empty()) + .on('change', function () { + var val = $.fn.dataTable.util.escapeRegex( + $(this).val() + ); - column - .search(val ? '^' + val + '$' : '', true, false) - .draw(); - }); + column + .search(val ? '^' + val + '$' : '', true, false) + .draw(); + }); - column.data().unique().sort().each(function (d, j) { - select.append('') - }); - } - }); - } - }); + column.data().unique().sort().each(function (d, j) { + select.append('') + }); + } + }); + } + }); $("#modals").append(releaseDialog); releaseDialog.modal("show"); @@ -114,6 +114,132 @@ $("#jackett-show-releases").click(function () { }); +$("#jackett-show-search").click(function () { + $('#select-indexer-modal').remove(); + var jqxhr = $.get("/admin/get_indexers", function (data) { + var scope = { + items: data.items + }; + + var indexers = []; + indexers.push({ id: '', name: '-- All --' }); + for (var i = 0; i < data.items.length; i++) { + if (data.items[i].configured === true) { + indexers.push(data.items[i]); + } + } + + + var releaseTemplate = Handlebars.compile($("#jackett-search").html()); + var releaseDialog = $(releaseTemplate({ indexers: indexers })); + $("#modals").append(releaseDialog); + releaseDialog.modal("show"); + + var setCategories = function (tracker, items) { + var cats = {}; + for (var i = 0; i < items.length; i++) { + if (items[i].configured === true && (items[i].id === tracker || tracker ==='')) { + indexers["'" + items[i].id + "'"] = items[i].name; + for (var prop in items[i].caps) { + cats[prop] = items[i].caps[prop]; + } + } + } + var select = $('#searchCategory'); + select.html(""); + $.each(cats, function (value, key) { + select.append($("") + .attr("value", value).text(key + ' (' + value + ')')); + }); + + + }; + + setCategories('', data.items); + $('#searchTracker').change(jQuery.proxy(function () { + var trackerId = $('#searchTracker').val(); + setCategories(trackerId, this.items); + }, scope)); + + + $('#jackett-search-perform').click(function () { + if ($('#jackett-search-perform').text().trim() !== 'Search trackers') { + // We are searchin already + return; + } + + + var queryObj = { + Query: releaseDialog.find('#searchquery').val(), + Category: releaseDialog.find('#searchCategory').val(), + Tracker: releaseDialog.find('#searchTracker').val().replace("'", "").replace("'", ""), + }; + $('#searchResults').empty(); + + $('#jackett-search-perform').html($('#spinner').html()); + var jqxhr = $.post("/admin/search", queryObj, function (data) { + $('#jackett-search-perform').html('Search trackers'); + var resultsTemplate = Handlebars.compile($("#jackett-search-results").html()); + var results = $('#searchResults'); + results.html($(resultsTemplate(data))); + + results.find('table').DataTable( + { + "pageLength": 20, + "lengthMenu": [[10, 20, 50, -1], [10, 20, 50, "All"]], + "order": [[0, "desc"]], + "columnDefs": [ + { + "targets": 0, + "visible": false, + "searchable": false, + "type": 'date' + }, + { + "targets": 1, + "visible": true, + "searchable": false, + "iDataSort": 0 + }, + ], + initComplete: function () { + var count = 0; + this.api().columns().every(function () { + count++; + if (count === 3 || count === 5) { + var column = this; + var select = $('') + .appendTo($(column.footer()).empty()) + .on('change', function () { + var val = $.fn.dataTable.util.escapeRegex( + $(this).val() + ); + + column + .search(val ? '^' + val + '$' : '', true, false) + .draw(); + }); + + column.data().unique().sort().each(function (d, j) { + select.append('') + }); + } + }); + } + }); + + }).fail(function () { + $('#jackett-search-perform').html('Search trackers'); + doNotify("Request to Jackett server failed", "danger", "glyphicon glyphicon-alert"); + }); + }); + + }).fail(function () { + doNotify("Error loading indexers, request to Jackett server failed", "danger", "glyphicon glyphicon-alert"); + }); +}); + + $("#view-jackett-logs").click(function () { var jqxhr = $.get("/admin/GetLogs", function (data) { var releaseTemplate = Handlebars.compile($("#jackett-logs").html()); diff --git a/src/Jackett/Content/index.html b/src/Jackett/Content/index.html index e42938522..0742754ca 100644 --- a/src/Jackett/Content/index.html +++ b/src/Jackett/Content/index.html @@ -108,6 +108,7 @@ + + + + +