From 117edd4286faea725e849d22da09c091dbb91643 Mon Sep 17 00:00:00 2001 From: Mark McDowall Date: Fri, 21 Dec 2012 00:35:20 -0800 Subject: [PATCH] Backend work for nzbx.co --- .../Files/RSS/SizeParsing/nzbx_recent.json | 1 + .../Files/RSS/SizeParsing/nzbx_search.json | 1 + NzbDrone.Core.Test/Files/RSS/nzbx_recent.json | 1 + NzbDrone.Core.Test/Files/RSS/nzbx_search.json | 1 + NzbDrone.Core.Test/IndexerTests.cs | 66 +++++ NzbDrone.Core.Test/NzbDrone.Core.Test.csproj | 12 + NzbDrone.Core/CentralDispatch.cs | 1 + .../Converters/EpochDateTimeConverter.cs | 50 ++++ NzbDrone.Core/Model/Nzbx/NzbxRecentItem.cs | 47 ++++ NzbDrone.Core/Model/Nzbx/NzbxSearchItem.cs | 56 +++++ NzbDrone.Core/Model/Nzbx/NzbxVotesModel.cs | 13 + NzbDrone.Core/NzbDrone.Core.csproj | 5 + .../Providers/Indexer/IndexerBase.cs | 4 +- NzbDrone.Core/Providers/Indexer/Nzbx.cs | 232 ++++++++++++++++++ 14 files changed, 488 insertions(+), 2 deletions(-) create mode 100644 NzbDrone.Core.Test/Files/RSS/SizeParsing/nzbx_recent.json create mode 100644 NzbDrone.Core.Test/Files/RSS/SizeParsing/nzbx_search.json create mode 100644 NzbDrone.Core.Test/Files/RSS/nzbx_recent.json create mode 100644 NzbDrone.Core.Test/Files/RSS/nzbx_search.json create mode 100644 NzbDrone.Core/Helpers/Converters/EpochDateTimeConverter.cs create mode 100644 NzbDrone.Core/Model/Nzbx/NzbxRecentItem.cs create mode 100644 NzbDrone.Core/Model/Nzbx/NzbxSearchItem.cs create mode 100644 NzbDrone.Core/Model/Nzbx/NzbxVotesModel.cs create mode 100644 NzbDrone.Core/Providers/Indexer/Nzbx.cs diff --git a/NzbDrone.Core.Test/Files/RSS/SizeParsing/nzbx_recent.json b/NzbDrone.Core.Test/Files/RSS/SizeParsing/nzbx_recent.json new file mode 100644 index 000000000..278869ce4 --- /dev/null +++ b/NzbDrone.Core.Test/Files/RSS/SizeParsing/nzbx_recent.json @@ -0,0 +1 @@ +[{"ID":"571777","name":"Chicago.Fire.S01E10.720p.WEB-DL.DD5.1.H.264-KiNGS","totalpart":"10","groupID":"99","size":"890190951","postdate":"2012-12-20 18:14:13","guid":"48714abb00a095e00fbcbe161253abf6","fromname":"#cripples ","completion":"100","categoryID":"5050","imdbID":null,"anidbID":null,"rageID":"-1","comments":"0","downloads":"3","votes":{"upvotes":0,"downvotes":0}}] \ No newline at end of file diff --git a/NzbDrone.Core.Test/Files/RSS/SizeParsing/nzbx_search.json b/NzbDrone.Core.Test/Files/RSS/SizeParsing/nzbx_search.json new file mode 100644 index 000000000..78d11ba3c --- /dev/null +++ b/NzbDrone.Core.Test/Files/RSS/SizeParsing/nzbx_search.json @@ -0,0 +1 @@ +[{"name":"30.Rock.S06E06E07.HDTV.XviD-LOL","fromname":"teevee@4u.tv (teevee)","size":418067671,"groupid":4,"categoryid":5030,"totalpart":36,"completion":100,"rageid":"-1","imdbid":"","comments":"0","guid":"97be14dbf1776eec4fb8f2bb835935c0","adddate":1355343562,"postdate":1328839361,"downloads":"0","votes":{"upvotes":0,"downvotes":0},"nzb":"https:\/\/nzbx.co\/nzb?97be14dbf1776eec4fb8f2bb835935c0*|*30.Rock.S06E06E07.HDTV.XviD-LOL"}] \ No newline at end of file diff --git a/NzbDrone.Core.Test/Files/RSS/nzbx_recent.json b/NzbDrone.Core.Test/Files/RSS/nzbx_recent.json new file mode 100644 index 000000000..d585b6556 --- /dev/null +++ b/NzbDrone.Core.Test/Files/RSS/nzbx_recent.json @@ -0,0 +1 @@ +[{"ID":"571777","name":"Cak4QCQG","totalpart":"10","groupID":"99","size":"890190951","postdate":"2012-12-20 18:14:13","guid":"48714abb00a095e00fbcbe161253abf6","fromname":"#cripples ","completion":"100","categoryID":"5050","imdbID":null,"anidbID":null,"rageID":"-1","comments":"0","downloads":"3","votes":{"upvotes":0,"downvotes":0}},{"ID":"598723","name":"hmqNKMhJ","totalpart":"1","groupID":"99","size":"177560","postdate":"2012-12-20 18:09:26","guid":"5543a8f88f52ec4b6fe795313a83e69b","fromname":"#cripples ","completion":"100","categoryID":"5050","imdbID":null,"anidbID":null,"rageID":"-2","comments":"0","downloads":"2","votes":{"upvotes":0,"downvotes":0}},{"ID":"570798","name":"9CwyazAP","totalpart":"20","groupID":"99","size":"1085813984","postdate":"2012-12-20 18:09:19","guid":"4f875c754c5ec4af69737321f87ee4f0","fromname":"#cripples ","completion":"100","categoryID":"5050","imdbID":null,"anidbID":null,"rageID":"-1","comments":"0","downloads":"2","votes":{"upvotes":0,"downvotes":0}},{"ID":"569075","name":"RFMF12012R01RP1080i","totalpart":"164","groupID":"74","size":"34600152024","postdate":"2012-12-20 18:08:41","guid":"0aac232cad178437616f11c00e711bf4","fromname":"Yenc@power-post.org (Sneaker)","completion":"99","categoryID":"5060","imdbID":null,"anidbID":null,"rageID":"-1","comments":"0","downloads":"2","votes":{"upvotes":0,"downvotes":0}},{"ID":"598722","name":"AgcCPz7Y","totalpart":"1","groupID":"99","size":"169891","postdate":"2012-12-20 18:02:50","guid":"f3354b062679cc62a2576d32b7f4d12b","fromname":"#cripples ","completion":"100","categoryID":"5050","imdbID":null,"anidbID":null,"rageID":"-2","comments":"0","downloads":"2","votes":{"upvotes":0,"downvotes":0}},{"ID":"570797","name":"RfjRgBBj","totalpart":"20","groupID":"99","size":"1034761352","postdate":"2012-12-20 18:02:39","guid":"9e2e9a039fb3d66b4afe675a6a6e7a5c","fromname":"#cripples ","completion":"100","categoryID":"5050","imdbID":null,"anidbID":null,"rageID":"-1","comments":"0","downloads":"2","votes":{"upvotes":0,"downvotes":0}},{"ID":"598721","name":"RjzH9mjz","totalpart":"1","groupID":"99","size":"175385","postdate":"2012-12-20 17:57:31","guid":"e99b6ca4ec64808193b847a80c1b6bdb","fromname":"#cripples ","completion":"100","categoryID":"5050","imdbID":null,"anidbID":null,"rageID":"-2","comments":"0","downloads":"2","votes":{"upvotes":0,"downvotes":0}},{"ID":"570796","name":"3CtFGNVr","totalpart":"20","groupID":"99","size":"1070944005","postdate":"2012-12-20 17:57:15","guid":"c7f88f6d6d7b36f1533b0c1a1453ad7e","fromname":"#cripples ","completion":"100","categoryID":"5050","imdbID":null,"anidbID":null,"rageID":"-1","comments":"0","downloads":"2","votes":{"upvotes":0,"downvotes":0}},{"ID":"570239","name":"Ueberleben.im.Sumpf.S03E16.Big.Gators.Big.Dollars.GERMAN.DUBBED.DOKU.WS.HDTVRip.XviD-TVP","totalpart":"28","groupID":"120","size":"420986580","postdate":"2012-12-20 17:55:19","guid":"bafb5576d86f0801396d48b71f761e20","fromname":"JBinUp.com ","completion":"100","categoryID":"5020","imdbID":"1747551","anidbID":null,"rageID":"-1","comments":"0","downloads":"2","votes":{"upvotes":0,"downvotes":0}},{"ID":"570358","name":"Nano.Die.Welt.von.morgen.2012-12-19.GERMAN.DOKU.dTV.xvid-ghost","totalpart":"25","groupID":"120","size":"281334630","postdate":"2012-12-20 17:55:17","guid":"52af91085bad960d5f53363e4f2bb2ec","fromname":"JBinUp.com ","completion":"100","categoryID":"5020","imdbID":null,"anidbID":null,"rageID":"-1","comments":"0","downloads":"2","votes":{"upvotes":0,"downvotes":0}},{"ID":"598720","name":"BfYVApMT","totalpart":"1","groupID":"99","size":"179640","postdate":"2012-12-20 17:51:29","guid":"290f90a4252cc333b2cc880ce0519a31","fromname":"#cripples ","completion":"100","categoryID":"5050","imdbID":null,"anidbID":null,"rageID":"-2","comments":"0","downloads":"2","votes":{"upvotes":0,"downvotes":0}},{"ID":"570069","name":"Breakout.Kings.S01E06.Wie.der.Vater.so.der.Sohn.GERMAN.DUBBED.720p.HDTV.x264-ZZGtv","totalpart":"33","groupID":"120","size":"1272677286","postdate":"2012-12-20 17:51:28","guid":"16912862c2aea39a0102df59ed838a2b","fromname":"DeineMudda ","completion":"100","categoryID":"5020","imdbID":"1590961","anidbID":null,"rageID":"-1","comments":"0","downloads":"2","votes":{"upvotes":0,"downvotes":0}},{"ID":"570795","name":"gBFvp7Ch","totalpart":"20","groupID":"99","size":"1098079437","postdate":"2012-12-20 17:51:19","guid":"62407cfb960bbc4f8eae4353fb1f3329","fromname":"#cripples ","completion":"100","categoryID":"5050","imdbID":null,"anidbID":null,"rageID":"-1","comments":"0","downloads":"3","votes":{"upvotes":0,"downvotes":0}},{"ID":"598719","name":"A9MGx8HM","totalpart":"1","groupID":"99","size":"177143","postdate":"2012-12-20 17:45:37","guid":"23f64f0a77026dba5a42f02cd7e7c371","fromname":"#cripples ","completion":"100","categoryID":"5050","imdbID":null,"anidbID":null,"rageID":"-2","comments":"0","downloads":"2","votes":{"upvotes":0,"downvotes":0}},{"ID":"570794","name":"X7PtKCmn","totalpart":"20","groupID":"99","size":"1081019033","postdate":"2012-12-20 17:45:30","guid":"64ba64f430be1428f989610c511f0f03","fromname":"#cripples ","completion":"100","categoryID":"5050","imdbID":null,"anidbID":null,"rageID":"-1","comments":"0","downloads":"2","votes":{"upvotes":0,"downvotes":0}},{"ID":"598718","name":"YWTrHcrW","totalpart":"1","groupID":"99","size":"54470","postdate":"2012-12-20 17:39:59","guid":"377bfbe9337c671f1525ee706d4fe0fb","fromname":"#cripples ","completion":"100","categoryID":"5050","imdbID":null,"anidbID":null,"rageID":"-2","comments":"0","downloads":"2","votes":{"upvotes":0,"downvotes":0}},{"ID":"571455","name":"WAtamZF2","totalpart":"13","groupID":"99","size":"309197396","postdate":"2012-12-20 17:39:56","guid":"0689c963c7c2ea5f3d821ecc016e65dd","fromname":"#cripples ","completion":"100","categoryID":"5050","imdbID":null,"anidbID":null,"rageID":"-1","comments":"0","downloads":"2","votes":{"upvotes":0,"downvotes":0}},{"ID":"598717","name":"GWkkq2p3","totalpart":"1","groupID":"99","size":"179411","postdate":"2012-12-20 17:37:54","guid":"f332b575e5e3bbf3441815c5b200589b","fromname":"#cripples ","completion":"100","categoryID":"5050","imdbID":null,"anidbID":null,"rageID":"-2","comments":"0","downloads":"2","votes":{"upvotes":0,"downvotes":0}},{"ID":"570793","name":"fDFJx96G","totalpart":"20","groupID":"99","size":"1094766822","postdate":"2012-12-20 17:37:46","guid":"ced2fe9985e5669e0242535767d836d2","fromname":"#cripples ","completion":"100","categoryID":"5050","imdbID":null,"anidbID":null,"rageID":"-1","comments":"0","downloads":"2","votes":{"upvotes":0,"downvotes":0}},{"ID":"570168","name":"Chicago.Fire.S01E10.1080p.WEB-DL.DD5.1.H.264-KiNGS","totalpart":"29","groupID":"20","size":"2075500180","postdate":"2012-12-20 17:33:12","guid":"382d5d20491e4a99564a0ec5241bce50","fromname":"prime@time.tv (autobot)","completion":"100","categoryID":"5040","imdbID":null,"anidbID":null,"rageID":"-1","comments":"0","downloads":"2","votes":{"upvotes":0,"downvotes":0}},{"ID":"598716","name":"DNfBKBqv","totalpart":"1","groupID":"99","size":"173889","postdate":"2012-12-20 17:32:12","guid":"0f6d47f8f5776efc4b1801d3db216994","fromname":"#cripples ","completion":"100","categoryID":"5050","imdbID":null,"anidbID":null,"rageID":"-2","comments":"0","downloads":"2","votes":{"upvotes":0,"downvotes":0}},{"ID":"570792","name":"B4atdKGG","totalpart":"20","groupID":"99","size":"1055366008","postdate":"2012-12-20 17:32:11","guid":"9b9e79d76a646db4df789a6618655d54","fromname":"#cripples ","completion":"100","categoryID":"5050","imdbID":null,"anidbID":null,"rageID":"-1","comments":"0","downloads":"2","votes":{"upvotes":0,"downvotes":0}},{"ID":"598715","name":"YHrj9wv6","totalpart":"1","groupID":"99","size":"178447","postdate":"2012-12-20 17:27:47","guid":"0e60756698a293e38a303ab946603017","fromname":"#cripples ","completion":"100","categoryID":"5050","imdbID":null,"anidbID":null,"rageID":"-2","comments":"0","downloads":"2","votes":{"upvotes":0,"downvotes":0}},{"ID":"570791","name":"6MZDWAGL","totalpart":"20","groupID":"99","size":"1090690676","postdate":"2012-12-20 17:27:39","guid":"532f2c1388389914c64bbd49c640c9c8","fromname":"#cripples ","completion":"100","categoryID":"5050","imdbID":null,"anidbID":null,"rageID":"-1","comments":"0","downloads":"2","votes":{"upvotes":0,"downvotes":0}},{"ID":"569844","name":"Chicago.Fire.S01E10.720p.WEB-DL.DD5.1.H.264-KiNGS","totalpart":"38","groupID":"20","size":"1617038656","postdate":"2012-12-20 17:27:19","guid":"620411f6b4c123256c71a6f1fe7ab84c","fromname":"r@ndom.tv (r@ndom)","completion":"100","categoryID":"5040","imdbID":null,"anidbID":null,"rageID":"-1","comments":"0","downloads":"2","votes":{"upvotes":0,"downvotes":0}},{"ID":"598714","name":"dmtAzkkB","totalpart":"1","groupID":"99","size":"178708","postdate":"2012-12-20 17:21:48","guid":"182e8516acf4558495824aa6734d0e2e","fromname":"#cripples ","completion":"100","categoryID":"5050","imdbID":null,"anidbID":null,"rageID":"-2","comments":"0","downloads":"2","votes":{"upvotes":0,"downvotes":0}},{"ID":"570790","name":"mJYGyKdr","totalpart":"20","groupID":"99","size":"1091882769","postdate":"2012-12-20 17:21:35","guid":"f5365d005bc1f71d6da0c70507919fe6","fromname":"#cripples ","completion":"100","categoryID":"5050","imdbID":null,"anidbID":null,"rageID":"-1","comments":"0","downloads":"2","votes":{"upvotes":0,"downvotes":0}},{"ID":"570733","name":"Dragons.Riders.of.Berk.S01E02.1080p.WEB-DL.H.264.DD5.1-iT00NZ","totalpart":"20","groupID":"20","size":"1101417070","postdate":"2012-12-20 17:08:38","guid":"b307d0f857032eef0db51ae7a913209e","fromname":"provide@4u.net (yeahsure)","completion":"100","categoryID":"5040","imdbID":null,"anidbID":null,"rageID":"-1","comments":"0","downloads":"2","votes":{"upvotes":0,"downvotes":0}},{"ID":"570857","name":"Dragons.Riders.of.Berk.S01E05.1080p.WEB-DL.H.264.DD5.1-iT00NZ","totalpart":"19","groupID":"20","size":"1033988732","postdate":"2012-12-20 17:07:08","guid":"b2a15de40f47025a660f420b8b8abb6d","fromname":"canuck@suck (ilikeboys)","completion":"100","categoryID":"5040","imdbID":null,"anidbID":null,"rageID":"-1","comments":"0","downloads":"2","votes":{"upvotes":0,"downvotes":0}},{"ID":"570856","name":"Dragons.Riders.of.Berk.S01E04.1080p.WEB-DL.H.264.DD5.1-iT00NZ","totalpart":"19","groupID":"20","size":"1090845908","postdate":"2012-12-20 17:05:48","guid":"6a4f51055c2640a06e6ab44f35c1b41c","fromname":"canuck@suck (ilikeboys)","completion":"100","categoryID":"5040","imdbID":null,"anidbID":null,"rageID":"-1","comments":"0","downloads":"2","votes":{"upvotes":0,"downvotes":0}},{"ID":"569791","name":"Amerikas.heisse.Grenze.Nachtschicht.German.DOKU.720p.HDTV.x264-UTOPiA","totalpart":"40","groupID":"120","size":"1682015876","postdate":"2012-12-20 17:04:10","guid":"4421333408e611424627251210b04f81","fromname":"DeineMudda ","completion":"100","categoryID":"5020","imdbID":null,"anidbID":null,"rageID":"-1","comments":"0","downloads":"2","votes":{"upvotes":0,"downvotes":0}},{"ID":"570855","name":"Dragons.Riders.of.Berk.S01E13.1080p.WEB-DL.H.264.DD5.1-iT00NZ","totalpart":"19","groupID":"20","size":"1089833444","postdate":"2012-12-20 17:03:54","guid":"3965803dd2f8a7ae15e96b7822a680da","fromname":"prime@time.tv (autobot)","completion":"100","categoryID":"5040","imdbID":null,"anidbID":null,"rageID":"-1","comments":"0","downloads":"2","votes":{"upvotes":0,"downvotes":0}},{"ID":"570732","name":"Dragons.Riders.of.Berk.S01E01.1080p.WEB-DL.H.264.DD5.1-iT00NZ","totalpart":"20","groupID":"20","size":"1095258576","postdate":"2012-12-20 17:01:34","guid":"349095501a8fef2d61c76e2905440a91","fromname":"prime@time.tv (autobot)","completion":"100","categoryID":"5040","imdbID":null,"anidbID":null,"rageID":"-1","comments":"0","downloads":"2","votes":{"upvotes":0,"downvotes":0}},{"ID":"569611","name":"Transporter.Die.Serie.S01E01.Eine.neue.Mission.German.DL.720p.BluRay.x264-GZCrew","totalpart":"46","groupID":"120","size":"1984314476","postdate":"2012-12-20 17:00:30","guid":"62e023765790f00bc6e04027e341bc27","fromname":"DeineMudda ","completion":"100","categoryID":"5020","imdbID":"1885102","anidbID":null,"rageID":"-1","comments":"0","downloads":"2","votes":{"upvotes":0,"downvotes":0}},{"ID":"570854","name":"Dragons.Riders.of.Berk.S01E12.1080p.WEB-DL.H.264.DD5.1-iT00NZ","totalpart":"19","groupID":"20","size":"1059746929","postdate":"2012-12-20 16:59:51","guid":"960bc5a3fa8abe4cd573b42295e7e2d9","fromname":"provide@4u.net (yeahsure)","completion":"100","categoryID":"5040","imdbID":null,"anidbID":null,"rageID":"-1","comments":"0","downloads":"2","votes":{"upvotes":0,"downvotes":0}},{"ID":"570853","name":"Dragons.Riders.of.Berk.S01E11.1080p.WEB-DL.H.264.DD5.1-iT00NZ","totalpart":"19","groupID":"20","size":"1085404658","postdate":"2012-12-20 16:58:33","guid":"19a7f17aeafe7efdb7c3d7fb64c6d6e4","fromname":"canuck@suck (ilikeboys)","completion":"100","categoryID":"5040","imdbID":null,"anidbID":null,"rageID":"-1","comments":"0","downloads":"3","votes":{"upvotes":0,"downvotes":0}},{"ID":"570852","name":"Dragons.Riders.of.Berk.S01E10.1080p.WEB-DL.H.264.DD5.1-iT00NZ","totalpart":"19","groupID":"20","size":"1083964443","postdate":"2012-12-20 16:57:14","guid":"61a7a7a94cf9994677db062c560e8c47","fromname":"prime@time.tv (autobot)","completion":"100","categoryID":"5040","imdbID":null,"anidbID":null,"rageID":"-1","comments":"0","downloads":"2","votes":{"upvotes":0,"downvotes":0}},{"ID":"570851","name":"Dragons.Riders.of.Berk.S01E09.1080p.WEB-DL.H.264.DD5.1-iT00NZ","totalpart":"19","groupID":"20","size":"1071437155","postdate":"2012-12-20 16:55:48","guid":"b87cac4f42aeab580c67338c12202ef4","fromname":"canuck@suck (ilikeboys)","completion":"100","categoryID":"5040","imdbID":null,"anidbID":null,"rageID":"-1","comments":"0","downloads":"2","votes":{"upvotes":0,"downvotes":0}},{"ID":"569892","name":"Discovery.Channel.The.Worlds.Most.Expensive.Cars.720p.HDTV.x264-KNiFESHARP","totalpart":"37","groupID":"20","size":"1010366223","postdate":"2012-12-20 16:55:34","guid":"2ede17d901e9d2969ab8dd9c528bf8e6","fromname":"autom@gical.tv (M@GiC)","completion":"100","categoryID":"5080","imdbID":null,"anidbID":null,"rageID":"-1","comments":"0","downloads":"2","votes":{"upvotes":0,"downvotes":0}},{"ID":"570731","name":"Dragons.Riders.of.Berk.S01E03.1080p.WEB-DL.H.264.DD5.1-iT00NZ","totalpart":"20","groupID":"20","size":"1097887077","postdate":"2012-12-20 16:51:41","guid":"9876cffd4d219825b65301b7362fb1d2","fromname":"r@ndom.tv (r@ndom)","completion":"100","categoryID":"5040","imdbID":null,"anidbID":null,"rageID":"-1","comments":"0","downloads":"2","votes":{"upvotes":0,"downvotes":0}},{"ID":"570142","name":"Discovery.Channel.The.Worlds.Most.Expensive.Cars.HDTV.x264-DEADPiXEL","totalpart":"30","groupID":"20","size":"308118362","postdate":"2012-12-20 16:51:25","guid":"d1902274e7172833664c97ec248047a2","fromname":"canuck@suck (ilikeboys)","completion":"100","categoryID":"5080","imdbID":null,"anidbID":null,"rageID":"-1","comments":"0","downloads":"2","votes":{"upvotes":0,"downvotes":0}},{"ID":"570850","name":"Dragons.Riders.of.Berk.S01E07.1080p.WEB-DL.H.264.DD5.1-iT00NZ","totalpart":"19","groupID":"20","size":"1080832309","postdate":"2012-12-20 16:47:51","guid":"31dc927a41f818172df2dfc05e3961af","fromname":"autom@gical.tv (M@GiC)","completion":"100","categoryID":"5040","imdbID":null,"anidbID":null,"rageID":"-1","comments":"0","downloads":"2","votes":{"upvotes":0,"downvotes":0}},{"ID":"570849","name":"Dragons.Riders.of.Berk.S01E06.1080p.WEB-DL.H.264.DD5.1-iT00NZ","totalpart":"19","groupID":"20","size":"1070427536","postdate":"2012-12-20 16:43:36","guid":"7b5e26aea148a08feb6f8019bd36c065","fromname":"provide@4u.net (yeahsure)","completion":"100","categoryID":"5040","imdbID":null,"anidbID":null,"rageID":"-1","comments":"0","downloads":"2","votes":{"upvotes":0,"downvotes":0}},{"ID":"598713","name":"73dB1qfh","totalpart":"1","groupID":"99","size":"183741","postdate":"2012-12-20 16:36:14","guid":"beea318b30301466861825d869afccce","fromname":"#cripples ","completion":"100","categoryID":"5050","imdbID":null,"anidbID":null,"rageID":"-2","comments":"0","downloads":"2","votes":{"upvotes":0,"downvotes":0}},{"ID":"570789","name":"DHB92AX7","totalpart":"20","groupID":"99","size":"1123919371","postdate":"2012-12-20 16:36:07","guid":"3a3e4a0d0e2cd63caba793975f9fae85","fromname":"#cripples ","completion":"100","categoryID":"5050","imdbID":null,"anidbID":null,"rageID":"-1","comments":"0","downloads":"2","votes":{"upvotes":0,"downvotes":0}},{"ID":"598712","name":"Vn3gL9Q6","totalpart":"1","groupID":"99","size":"65749","postdate":"2012-12-20 16:31:19","guid":"62cac2e06acbd073720c93b1994a20c9","fromname":"#cripples ","completion":"100","categoryID":"5050","imdbID":null,"anidbID":null,"rageID":"-2","comments":"0","downloads":"2","votes":{"upvotes":0,"downvotes":0}},{"ID":"571347","name":"7dpFNQ2L","totalpart":"14","groupID":"99","size":"379516245","postdate":"2012-12-20 16:31:14","guid":"903a4ed450b128d69feb8245a21a6cab","fromname":"#cripples ","completion":"100","categoryID":"5050","imdbID":null,"anidbID":null,"rageID":"-1","comments":"0","downloads":"2","votes":{"upvotes":0,"downvotes":0}},{"ID":"570011","name":"Scam.City.S01E10.HDTV.x264-DEADPiXEL","totalpart":"34","groupID":"20","size":"379190559","postdate":"2012-12-20 16:11:02","guid":"e2ae411c569b788d57939387058f6f54","fromname":"autom@gical.tv (M@GiC)","completion":"100","categoryID":"5030","imdbID":null,"anidbID":null,"rageID":"-1","comments":"0","downloads":"2","votes":{"upvotes":0,"downvotes":0}},{"ID":"569733","name":"Scam.City.S01E10.720p.HDTV.x264-KNiFESHARP","totalpart":"41","groupID":"20","size":"1164306999","postdate":"2012-12-20 16:10:35","guid":"f178d6d24c3afc125ea3184dad6a1d2c","fromname":"autom@gical.tv (M@GiC)","completion":"100","categoryID":"5040","imdbID":null,"anidbID":null,"rageID":"-1","comments":"0","downloads":"2","votes":{"upvotes":0,"downvotes":0}},{"ID":"569270","name":"Get Lost","totalpart":"83","groupID":"112","size":"3648897832","postdate":"2012-12-20 16:08:46","guid":"01016cd86265aae782abb8f4e1061c67","fromname":"BixBeiderbecke@Poster.com (BixBeiderbecke)","completion":"92","categoryID":"5050","imdbID":"0081868","anidbID":null,"rageID":"-1","comments":"0","downloads":"2","votes":{"upvotes":0,"downvotes":0}},{"ID":"569269","name":"1981 - Get Lost! (a Beiderbecke prequel)","totalpart":"83","groupID":"99","size":"3655679229","postdate":"2012-12-20 16:08:46","guid":"ac8cd08fb75554086801fcd17339797c","fromname":"BixBeiderbecke@Poster.com (BixBeiderbecke)","completion":"92","categoryID":"5050","imdbID":"0081868","anidbID":null,"rageID":"-1","comments":"0","downloads":"2","votes":{"upvotes":0,"downvotes":0}},{"ID":"569790","name":"Berlin.Tag.und.Nacht.E323.German.720p.HDTV.x264-UTOPiA","totalpart":"40","groupID":"120","size":"1681857582","postdate":"2012-12-20 15:53:04","guid":"2e7ff0099c8a8f54033ad96427f26cc4","fromname":"DeineMudda ","completion":"100","categoryID":"5020","imdbID":null,"anidbID":null,"rageID":"-1","comments":"0","downloads":"2","votes":{"upvotes":0,"downvotes":0}},{"ID":"598711","name":"hkjwtRpv","totalpart":"1","groupID":"99","size":"289364","postdate":"2012-12-20 15:25:18","guid":"4b352641e583f4ae3fd8cab5553d0269","fromname":"#cripples ","completion":"100","categoryID":"5050","imdbID":null,"anidbID":null,"rageID":"-2","comments":"0","downloads":"2","votes":{"upvotes":0,"downvotes":0}},{"ID":"570311","name":"vVtC7J6m","totalpart":"26","groupID":"99","size":"1787053234","postdate":"2012-12-20 15:25:07","guid":"c44ae130f57b34753a1869e41b55fd39","fromname":"#cripples ","completion":"100","categoryID":"5050","imdbID":null,"anidbID":null,"rageID":"-1","comments":"0","downloads":"2","votes":{"upvotes":0,"downvotes":0}},{"ID":"598710","name":"pkZqd9xt","totalpart":"1","groupID":"99","size":"40899","postdate":"2012-12-20 15:16:23","guid":"a14f421e37755a2b61bff05b33522247","fromname":"#cripples ","completion":"100","categoryID":"5050","imdbID":null,"anidbID":null,"rageID":"-2","comments":"0","downloads":"2","votes":{"upvotes":0,"downvotes":0}},{"ID":"598709","name":"fnZRP2Aq","totalpart":"1","groupID":"99","size":"83968","postdate":"2012-12-20 15:15:33","guid":"550618791343059639ce6e406c9450ef","fromname":"#cripples ","completion":"100","categoryID":"5050","imdbID":null,"anidbID":null,"rageID":"-2","comments":"0","downloads":"2","votes":{"upvotes":0,"downvotes":0}},{"ID":"571227","name":"nMTFcwMv","totalpart":"15","groupID":"99","size":"493705801","postdate":"2012-12-20 15:15:29","guid":"89425672827a439ee4fe65ff85a8fb32","fromname":"#cripples ","completion":"100","categoryID":"5050","imdbID":null,"anidbID":null,"rageID":"-1","comments":"0","downloads":"2","votes":{"upvotes":0,"downvotes":0}},{"ID":"570685","name":"HMC53 20121220 001","totalpart":"21","groupID":"99","size":"1607719382","postdate":"2012-12-20 15:00:30","guid":"7f0b8edd868af00636d779810f7218f3","fromname":"town ","completion":"100","categoryID":"5050","imdbID":null,"anidbID":null,"rageID":"-1","comments":"0","downloads":"2","votes":{"upvotes":0,"downvotes":0}},{"ID":"570788","name":"HMC53 20121220 002","totalpart":"20","groupID":"99","size":"1595170777","postdate":"2012-12-20 15:00:14","guid":"0bc142032564c27a1a3d3da2ef8951fe","fromname":"town ","completion":"100","categoryID":"5050","imdbID":null,"anidbID":null,"rageID":"-1","comments":"0","downloads":"2","votes":{"upvotes":0,"downvotes":0}},{"ID":"598708","name":"ck1rYD8R","totalpart":"1","groupID":"99","size":"243434","postdate":"2012-12-20 14:50:17","guid":"a6ef92cdc22ea83a3d1bed5010e9da05","fromname":"#cripples ","completion":"100","categoryID":"5050","imdbID":null,"anidbID":null,"rageID":"-2","comments":"0","downloads":"2","votes":{"upvotes":0,"downvotes":0}},{"ID":"570448","name":"92pvxhrX","totalpart":"24","groupID":"99","size":"1498278637","postdate":"2012-12-20 14:50:08","guid":"d3d4186aef0fe5cf8928b3757a972a06","fromname":"#cripples ","completion":"100","categoryID":"5050","imdbID":null,"anidbID":null,"rageID":"-1","comments":"0","downloads":"2","votes":{"upvotes":0,"downvotes":0}},{"ID":"570470","name":"[K-F] One Piece 305 [3E5C895A]","totalpart":"24","groupID":"136","size":"369613307","postdate":"2012-12-20 14:43:19","guid":"42451d414ca83d6cad92d6b801fc2f6a","fromname":"Comfun","completion":"100","categoryID":"5070","imdbID":null,"anidbID":null,"rageID":"-1","comments":"0","downloads":"2","votes":{"upvotes":0,"downvotes":0}},{"ID":"571782","name":"[Hadena] Kaminomizo Tenrihen OVA [360p] [8F2F389E]","totalpart":"10","groupID":"136","size":"51181728","postdate":"2012-12-20 14:38:06","guid":"02ea5886f85d4d361421f1afef19fa94","fromname":"Comfun","completion":"100","categoryID":"5070","imdbID":null,"anidbID":null,"rageID":"-1","comments":"0","downloads":"2","votes":{"upvotes":0,"downvotes":0}},{"ID":"569096","name":"Battlestar.Galactica.4x15.Danni.Strutturali.Bluray.Remux.VC-1.1080p","totalpart":"131","groupID":"99","size":"6567631328","postdate":"2012-12-20 14:37:03","guid":"fbfd5ceb2c200f23c09375fcdb497647","fromname":"nessuno","completion":"100","categoryID":"5040","imdbID":null,"anidbID":null,"rageID":"-1","comments":"0","downloads":"2","votes":{"upvotes":0,"downvotes":0}},{"ID":"569563","name":"Celebrity.Juice.S08E13.A.Celebrity.Juicemas.Carol.Chapter.1.720p.HDTV.x264-C4TV","totalpart":"47","groupID":"20","size":"1559545436","postdate":"2012-12-20 14:17:19","guid":"7b64d6f027e5222a75e44251a2411874","fromname":"provide@4u.net (yeahsure)","completion":"100","categoryID":"5040","imdbID":null,"anidbID":null,"rageID":"-1","comments":"0","downloads":"2","votes":{"upvotes":0,"downvotes":0}},{"ID":"570080","name":"Celebrity.Juice.S08E13.A.Celebrity.Juicemas.Carol.Chapter.1.HDTV.x264-C4TV","totalpart":"32","groupID":"20","size":"496393066","postdate":"2012-12-20 14:15:36","guid":"1bbc78ae2130c7ab91b77a9c17916b2d","fromname":"r@ndom.tv (r@ndom)","completion":"100","categoryID":"5030","imdbID":null,"anidbID":null,"rageID":"-1","comments":"0","downloads":"2","votes":{"upvotes":0,"downvotes":0}},{"ID":"570730","name":"Film.2012.With.Claudia.Winkleman.2012.12.19.HDTV.x264-C4TV","totalpart":"20","groupID":"20","size":"224110455","postdate":"2012-12-20 14:14:53","guid":"27ad86c18a5a42b1757dd943f3a933a7","fromname":"provide@4u.net (yeahsure)","completion":"100","categoryID":"5030","imdbID":null,"anidbID":null,"rageID":"-1","comments":"0","downloads":"2","votes":{"upvotes":0,"downvotes":0}},{"ID":"569650","name":"Moonshiners.S02E07.720p.HDTV.x264-KILLERS","totalpart":"44","groupID":"20","size":"1786389181","postdate":"2012-12-20 14:14:25","guid":"7c546beef9b6b84c8658d8ee61fde2e5","fromname":"provide@4u.net (yeahsure)","completion":"100","categoryID":"5040","imdbID":null,"anidbID":null,"rageID":"-1","comments":"0","downloads":"3","votes":{"upvotes":0,"downvotes":0}},{"ID":"598707","name":"MTXvgmFt","totalpart":"1","groupID":"99","size":"103815","postdate":"2012-12-20 13:29:46","guid":"59aef8052c19ffbb82b380a9e7300900","fromname":"#cripples ","completion":"100","categoryID":"5050","imdbID":null,"anidbID":null,"rageID":"-2","comments":"0","downloads":"2","votes":{"upvotes":0,"downvotes":0}},{"ID":"571135","name":"6C4gdyw6","totalpart":"16","groupID":"99","size":"620234288","postdate":"2012-12-20 13:29:41","guid":"52c72e1f701d0a274867854c33c83302","fromname":"#cripples ","completion":"100","categoryID":"5050","imdbID":null,"anidbID":null,"rageID":"-1","comments":"0","downloads":"2","votes":{"upvotes":0,"downvotes":0}},{"ID":"569681","name":"Perception.1x05.Messaggera.ITA-ENG.720p.DLMux.DD5.1.h264-NovaRip","totalpart":"43","groupID":"30","size":"1834394694","postdate":"2012-12-20 13:13:59","guid":"f5244aee21430263ff92523df46942a7","fromname":"ita.tv ","completion":"100","categoryID":"5020","imdbID":null,"anidbID":null,"rageID":"-1","comments":"0","downloads":"2","votes":{"upvotes":0,"downvotes":0}},{"ID":"569717","name":"perception.1x05.ita-eng.720p.dlmux.dd5.1.h264-novarip","totalpart":"42","groupID":"99","size":"1834171847","postdate":"2012-12-20 13:12:48","guid":"85eff75e43069dde07799fa60a8b84bc","fromname":"ita.tv ","completion":"100","categoryID":"5020","imdbID":null,"anidbID":null,"rageID":"-1","comments":"0","downloads":"2","votes":{"upvotes":0,"downvotes":0}},{"ID":"570211","name":"Moonshiners.S02E07.HDTV.x264-KILLERS","totalpart":"28","groupID":"20","size":"628656070","postdate":"2012-12-20 13:10:54","guid":"6aaf210806d8766c359f8c58ea43ed0e","fromname":"provide@4u.net (yeahsure)","completion":"100","categoryID":"5030","imdbID":null,"anidbID":null,"rageID":"-1","comments":"0","downloads":"2","votes":{"upvotes":0,"downvotes":0}},{"ID":"569736","name":"Terapia.D.Urto.2x03.Paura.Di.Fallire.ITA.720p.DLMux.DD5.1.h264-NovaRip","totalpart":"41","groupID":"30","size":"1725911405","postdate":"2012-12-20 13:01:21","guid":"6dddb1c3fcf71d26d50a3cf6d0a9a45e","fromname":"ita.tv ","completion":"100","categoryID":"5020","imdbID":null,"anidbID":null,"rageID":"-1","comments":"0","downloads":"2","votes":{"upvotes":0,"downvotes":0}},{"ID":"569781","name":"terapia.d.urto.2x03.ita.720p.dlmux.dd5.1.h264-novarip","totalpart":"40","groupID":"99","size":"1725701108","postdate":"2012-12-20 13:00:10","guid":"fffe3714d162b1c2f7f39b29e3e9e6bd","fromname":"ita.tv ","completion":"100","categoryID":"5020","imdbID":null,"anidbID":null,"rageID":"-1","comments":"0","downloads":"2","votes":{"upvotes":0,"downvotes":0}},{"ID":"569706","name":"Terapia.D.Urto.2x02.Deviare.E.Proteggere.ITA.720p.DLMux.DD5.1.h264-NovaRip","totalpart":"42","groupID":"30","size":"1755354734","postdate":"2012-12-20 12:52:14","guid":"82823b4ad00112d44c5ff2204e67be5c","fromname":"ita.tv ","completion":"100","categoryID":"5020","imdbID":null,"anidbID":null,"rageID":"-1","comments":"0","downloads":"2","votes":{"upvotes":0,"downvotes":0}},{"ID":"569747","name":"terapia.d.urto.2x02.ita.720p.dlmux.dd5.1.h264-novarip","totalpart":"41","groupID":"99","size":"1755140608","postdate":"2012-12-20 12:51:00","guid":"47dd1ca838a21e069807bdc880687a6a","fromname":"ita.tv ","completion":"100","categoryID":"5020","imdbID":null,"anidbID":null,"rageID":"-1","comments":"0","downloads":"2","votes":{"upvotes":0,"downvotes":0}},{"ID":"569735","name":"Terapia.D.Urto.2x01.La.Nave.Sta.Affondando.ITA.720p.DLMux.DD5.1.h264-NovaRip","totalpart":"41","groupID":"30","size":"1678900715","postdate":"2012-12-20 12:42:12","guid":"96f1fc764aacb8eb15bd608375be8b29","fromname":"ita.tv ","completion":"100","categoryID":"5020","imdbID":null,"anidbID":null,"rageID":"-1","comments":"0","downloads":"2","votes":{"upvotes":0,"downvotes":0}},{"ID":"569780","name":"terapia.d.urto.2x01.ita.720p.dlmux.dd5.1.h264-novarip","totalpart":"40","groupID":"99","size":"1678695506","postdate":"2012-12-20 12:40:06","guid":"3b675d3f6f9d99318f8ac0e32797f33c","fromname":"ita.tv ","completion":"100","categoryID":"5020","imdbID":null,"anidbID":null,"rageID":"-1","comments":"0","downloads":"2","votes":{"upvotes":0,"downvotes":0}},{"ID":"570808","name":"Vild.Med.Comedy.S02E21.Johannes.Langkilde.DANiSH.720p.HDTV.x264-TVBYEN","totalpart":"20","groupID":"141","size":"487196268","postdate":"2012-12-20 11:56:39","guid":"aa72a8b1b79cb08a02af01fad0458527","fromname":"b","completion":"100","categoryID":"5020","imdbID":null,"anidbID":null,"rageID":"-1","comments":"0","downloads":"2","votes":{"upvotes":0,"downvotes":0}},{"ID":"570039","name":"Taxaquizzen.Julespecial.2012.DANiSH.PDTV.x264-SKANK","totalpart":"34","groupID":"141","size":"381901888","postdate":"2012-12-20 11:54:33","guid":"3daa4af75f973f30163c9b6fd4c048f8","fromname":"b","completion":"100","categoryID":"5020","imdbID":null,"anidbID":null,"rageID":"-1","comments":"0","downloads":"2","votes":{"upvotes":0,"downvotes":0}},{"ID":"570695","name":"Shanes.Jul.Hos.Timm.Vladimir.DANiSH.720p.HDTV.x264-TVBYEN","totalpart":"21","groupID":"141","size":"520988905","postdate":"2012-12-20 11:52:12","guid":"35dbc150c6e57a1b6d7f13f48fa0d7f9","fromname":"b","completion":"100","categoryID":"5020","imdbID":null,"anidbID":null,"rageID":"-1","comments":"0","downloads":"2","votes":{"upvotes":0,"downvotes":0}},{"ID":"570473","name":"Shanes.Eventyrlige.Jul.Hos.Tim.Vladimir.DANiSH.PDTV.x264-SKANK","totalpart":"24","groupID":"141","size":"221282364","postdate":"2012-12-20 11:49:28","guid":"9a498a48d7dea701dc70c30a00cb8609","fromname":"b","completion":"100","categoryID":"5020","imdbID":null,"anidbID":null,"rageID":"-1","comments":"0","downloads":"2","votes":{"upvotes":0,"downvotes":0}},{"ID":"570282","name":"Razzia.Foedevarekontrollen.Rykker.Ud.S03E04.DANiSH.720p.HDTV.x264-TVBYEN","totalpart":"27","groupID":"141","size":"841775058","postdate":"2012-12-20 11:47:14","guid":"e3e20e35872bfab2d04261ce126302c2","fromname":"b","completion":"100","categoryID":"5020","imdbID":null,"anidbID":null,"rageID":"-1","comments":"0","downloads":"2","votes":{"upvotes":0,"downvotes":0}},{"ID":"570469","name":"[HorribleSubs] Gintama - 138C [1080p]","totalpart":"24","groupID":"136","size":"690251755","postdate":"2012-12-20 11:46:51","guid":"e723f9e721c0e498d8cc4be37e62f28c","fromname":"Comfun","completion":"100","categoryID":"5070","imdbID":null,"anidbID":null,"rageID":"-1","comments":"0","downloads":"2","votes":{"upvotes":0,"downvotes":0}},{"ID":"570371","name":"Penge.Er.Problemet.Loest.DANiSH.PDTV.x264-SKANK","totalpart":"25","groupID":"141","size":"225910830","postdate":"2012-12-20 11:43:30","guid":"47d4bcc3374ca9be3cc57e18ea854050","fromname":"b","completion":"100","categoryID":"5020","imdbID":null,"anidbID":null,"rageID":"-1","comments":"0","downloads":"2","votes":{"upvotes":0,"downvotes":0}},{"ID":"570694","name":"Kontant.Platugler.Og.Paene.Drenge.DANiSH.PDTV.x264-SKANK","totalpart":"21","groupID":"141","size":"168458939","postdate":"2012-12-20 11:42:20","guid":"2dbcdab6df4c048e46d98b274a9269d1","fromname":"b","completion":"100","categoryID":"5020","imdbID":null,"anidbID":null,"rageID":"-1","comments":"0","downloads":"2","votes":{"upvotes":0,"downvotes":0}},{"ID":"569955","name":"Kender.Du.Typen.2012.12.19.DANiSH.PDTV.x264-RCDiVX","totalpart":"36","groupID":"141","size":"429664528","postdate":"2012-12-20 11:41:15","guid":"75ac52195fb6c8628ea079f920f5ea6e","fromname":"b","completion":"100","categoryID":"5020","imdbID":null,"anidbID":null,"rageID":"-1","comments":"0","downloads":"2","votes":{"upvotes":0,"downvotes":0}},{"ID":"570369","name":"[HorribleSubs] Gintama - 138C [720p]","totalpart":"25","groupID":"136","size":"410725865","postdate":"2012-12-20 11:40:23","guid":"1fafd143ff0e8391f261996cc4d3b12f","fromname":"Comfun","completion":"100","categoryID":"5070","imdbID":null,"anidbID":null,"rageID":"-1","comments":"0","downloads":"2","votes":{"upvotes":0,"downvotes":0}},{"ID":"570693","name":"Julestjerner.E19.DANiSH.PDTV.x264-SKANK","totalpart":"21","groupID":"141","size":"156963390","postdate":"2012-12-20 11:38:59","guid":"40375e9a6fad005f6848d1930546f705","fromname":"b","completion":"100","categoryID":"5020","imdbID":null,"anidbID":null,"rageID":"-1","comments":"0","downloads":"2","votes":{"upvotes":0,"downvotes":0}},{"ID":"598706","name":"P4r7FaLZ","totalpart":"1","groupID":"99","size":"326781","postdate":"2012-12-20 11:38:51","guid":"7d605326b5151b23e65e5d32fa9083ad","fromname":"#cripples ","completion":"100","categoryID":"5050","imdbID":null,"anidbID":null,"rageID":"-2","comments":"0","downloads":"2","votes":{"upvotes":0,"downvotes":0}},{"ID":"570232","name":"D1WpaLAY","totalpart":"28","groupID":"99","size":"2023681002","postdate":"2012-12-20 11:38:40","guid":"c03d4452af12574b1b91af7740e99223","fromname":"#cripples ","completion":"100","categoryID":"5050","imdbID":null,"anidbID":null,"rageID":"-1","comments":"0","downloads":"2","votes":{"upvotes":0,"downvotes":0}},{"ID":"570900","name":"Julestjerner.E19.DANiSH.720p.HDTV.x264-TVBYEN","totalpart":"19","groupID":"141","size":"417717740","postdate":"2012-12-20 11:36:43","guid":"9cd09293a485514c80235572c2179c74","fromname":"b","completion":"100","categoryID":"5020","imdbID":null,"anidbID":null,"rageID":"-1","comments":"0","downloads":"2","votes":{"upvotes":0,"downvotes":0}},{"ID":"570472","name":"Julestjerner.E18.DANiSH.PDTV.x264-RCDiVX","totalpart":"24","groupID":"141","size":"216677548","postdate":"2012-12-20 11:35:39","guid":"181ef6daafc2db92e8beead47e169b70","fromname":"b","completion":"100","categoryID":"5020","imdbID":null,"anidbID":null,"rageID":"-1","comments":"0","downloads":"2","votes":{"upvotes":0,"downvotes":0}},{"ID":"570368","name":"[HorribleSubs] Naruto Shippuuden - 294 [720p]","totalpart":"25","groupID":"136","size":"394130693","postdate":"2012-12-20 11:34:30","guid":"4c8de25d69f1d3f45e7bea6b5c3a18cb","fromname":"Comfun","completion":"100","categoryID":"5070","imdbID":null,"anidbID":null,"rageID":"-1","comments":"0","downloads":"2","votes":{"upvotes":0,"downvotes":0}},{"ID":"570537","name":"Julen.Tur.Retur.E3.DANiSH.PDTV.x264-SKANK","totalpart":"23","groupID":"141","size":"205412429","postdate":"2012-12-20 11:34:26","guid":"90991466929aa79addc8115622362f27","fromname":"b","completion":"100","categoryID":"5020","imdbID":null,"anidbID":null,"rageID":"-1","comments":"0","downloads":"2","votes":{"upvotes":0,"downvotes":0}},{"ID":"570316","name":"Jul.Paa.La.Glace.S01E02.DANiSH.PDTV.x264-SKANK","totalpart":"26","groupID":"141","size":"254142145","postdate":"2012-12-20 11:33:11","guid":"a21bf21deb258f58b0a8e43c475bad6e","fromname":"b","completion":"100","categoryID":"5020","imdbID":null,"anidbID":null,"rageID":"-1","comments":"0","downloads":"2","votes":{"upvotes":0,"downvotes":0}},{"ID":"570468","name":"[HorribleSubs] Naruto Shippuuden - 294 [1080p]","totalpart":"24","groupID":"136","size":"659724679","postdate":"2012-12-20 11:31:51","guid":"2e72318d1a4afe8ec8dc504d3f583f58","fromname":"Comfun","completion":"100","categoryID":"5070","imdbID":null,"anidbID":null,"rageID":"-1","comments":"0","downloads":"2","votes":{"upvotes":0,"downvotes":0}},{"ID":"570536","name":"Jul.Paa.La.Glace.S01E02.DANiSH.720p.HDTV.x264-TVBYEN","totalpart":"23","groupID":"141","size":"649737927","postdate":"2012-12-20 11:31:31","guid":"a984a8f5a6556664ebe6f80716fa9424","fromname":"b","completion":"100","categoryID":"5020","imdbID":null,"anidbID":null,"rageID":"-1","comments":"0","downloads":"2","votes":{"upvotes":0,"downvotes":0}},{"ID":"571066","name":"[HorribleSubs] Naruto Shippuuden - 294 [480p]","totalpart":"17","groupID":"136","size":"178724200","postdate":"2012-12-20 11:29:52","guid":"f38c5e09a06168bbee250df3dc3a1f0e","fromname":"Comfun","completion":"100","categoryID":"5070","imdbID":null,"anidbID":null,"rageID":"-1","comments":"0","downloads":"2","votes":{"upvotes":0,"downvotes":0}}] \ No newline at end of file diff --git a/NzbDrone.Core.Test/Files/RSS/nzbx_search.json b/NzbDrone.Core.Test/Files/RSS/nzbx_search.json new file mode 100644 index 000000000..f297dd649 --- /dev/null +++ b/NzbDrone.Core.Test/Files/RSS/nzbx_search.json @@ -0,0 +1 @@ +[{"name":"30.Rock.S06E06E07.HDTV.XviD-LOL","fromname":"teevee@4u.tv (teevee)","size":418067671,"groupid":4,"categoryid":5030,"totalpart":36,"completion":100,"rageid":"-1","imdbid":"","comments":"0","guid":"97be14dbf1776eec4fb8f2bb835935c0","adddate":1355343562,"postdate":1328839361,"downloads":"0","votes":{"upvotes":0,"downvotes":0},"nzb":"https:\/\/nzbx.co\/nzb?97be14dbf1776eec4fb8f2bb835935c0*|*30.Rock.S06E06E07.HDTV.XviD-LOL"},{"name":"30.Rock.S05D3.NTSC.DVDR-ToF","fromname":"Yenc@powerpost.org (Yenc-PowerPost)","size":5059073975,"groupid":3,"categoryid":5030,"totalpart":107,"completion":100,"rageid":"-1","imdbid":"0496424","comments":"0","guid":"69046989b4940da80465cfd85bace809","adddate":1355343420,"postdate":1322796095,"downloads":"0","votes":{"upvotes":0,"downvotes":0},"nzb":"https:\/\/nzbx.co\/nzb?69046989b4940da80465cfd85bace809*|*30.Rock.S05D3.NTSC.DVDR-ToF"},{"name":"30.Rock.S05E20E21.UNRATED.DVDRip.XviD-CLUE","fromname":"teevee@4u.tv (teevee)","size":412241543,"groupid":20,"categoryid":5030,"totalpart":42,"completion":100,"rageid":"-1","imdbid":"","comments":"0","guid":"8a166c293e4f82d5d3062f4d0a2ddfb2","adddate":1355343470,"postdate":1321414353,"downloads":"0","votes":{"upvotes":0,"downvotes":0},"nzb":"https:\/\/nzbx.co\/nzb?8a166c293e4f82d5d3062f4d0a2ddfb2*|*30.Rock.S05E20E21.UNRATED.DVDRip.XviD-CLUE"},{"name":"30.Rock.S05E20E21.HDTV.XviD-LOL","fromname":"teevee@4u.tv (teevee)","size":415387086,"groupid":20,"categoryid":5030,"totalpart":35,"completion":100,"rageid":"-1","imdbid":"","comments":"0","guid":"8e94c7e6f749748e62083b1b059719ab","adddate":1355343572,"postdate":1303441440,"downloads":"0","votes":{"upvotes":0,"downvotes":0},"nzb":"https:\/\/nzbx.co\/nzb?8e94c7e6f749748e62083b1b059719ab*|*30.Rock.S05E20E21.HDTV.XviD-LOL"},{"name":"30.Rock.S01E18.DVDRip.XviD-TOPAZ-1","fromname":"Fake@address.com (tvfreak)","size":220451126,"groupid":30,"categoryid":5030,"totalpart":30,"completion":100,"rageid":"-1","imdbid":"0496424","comments":"0","guid":"378b618e2ece64e28fd5c727459cae6c","adddate":1355343614,"postdate":1245214948,"downloads":"0","votes":{"upvotes":0,"downvotes":0},"nzb":"https:\/\/nzbx.co\/nzb?378b618e2ece64e28fd5c727459cae6c*|*30.Rock.S01E18.DVDRip.XviD-TOPAZ-1"},{"name":"30.Rock.S01E17.DVDRip.XviD-TOPAZ-1-2","fromname":"Fake@address.com (tvfreak)","size":223429918,"groupid":30,"categoryid":5030,"totalpart":30,"completion":100,"rageid":"-1","imdbid":"0496424","comments":"0","guid":"29d8cb3b4644f0c5fd893012516bf7fe","adddate":1355343614,"postdate":1245208368,"downloads":"0","votes":{"upvotes":0,"downvotes":0},"nzb":"https:\/\/nzbx.co\/nzb?29d8cb3b4644f0c5fd893012516bf7fe*|*30.Rock.S01E17.DVDRip.XviD-TOPAZ-1-2"},{"name":"30.Rock.S01E15.DVDRip.XviD-TOPAZ-1-2","fromname":"Fake@address.com (tvfreak)","size":222388727,"groupid":30,"categoryid":5030,"totalpart":30,"completion":100,"rageid":"-1","imdbid":"0496424","comments":"0","guid":"74b34eeeaf1074545e370e3b4b780678","adddate":1355343614,"postdate":1245198206,"downloads":"0","votes":{"upvotes":0,"downvotes":0},"nzb":"https:\/\/nzbx.co\/nzb?74b34eeeaf1074545e370e3b4b780678*|*30.Rock.S01E15.DVDRip.XviD-TOPAZ-1-2"},{"name":"30.Rock.S01E14.DVDRip.XviD-TOPAZ-1-2","fromname":"Fake@address.com (tvfreak)","size":220658326,"groupid":30,"categoryid":5030,"totalpart":30,"completion":100,"rageid":"-1","imdbid":"0496424","comments":"0","guid":"242d5c2cbd42bede6e509a10c7fe70b7","adddate":1355343613,"postdate":1245169691,"downloads":"0","votes":{"upvotes":0,"downvotes":0},"nzb":"https:\/\/nzbx.co\/nzb?242d5c2cbd42bede6e509a10c7fe70b7*|*30.Rock.S01E14.DVDRip.XviD-TOPAZ-1-2"},{"name":"30.Rock.S01E13.DVDRip.XviD-TOPAZ-1-2","fromname":"Fake@address.com (tvfreak)","size":219228518,"groupid":30,"categoryid":5030,"totalpart":30,"completion":100,"rageid":"-1","imdbid":"0496424","comments":"0","guid":"d2863a994dd5850a46d58c3ddd76493f","adddate":1355343613,"postdate":1245165896,"downloads":"0","votes":{"upvotes":0,"downvotes":0},"nzb":"https:\/\/nzbx.co\/nzb?d2863a994dd5850a46d58c3ddd76493f*|*30.Rock.S01E13.DVDRip.XviD-TOPAZ-1-2"},{"name":"30.Rock.S01E12.DVDRip.XviD-TOPAZ-1-2","fromname":"Fake@address.com (tvfreak)","size":220824306,"groupid":30,"categoryid":5030,"totalpart":30,"completion":100,"rageid":"-1","imdbid":"0496424","comments":"0","guid":"97224ab996b5af33148372e0610e5f11","adddate":1355343613,"postdate":1245161926,"downloads":"0","votes":{"upvotes":0,"downvotes":0},"nzb":"https:\/\/nzbx.co\/nzb?97224ab996b5af33148372e0610e5f11*|*30.Rock.S01E12.DVDRip.XviD-TOPAZ-1-2"},{"name":"30.Rock.S01E11.DVDRip.XviD-TOPAZ-1-2","fromname":"Fake@address.com (tvfreak)","size":221448175,"groupid":30,"categoryid":5030,"totalpart":30,"completion":100,"rageid":"-1","imdbid":"0496424","comments":"0","guid":"987ea34ad634441c44e38b8e772f1297","adddate":1355343613,"postdate":1245149432,"downloads":"0","votes":{"upvotes":0,"downvotes":0},"nzb":"https:\/\/nzbx.co\/nzb?987ea34ad634441c44e38b8e772f1297*|*30.Rock.S01E11.DVDRip.XviD-TOPAZ-1-2"},{"name":"30.Rock.S01E10.DVDRip.XviD-TOPAZ-1-2","fromname":"Fake@address.com (tvfreak)","size":223384550,"groupid":30,"categoryid":5030,"totalpart":30,"completion":100,"rageid":"-1","imdbid":"0496424","comments":"0","guid":"3899c36f52b728a76feb51c3c5d3147d","adddate":1355343612,"postdate":1245145627,"downloads":"0","votes":{"upvotes":0,"downvotes":0},"nzb":"https:\/\/nzbx.co\/nzb?3899c36f52b728a76feb51c3c5d3147d*|*30.Rock.S01E10.DVDRip.XviD-TOPAZ-1-2"},{"name":"30.Rock.S01E09.DVDRip.XviD-TOPAZ-1-2","fromname":"Fake@address.com (tvfreak)","size":221805432,"groupid":30,"categoryid":5030,"totalpart":30,"completion":100,"rageid":"-1","imdbid":"0496424","comments":"0","guid":"15b6884aba3108201be2b83cca91de76","adddate":1355343612,"postdate":1245141859,"downloads":"0","votes":{"upvotes":0,"downvotes":0},"nzb":"https:\/\/nzbx.co\/nzb?15b6884aba3108201be2b83cca91de76*|*30.Rock.S01E09.DVDRip.XviD-TOPAZ-1-2"},{"name":"30.Rock.S01E08.DVDRip.XviD-TOPAZ-1-2","fromname":"Fake@address.com (tvfreak)","size":219318508,"groupid":30,"categoryid":5030,"totalpart":30,"completion":100,"rageid":"-1","imdbid":"0496424","comments":"0","guid":"9c42307e16fbad7f6baa5ad712c59ac4","adddate":1355343612,"postdate":1245138137,"downloads":"0","votes":{"upvotes":0,"downvotes":0},"nzb":"https:\/\/nzbx.co\/nzb?9c42307e16fbad7f6baa5ad712c59ac4*|*30.Rock.S01E08.DVDRip.XviD-TOPAZ-1-2"},{"name":"30.Rock.S01E07.DVDRip.XviD-TOPAZ-1-2","fromname":"Fake@address.com (tvfreak)","size":220452398,"groupid":30,"categoryid":5030,"totalpart":30,"completion":100,"rageid":"-1","imdbid":"0496424","comments":"0","guid":"858ea848b134728e00a4303dad110b4b","adddate":1355343612,"postdate":1245134457,"downloads":"0","votes":{"upvotes":0,"downvotes":0},"nzb":"https:\/\/nzbx.co\/nzb?858ea848b134728e00a4303dad110b4b*|*30.Rock.S01E07.DVDRip.XviD-TOPAZ-1-2"},{"name":"30.Rock.S01E05.DVDRip.XviD-TOPAZ-1-2","fromname":"Fake@address.com (tvfreak)","size":219699290,"groupid":30,"categoryid":5030,"totalpart":30,"completion":100,"rageid":"-1","imdbid":"0496424","comments":"0","guid":"6909eb885f952a45b410784b9f019a68","adddate":1355343611,"postdate":1245126058,"downloads":"0","votes":{"upvotes":0,"downvotes":0},"nzb":"https:\/\/nzbx.co\/nzb?6909eb885f952a45b410784b9f019a68*|*30.Rock.S01E05.DVDRip.XviD-TOPAZ-1-2"},{"name":"30.Rock.S01E04.DVDRip.XviD-TOPAZ-1-2","fromname":"Fake@address.com (tvfreak)","size":223961432,"groupid":30,"categoryid":5030,"totalpart":30,"completion":100,"rageid":"-1","imdbid":"0496424","comments":"0","guid":"f7253178dfb7f9b09010b984d5256745","adddate":1355343611,"postdate":1245121798,"downloads":"0","votes":{"upvotes":0,"downvotes":0},"nzb":"https:\/\/nzbx.co\/nzb?f7253178dfb7f9b09010b984d5256745*|*30.Rock.S01E04.DVDRip.XviD-TOPAZ-1-2"},{"name":"30.Rock.S01E17.DVDRip.XviD-TOPAZ-1","fromname":"this.is.my@ddress.com","size":222713068,"groupid":99,"categoryid":5030,"totalpart":30,"completion":100,"rageid":"-1","imdbid":"0496424","comments":"0","guid":"f423180d9480dc933ecb8d8832a15b44","adddate":1355343614,"postdate":1231999375,"downloads":"0","votes":{"upvotes":0,"downvotes":0},"nzb":"https:\/\/nzbx.co\/nzb?f423180d9480dc933ecb8d8832a15b44*|*30.Rock.S01E17.DVDRip.XviD-TOPAZ-1"},{"name":"30.Rock.S01E15.DVDRip.XviD-TOPAZ-1","fromname":"this.is.my@ddress.com","size":222002757,"groupid":99,"categoryid":5030,"totalpart":30,"completion":100,"rageid":"-1","imdbid":"0496424","comments":"0","guid":"1238c0248278b4707ee62ebfd8a8d488","adddate":1355343614,"postdate":1231999306,"downloads":"0","votes":{"upvotes":0,"downvotes":0},"nzb":"https:\/\/nzbx.co\/nzb?1238c0248278b4707ee62ebfd8a8d488*|*30.Rock.S01E15.DVDRip.XviD-TOPAZ-1"},{"name":"30.Rock.S01E14.DVDRip.XviD-TOPAZ-1","fromname":"this.is.my@ddress.com","size":219964857,"groupid":99,"categoryid":5030,"totalpart":30,"completion":100,"rageid":"-1","imdbid":"0496424","comments":"0","guid":"828ce2d881b010146c40918023956c5f","adddate":1355343613,"postdate":1231999280,"downloads":"0","votes":{"upvotes":0,"downvotes":0},"nzb":"https:\/\/nzbx.co\/nzb?828ce2d881b010146c40918023956c5f*|*30.Rock.S01E14.DVDRip.XviD-TOPAZ-1"},{"name":"30.Rock.S01E13.DVDRip.XviD-TOPAZ-1","fromname":"this.is.my@ddress.com","size":217989951,"groupid":99,"categoryid":5030,"totalpart":30,"completion":100,"rageid":"-1","imdbid":"0496424","comments":"0","guid":"dca6960aadbc5a1770e7542feef1c462","adddate":1355343613,"postdate":1231999255,"downloads":"0","votes":{"upvotes":0,"downvotes":0},"nzb":"https:\/\/nzbx.co\/nzb?dca6960aadbc5a1770e7542feef1c462*|*30.Rock.S01E13.DVDRip.XviD-TOPAZ-1"},{"name":"30.Rock.S01E12.DVDRip.XviD-TOPAZ-1","fromname":"this.is.my@ddress.com","size":220082930,"groupid":99,"categoryid":5030,"totalpart":30,"completion":100,"rageid":"-1","imdbid":"0496424","comments":"0","guid":"e3655b0e279551ed16b914614671766e","adddate":1355343613,"postdate":1231999225,"downloads":"0","votes":{"upvotes":0,"downvotes":0},"nzb":"https:\/\/nzbx.co\/nzb?e3655b0e279551ed16b914614671766e*|*30.Rock.S01E12.DVDRip.XviD-TOPAZ-1"},{"name":"30.Rock.S01E11.DVDRip.XviD-TOPAZ-1","fromname":"this.is.my@ddress.com","size":220891274,"groupid":99,"categoryid":5030,"totalpart":30,"completion":100,"rageid":"-1","imdbid":"0496424","comments":"0","guid":"c525f6a40ab77d8771afe7faebefa542","adddate":1355343613,"postdate":1231999180,"downloads":"0","votes":{"upvotes":0,"downvotes":0},"nzb":"https:\/\/nzbx.co\/nzb?c525f6a40ab77d8771afe7faebefa542*|*30.Rock.S01E11.DVDRip.XviD-TOPAZ-1"},{"name":"30.Rock.S01E10.DVDRip.XviD-TOPAZ-1","fromname":"this.is.my@ddress.com","size":222013143,"groupid":99,"categoryid":5030,"totalpart":30,"completion":100,"rageid":"-1","imdbid":"0496424","comments":"0","guid":"7d0b093823dbfa2574da8a3a691e7488","adddate":1355343613,"postdate":1231999139,"downloads":"0","votes":{"upvotes":0,"downvotes":0},"nzb":"https:\/\/nzbx.co\/nzb?7d0b093823dbfa2574da8a3a691e7488*|*30.Rock.S01E10.DVDRip.XviD-TOPAZ-1"},{"name":"30.Rock.S01E09.DVDRip.XviD-TOPAZ-1","fromname":"this.is.my@ddress.com","size":220574030,"groupid":99,"categoryid":5030,"totalpart":30,"completion":100,"rageid":"-1","imdbid":"0496424","comments":"0","guid":"1c3099b66a3ceddc9da4693852abf906","adddate":1355343612,"postdate":1231999105,"downloads":"0","votes":{"upvotes":0,"downvotes":0},"nzb":"https:\/\/nzbx.co\/nzb?1c3099b66a3ceddc9da4693852abf906*|*30.Rock.S01E09.DVDRip.XviD-TOPAZ-1"},{"name":"30.Rock.S01E08.DVDRip.XviD-TOPAZ-1","fromname":"this.is.my@ddress.com","size":218930034,"groupid":99,"categoryid":5030,"totalpart":30,"completion":100,"rageid":"-1","imdbid":"0496424","comments":"0","guid":"8902d79b62f121bcab3dca4db939cd52","adddate":1355343612,"postdate":1231999076,"downloads":"0","votes":{"upvotes":0,"downvotes":0},"nzb":"https:\/\/nzbx.co\/nzb?8902d79b62f121bcab3dca4db939cd52*|*30.Rock.S01E08.DVDRip.XviD-TOPAZ-1"},{"name":"30.Rock.S01E07.DVDRip.XviD-TOPAZ-1","fromname":"this.is.my@ddress.com","size":219941852,"groupid":99,"categoryid":5030,"totalpart":30,"completion":100,"rageid":"-1","imdbid":"0496424","comments":"0","guid":"a6f992deb279d52b961edf12f8584cad","adddate":1355343612,"postdate":1231999051,"downloads":"0","votes":{"upvotes":0,"downvotes":0},"nzb":"https:\/\/nzbx.co\/nzb?a6f992deb279d52b961edf12f8584cad*|*30.Rock.S01E07.DVDRip.XviD-TOPAZ-1"},{"name":"30.Rock.S01E05.DVDRip.XviD-TOPAZ-1","fromname":"this.is.my@ddress.com","size":219357068,"groupid":99,"categoryid":5030,"totalpart":30,"completion":100,"rageid":"-1","imdbid":"0496424","comments":"0","guid":"36c12549c8d8d5663e0da19604529f07","adddate":1355343612,"postdate":1231998978,"downloads":"0","votes":{"upvotes":0,"downvotes":0},"nzb":"https:\/\/nzbx.co\/nzb?36c12549c8d8d5663e0da19604529f07*|*30.Rock.S01E05.DVDRip.XviD-TOPAZ-1"},{"name":"30.Rock.S01E04.DVDRip.XviD-TOPAZ-1","fromname":"this.is.my@ddress.com","size":223360704,"groupid":99,"categoryid":5030,"totalpart":30,"completion":100,"rageid":"-1","imdbid":"0496424","comments":"0","guid":"50c39c272b258cd65782fc1c2b8063ca","adddate":1355343611,"postdate":1231998931,"downloads":"0","votes":{"upvotes":0,"downvotes":0},"nzb":"https:\/\/nzbx.co\/nzb?50c39c272b258cd65782fc1c2b8063ca*|*30.Rock.S01E04.DVDRip.XviD-TOPAZ-1"},{"name":"30.Rock.S01E03.DVDRip.XviD-TOPAZ-1","fromname":"this.is.my@ddress.com","size":221003411,"groupid":99,"categoryid":5030,"totalpart":30,"completion":100,"rageid":"-1","imdbid":"0496424","comments":"0","guid":"eaed313b2e5e00d264189d74a04754d8","adddate":1355343611,"postdate":1231998890,"downloads":"0","votes":{"upvotes":0,"downvotes":0},"nzb":"https:\/\/nzbx.co\/nzb?eaed313b2e5e00d264189d74a04754d8*|*30.Rock.S01E03.DVDRip.XviD-TOPAZ-1"}] \ No newline at end of file diff --git a/NzbDrone.Core.Test/IndexerTests.cs b/NzbDrone.Core.Test/IndexerTests.cs index 09c26e1d2..cd50d82c7 100644 --- a/NzbDrone.Core.Test/IndexerTests.cs +++ b/NzbDrone.Core.Test/IndexerTests.cs @@ -229,6 +229,38 @@ namespace NzbDrone.Core.Test parseResults[0].Size.Should().Be(236820890); } + [Test] + public void size_nzbx_recent() + { + WithConfiguredIndexers(); + + Mocker.GetMock() + .Setup(h => h.DownloadString("https://nzbx.co/api/recent?category=tv", It.IsAny())) + .Returns(File.ReadAllText(".\\Files\\Rss\\SizeParsing\\nzbx_recent.json")); + + //Act + var parseResults = Mocker.Resolve().FetchRss(); + + parseResults.Should().HaveCount(1); + parseResults[0].Size.Should().Be(890190951); + } + + [Test] + public void size_nzbx_search() + { + WithConfiguredIndexers(); + + Mocker.GetMock() + .Setup(h => h.DownloadString("https://nzbx.co/api/search?q=30+Rock+S01E01", It.IsAny())) + .Returns(File.ReadAllText(".\\Files\\Rss\\SizeParsing\\nzbx_search.json")); + + //Act + var parseResults = Mocker.Resolve().FetchEpisode("30 Rock", 1, 1); + + parseResults.Should().HaveCount(1); + parseResults[0].Size.Should().Be(418067671); + } + [Test] public void Server_Unavailable_503_should_not_log_exception() { @@ -488,5 +520,39 @@ namespace NzbDrone.Core.Test parseResults.Should().HaveCount(1); parseResults[0].NzbInfoUrl.Should().Be("http://omgwtfnzbs.com/details.php?id=OAl4g"); } + + [Test] + public void nzbx_parse_recent() + { + WithConfiguredIndexers(); + + Mocker.GetMock() + .Setup(h => h.DownloadString(It.IsAny(), It.IsAny())) + .Returns(File.ReadAllText(".\\Files\\Rss\\nzbx_recent.json")); + + var parseResults = Mocker.Resolve().FetchRss(); + + parseResults.Should().NotBeEmpty(); + parseResults.Should().OnlyContain(s => s.Indexer == "nzbx"); + parseResults.Should().OnlyContain(s => !String.IsNullOrEmpty(s.OriginalString)); + parseResults.Should().OnlyContain(s => s.Age >= 0); + } + + [Test] + public void nzbx_parse_search() + { + WithConfiguredIndexers(); + + Mocker.GetMock() + .Setup(h => h.DownloadString(It.IsAny(), It.IsAny())) + .Returns(File.ReadAllText(".\\Files\\Rss\\nzbx_search.json")); + + var parseResults = Mocker.Resolve().FetchEpisode("30 Rock", 1, 1); + + parseResults.Should().NotBeEmpty(); + parseResults.Should().OnlyContain(s => s.Indexer == "nzbx"); + parseResults.Should().OnlyContain(s => !String.IsNullOrEmpty(s.OriginalString)); + parseResults.Should().OnlyContain(s => s.Age >= 0); + } } } \ No newline at end of file diff --git a/NzbDrone.Core.Test/NzbDrone.Core.Test.csproj b/NzbDrone.Core.Test/NzbDrone.Core.Test.csproj index f3aa10b36..eab2fe1bc 100644 --- a/NzbDrone.Core.Test/NzbDrone.Core.Test.csproj +++ b/NzbDrone.Core.Test/NzbDrone.Core.Test.csproj @@ -287,6 +287,12 @@ Always + + Always + + + Always + Always @@ -367,6 +373,12 @@ Designer Always + + Always + + + Always + Always diff --git a/NzbDrone.Core/CentralDispatch.cs b/NzbDrone.Core/CentralDispatch.cs index cbf11b4b3..754441764 100644 --- a/NzbDrone.Core/CentralDispatch.cs +++ b/NzbDrone.Core/CentralDispatch.cs @@ -93,6 +93,7 @@ namespace NzbDrone.Core Kernel.Bind().To(); Kernel.Bind().To(); Kernel.Bind().To(); + Kernel.Bind().To(); var indexers = Kernel.GetAll(); Kernel.Get().InitializeIndexers(indexers.ToList()); diff --git a/NzbDrone.Core/Helpers/Converters/EpochDateTimeConverter.cs b/NzbDrone.Core/Helpers/Converters/EpochDateTimeConverter.cs new file mode 100644 index 000000000..227e20991 --- /dev/null +++ b/NzbDrone.Core/Helpers/Converters/EpochDateTimeConverter.cs @@ -0,0 +1,50 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; + +namespace NzbDrone.Core.Helpers.Converters +{ + public class EpochDateTimeConverter : DateTimeConverterBase + { + public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) + { + long ticks; + if (value is DateTime) + { + var epoch = new DateTime(1970, 1, 1); + var delta = ((DateTime)value) - epoch; + if (delta.TotalSeconds < 0) + { + throw new ArgumentOutOfRangeException("value", + "Unix epoc starts January 1st, 1970"); + } + ticks = (long)delta.TotalSeconds; + } + else + { + throw new Exception("Expected date object value."); + } + writer.WriteValue(ticks); + } + + public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) + { + if (reader.TokenType != JsonToken.Integer) + { + throw new Exception( + String.Format("Unexpected token parsing date. Expected Integer, got {0}.", + reader.TokenType)); + } + + var ticks = (long)reader.Value; + + var date = new DateTime(1970, 1, 1); + date = date.AddSeconds(ticks); + + return date; + } + } +} diff --git a/NzbDrone.Core/Model/Nzbx/NzbxRecentItem.cs b/NzbDrone.Core/Model/Nzbx/NzbxRecentItem.cs new file mode 100644 index 000000000..d07dcf97d --- /dev/null +++ b/NzbDrone.Core/Model/Nzbx/NzbxRecentItem.cs @@ -0,0 +1,47 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace NzbDrone.Core.Model.Nzbx +{ + public class NzbxRecentItem + { + //"ID": "571777", + //"name": "Cak4QCQG", + //"totalpart": "10", + //"groupID": "99", + //"size": "890190951", + //"postdate": "2012-12-20 18:14:13", + //"guid": "48714abb00a095e00fbcbe161253abf6", + //"fromname": "#cripples ", + //"completion": "100", + //"categoryID": "5050", + //"imdbID": null, + //"anidbID": null, + //"rageID": "-1", + //"comments": "0", + //"downloads": "3", + //"votes": { + // "upvotes": 0, + // "downvotes": 0 + //} + + public int Id { get; set; } + public string Name { get; set; } + public int TotalPart { get; set; } + public int GroupId { get; set; } + public long Size { get; set; } + public DateTime PostDate { get; set; } + public string Guid { get; set; } + public string FromName { get; set; } + public int Completion { get; set; } + public int CategoryId { get; set; } + public string ImdbId { get; set; } + public string AnidbId { get; set; } + public int RageId { get; set; } + public int Comments { get; set; } + public int Downloads { get; set; } + public NzbxVotesModel Votes { get; set; } + } +} diff --git a/NzbDrone.Core/Model/Nzbx/NzbxSearchItem.cs b/NzbDrone.Core/Model/Nzbx/NzbxSearchItem.cs new file mode 100644 index 000000000..f2464f1c5 --- /dev/null +++ b/NzbDrone.Core/Model/Nzbx/NzbxSearchItem.cs @@ -0,0 +1,56 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using Newtonsoft.Json; +using NzbDrone.Core.Helpers.Converters; + +namespace NzbDrone.Core.Model.Nzbx +{ + public class NzbxSearchItem + { + //"name": "30.Rock.S06E06E07.HDTV.XviD-LOL", + //"fromname": "teevee@4u.tv (teevee)", + //"size": 418067671, + //"groupid": 4, + //"categoryid": 5030, + //"totalpart": 36, + //"completion": 100, + //"rageid": "-1", + //"imdbid": "", + //"comments": "0", + //"guid": "97be14dbf1776eec4fb8f2bb835935c0", + //"adddate": 1355343562, + //"postdate": 1328839361, + //"downloads": "0", + //"votes": { + + // "upvotes": 0, + // "downvotes": 0 + + //}, + //"nzb": "https://nzbx.co/nzb?97be14dbf1776eec4fb8f2bb835935c0*|*30.Rock.S06E06E07.HDTV.XviD-LOL + + public string Name { get; set; } + public int TotalPart { get; set; } + public int GroupId { get; set; } + public long Size { get; set; } + + [JsonConverter(typeof(EpochDateTimeConverter))] + public DateTime AddDate { get; set; } + + [JsonConverter(typeof(EpochDateTimeConverter))] + public DateTime PostDate { get; set; } + + public string Guid { get; set; } + public string FromName { get; set; } + public int Completion { get; set; } + public int CategoryId { get; set; } + public string ImdbId { get; set; } + public int RageId { get; set; } + public int Comments { get; set; } + public int Downloads { get; set; } + public NzbxVotesModel Votes { get; set; } + public string Nzb { get; set; } + } +} diff --git a/NzbDrone.Core/Model/Nzbx/NzbxVotesModel.cs b/NzbDrone.Core/Model/Nzbx/NzbxVotesModel.cs new file mode 100644 index 000000000..9563a5213 --- /dev/null +++ b/NzbDrone.Core/Model/Nzbx/NzbxVotesModel.cs @@ -0,0 +1,13 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace NzbDrone.Core.Model.Nzbx +{ + public class NzbxVotesModel + { + public int Up { get; set; } + public int Down { get; set; } + } +} diff --git a/NzbDrone.Core/NzbDrone.Core.csproj b/NzbDrone.Core/NzbDrone.Core.csproj index 402f146d9..3c0eebfe4 100644 --- a/NzbDrone.Core/NzbDrone.Core.csproj +++ b/NzbDrone.Core/NzbDrone.Core.csproj @@ -258,6 +258,7 @@ + @@ -277,6 +278,9 @@ + + + @@ -312,6 +316,7 @@ + diff --git a/NzbDrone.Core/Providers/Indexer/IndexerBase.cs b/NzbDrone.Core/Providers/Indexer/IndexerBase.cs index c6c467b1b..af2d363d1 100644 --- a/NzbDrone.Core/Providers/Indexer/IndexerBase.cs +++ b/NzbDrone.Core/Providers/Indexer/IndexerBase.cs @@ -15,7 +15,7 @@ namespace NzbDrone.Core.Providers.Indexer public abstract class IndexerBase { protected readonly Logger _logger; - private readonly HttpProvider _httpProvider; + protected readonly HttpProvider _httpProvider; protected readonly ConfigProvider _configProvider; protected static readonly Regex TitleSearchRegex = new Regex(@"[\W]", RegexOptions.IgnoreCase | RegexOptions.Compiled); @@ -170,7 +170,7 @@ namespace NzbDrone.Core.Providers.Indexer } - private List Fetch(IEnumerable urls) + protected virtual List Fetch(IEnumerable urls) { var result = new List(); diff --git a/NzbDrone.Core/Providers/Indexer/Nzbx.cs b/NzbDrone.Core/Providers/Indexer/Nzbx.cs new file mode 100644 index 000000000..4feb142ef --- /dev/null +++ b/NzbDrone.Core/Providers/Indexer/Nzbx.cs @@ -0,0 +1,232 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Net; +using System.ServiceModel.Syndication; +using System.Text; +using System.Text.RegularExpressions; +using Newtonsoft.Json; +using Ninject; +using NzbDrone.Common; +using NzbDrone.Core.Model; +using NzbDrone.Core.Model.Nzbx; +using NzbDrone.Core.Providers.Core; + +namespace NzbDrone.Core.Providers.Indexer +{ + class Nzbx : IndexerBase + { + [Inject] + public Nzbx(HttpProvider httpProvider, ConfigProvider configProvider) + : base(httpProvider, configProvider) + { + } + + public override string Name + { + get { return "nzbx"; } + } + + protected override string[] Urls + { + get + { + return new string[] + { + String.Format("https://nzbx.co/api/recent?category=tv") + }; + } + } + + public override bool IsConfigured + { + get + { + return true; + //return !string.IsNullOrWhiteSpace(_configProvider.OmgwtfnzbsUsername) && + // !string.IsNullOrWhiteSpace(_configProvider.OmgwtfnzbsApiKey); + } + } + + protected override IList GetEpisodeSearchUrls(string seriesTitle, int seasonNumber, int episodeNumber) + { + var searchUrls = new List(); + + searchUrls.Add(String.Format("https://nzbx.co/api/search?q={0}+S{1:00}E{2:00}", seriesTitle, seasonNumber, episodeNumber)); + + return searchUrls; + } + + protected override IList GetDailyEpisodeSearchUrls(string seriesTitle, DateTime date) + { + var searchUrls = new List(); + + searchUrls.Add(String.Format("https://nzbx.co/api/search?q={0}+{1:yyyy MM dd}", seriesTitle, date)); + + return searchUrls; + } + + protected override IList GetSeasonSearchUrls(string seriesTitle, int seasonNumber) + { + var searchUrls = new List(); + + searchUrls.Add(String.Format("https://nzbx.co/api/search?q={0}+S{1:00}", seriesTitle, seasonNumber)); + + return searchUrls; + } + + protected override IList GetPartialSeasonSearchUrls(string seriesTitle, int seasonNumber, int episodeWildcard) + { + var searchUrls = new List(); + + searchUrls.Add(String.Format("https://nzbx.co/api/search?q={0}+S{1:00}E{2}", seriesTitle, seasonNumber, episodeWildcard)); + + return searchUrls; + } + + protected override string NzbDownloadUrl(SyndicationItem item) + { + throw new NotImplementedException(); + } + + protected override string NzbInfoUrl(SyndicationItem item) + { + throw new NotImplementedException(); + } + + protected override EpisodeParseResult CustomParser(SyndicationItem item, EpisodeParseResult currentResult) + { + throw new NotImplementedException(); + } + + public override IList FetchRss() + { + _logger.Debug("Fetching feeds from " + Name); + + var result = new List(); + + if (!IsConfigured) + { + _logger.Warn("Indexer '{0}' isn't configured correctly. please reconfigure the indexer in settings page.", Name); + return result; + } + + foreach (var url in Urls) + { + var response = Download(url); + + if (response != null) + { + var feed = JsonConvert.DeserializeObject>(response); + + foreach (var item in feed) + { + try + { + var episodeParseResult = Parser.ParseTitle(item.Name); + if (episodeParseResult != null) + { + episodeParseResult.Age = DateTime.Now.Date.Subtract(item.PostDate).Days; + episodeParseResult.OriginalString = item.Name; + episodeParseResult.SceneSource = true; + episodeParseResult.NzbUrl = String.Format("http://nzbx.co/nzb?{0}", item.Guid); + episodeParseResult.Indexer = Name; + episodeParseResult.Size = item.Size; + + result.Add(episodeParseResult); + } + } + catch (Exception itemEx) + { + itemEx.Data.Add("FeedUrl", url); + itemEx.Data.Add("Item", item.Name); + _logger.ErrorException("An error occurred while processing feed item", itemEx); + } + + } + } + } + + _logger.Debug("Finished processing feeds from " + Name); + return result; + } + + protected override List Fetch(IEnumerable urls) + { + var result = new List(); + + if (!IsConfigured) + { + _logger.Warn("Indexer '{0}' isn't configured correctly. please reconfigure the indexer in settings page.", Name); + return result; + } + + foreach (var url in urls) + { + var response = Download(url); + + if(response != null) + { + var feed = JsonConvert.DeserializeObject>(response); + + foreach (var item in feed) + { + try + { + var episodeParseResult = Parser.ParseTitle(item.Name); + if (episodeParseResult != null) + { + episodeParseResult.Age = DateTime.Now.Date.Subtract(item.PostDate).Days; + episodeParseResult.OriginalString = item.Name; + episodeParseResult.SceneSource = true; + episodeParseResult.NzbUrl = item.Nzb; + episodeParseResult.Indexer = Name; + episodeParseResult.Size = item.Size; + + result.Add(episodeParseResult); + } + } + catch (Exception itemEx) + { + itemEx.Data.Add("FeedUrl", url); + itemEx.Data.Add("Item", item.Name); + _logger.ErrorException("An error occurred while processing feed item", itemEx); + } + + } + } + } + + return result; + } + + private string Download(string url) + { + try + { + _logger.Trace("Downloading RSS " + url); + + return _httpProvider.DownloadString(url, Credentials); + } + catch (WebException webException) + { + if (webException.Message.Contains("503")) + { + _logger.Warn("{0} server is currently unavailable.{1} {2}", Name, url, webException.Message); + } + else + { + webException.Data.Add("FeedUrl", url); + _logger.ErrorException("An error occurred while processing feed. " + url, webException); + } + } + catch (Exception feedEx) + { + feedEx.Data.Add("FeedUrl", url); + _logger.ErrorException("An error occurred while processing feed. " + url, feedEx); + } + + return null; + } + } +}