* Add btxpress.yml
* Update README.md
* Delete btworld
BTWorld is now known as BTXpress
* Update BTXpress
There was a issue with the selectors which has been fixed
* Update BTXpress
td:nth-child selectors were giving errors.
* Update btxpress.yml
- added new input field "description" which is used to be able to search into torrent descriptions and media info using keywords
- This doesn't fix#3355 . Im not sure what the issue is. Maybe @kaso17 can check it out. I believe you still have a account there. If not let me know.
OMDB recently added a private.omdbapi.com domain for supporters and this option allows the user to customize it while also allowing that url to change more rapidly in the future
* feat(newpct): rename title to make them more standarized
* fix: add site link configurable
* feat: add tests if news are not available
Sometimes the web has no news, and even if the tv show searcher is
working it throws an error. This way it will check news, and, if not
available, will check some series to check aliveness.
* fix: remove apostrophes from search
closes#3315
* fix: initialize search term if it's null
* fix: add multiepisode parsing and minor improvements
Now a quality it's ensured
Now quality it's cleaned from brackets
Add dash as multiepisode separator
* refactor: move tv search to function and change site link
Sitelink is now a property class
* refactor: extract function to get series uris
* refactor: extract function to get releases from one uri
* feat: add fallback to shows starting with "the"
Whenever a shows doesn't return results and doesn't start with "the"
search one more time prepending "the".
The motivation of this is because of Sonarr sanitizes queries before
sending them to Jackett. This indexer needs the article but Sonarr
removes it before.
* fix(newpct): add missing guid based on link
That was causing missing files on applications consuming the newpct
indexer.
* feat(mejortorrent): add movie search
closes: #3310
* feat(mejortorrent): add parse and filter by year
* feat(mejortorrent): change movie search algorithm
Now movie search is based on longest word, then results are filtered
ignoring special characters.
* fix(mejortorrent): restore query so jackett log it correctly
* fix: add small year correction
Some movies are tagged with the year before or after, I think it's safe to
fix years with exactly the same name and only a year of difference.
* refactor: move tv search to function and change site link
Sitelink is now a property class
* refactor: extract function to get series uris
* refactor: extract function to get releases from one uri
* feat: add fallback to shows starting with "the"
Whenever a shows doesn't return results and doesn't start with "the"
search one more time prepending "the".
The motivation of this is because of Sonarr sanitizes queries before
sending them to Jackett. This indexer needs the article but Sonarr
removes it before.
* fix: add multiepisode parsing and minor improvements
Now a quality it's ensured
Now quality it's cleaned from brackets
Add dash as multiepisode separator
* fix: prevent an error if cannot guess serie name from title
* fix: now title is being extracted correctly
* feat(newpct): rename title to make them more standarized
* fix: add site link configurable
* feat: add tests if news are not available
Sometimes the web has no news, and even if the tv show searcher is
working it throws an error. This way it will check news, and, if not
available, will check some series to check aliveness.
* fix: remove apostrophes from search
closes#3315
* fix: initialize search term if it's null
use artist instead of keyword if artist is supplied to make it somewhat compatible with lidarr(by default supplies artist and album with empty keyword)
This tracker always respect the format
SXXEYY so I cleaned up the code, I only updated the code adding a simple regex, just in case a rel with XXxYY came up!
* feat: start mejortorrent indexer, create basic configuration
* feat: add basic tv show scraper for series search
* fix: add guid so more than one episode is returned
* feat: add date to episodes
* feat: add support for multi-episodes
* feat: add proper filtering
* fix: change filter when there is no season or no episode
* feat: implement tv show rss scraper with no links by the moment
* feat: finish tv-shows rss
* fix: prevent sdtv to be marked as hdtv
* docs: add mejortorrent indexer to readme
* add url encode
* fix encoding
Content seems to be UTF8
* add missing include
* fix my fixes
* fix encoding
* Additional fix for #1450
Sonarr is search for a tilte if the result title is different it reject it.
So it is not enough that Jackett give the result it must give with the same language.
Workaround create a new title from the original one and from the title.
It also make some fine tunning:
if title not contains the language we add it from category
* Make decision safer
Add Spanish Private HD tracker https://www.hd-spain.com/
Based on Albvadi's code from HD-Spain forum all credit to him, I only added some changes for better search, ISO correct and spain flag detection
Some workoround to "Ncore - not forward all search results to Sonarr, Radarr"
In case of TV shows if nothing is founded, retry the search without SxxExx after the show name.
This will list all torrent also if their title or description are changed.
Than add the result only if it contains the skipped SxxExx
* Add option for Elite Tracker (FR) for download torrent using https for tracker URL.
* change return type.
clean code.
* use the SiteLink variable instead of hard coding
Sometimes when parsing, the size of the rel was not enough to have Gb instead Mb or Kb to Mb or whatever
So the size in row is for example 1.015.22 Mb (less than 1024)
So in this case the parser return error
I searched a way to replace this, I found a solution, hope that works in a log way
* Improved anime search and speed-share resolution detection
* - Code Refactored to new standards
- Removed publish date from search mode, since the tracker does not provide that information, it was based on the serie year (but it does provide it on last 24h page, that's still prssent)
- Code clean
- Added season to all animes but One Piece (every anime that i searched in this tracker have the correct season and episode numbering, except One Piece that have an incorrect season set and episode is in absolute format, its added automatically on every new release, so must be the source from where they get that info that is wrong, since its an popular show, added it as an workaround and explained on code as comment)
xbytesv2 adds two years in title, when the show has season episodes released in two different years. For example, supergirl season 3, has episodes in 2017 and 2018. In this case xbytesv2 format the title like this: "Supergirl (2017 18/S03/E13/AMZ WEB DL 1080p/AC3 5 1 /DUAL/SUB) Grupo V2"
This new filter, deletes both years.
Please don't remove this replace:
- name: re_replace
args: ["S(\\d{1,2}) E(\\d{1,2})", "S$1E$2"]
* Fix for #3010
This will fix the problem with torrentday.it being down and https:///torrentday.com will redirect you to https://www.torrentday.com. And since we don't allow redirects, this will not work without the www.
* Added the feedback from #3014
This adds the following categories:
- 102: Movie / 4K Disk
- 103: Movie / 4K Remux
- 38: Movie / WEB-DL
- 106: Internal / BHDStudio 1080p
- 105: Internal / BHDStudio 720p
- 104: TV Show / 4K
- 99: TV Show / Sports
- 100: TV Show / Sports / WEB-DL
Additionally 94: `Movie / 4K` was renamed to `Movie / 4K Other` to
match the updated category name on the tracker.
* (Create) racing4everyone.yml
- I have yet to test this. If anyone is willing to please do. Currently is open reg for 3 more days.
* (Update) Add R4E to README
- added racing4everyone (R4E)
Change TV Shows search format for Spanish style, change encoding in HDCity to ISO-8859-1, now accented characters works perfects and add [spanish] for detected Spanish language in Sonarr/Radarr
Really hope I don't break anything with this
Went to have a go at .NET core and it just became too confusing for me with 'Jackett' namespace referring to both Jackett.Common and Jackett
* Update README.md
Adding Puntotorrent forgotten from [this PR](https://github.com/Jackett/Jackett/pull/2433)
* Add definition for HDCity
Add definition for spanish tracker HDCity
* Adding HDCity to the index
* New definition for HacheDe
Add definition for new spanish tracker: HacheDe
* Update README.md
Adding HacheDe
* Update hachede.yml
Remove strdump for debug purposes
modified the ProcessPage Method to select the last table with the browsetable class attribute so that if the Top 20 table is visible it will be ignored and the master list is the only one that will display. Works with Top 20 on and off.
* Fixed anime search on BJShare, removing the season from search and changing the output from "Anime SXXEXX" to "Anime EXX".
Season had to be removed because the season numbering on anime is all wrong in this tracker.
* - Changed to change title based on search for category of every row in bj-share, instead of category of search
- Fixed title parse on B2S-Share and Speed-Share to animes (series not changed) from "Anime SXXEXX" to "Anime EXX"
* - Added anime title change on empty search as well - BJ-Share
* B2S-Share: Removed episode from search and added andmatch (episode search do not work with translated series name), changed title to return 'original name SXXEXX' instead of 'translated name SXXEXX (original name)', because Sonarr was not recognizing the serie (it will only apply to series and movies, animes does not have translated name)
* added few comments to the code
* Fixed year being added after season/episode, it will be added now between series name and season/episode (animes not included), eg: Serie 2017 S05E06
* Small bugfixes in regex
Removed episode from search and added andmatch (episode search do not work with translated series name), changed title to return 'original name SXXEXX' instead of 'translated name SXXEXX (original name)', because Sonarr was not recognizing the serie (it will only apply to series and movies, animes does not have translated name)
The only drawback is that it will not search for very older episodes (not on first page), but that can be softened increasing the results per page in user profile, but i consider it way better than before, many series was not returning anything, since they had an translated name on the tracker, and an search with episode would work only searching for translated name and episode.
add additional active categories
support multi-category search
downloads can be missing, prevent error
remove hardcoded full path to gifs, ensures domain independency
* Fixed anime search on BJShare, removing the season from search and changing the output from "Anime SXXEXX" to "Anime EXX".
Season had to be removed because the season numbering on anime is all wrong in this tracker.
* - Changed to change title based on search for category of every row in bj-share, instead of category of search
- Fixed title parse on B2S-Share and Speed-Share to animes (series not changed) from "Anime SXXEXX" to "Anime EXX"
* - Added anime title change on empty search as well - BJ-Share
correct date parse
and add english date handling (for users that set english in profile)
add freeleech gold
add category in results for Sonarr
add banner
amend descritpion tag
* Remove static configuration class that required prior knowledge of when it was initialised to dependency injected method that ensures all configuration has already occured.
* Specify a different log name for the updater, require a path when running the Jackett updater
* Update to all .NET Standard packages
* Explicitly specify the restore project style
* Move automapper out of the DI framework and put crude detection to prevent it from initializing more than once.
* The module will need to be registered first thing in order to support commands such as --Help.
* Ignore mac directory attribute files
* Fix command line parameters not being correctly passed to the console
the default search for ettv is to return 'any words' matched, which when
paired with 'sortby added' meant the top resutls were not useful.
now we prefix the keyworks with '+' and urlencodes them, ensuring that
'all words' matched is returned.
* Move service config service back into shared .NET Framework Library
* Move Content files into shared folder. Make autoface load different assembilies depending on what framework is using it.
* Change my mind on what the shared module should be called. Common Module is too bland.
* DotNet4.SocksProxy is not yet publically .NET Standard. Revert to previous SocksWebProxy package.
* Check in unstaged change to test dependency injection setup.
* Use platform detection that works on mono 4.6+
* Move to use package reference for restoring nuget packages.
* DateTimeRoutines does not have Nuget packages that support .NET Standard (and therefore .NET Core). We will have to include them for now until we can get rid of this dependency.
* Start spliting some interfaces into their own files - this will help by allowing us to split them out in the future into a seperate project so the actual implementations can stay within their respective architectures when required
* Move out common libraries
* Few more tidy up tasks to get things working with .NET Standard
* Restructure the solution layout
* Encoding work to reduce rework later on platforms without Windows codepages (or require compliance with RFC1345)
* Move folder structure around to have more natural layout of the solutions
* DI server configuration to get rid of "temporary" hack and dependency circle for serverservice
* Make all encoding consistent to match the expected encoding casing for earlier versions of mono.
drop sort by seeds as site's page is broken
add category to results
add category filter in settings because site does not support multi-cats
add date now to prevent ugly' 2017y ago'
* LostFilm.tv: Fix language and quality in release titles
* LostFilm.tv: Snatch Season Packs if they are available
* LostFilm.tv: Fix searching for series with special characters in title
* LostFilm.tv: Parse episode details on episode page, not on Discovery page
* LostFilm.tv: Don't snatch separate episodes if season pack was requested but not found
* LostFilm.tv: Repace logger.Info with logger.Debug to keep logs free of spam
* Move to use package reference for restoring nuget packages.
* Return a task result for this async method.
* Update to a supported version of the .NET Framework. This also has the side effect of allowing us to automatically generate our binding redirects on build.
* Set the solution to target VS2017
* Update test solution csproj file to support being built through MSBuild 15
* Move to use package reference for restoring nuget packages.
* Return a task result for this async method.
* Update to a supported version of the .NET Framework. This also has the side effect of allowing us to automatically generate our binding redirects on build.
* Set the solution to target VS2017
* Update test solution csproj file to support being built through MSBuild 15
* DateTimeRoutines does not have Nuget packages that support .NET Standard (and therefore .NET Core). We will have to include them for now until we can get rid of this dependency.
* Move the interfaces into their own files. This will be useful when we share them between the .NET Core and .NET Framework WebAPI
* Stage services that need to point to the new interface namespace.
* Update CurlSharp to fix memory leak issue and support better runtime compatibility with OSX and Linux
* Start spliting some interfaces into their own files - this will help by allowing us to split them out in the future into a seperate project so the actual implementations can stay within their respective architectures when required
* Move to use package reference for restoring nuget packages.
* Return a task result for this async method.
* Update to a supported version of the .NET Framework. This also has the side effect of allowing us to automatically generate our binding redirects on build.
* Set the solution to target VS2017
* Update test solution csproj file to support being built through MSBuild 15
* Move to use package reference for restoring nuget packages.
* Return a task result for this async method.
* Update to a supported version of the .NET Framework. This also has the side effect of allowing us to automatically generate our binding redirects on build.
* Set the solution to target VS2017
* Update test solution csproj file to support being built through MSBuild 15
Added missing categories, release date, release type.
Fixed some errors, and removed some useless strings.
Unfortunately the indexer shows non scene resolutions like "848x480; 1920 x 960" and i wan't able to translate that to "480p; 720p" because there are so many different resolutions. If someone could help me with that, i'd be glad.
Add a few missing categories
handle TEST correctly
prevent row selector false hits
add date as now instead of 2017y ago
add category selector for results
the dashboard test requires just the base path.
categories matching requires french keywords
the site does not supply a release date, so lets default to now,
otherwise we get ugly "2017y old" in dashboard results.
* DanishBits: add Passkey info to hopefully prevent #1892#1873#1850
**WARNING** this is a completely untested code change, as I don't have VS or a c# compiler.
I simply made my best guess based on similar code I found in TorrentBytes.cs
Please review carefully, and hopefully I haven't left anything out ;-)
If you don't want me to make future changes like this without the required tools, then please let me know. Thanks.
* Update DanishBits.cs
* Update DanishBits.cs
* Update DanishBits.cs
* Update DanishBits.cs
* Update DanishBits.cs
* Update DanishBits.cs
* Update ConfigurationDataUserPasskey.cs
add display item instructions
* Update DanishBits.cs
switch to ConfigurationDataUserPasskey
and drop unused using statements
* Update CouchPotatoTracker.cs
add ConfigurationDataUserPasskey ConfigData1
* Update CouchPotatoTracker.cs
fix optional configData parm override
* revert
oops no, that wipes preloaded data :(
* Update CouchPotatoTracker.cs
add configurationDataUserPasskey as parameter
the btdb site does not use categories and supplies magnets for all sorts of content.
So the btdb definition now always returns category `100001 Other` for all search results.
Added info in settings to provide instructions on setting up btdb on Sonarr and Radarr.
Tested on Jackett Dashboard, Sonarr and Radarr.
* Add 4k Movie and TV categories for RARBG
Currently it does not look like torrentapi.org indexes the 4k movie categories but I've added them anyway in case they get added in the future.
Also, torrentapi.org returns "Movies/TV-UHD-episodes" for RARBG's 4k TV category. This may be due to RARBG's top100 page.
* Update Rarbg.cs
* Add the new 4K category for TorrentLeech
TorrentLeech renamed the existing 4k category and added a new "Real 4K UltraHD HDR" category. This PR adds the new category (but leaves the old one too).
* Update TorrentLeech.cs
* Create worldwidetorrents.yml
* docs: add World Wide Torrents public tracker. Closes#1439
* worldwidetorrents: prevent errors.
the scripts were causing false hits for the row selector.
* docs: oops put wwt in correct section
* bithumen: replace deprecated use of optional
* bitspyder: replace deprecated use of optional
* chdbits: replace deprecated use of optional
* diablotorrent: replace deprecated use of optional
* eztv: replace deprecated use of optional
* funkytorrents: replace deprecated use of optional
* hon3yhd: replace deprecated use of optional
* insanetracker: replace deprecated use of optional
* kapaki: replace deprecated use of optional
* limetorrents: replace deprecated use of optional
* linkomanija: replace deprecated use of optional
* losslessclub: replace deprecated use of optional
* magico: replace deprecated use of optional
* majomparade: replace deprecated use of optional
* ourbits: replace deprecated use of optional
* polishsource: replace deprecated use of optional
* rodvd: replace deprecated use of optional
* torrentccf: replace deprecated use of optional
* torrenthr: replace deprecated use of optional
* torrentproject: replace deprecated use of optional
* torrentz2: replace deprecated use of optional
* oops
* Update bitspyder.yml
* Update insanetracker.yml
* Update kapaki.yml
* Update magico.yml
* Update polishsource.yml
* Update torrenthr.yml
* Update polishsource.yml
* Wrapped item parsing in try catch / one erranious torrent should not fuck up the entire parsing.
Changed Uri creation to use TryCreate, to harden against invalid image paths.
* Woops, can't use new C# features...
* docs: delete sceneAccess
* Delete SceneAccess.cs
* cleanup for Indexers/SceneAccess.cs
* remove SceneAccess.cs
* revert, as SceneAccess is not a yml definition but a cs indexer
* Make the script self-executing
* Update script with colors
Since it’s self-executing, at least the output is more visible
* Changes to README
* Update Jackett.Console.csproj
* Clarify README
I'm 99% sure that since they've resurrected they're fully public (no login needed, no ratio, etc.) and since even Jackett isn't asking for login info, it should be reflected here.
Non-critical fixes:
- NextTorrent and Zetorrents: error in logs when no results were
returned from search
- T411v2: improved selector to disregard VPN add in search results
* Add instructions tu run Jackett as service on macOS
* Changed restart logic
* Replace plist with install script
* Update README and add some more checks
* Fix README
* Move and rename script
* Include script inside project
* README corrections and cleanup
* Slight improvement of the script
Put `launchctl remove` earlier so it has the time to quit the service before testing if it's still running.
* Fixes episode search in Manicomio Share
The tracker uses the pattern "name - s??e??" instead of "name s??e??" so we have to manually add a "-" in the query
* Better fix
Updated to a better fix!
* Fixed the input name
* Added a workaround to solve the year issue
* Fixed the re_replace order
I cannot wrap my head around why it has started to fail now as it was
faulty from the beginning... Anyway, SupportsCategories didn't really
take sub categories into account, which is bad.
- Potentially fixes#1654 and #1656
* docs(config): add warning on wihd config to use classic view only
* refactor(wihd): refactor indexer, optimized dev mode, added freeleech and SSL
* fix(indexers): removed T411 orginal tracker
closed tracker by gov
* refactor(clean): removed old orphan config files
* docs(readme): updated for wihd
* feat(utils): added sha1 hash function and refactored md5 hash function
* fix(indexers): now use cross plateform path building for dev mode
* fix(indexers): fix output log of xthor for dev mode
* feat(release): added ToString method
* refactor(dev): optimized dev mode
* style(clean): cleanup code
* feat(indexer): added tmdb info to releases
* fix(cat): enabled categories on xthor
* Fixed the TorrentPotato requests with the indexers that does not support imdbid requests
* Fixed the "CanHandleQuery" which was not working if we make the request only with an imdbid (and a valid OMDB key)
* Fixed the "CanHandleQuery" which was not working if we make the request only with an imdbid (and a valid OMDB key)
* Removed PotatoController.cs
* Tweak BB indexer
Remove explicit tracker URL
Add tracker-specific season query
* Query for "S##" and "Season #" simultaneously on bB
* Fix tabs/spaces
* Rewrite title from "Season #" to "S##"
* Fix bug
Fix bug where searching for whole shows would rewrite Season # to S00, since no season was specified.
* Add new categories mappings
So that e.g. headphones can correctly query bB for music
* Introducing API v2
There were multiple inconsistencies in the old API and I have been
toying with the idea to replace it. This will suck for everyone who was
building on top of the Jackett API, however as it was probably too
painful to do so I'd say no one really tried.
Now API v2.0 should be much more constistent as it uses DTObjects, and
instead of manually constructing a json response it is handled by the
ASP.NET web api. It is much more RESTful than it was, proper GET
endpoints are introduced, and updating resources are now done via POST -
it might be improved by introducing other type of REST methods.
I know this sucks as completely breaks backward compatibility, however
it'll probably make it easier to maintain and build on top of in the
long run.
* Use DELETE method to unconfigure an indexer
* Remove debugging format from NLog
* Fixing an null exception
* Properly implementing IExceptionFilter interface
* Enable adding public indexers without configuration
* Fix missing manual search results
* Basic modularization of the JS API
* Introduce API versioning
* Fix redirects to the dashboard
* Cleaning up a little bit
* Revamping Torznab and Potato as well
* Move preconditions to FilterAttributes and simplify logic
* Remove legacy filtering... will move to IResultFilter
* Minor adjustment on results interface
* Use Interpolated strings in ResultsController
* DTO-ify
* Remove fallback logic from potato results
* DTO everywhere!!!
* DTO-ify everything!
* I hope this is my last piece of modification to this PR
* Remove test variables...
* Left out a couple conflicts... It's late
AnimeTosho failed to populate the Origin field of the results when
searching thereby creating an issue upon creating the proxy link. This
was mainly because an IEnumerable can contain a deferred LINQ query as
well (e.g. in the case of AnimeTosho a Select) that will re-execute
every single time. So when iterating over IEnumerables we cannot really
pose any assumption on what we are dealing with, so either explicitly
force an execution (e.g. via ToList), or use LINQ queries as well. Since
the second is probably more performant, let's stick with that.
To get a larger number of results, users should increase the number on the website, similar to how it's implemented for TorrentLeech. Since TorrentBytes can be slow at times, making one large request will not be that much slower from one small request, but will nearly half the time taken compared to two smaller requests.
You can now pass a parameter to the dashboard which will immediately pop
the search box and start searching for the results.
This should be what #1345 and #1577 wants, or at least a basic version
of it.
* Update KAT definition for real login test
* Add error handling to KAT definition's login
* Even better error handling...
Sorry for the inelegant successive commits
* Add better test behaviour for KAT
Added some logic so tests return results. Previously did a search with an empty string which would return no results. NB : it does test with "torrents.php?search=%22%22" but that's not an issue, the parameter is ignored on that page.
* New definition for indexer "B2S-Share"
I made a new definition for this indexer.
B2S-Share is a general Brazilian tracker.
This tracker does not support multiple category search, so i left it searching in all categories.
* Update README.md
Added B2S-Share to the private tracker list.
* New definition for indexer "Manicomio Share"
I made a new definition for this indexer.
Manicomio Share is a general Brazilian tracker.
A few known issues:
1 - The tracker does not show the "release date" unless i click on another button with a "onclick="expand(584941,event)"". So i left it without date.
2 - I wasn't able to configure the "login: post" method, since there's no dedicated login page. I used Cookies instead.
* Add Manicomio Share to Private Tracker list
Add Manicomio Share to Private Tracker list
* Updated manicomioshare.yml
Updated line 229 in manicomioshare.yml so it's more flexible in case the URL changes. (Thanks kaso17)
* Tracker doesn't support multiple categories search
Tracker doesn't support multiple categories search, removed the "range .Categories" line
* Line endings...
* Remove Autofac and all its shenanigans from IndexerManager
I'm starting my warpath against Autofac. For the next couple PRs I want
to focus on refactoring things rather than creating new things. This
includes introducing LINQ extensions wherever possible as well as
removing Autofac/Automapper dependencies in classes (or any other
dependency, there's a great chance that most of the classes that use
Jackett.Services wouldn't need so many of them). All this is order to
boost performance and eventually reach testability. Can't stop, won't
stop.
* Remove unnecessary extension
* Modify test project
* As per @kaso17, iterating through iterator types rather than allocating them manually
* Cleaning up a little
* Adjusting interface in tests
* Line endings...
* Encoding Encoding in a reasonable way
Sadly Encoding contains a self-reference somewhere, which makes it
really hard for the json serializer to automatically encode it...
Probably there's no value in sending it over especially since no one is
using it, however just for the sake of the argument, let's just
serialize it in a reasonable way. Maybe someday there will be someone
expecting this. Or we clearly separate DTOs and models...
- FixesJackett/Jackett#1532
- FixesJackett/Jackett#1539
* Seriously... Please port this to dotnet Core so that I can use something other than @drunkvs on my MacBook
* Fix autofac registration after merge
* "Implement" new function of interface in test project
It's quite hard to encapsulate something this large. This refactor
contains multiple attacks on the current architecture and is changing
things that were probably created quite a while back then. Luckily this
was done in increments so it mustn't be that impossible to recall what
has been done. I just need to relax my memory a little bit.
So the basic idea was quite simple. Let's distingush metas and normal
indexers a little bit more. Both of them were originating from
BaseIndexer, however very little of the functionality was actually
shared between them. Actually quite a few things made it even harder to
implement a different kind of indexer, especially for a newcomer for
both Jackett and C#.
Then in order to further reduce whatever was encapsulated in
any kind of, a couple things had to be changed. Like CardigannIndexer,
which probably had quite a mindshift change. IndexerManager and the
configuration management were also encapsulated and refactored, and now
I have a feeling that although the code could be improved, at least the
responsibilities of services and what they actually do is now clearer.
Anyhow, it would be safe to assume that I will not be able to go
step-by-step and define everything that has been changed. I'm sorry.
* Line endings...
* Improve download handling of torrents in metas
Until now, downloads were handled by metas, however they had to "guess"
which indexer the result was originating from and resolve to that
indexer. While this has been working without an issue, it really
shouldn't be considered stable.
Therefore indexers now link themselves to the results they provide. In
order to keep my sanity and automate this as much as possible, I had to
slightly modify the interface (sorry, everyone).
* Line endings...
* Integrating OMDB into Potato results
Now PotatoController will actually produce results
* VS complains it could be simplified, yet AppVeyor cannot do anything with it...
* How come only Appveyor unveils this error? @drunkvs
* Line endings...
* Refactoring how MetaIndexers handle fallbacks
Originally this modification was part of a much larger refactoring,
however for the sake of reviewability I split it into smaller chunks.
Sadly it is still quite large.
I wanted to split it even more, however after a certain point there was
really no value in creating smaller chunks. The biggest part of this
modification would be still huge.
So all in all, there're 3 aspects of this modification
- It modifies BaseIndexer so that it now implements IIndexer (will be
very useful later on)
- Resolving most of the warnings currently in Jackett (the only ones
remaining are related to Autofac, however if I could I would just burn
Autofac altogether rather than fix the warnings. Will open discussion on
this.)
- Biggest part: refactoring how MetaIndexers handle fallbacks and how
they provide the final result set
MetaIndexers now accept any kind of fallback and filtering mechanism
that implements the necessary interface, so that in the future IMDB
fallback and filtering won't be the only one. I know there are not a lot
of unit tests around Jackett at the moment, however this renders the
class much more unittestable as well.
* Integrate OMDB API for the fallback option
* Safeguarding when no API key is specified
* Autofac started complaining... I don't understand...
* How did that not make the previous commit?
* Line endings...
* Refactoring how MetaIndexers handle fallbacks
Originally this modification was part of a much larger refactoring,
however for the sake of reviewability I split it into smaller chunks.
Sadly it is still quite large.
I wanted to split it even more, however after a certain point there was
really no value in creating smaller chunks. The biggest part of this
modification would be still huge.
So all in all, there're 3 aspects of this modification
- It modifies BaseIndexer so that it now implements IIndexer (will be
very useful later on)
- Resolving most of the warnings currently in Jackett (the only ones
remaining are related to Autofac, however if I could I would just burn
Autofac altogether rather than fix the warnings. Will open discussion on
this.)
- Biggest part: refactoring how MetaIndexers handle fallbacks and how
they provide the final result set
MetaIndexers now accept any kind of fallback and filtering mechanism
that implements the necessary interface, so that in the future IMDB
fallback and filtering won't be the only one. I know there are not a lot
of unit tests around Jackett at the moment, however this renders the
class much more unittestable as well.
* Autofac started complaining... I don't understand...
* Line endings...
* Fixes an issue when the aggregate doesn't require fallback
Apparently operating on null with LINQ is not safe :)
- This fixesJackett/Jackett#1471
**Please use the search bar** at the top of the page and make sure you are not creating an already submitted issue. Duplicating issues makes it more difficult for everyone to follow. Your issue may have already been solved in the past as well.
Provide a description of the feature request or bug, the more details the better.
If you are experiencing an issue with a tracker, a **full log must be included**. Instructions for obtaining logs are here: https://github.com/Jackett/Jackett#troubleshooting
If you are experiencing an issue with a tracker, a **full enhanced log must be included**. Instructions for obtaining logs are here: https://github.com/Jackett/Jackett#troubleshooting
This issue looks similar to #{{ chosenIssue.number }}.
To prevent issue tracker clutter, this issue will now be closed. If you feel this issue isn't a duplicate of #{{ chosenIssue.number }}, then feel free to post a comment on this issue stating why it's not a duplicate. Your comment will automatically re-open this issue.
You've created an issue, but haven't provided any details to allow the community to assist you. To prevent issue tracker clutter, this issue will now be closed. Please provide the information needed below and your comment will automatically re-open this issue.
Provide a description of the feature request or bug, the more details the better.
If you are experiencing an issue with a tracker, a **full enhanced log must be included**. Instructions for obtaining logs are here: https://github.com/Jackett/Jackett#troubleshooting
No response has been received for {{ days }} days. To prevent issue tracker clutter, this issue will now be closed. To re-open the issue, please provide the information requested and the issue will automatically re-open.
This project is a new fork and is recruiting development help. If you are able to help out please contact us.
Jackett works as a proxy server: it translates queries from apps ([Sonarr](https://github.com/Sonarr/Sonarr), [Radarr](https://github.com/Radarr/Radarr), [SickRage](https://sickrage.github.io/), [CouchPotato](https://couchpota.to/), [Mylar](https://github.com/evilhero/mylar), etc) into tracker-site-specific http queries, parses the html response, then sends results back to the requesting software. This allows for getting recent uploads (like RSS) and performing searches. Jackett is a single repository of maintained indexer scraping & translation logic - removing the burden from other apps.
Jackett works as a proxy server: it translates queries from apps ([Sonarr](https://github.com/Sonarr/Sonarr), [Radarr](https://github.com/Radarr/Radarr), [SickRage](https://sickrage.github.io/), [CouchPotato](https://couchpota.to/), [Mylar](https://github.com/evilhero/mylar), [DuckieTV](https://github.com/SchizoDuckie/DuckieTV), etc) into tracker-site-specific http queries, parses the html response, then sends results back to the requesting software. This allows for getting recent uploads (like RSS) and performing searches. Jackett is a single repository of maintained indexer scraping & translation logic - removing the burden from other apps.
Developer note: The software implements the [Torznab](https://github.com/Sonarr/Sonarr/wiki/Implementing-a-Torznab-indexer) (with [nZEDb](https://github.com/nZEDb/nZEDb/blob/dev/docs/newznab_api_specification.txt) category numbering) and [TorrentPotato](https://github.com/RuudBurger/CouchPotatoServer/wiki/Couchpotato-torrent-provider) APIs.
#### Supported Systems
* Windows using .NET 4.5
* Linux and OSX using Mono 4 (mono 3 is no longer supported).
* Windows using .NET 4.6.1 or above [Download here](https://www.microsoft.com/net/framework/versions/net461).
* Linux and macOS using Mono 5.8 or above. [Download here](http://www.mono-project.com/download/).
### Supported Public Trackers
* 1337x
* Anidex
* Anime Tosho
* AniRena
* btbit
* BTDB
* BT-Scene
* cpasbien
* ETTV
* ExtraTorrent.ag
* EZTV
* Frozen Layer
* GkTorrent
* Horrible Subs
* Idope
* Il Corsaro Nero <!-- maintained by bonny1992 -->
* Isohunt
* Il Corsaro Blu
* Isohunt2
* KickAssTorrent
* KickAssTorrent (kat.how clone)
* KickAssTorrent (thekat.se clone)
* LimeTorrents
* MagnetDL
* MejorTorrent <!-- maintained by ivandelabeldad -->
Trackers marked with [![(invite needed)][inviteneeded]](#) have no active maintainer and are missing features or are broken. If you have an invite for them please send it to kaso1717 -at- gmail.com to get them fixed/improved.
### Aggregate indexers
A special "all" indexer is available at `/api/v2.0/indexers/all/results/torznab/api`.
It will query all configured indexers and return the combined results.
To get all Jackett indexers including their capabilities you can use `t=indexers` on the all indexer. To get only configured/unconfigured indexers you can also add `configured=true/false` as query parameter.
## Installation on Windows
We recommend you install Jackett as a Windows service using the supplied installer. You may also download the zipped version if you would like to configure everything manually.
@@ -244,10 +317,10 @@ To get started with using the installer for Jackett, follow the steps below:
When installed as a service the tray icon acts as a way to open/start/stop Jackett. If you opted to not install it as a service then Jackett will run its web server from the tray tool.
Jackett can also be run from the command line if you would like to see log messages (Ensure the server isn't already running from the tray/service). This can be done by using "JackettConsole.exe" (for Command Prompt), found in the Jackett data folder: "%ProgramData%\Jackett".
Jackett can also be run from the command line if you would like to see log messages (Ensure the server isn't already running from the tray/service). This can be done by using "JackettConsole.exe" (for Command Prompt), found in the Jackett data folder: "%ProgramData%\Jackett".
## Installation on Linux
1. Install [Mono 4](http://www.mono-project.com/download/#download-lin) or better (version 4.8 is recommended)
1. Install [Mono 5.8](http://www.mono-project.com/download/#download-lin) or better (using the latest stable release is recommended)
* Follow the instructions on the mono website and install the `mono-devel` and the `ca-certificates-mono` packages.
* On Red Hat/CentOS/openSUSE/Fedora the `mono-locale-extras` package is also required.
2. Install libcurl:
@@ -258,20 +331,45 @@ Jackett can also be run from the command line if you would like to see log messa
Detailed instructions for [Ubuntu 14.x](http://www.htpcguides.com/install-jackett-on-ubuntu-14-x-for-custom-torrents-in-sonarr/) and [Ubuntu 15.x](http://www.htpcguides.com/install-jackett-ubuntu-15-x-for-custom-torrents-in-sonarr/)
## Installation on OSX
1. Install [Mono 4](http://www.mono-project.com/download/#download-mac) or better (version 4.8 is recommended)
* Setup ssl support by running
```
https://curl.haxx.se/ca/cacert.pem
cert-sync --user ~/Downloads/cacert.pem
```
1. Download and extract the latest `Jackett.Binaries.Mono.tar.gz` release from the [releases page](https://github.com/Jackett/Jackett/releases) and run Jackett using mono with the command `mono --debug JackettConsole.exe`.
If you want to run it with a user without a /home directory you need to add `Environment=XDG_CONFIG_HOME=/path/to/folder` to your systemd file, this folder will be used to store your config files.
Mono must be compiled with the Roslyn compiler (default), using MCS will cause "An error has occurred." errors (See https://github.com/Jackett/Jackett/issues/2704).
## Installation on macOS
### Prerequisites
Install [Mono 5.8](http://www.mono-project.com/download/#download-mac) or better (using the latest pkg installer is recommended).
* Setup ssl support by running `curl -sS https://curl.haxx.se/ca/cacert.pem | cert-sync --user /dev/stdin`
### Install as service
1. Download and extract the latest `Jackett.Binaries.Mono.tar.gz` release from the [releases page](https://github.com/Jackett/Jackett/releases).
2. Open the extracted folder and double-click on `install_service_macos`.
3. If the installation was a success, you can close the Terminal window.
The service will start on each logon. You can always stop it by running `launchctl unload ~/Library/LaunchAgents/org.user.Jackett.plist` from Terminal. You can start it again it using `launchctl load ~/Library/LaunchAgents/org.user.Jackett.plist`.
Logs are stored as usual under `~/.config/Jackett/log.txt`.
### Run without installing as a service
Download and extract the latest `Jackett.Binaries.Mono.tar.gz` release from the [releases page](https://github.com/Jackett/Jackett/releases) and run Jackett using mono with the command `mono --debug JackettConsole.exe`.
## Installation using Docker
Detailed instructions are available at [LinuxServer.io Jackett Docker](https://hub.docker.com/r/linuxserver/jackett/). The Jackett Docker is highly recommended, especially if you are having Mono stability issues or having issues running Mono on your system eg. QNAP, Synology. Thanks to [LinuxServer.io](https://linuxserver.io)
## Installation on Synology
Jackett is available as beta package from [SynoCommuniy](https://synocommunity.com/)
Jackett is available as beta package from [SynoCommunity](https://synocommunity.com/)
## Running Jackett behind a reverse proxy
When running jackett behind a reverse proxy make sure that the original hostname of the request is passed to Jackett. If HTTPS is used also set the X-Forwarded-Proto header to "https". Don't forget to adjust the "Base Path Override" Jackett option accordingly.
Example config for apache:
```
<Location /jackett>
ProxyPreserveHost On
RequestHeader set X-Forwarded-Proto expr=%{REQUEST_SCHEME}
ProxyPass http://127.0.0.1:9117
ProxyPassReverse http://127.0.0.1:9117
</Location>
```
## Troubleshooting
@@ -279,28 +377,66 @@ Jackett is available as beta package from [SynoCommuniy](https://synocommunity.c
You can pass various options when running via the command line, see --help for details.
* __Unable to connect to trackers with invalid SSL certificates__
* __Error "The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel."__
If you're using mono this is often caused by missing ca-certificates.
This is often caused by missing CA certificates.
Try reimporting the certificates in this case:
- On Linux (as user root): `wget -O - https://curl.haxx.se/ca/cacert.pem | cert-sync /dev/stdin`
- On macOS: `curl -sS https://curl.haxx.se/ca/cacert.pem | cert-sync --user /dev/stdin`
As a option of last resort you can disable certificate validation using the `--IgnoreSslErrors true` option but it's not recommended to use it as it enables Man-in-the-middle attacks on your connections.
* __Enable logging__
You can get additional logging with the command line switches `-t -l` or by enabeling `Enhanced logging` via the web interface.
You can get *enhanced* logging with the command line switches `-t -l` or by enabling `Enhanced logging` via the web interface (followed by clicking on the `Apply Server Settings` button).
Please post logs if you are unable to resolve your issue with these switches ensuring to remove your username/password/cookies.
The logfiles (log.txt/updater.txt) are stored in `%ProgramData%\Jackett` on Windows and `~/.config/Jackett/` on Linux/OSX.
The logfiles (log.txt/updater.txt) are stored in `%ProgramData%\Jackett` on Windows and `~/.config/Jackett/` on Linux/macOS.
## Configuring OMDb
This feature is used as a fallback to get the movie/series title if only the IMDB ID is provided in the request.
To use it, please just request a free API key on [OMDb](http://www.omdbapi.com/apikey.aspx) (1,000 daily requests limit) and paste the key in Jackett
## Creating an issue
Please supply as much information about the problem you are experiencing as possible. Your issue has a much greater chance of being resolved if logs are supplied so that we can see what is going on. Creating an issue with '### isn't working' doesn't help anyone to fix the problem.
## Contributing
All contributions are welcome just send a pull request. Jackett's framework allows our team (and any other volunteering dev) to implement new trackers in an hour or two. If you'd like support for a new tracker but are not a developer then feel free to leave a request on the [issues page](https://github.com/Jackett/Jackett/issues). It is recommended to use Visual studio 2015 when making code changes in this project.
All contributions are welcome just send a pull request. Jackett's framework allows our team (and any other volunteering dev) to implement new trackers in an hour or two. If you'd like support for a new tracker but are not a developer then feel free to leave a request on the [issues page](https://github.com/Jackett/Jackett/issues). It is recommended to use Visual Studio 2017 when making code changes in this project. You can download the community version for free [here](https://www.visualstudio.com/downloads/).
## Building from source
### Windows
* Install the .NET Core [SDK](https://www.microsoft.com/net/download/windows)
* Open the Jackett solution in Visual Studio 2017 (version 15.7 or above)
* Right click on the Jackett solution and click 'Rebuild Solution' to restore nuget packages
NOTE: if you get the error "NU1102: Unable to find package Microsoft.AspNetCore with version (>= 2.1.2)" while restoring packages, you'll need to install it manually.https://www.microsoft.com/net/download/thank-you/dotnet-sdk-2.1.302-macos-x64-installer then delete the entire project directory and restart from a new clone
//There is an issue with Mono 5.8 (fixed in Mono 5.12) where its expecting to use its own patched version of System.Net.Http.dll, instead of the version supplied in folder
- File transfer resume, byte ranges, multiple asynchronous transfers.
- and much more...
CurlSharp provides simple get/set properties for libcurl's options and information functions, event-based hooks to libcurl's I/O, status, and progress callbacks, and wraps the c-style file I/O behind simple filename properties. The `CurlEasy` class contains has more than 100 different properties and methods to handle a wide variety of URL transfer requirements. While this may seem overwhelming at first glance, the good news is you will probably need only a tiny subset of these for most situations.
The CurlSharp library consists of these parts:
- Pure C# P/Invoke bindings to the libcurl API.
- Optional libcurlshim helper DLL [WIN32].
- The `CurlEasy` class which provides a wrapper around a `curl_easy` session.
- The `CurlMulti` class, which serves as a container for multiple CurlEasy objects, and provides a wrapper around a `curl_multi` session.
- The `CurlShare` class which provides an infrastructure for serializing access to data shared by multiple `CurlEasy` objects, including cookie data and DNS hosts. It implements the `curl_share_xxx` API.
- The `CurlHttpMultiPartForm` to easily construct multi-part forms.
- The `CurlSlist` class which wraps a linked list of strings used in cURL.
var postData = "parm1=12345&parm2=Hello+world%21";
easy.PostFields = postData;
easy.PostFieldSize = postData.Length;
easy.Perform();
}
```
HTTP/2.0 download:
```c#
using (var easy = new CurlEasy())
{
easy.Url = "https://google.com/";
easy.WriteFunction = OnWriteData;
// HTTP/2 please
easy.HttpVersion = CurlHttpVersion.Http2_0;
// skip SSL verification during debugging
easy.SslVerifyPeer = false;
easy.SslVerifyhost = false;
easy.Perform();
}
```
More samples are included in the Samples folder.
#### Credits ####
CurlSharp Written by Dr. Masroor Ehsan.
CurlSharp is based on original code by Jeff Phillips [libcurl.NET](http://sourceforge.net/projects/libcurl-net/). Original code has been modified and greatly enhanced.
Some files were not shown because too many files have changed in this diff
Show More
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.