Browse Source
Add newznab tests _title_and_url, get_size_uid, parse_ids, parse_pub_date and caps. Add FakeNewznabProvider. Suppress insignificant test warnings.tags/release_0.18.9^2
committed by
JackDandy
15 changed files with 973 additions and 53 deletions
After Width: | Height: | Size: 612 B |
@ -0,0 +1,67 @@ |
|||
<?xml version="1.0" encoding="utf-8"?> |
|||
<caps> |
|||
<server appversion="0.0.1" version="0.1" title="NZBHydra" email="theotherp@gmx.de" url="https://github.com/theotherp/nzbhydra" /> |
|||
<limits max="100" default="100" /> |
|||
<retention days="2500" /> |
|||
<searching> |
|||
<search available="yes" supportedParams="q" /> |
|||
<tv-search available="yes" supportedParams="q,rid,tvdbid,season,ep" /> |
|||
<movie-search available="yes" supportedParams="q,imdbid" /> |
|||
<audio-search available="no" /> |
|||
<book-search available="yes" /> |
|||
</searching> |
|||
<categories> |
|||
<category id="1000" name="Gaming"> |
|||
<subcat id="1010" name="NDS" /> |
|||
<subcat id="1020" name="PSP" /> |
|||
<subcat id="1030" name="Wii" /> |
|||
<subcat id="1050" name="Xbox 360" /> |
|||
<subcat id="1080" name="Playstation 3" /> |
|||
<subcat id="4050" name="PC" /> |
|||
</category> |
|||
<category id="2000" name="Movies"> |
|||
<subcat id="2010" name="Foreign" /> |
|||
<subcat id="2020" name="Other" /> |
|||
<subcat id="2030" name="SD" /> |
|||
<subcat id="2040" name="HD" /> |
|||
<subcat id="2050" name="BluRay" /> |
|||
<subcat id="2060" name="3D" /> |
|||
<subcat id="2070" name="Mobile" /> |
|||
</category> |
|||
<category id="3000" name="Audio"> |
|||
<subcat id="3010" name="MP3" /> |
|||
<subcat id="3020" name="Video" /> |
|||
<subcat id="3030" name="Audiobook" /> |
|||
<subcat id="3040" name="Lossless" /> |
|||
<subcat id="3050" name="Other" /> |
|||
</category> |
|||
<category id="4000" name="Apps"> |
|||
<subcat id="4010" name="0day" /> |
|||
<subcat id="4020" name="ISO" /> |
|||
<subcat id="4030" name="Apple" /> |
|||
</category> |
|||
<category id="5000" name="TV"> |
|||
<subcat id="5020" name="Foreign" /> |
|||
<subcat id="5030" name="SD" /> |
|||
<subcat id="5040" name="HD" /> |
|||
<subcat id="5050" name="Other" /> |
|||
<subcat id="5060" name="Sport" /> |
|||
<subcat id="5070" name="Anime" /> |
|||
<subcat id="5080" name="Documentary" /> |
|||
</category> |
|||
<category id="6000" name="Adult"> |
|||
<subcat id="6010" name="DVD" /> |
|||
<subcat id="6020" name="WMV" /> |
|||
<subcat id="6030" name="XviD" /> |
|||
<subcat id="6040" name="x264" /> |
|||
<subcat id="6050" name="Pack" /> |
|||
<subcat id="6060" name="ImgSet" /> |
|||
<subcat id="6070" name="Other" /> |
|||
</category> |
|||
<category id="7000" name="Books"> |
|||
<subcat id="7010" name="Magazines" /> |
|||
<subcat id="7020" name="Ebook" /> |
|||
<subcat id="7030" name="Comics" /> |
|||
</category> |
|||
</categories> |
|||
</caps> |
@ -0,0 +1,34 @@ |
|||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> |
|||
<caps> |
|||
<server title="NZBHydra 2" email="theotherp@gmx.de" url="https://github.com/theotherp/nzbhydra2" image="https://raw.githubusercontent.com/theotherp/nzbhydra2/master/core/ui-src/img/banner-bright.png" /> |
|||
<limits max="100" default="100" /> |
|||
<retention days="3000" /> |
|||
<searching> |
|||
<search available="yes" supportedParams="q,cat,limit,offset,minage,maxage,minsize,maxsize" /> |
|||
<tv-search available="yes" supportedParams="q,rid,tvdbid,tvmazeid,traktid,season,ep,cat,limit,offset,minage,maxage,minsize,maxsize" /> |
|||
<movie-search available="yes" supportedParams="q,imdbid,tmdbid,cat,limit,offset,minage,maxage,minsize,maxsize" /> |
|||
<audio-search available="no" supportedParams="" /> |
|||
<book-search available="yes" supportedParams="q,author,title,cat,limit,offset,minage,maxage,minsize,maxsize" /> |
|||
</searching> |
|||
<categories> |
|||
<category id="1000" name="Console" /> |
|||
<category id="2000" name="Movies"> |
|||
<subcat id="2040" name="Movies HD" /> |
|||
<subcat id="2030" name="Movies SD" /> |
|||
</category> |
|||
<category id="3000" name="Audio"> |
|||
<subcat id="3030" name="Audiobook" /> |
|||
<subcat id="3040" name="FLAC" /> |
|||
<subcat id="3010" name="MP3" /> |
|||
</category> |
|||
<category id="4000" name="PC" /> |
|||
<category id="5000" name="TV"> |
|||
<subcat id="5070" name="Anime" /> |
|||
<subcat id="5040" name="TV HD" /> |
|||
<subcat id="5030" name="TV SD" /> |
|||
</category> |
|||
<category id="6000" name="XXX" /> |
|||
<category id="7020" name="Ebook" /> |
|||
<category id="7030" name="Comic" /> |
|||
</categories> |
|||
</caps> |
@ -0,0 +1,177 @@ |
|||
<?xml version="1.0" encoding="UTF-8"?> |
|||
<caps> |
|||
<server appversion="0.2.3p" version="0.5" title="Newznab" strapline="Fake Provider" email="fake@fake.fake" url="https://fake.in/" image="https://fake.in/logo.jpg" /> |
|||
<limits max="100" default="100" /> |
|||
<registration available="yes" open="no" /> |
|||
<searching> |
|||
<search available="yes" supportedParams="q" /> |
|||
<tv-search available="yes" supportedParams="q,rid,tvdbid,tvmazeid,season,ep" /> |
|||
<movie-search available="yes" supportedParams="q,imdbid" /> |
|||
</searching> |
|||
<categories> |
|||
<category id="1000" name="Console"> |
|||
<subcat id="1010" name="NDS" /> |
|||
<subcat id="1110" name="NSW" /> |
|||
<subcat id="1080" name="PS3" /> |
|||
<subcat id="1085" name="PS4" /> |
|||
<subcat id="1020" name="PSP" /> |
|||
<subcat id="1030" name="Wii" /> |
|||
<subcat id="1060" name="WiiWare/VC" /> |
|||
<subcat id="1070" name="XBOX 360 DLC" /> |
|||
<subcat id="1090" name="XBOX ONE" /> |
|||
<subcat id="1040" name="Xbox" /> |
|||
<subcat id="1050" name="Xbox 360" /> |
|||
</category> |
|||
<category id="2000" name="Movies"> |
|||
<subcat id="2060" name="3D" /> |
|||
<subcat id="2050" name="BluRay" /> |
|||
<subcat id="2010" name="Foreign" /> |
|||
<subcat id="2040" name="HD" /> |
|||
<subcat id="2070" name="HEVC" /> |
|||
<subcat id="2020" name="Other" /> |
|||
<subcat id="2080" name="Remux" /> |
|||
<subcat id="2030" name="SD" /> |
|||
<subcat id="2045" name="UHD" /> |
|||
</category> |
|||
<category id="3000" name="Music"> |
|||
<subcat id="3030" name="Audiobook" /> |
|||
<subcat id="3040" name="Lossless" /> |
|||
<subcat id="3010" name="MP3" /> |
|||
<subcat id="3020" name="Video" /> |
|||
</category> |
|||
<category id="4000" name="PC"> |
|||
<subcat id="4010" name="0day" /> |
|||
<subcat id="4050" name="Games" /> |
|||
<subcat id="4020" name="ISO" /> |
|||
<subcat id="4030" name="Mac" /> |
|||
<subcat id="4070" name="Mobile-Android" /> |
|||
<subcat id="4040" name="Mobile-Other" /> |
|||
<subcat id="4060" name="Mobile-iOS" /> |
|||
</category> |
|||
<category id="5000" name="TV"> |
|||
<subcat id="5070" name="Anime" /> |
|||
<subcat id="5185" name="Docu HD" /> |
|||
<subcat id="5180" name="Docu SD" /> |
|||
<subcat id="5020" name="Foreign" /> |
|||
<subcat id="5040" name="HD" /> |
|||
<subcat id="5200" name="HEVC" /> |
|||
<subcat id="5050" name="Other" /> |
|||
<subcat id="5030" name="SD" /> |
|||
<subcat id="5060" name="Sport" /> |
|||
<subcat id="5045" name="UHD" /> |
|||
</category> |
|||
<category id="6000" name="XXX"> |
|||
<subcat id="6082" name="Clips HD" /> |
|||
<subcat id="6081" name="Clips SD" /> |
|||
<subcat id="6085" name="Clips UHD" /> |
|||
<subcat id="6010" name="DVD" /> |
|||
<subcat id="6040" name="HD" /> |
|||
<subcat id="6060" name="ImgSet" /> |
|||
<subcat id="6070" name="Other" /> |
|||
<subcat id="6050" name="Pack" /> |
|||
<subcat id="6030" name="SD" /> |
|||
<subcat id="6020" name="WMV" /> |
|||
</category> |
|||
<category id="7000" name="Books"> |
|||
<subcat id="7030" name="Comics" /> |
|||
<subcat id="7020" name="Ebook" /> |
|||
<subcat id="7010" name="Mags" /> |
|||
</category> |
|||
<category id="8000" name="Misc"> |
|||
<subcat id="8090" name="Crap" /> |
|||
<subcat id="8010" name="Other" /> |
|||
<subcat id="8050" name="To Sort" /> |
|||
</category> |
|||
</categories> |
|||
<groups> |
|||
<group id="40" name="alt.binaries.cd.image" description="This group contains PC-ISO." lastupdate="Tue, 01 Jan 2019 08:30:19 +0100" /> |
|||
<group id="124" name="alt.binaries.comics.dcp" description="This group contains Comic Books" lastupdate="Tue, 01 Jan 2019 07:35:35 +0100" /> |
|||
<group id="38" name="alt.binaries.console.ps3" description="This group contains PS3 Games." lastupdate="Tue, 01 Jan 2019 08:30:27 +0100" /> |
|||
<group id="86" name="alt.binaries.documentaries" description="This group contains Documentaries TV and Movies." lastupdate="Tue, 01 Jan 2019 08:30:27 +0100" /> |
|||
<group id="210" name="alt.binaries.documentaries.french" lastupdate="Tue, 01 Jan 2019 08:29:49 +0100" /> |
|||
<group id="28" name="alt.binaries.e-book" description="This group contains E-Books." lastupdate="Tue, 01 Jan 2019 08:30:32 +0100" /> |
|||
<group id="52" name="alt.binaries.e-book.flood" description="This group contains E-Books." lastupdate="Tue, 01 Jan 2019 00:57:11 +0100" /> |
|||
<group id="192" name="alt.binaries.e-book.magazines" description="True PDF magazine" lastupdate="Tue, 01 Jan 2019 07:01:18 +0100" /> |
|||
<group id="41" name="alt.binaries.e-book.technical" description="This group contains E-Books." lastupdate="Tue, 01 Jan 2019 08:30:28 +0100" /> |
|||
<group id="96" name="alt.binaries.ebook" description="This group contains Ebook's." lastupdate="Mon, 31 Dec 2018 22:26:46 +0100" /> |
|||
<group id="42" name="alt.binaries.erotica.divx" description="This group contains XXX." lastupdate="Tue, 01 Jan 2019 08:30:23 +0100" /> |
|||
<group id="34" name="alt.binaries.games" description="This group contains PC and Console Games." lastupdate="Tue, 01 Jan 2019 08:29:56 +0100" /> |
|||
<group id="209" name="alt.binaries.games.dox" lastupdate="Tue, 01 Jan 2019 08:30:01 +0100" /> |
|||
<group id="13" name="alt.binaries.games.wii" description="This group contains Nintendo WII Games, WII-Ware, and VC." lastupdate="Tue, 01 Jan 2019 08:29:57 +0100" /> |
|||
<group id="12" name="alt.binaries.games.xbox360" description="This group contains XBOX 360 Games and DLC." lastupdate="Tue, 01 Jan 2019 08:29:40 +0100" /> |
|||
<group id="161" name="alt.binaries.hdtv.french" description="Contains TV shows in French or VOSTFR " lastupdate="Tue, 01 Jan 2019 08:29:48 +0100" /> |
|||
<group id="11" name="alt.binaries.hdtv.x264" description="This group contains X264 Movies and HDTV." lastupdate="Tue, 01 Jan 2019 08:29:37 +0100" /> |
|||
<group id="217" name="alt.binaries.howard-stern" description="Howard Stern show and other junk" lastupdate="Mon, 31 Dec 2018 12:37:18 +0100" /> |
|||
<group id="27" name="alt.binaries.mac" description="This group contains MAC/OSX Software." lastupdate="Tue, 01 Jan 2019 04:35:18 +0100" /> |
|||
<group id="17" name="alt.binaries.moovee" description="This group contains XVID and X264 Movies." lastupdate="Tue, 01 Jan 2019 08:29:33 +0100" /> |
|||
<group id="132" name="alt.binaries.movies" description="This group contains an assortment of Movies." lastupdate="Tue, 01 Jan 2019 08:29:56 +0100" /> |
|||
<group id="5" name="alt.binaries.movies.divx" description="This group contains XVID Movies" lastupdate="Tue, 01 Jan 2019 08:29:22 +0100" /> |
|||
<group id="7" name="alt.binaries.movies.xvid" description="This group contains XVID Movies." lastupdate="Tue, 01 Jan 2019 08:30:10 +0100" /> |
|||
<group id="67" name="alt.binaries.mp3.audiobooks" description="This group contains Audio Books." lastupdate="Tue, 01 Jan 2019 08:30:22 +0100" /> |
|||
<group id="4" name="alt.binaries.multimedia" description="This group contains TV, Movies, and Music." lastupdate="Tue, 01 Jan 2019 08:29:33 +0100" /> |
|||
<group id="137" name="alt.binaries.multimedia.anime.highspeed" description="This group contains Anime Television." lastupdate="Tue, 01 Jan 2019 08:29:31 +0100" /> |
|||
<group id="73" name="alt.binaries.multimedia.cartoons" description="This group contains Cartoon TV and Movies." lastupdate="Tue, 01 Jan 2019 09:28:57 +0100" /> |
|||
<group id="74" name="alt.binaries.multimedia.sports" description="This group contains Sports TV and Movies." lastupdate="Tue, 01 Jan 2019 09:28:58 +0100" /> |
|||
<group id="8" name="alt.binaries.sony.psp" description="This group contains PSP Games." lastupdate="Sun, 09 Dec 2018 00:03:32 +0100" /> |
|||
<group id="147" name="alt.binaries.sounds.flac" description="This group contains lossless audio." lastupdate="Tue, 01 Jan 2019 09:41:37 +0100" /> |
|||
<group id="47" name="alt.binaries.sounds.lossless" description="This group contains a variety of Lossless Music." lastupdate="Tue, 01 Jan 2019 09:28:58 +0100" /> |
|||
<group id="76" name="alt.binaries.sounds.lossless.classical" description="This group contains lossless Classical Music." lastupdate="Mon, 31 Dec 2018 23:18:55 +0100" /> |
|||
<group id="100" name="alt.binaries.sounds.lossless.country" description="This group contains lossless Country Music." lastupdate="Tue, 01 Jan 2019 12:09:37 +0100" /> |
|||
<group id="22" name="alt.binaries.sounds.mp3.complete_cd" description="This group contains a variety of Music." lastupdate="Fri, 28 Dec 2018 23:57:38 +0100" /> |
|||
<group id="20" name="alt.binaries.teevee" description="This group contains X264 and XVID TV." lastupdate="Tue, 01 Jan 2019 08:29:00 +0100" /> |
|||
<group id="99" name="alt.binaries.tv" description="This group contains XVID TV." lastupdate="Tue, 01 Jan 2019 09:41:41 +0100" /> |
|||
<group id="195" name="alt.binaries.tv.big-brother" description="Big Brother Live Feed" lastupdate="Tue, 01 Jan 2019 08:29:23 +0100" /> |
|||
<group id="30" name="alt.binaries.tvseries" description="This group contains X264 and XVID TV." lastupdate="Tue, 01 Jan 2019 09:28:55 +0100" /> |
|||
<group id="136" name="alt.binaries.worms" description="This group contains a lot of U4ALL." lastupdate="Tue, 01 Jan 2019 08:29:12 +0100" /> |
|||
<group id="15" name="alt.binaries.x264" description="This group contains X264 Movies and TV." lastupdate="Tue, 01 Jan 2019 09:41:42 +0100" /> |
|||
</groups> |
|||
<genres> |
|||
<genre id="3028" categoryid="3000" name="" /> |
|||
<genre id="20" categoryid="1000" name="Action" /> |
|||
<genre id="21" categoryid="1000" name="Adventure" /> |
|||
<genre id="3002" categoryid="3000" name="Alternative Rock" /> |
|||
<genre id="22" categoryid="1000" name="Arcade" /> |
|||
<genre id="3003" categoryid="3000" name="Blues" /> |
|||
<genre id="32" categoryid="1000" name="Board Games" /> |
|||
<genre id="3004" categoryid="3000" name="Broadway & Vocalists" /> |
|||
<genre id="30" categoryid="1000" name="Cards" /> |
|||
<genre id="26" categoryid="1000" name="Casino" /> |
|||
<genre id="3005" categoryid="3000" name="Children" /> |
|||
<genre id="1026" categoryid="3000" name="Children's Music" /> |
|||
<genre id="3006" categoryid="3000" name="Christian" /> |
|||
<genre id="1027" categoryid="3000" name="Christian & Gospel" /> |
|||
<genre id="3008" categoryid="3000" name="Classic Rock" /> |
|||
<genre id="3007" categoryid="3000" name="Classical" /> |
|||
<genre id="3009" categoryid="3000" name="Country" /> |
|||
<genre id="3010" categoryid="3000" name="Dance & Electronic" /> |
|||
<genre id="37" categoryid="1000" name="Flying" /> |
|||
<genre id="3011" categoryid="3000" name="Folk" /> |
|||
<genre id="3012" categoryid="3000" name="Gospel" /> |
|||
<genre id="3013" categoryid="3000" name="Hard Rock & Metal" /> |
|||
<genre id="3014" categoryid="3000" name="Indie Music" /> |
|||
<genre id="3015" categoryid="3000" name="Jazz" /> |
|||
<genre id="3016" categoryid="3000" name="Latin" /> |
|||
<genre id="3027" categoryid="3000" name="Latin Music" /> |
|||
<genre id="3025" categoryid="3000" name="Miscellaneous" /> |
|||
<genre id="3026" categoryid="3000" name="New Age" /> |
|||
<genre id="3017" categoryid="3000" name="Opera & Vocal Music" /> |
|||
<genre id="1" categoryid="3000" name="Other" /> |
|||
<genre id="3018" categoryid="3000" name="Pop" /> |
|||
<genre id="23" categoryid="1000" name="Puzzle" /> |
|||
<genre id="1025" categoryid="3000" name="R&B" /> |
|||
<genre id="3019" categoryid="3000" name="R&B & Soul" /> |
|||
<genre id="29" categoryid="1000" name="Racing" /> |
|||
<genre id="3020" categoryid="3000" name="Rap & Hip-Hop" /> |
|||
<genre id="31" categoryid="1000" name="Rhythm" /> |
|||
<genre id="3021" categoryid="3000" name="Rock" /> |
|||
<genre id="24" categoryid="1000" name="Role-Playing" /> |
|||
<genre id="19" categoryid="1000" name="Simulation" /> |
|||
<genre id="3022" categoryid="3000" name="Soundtracks" /> |
|||
<genre id="3024" categoryid="3000" name="Specialty Label Stores" /> |
|||
<genre id="28" categoryid="1000" name="Sports" /> |
|||
<genre id="25" categoryid="1000" name="Strategy" /> |
|||
<genre id="27" categoryid="1000" name="Trivia" /> |
|||
<genre id="33" categoryid="1000" name="Unknown" /> |
|||
<genre id="3023" categoryid="3000" name="World Music" /> |
|||
</genres> |
|||
</caps> |
@ -0,0 +1,97 @@ |
|||
<?xml version="1.0" encoding="UTF-8"?> |
|||
<caps> |
|||
<server title="NNTMUX" strapline="Fake NNTMUX" email="nntmux@fake.fake" meta="fake" url="https://fake.fake" image="https://fake.fake/logo.png" /> |
|||
<limits max="100" default="100" /> |
|||
<registration available="yes" open="yes" /> |
|||
<searching> |
|||
<search available="yes" supportedParams="q" /> |
|||
<tv-search available="yes" supportedParams="q,vid,tvdbid,traktid,rid,tvmazeid,imdbid,tmdbid,season,ep" /> |
|||
<movie-search available="yes" supportedParams="q,imdbid, tmdbid, traktid" /> |
|||
<audio-search available="no" supportedParams="" /> |
|||
</searching> |
|||
<categories> |
|||
<category id="1000" name="Console"> |
|||
<subcat id="1110" name="3DS" /> |
|||
<subcat id="1010" name="NDS" /> |
|||
<subcat id="1999" name="Other" /> |
|||
<subcat id="1120" name="PS Vita" /> |
|||
<subcat id="1080" name="PS3" /> |
|||
<subcat id="1180" name="PS4" /> |
|||
<subcat id="1020" name="PSP" /> |
|||
<subcat id="1030" name="Wii" /> |
|||
<subcat id="1130" name="WiiU" /> |
|||
<subcat id="1060" name="WiiWare VC" /> |
|||
<subcat id="1040" name="Xbox" /> |
|||
<subcat id="1050" name="Xbox 360" /> |
|||
<subcat id="1070" name="Xbox 360 DLC" /> |
|||
<subcat id="1140" name="Xbox One" /> |
|||
</category> |
|||
<category id="2000" name="Movies"> |
|||
<subcat id="2050" name="3D" /> |
|||
<subcat id="2060" name="BluRay" /> |
|||
<subcat id="2070" name="DVD" /> |
|||
<subcat id="2010" name="Foreign" /> |
|||
<subcat id="2040" name="HD" /> |
|||
<subcat id="2999" name="Other" /> |
|||
<subcat id="2030" name="SD" /> |
|||
<subcat id="2045" name="UHD" /> |
|||
<subcat id="2080" name="WEB-DL" /> |
|||
<subcat id="2090" name="X265" /> |
|||
</category> |
|||
<category id="3000" name="Audio"> |
|||
<subcat id="3030" name="Audiobook" /> |
|||
<subcat id="3060" name="Foreign" /> |
|||
<subcat id="3040" name="Lossless" /> |
|||
<subcat id="3010" name="MP3" /> |
|||
<subcat id="3999" name="Other" /> |
|||
<subcat id="3020" name="Video" /> |
|||
</category> |
|||
<category id="4000" name="PC"> |
|||
<subcat id="4010" name="0day" /> |
|||
<subcat id="4050" name="Games" /> |
|||
<subcat id="4020" name="ISO" /> |
|||
<subcat id="4030" name="Mac" /> |
|||
<subcat id="4070" name="Mobile-Android" /> |
|||
<subcat id="4040" name="Mobile-Other" /> |
|||
<subcat id="4060" name="Mobile-iOS" /> |
|||
</category> |
|||
<category id="5000" name="TV"> |
|||
<subcat id="5070" name="Anime" /> |
|||
<subcat id="5080" name="Documentary" /> |
|||
<subcat id="5020" name="Foreign" /> |
|||
<subcat id="5040" name="HD" /> |
|||
<subcat id="5999" name="Other" /> |
|||
<subcat id="5030" name="SD" /> |
|||
<subcat id="5060" name="Sport" /> |
|||
<subcat id="5045" name="UHD" /> |
|||
<subcat id="5010" name="WEB-DL" /> |
|||
<subcat id="5090" name="X265" /> |
|||
</category> |
|||
<category id="6000" name="XXX"> |
|||
<subcat id="6010" name="DVD" /> |
|||
<subcat id="6041" name="HD Clips" /> |
|||
<subcat id="6060" name="ImgSet" /> |
|||
<subcat id="6999" name="Other" /> |
|||
<subcat id="6050" name="Pack" /> |
|||
<subcat id="6080" name="SD" /> |
|||
<subcat id="6042" name="SD Clips" /> |
|||
<subcat id="6045" name="UHD" /> |
|||
<subcat id="6090" name="WEB-DL" /> |
|||
<subcat id="6020" name="WMV" /> |
|||
<subcat id="6030" name="XviD" /> |
|||
<subcat id="6040" name="x264" /> |
|||
</category> |
|||
<category id="7000" name="Books"> |
|||
<subcat id="7030" name="Comics" /> |
|||
<subcat id="7020" name="Ebook" /> |
|||
<subcat id="7060" name="Foreign" /> |
|||
<subcat id="7010" name="Mags" /> |
|||
<subcat id="7999" name="Other" /> |
|||
<subcat id="7040" name="Technical" /> |
|||
</category> |
|||
<category id="1" name="Other"> |
|||
<subcat id="20" name="Hashed" /> |
|||
<subcat id="10" name="Misc" /> |
|||
</category> |
|||
</categories> |
|||
</caps> |
@ -0,0 +1,93 @@ |
|||
<?xml version="1.0" encoding="UTF-8"?> |
|||
<caps> |
|||
<server appversion="0.8.3.0" version="0.1" title="NZEDB" strapline="Fake NZEDB" email="nzedb@fake.fake" meta="usenet,nzbs,cms,community" url="https://fake.fake/" image="https://fake.fake/logo.png" /> |
|||
<limits max="100" default="100" /> |
|||
<registration available="yes" open="no" /> |
|||
<searching> |
|||
<search available="yes" supportedParams="q" /> |
|||
<tv-search available="yes" supportedParams="q,vid,tvdbid,traktid,rid,tvmazeid,imdbid,tmdbid,season,ep" /> |
|||
<movie-search available="yes" supportedParams="q,imdbid" /> |
|||
<audio-search available="no" supportedParams="" /> |
|||
</searching> |
|||
<categories> |
|||
<category id="1000" name="Console"> |
|||
<subcat id="1110" name="3DS" /> |
|||
<subcat id="1010" name="NDS" /> |
|||
<subcat id="1999" name="Other" /> |
|||
<subcat id="1120" name="PS Vita" /> |
|||
<subcat id="1080" name="PS3" /> |
|||
<subcat id="1180" name="PS4" /> |
|||
<subcat id="1020" name="PSP" /> |
|||
<subcat id="1030" name="Wii" /> |
|||
<subcat id="1130" name="WiiU" /> |
|||
<subcat id="1060" name="WiiWare/VC" /> |
|||
<subcat id="1070" name="XBOX 360 DLC" /> |
|||
<subcat id="1040" name="Xbox" /> |
|||
<subcat id="1050" name="Xbox 360" /> |
|||
<subcat id="1140" name="Xbox One" /> |
|||
</category> |
|||
<category id="2000" name="Movies"> |
|||
<subcat id="2050" name="3D" /> |
|||
<subcat id="2060" name="BluRay" /> |
|||
<subcat id="2070" name="DVD" /> |
|||
<subcat id="2010" name="Foreign" /> |
|||
<subcat id="2040" name="HD" /> |
|||
<subcat id="2999" name="Other" /> |
|||
<subcat id="2030" name="SD" /> |
|||
<subcat id="2045" name="UHD" /> |
|||
<subcat id="2080" name="WEBDL" /> |
|||
</category> |
|||
<category id="3000" name="Audio"> |
|||
<subcat id="3030" name="Audiobook" /> |
|||
<subcat id="3060" name="Foreign" /> |
|||
<subcat id="3040" name="Lossless" /> |
|||
<subcat id="3010" name="MP3" /> |
|||
<subcat id="3999" name="Other" /> |
|||
<subcat id="3020" name="Video" /> |
|||
</category> |
|||
<category id="4000" name="PC"> |
|||
<subcat id="4010" name="0day" /> |
|||
<subcat id="4050" name="Games" /> |
|||
<subcat id="4020" name="ISO" /> |
|||
<subcat id="4030" name="Mac" /> |
|||
<subcat id="4070" name="Phone-Android" /> |
|||
<subcat id="4060" name="Phone-IOS" /> |
|||
<subcat id="4999" name="Phone-Other" /> |
|||
</category> |
|||
<category id="5000" name="TV"> |
|||
<subcat id="5070" name="Anime" /> |
|||
<subcat id="5080" name="Documentary" /> |
|||
<subcat id="5020" name="Foreign" /> |
|||
<subcat id="5040" name="HD" /> |
|||
<subcat id="5999" name="Other" /> |
|||
<subcat id="5030" name="SD" /> |
|||
<subcat id="5060" name="Sport" /> |
|||
<subcat id="5045" name="UHD" /> |
|||
<subcat id="5010" name="WEB-DL" /> |
|||
</category> |
|||
<category id="6000" name="XXX"> |
|||
<subcat id="6010" name="DVD" /> |
|||
<subcat id="6060" name="Imageset" /> |
|||
<subcat id="6999" name="Other" /> |
|||
<subcat id="6070" name="Packs" /> |
|||
<subcat id="6080" name="SD" description="XXX SD Releases" /> |
|||
<subcat id="6045" name="UHD" /> |
|||
<subcat id="6090" name="WEB-DL" description="XXX WEBDL Releases" /> |
|||
<subcat id="6020" name="WMV" /> |
|||
<subcat id="6030" name="XviD" /> |
|||
<subcat id="6040" name="x264" /> |
|||
</category> |
|||
<category id="7000" name="Books"> |
|||
<subcat id="7030" name="Comics" /> |
|||
<subcat id="7020" name="Ebook" /> |
|||
<subcat id="7060" name="Foreign" /> |
|||
<subcat id="7010" name="Magazines" /> |
|||
<subcat id="7999" name="Other" /> |
|||
<subcat id="7040" name="Technical" /> |
|||
</category> |
|||
<category id="0" name="Other"> |
|||
<subcat id="20" name="Hashed" /> |
|||
<subcat id="10" name="Misc" /> |
|||
</category> |
|||
</categories> |
|||
</caps> |
@ -0,0 +1,55 @@ |
|||
<?xml version="1.0" encoding="utf-8"?> |
|||
<caps> |
|||
<server version="0.1" title="Spotweb" strapline="Spotweb API Index" email="spotweb@fake.fake" url="https://fake.fake/" image="https://fake.fake/spotnet.gif" type="Spotweb" /> |
|||
<limits max="500" default="25" /> |
|||
<registration available="no" open="no" /> |
|||
<searching> |
|||
<search available="yes" /> |
|||
<tv-search available="yes" supportedParams="q,rid,tvmazeid,season,ep" /> |
|||
<movie-search available="yes" supportedParams="q,imdbid" /> |
|||
<audio-search available="yes" /> |
|||
</searching> |
|||
<categories> |
|||
<category id="1000" name="Console"> |
|||
<subcat id="1010" name="NDS" /> |
|||
<subcat id="1020" name="PSP" /> |
|||
<subcat id="1030" name="Wii" /> |
|||
<subcat id="1040" name="Xbox" /> |
|||
<subcat id="1050" name="Xbox 360" /> |
|||
<subcat id="1080" name="PS3" /> |
|||
</category> |
|||
<category id="2000" name="Movies"> |
|||
<subcat id="2030" name="SD" /> |
|||
<subcat id="2040" name="HD" /> |
|||
<subcat id="2050" name="BluRay" /> |
|||
</category> |
|||
<category id="3000" name="Audio"> |
|||
<subcat id="3010" name="MP3" /> |
|||
<subcat id="3020" name="Video" /> |
|||
<subcat id="3040" name="Lossless" /> |
|||
</category> |
|||
<category id="4000" name="PC"> |
|||
<subcat id="4030" name="Mac" /> |
|||
<subcat id="4040" name="Mobile" /> |
|||
<subcat id="4050" name="Games" /> |
|||
</category> |
|||
<category id="5000" name="TV"> |
|||
<subcat id="5020" name="Foreign" /> |
|||
<subcat id="5030" name="SD" /> |
|||
<subcat id="5040" name="HD" /> |
|||
<subcat id="5050" name="Other" /> |
|||
<subcat id="5060" name="Sport" /> |
|||
<subcat id="5070" name="Anime" /> |
|||
</category> |
|||
<category id="6000" name="XXX"> |
|||
<subcat id="6010" name="DVD" /> |
|||
<subcat id="6020" name="WMV" /> |
|||
<subcat id="6030" name="XviD" /> |
|||
<subcat id="6040" name="x264" /> |
|||
</category> |
|||
<category id="7000" name="Other"> |
|||
<subcat id="7010" name="Misc" /> |
|||
<subcat id="7020" name="Ebook" /> |
|||
</category> |
|||
</categories> |
|||
</caps> |
@ -0,0 +1,350 @@ |
|||
# coding=utf-8 |
|||
from __future__ import print_function |
|||
import warnings |
|||
warnings.filterwarnings('ignore', module=r'.*fuz.*', message='.*Sequence.*') |
|||
warnings.filterwarnings('ignore', module=r'.*dateutil.*', message='.*Unicode.*') |
|||
|
|||
import datetime |
|||
import os.path |
|||
import random |
|||
import sys |
|||
import test_lib as test |
|||
import unittest |
|||
|
|||
sys.path.insert(1, os.path.abspath('..')) |
|||
sys.path.insert(1, os.path.abspath('../lib')) |
|||
|
|||
try: |
|||
from lxml import etree |
|||
except ImportError: |
|||
try: |
|||
import xml.etree.cElementTree as etree |
|||
except ImportError: |
|||
import xml.etree.ElementTree as etree |
|||
|
|||
from lib.dateutil import parser |
|||
from sickbeard.indexers.indexer_config import * |
|||
from sickbeard.network_timezones import sb_timezone |
|||
from sickbeard.providers import newznab |
|||
|
|||
import sickbeard |
|||
|
|||
sickbeard.SYS_ENCODING = 'UTF-8' |
|||
|
|||
DEBUG = VERBOSE = False |
|||
|
|||
item_parse_test_cases = [ |
|||
(('Show.Name.S02E01.720p.HDTV.x264-GROUP', 'https://test.h/test/hhhh'), |
|||
('Show.Name.S02E01.720p.HDTV.x264-GROUP', 'https://test.h/test/hhhh')), |
|||
(('Show.Name.S02E02.720p.HDTV.x264-GROUP-JUNK', 'https://test.h/test/hhhh'), |
|||
('Show.Name.S02E02.720p.HDTV.x264-GROUP', 'https://test.h/test/hhhh')), |
|||
(('Show.Name.S02E03.720p.HDTV.x264-GROUP[JUNK]', 'https://test.h'), |
|||
('Show.Name.S02E03.720p.HDTV.x264-GROUP', 'https://test.h')), |
|||
(('Show.Name.S02E04.720p.HDTV.x264-GROUP-JUNK-JUNK', 'https://test.h'), |
|||
('Show.Name.S02E04.720p.HDTV.x264-GROUP', 'https://test.h')), |
|||
(('Show.Name.S02E05.720p.HDTV.x264-GROUP-JUNK[JUNK]', 'https://test.h'), |
|||
('Show.Name.S02E05.720p.HDTV.x264-GROUP', 'https://test.h')), |
|||
((u'Show.Name.S02E06.720p.HDTV.x264-GROUP-JUNK[JUNK帝]', 'https://test.h'), |
|||
(u'Show.Name.S02E06.720p.HDTV.x264-GROUP', 'https://test.h')), |
|||
((u'Show.Name.S02E07-EpName帝.720p.HDTV.x264-GROUP帝-JUNK[JUNK帝]', 'https://test.h'), |
|||
(u'Show.Name.S02E07-EpName帝.720p.HDTV.x264-GROUP帝', 'https://test.h')), |
|||
((u'[grp 帝] Show Name - 11 [1024x576 h264 AAC ger-sub][123456].mp4', 'https://test.h'), |
|||
(u'[grp.帝].Show.Name.-.11.[1024x576.h264.AAC.ger-sub][123456]', 'https://test.h')), |
|||
] |
|||
|
|||
size_test_cases = [ |
|||
((1000, 'ad87987dadf7987987'), (1000, 'ad87987dadf7987987')), |
|||
((1254105454, 'ffdds7766dgdzhghdzghdgg'), (1254105454, 'ffdds7766dgdzhghdzghdgg')), |
|||
((-1, ''), (-1, None)) |
|||
] |
|||
|
|||
pubdate_test_cases = [ |
|||
'Sat, 28 Jul 2018 07:33:06 +0000', |
|||
'Sun, 10 Sep 2017 23:11:09 +0200' |
|||
] |
|||
|
|||
caps_test_cases = [ |
|||
{ |
|||
'name': 'newznab', |
|||
'data_files': {'caps': 'newznab_caps.xml'}, |
|||
'caps': { |
|||
INDEXER_TVDB: 'tvdbid', INDEXER_TVRAGE: 'rid', INDEXER_TVMAZE: 'tvmazeid', |
|||
newznab.NewznabConstants.SEARCH_EPISODE: 'ep', newznab.NewznabConstants.SEARCH_SEASON: 'season', |
|||
newznab.NewznabConstants.SEARCH_TEXT: 'q' |
|||
}, |
|||
'cats': { |
|||
newznab.NewznabConstants.CAT_SD: ['5030'], newznab.NewznabConstants.CAT_SPORT: ['5060'], |
|||
newznab.NewznabConstants.CAT_ANIME: ['5070'], newznab.NewznabConstants.CAT_UHD: ['5045'], |
|||
newznab.NewznabConstants.CAT_HD: ['5040'] |
|||
}, |
|||
'all_cats': [ |
|||
{'id': '5070', 'name': 'Anime'}, {'id': '5185', 'name': 'Docu HD'}, |
|||
{'id': '5180', 'name': 'Docu SD'}, {'id': '5020', 'name': 'Foreign'}, |
|||
{'id': '5040', 'name': 'HD'}, {'id': '5200', 'name': 'HEVC'}, |
|||
{'id': '5050', 'name': 'Other'}, {'id': '5030', 'name': 'SD'}, |
|||
{'id': '5060', 'name': 'Sport'}, {'id': '5045', 'name': 'UHD'} |
|||
], |
|||
'limits': 100, |
|||
'server_type': newznab.NewznabConstants.SERVER_DEFAULT |
|||
}, { |
|||
'name': 'nzedb', |
|||
'data_files': {'caps': 'nzedb_caps.xml'}, |
|||
'caps': { |
|||
INDEXER_TVDB: 'tvdbid', INDEXER_TVRAGE: 'rid', INDEXER_TVMAZE: 'tvmazeid', INDEXER_TRAKT: 'traktid', |
|||
INDEXER_IMDB: 'imdbid', INDEXER_TMDB: 'tmdbid', |
|||
newznab.NewznabConstants.SEARCH_EPISODE: 'ep', newznab.NewznabConstants.SEARCH_SEASON: 'season', |
|||
newznab.NewznabConstants.SEARCH_TEXT: 'q' |
|||
}, |
|||
'cats': { |
|||
newznab.NewznabConstants.CAT_SD: ['5030'], newznab.NewznabConstants.CAT_SPORT: ['5060'], |
|||
newznab.NewznabConstants.CAT_ANIME: ['5070'], newznab.NewznabConstants.CAT_UHD: ['5045'], |
|||
newznab.NewznabConstants.CAT_HD: ['5040'], newznab.NewznabConstants.CAT_WEBDL: ['5010'] |
|||
}, |
|||
'all_cats': [ |
|||
{'id': '5070', 'name': 'Anime'}, {'id': '5080', 'name': 'Documentary'}, |
|||
{'id': '5020', 'name': 'Foreign'}, {'id': '5040', 'name': 'HD'}, |
|||
{'id': '5999', 'name': 'Other'}, {'id': '5030', 'name': 'SD'}, |
|||
{'id': '5060', 'name': 'Sport'}, {'id': '5045', 'name': 'UHD'}, |
|||
{'id': '5010', 'name': 'WEB-DL'} |
|||
], |
|||
'limits': 100, |
|||
'server_type': newznab.NewznabConstants.SERVER_DEFAULT |
|||
}, { |
|||
'name': 'nntmux', |
|||
'data_files': {'caps': 'nntmux_caps.xml'}, |
|||
'caps': { |
|||
INDEXER_TVDB: 'tvdbid', INDEXER_TVRAGE: 'rid', INDEXER_TVMAZE: 'tvmazeid', INDEXER_TRAKT: 'traktid', |
|||
INDEXER_IMDB: 'imdbid', INDEXER_TMDB: 'tmdbid', |
|||
newznab.NewznabConstants.SEARCH_EPISODE: 'ep', newznab.NewznabConstants.SEARCH_SEASON: 'season', |
|||
newznab.NewznabConstants.SEARCH_TEXT: 'q' |
|||
}, |
|||
'cats': { |
|||
newznab.NewznabConstants.CAT_SD: ['5030'], newznab.NewznabConstants.CAT_SPORT: ['5060'], |
|||
newznab.NewznabConstants.CAT_ANIME: ['5070'], newznab.NewznabConstants.CAT_UHD: ['5045'], |
|||
newznab.NewznabConstants.CAT_HD: ['5040'], newznab.NewznabConstants.CAT_WEBDL: ['5010'] |
|||
}, |
|||
'all_cats': [ |
|||
{'id': '5070', 'name': 'Anime'}, {'id': '5080', 'name': 'Documentary'}, |
|||
{'id': '5020', 'name': 'Foreign'}, {'id': '5040', 'name': 'HD'}, {'id': '5999', 'name': 'Other'}, |
|||
{'id': '5030', 'name': 'SD'}, {'id': '5060', 'name': 'Sport'}, {'id': '5045', 'name': 'UHD'}, |
|||
{'id': '5010', 'name': 'WEB-DL'}, {'id': '5090', 'name': 'X265'} |
|||
], |
|||
'limits': 100, |
|||
'server_type': newznab.NewznabConstants.SERVER_DEFAULT |
|||
}, { |
|||
'name': 'spotweb', |
|||
'data_files': {'caps': 'spotweb_caps.xml'}, |
|||
'caps': { |
|||
INDEXER_TVRAGE: 'rid', INDEXER_TVMAZE: 'tvmazeid', |
|||
newznab.NewznabConstants.SEARCH_EPISODE: 'ep', newznab.NewznabConstants.SEARCH_SEASON: 'season', |
|||
newznab.NewznabConstants.SEARCH_TEXT: 'q' |
|||
}, |
|||
'cats': { |
|||
newznab.NewznabConstants.CAT_SD: ['5030'], newznab.NewznabConstants.CAT_SPORT: ['5060'], |
|||
newznab.NewznabConstants.CAT_ANIME: ['5070'], newznab.NewznabConstants.CAT_HD: ['5040'] |
|||
}, |
|||
'all_cats': [ |
|||
{'id': '5020', 'name': 'Foreign'}, {'id': '5030', 'name': 'SD'}, {'id': '5040', 'name': 'HD'}, |
|||
{'id': '5050', 'name': 'Other'}, {'id': '5060', 'name': 'Sport'}, {'id': '5070', 'name': 'Anime'} |
|||
], |
|||
'limits': 500, |
|||
'server_type': newznab.NewznabConstants.SERVER_SPOTWEB |
|||
}, { |
|||
'name': 'NZBHydra', |
|||
'data_files': {'caps': 'hydra1_caps.xml'}, |
|||
'caps': { |
|||
INDEXER_TVDB: 'tvdbid', INDEXER_TVRAGE: 'rid', |
|||
newznab.NewznabConstants.SEARCH_EPISODE: 'ep', newznab.NewznabConstants.SEARCH_SEASON: 'season', |
|||
newznab.NewznabConstants.SEARCH_TEXT: 'q' |
|||
}, |
|||
'cats': { |
|||
newznab.NewznabConstants.CAT_SD: ['5030'], newznab.NewznabConstants.CAT_SPORT: ['5060'], |
|||
newznab.NewznabConstants.CAT_ANIME: ['5070'], newznab.NewznabConstants.CAT_HD: ['5040'] |
|||
}, |
|||
'all_cats': [ |
|||
{'id': '5020', 'name': 'Foreign'}, {'id': '5030', 'name': 'SD'}, {'id': '5040', 'name': 'HD'}, |
|||
{'id': '5050', 'name': 'Other'}, {'id': '5060', 'name': 'Sport'}, {'id': '5070', 'name': 'Anime'}, |
|||
{'id': '5080', 'name': 'Documentary'} |
|||
], |
|||
'limits': 100, |
|||
'server_type': newznab.NewznabConstants.SERVER_HYDRA1 |
|||
}, { |
|||
'name': 'NZBHydra 2', |
|||
'data_files': {'caps': 'hydra2_caps.xml'}, |
|||
'caps': { |
|||
INDEXER_TVDB: 'tvdbid', INDEXER_TVRAGE: 'rid', INDEXER_TVMAZE: 'tvmazeid', INDEXER_TRAKT: 'traktid', |
|||
newznab.NewznabConstants.SEARCH_EPISODE: 'ep', newznab.NewznabConstants.SEARCH_SEASON: 'season', |
|||
newznab.NewznabConstants.SEARCH_TEXT: 'q' |
|||
}, |
|||
'cats': { |
|||
newznab.NewznabConstants.CAT_SD: ['5030'], newznab.NewznabConstants.CAT_SPORT: ['5060'], |
|||
newznab.NewznabConstants.CAT_ANIME: ['5070'], newznab.NewznabConstants.CAT_HD: ['5040'] |
|||
}, |
|||
'all_cats': [ |
|||
{'id': '5070', 'name': 'Anime'}, {'id': '5040', 'name': 'TV HD'}, {'id': '5030', 'name': 'TV SD'} |
|||
], |
|||
'limits': 100, |
|||
'server_type': newznab.NewznabConstants.SERVER_HYDRA2 |
|||
}, |
|||
] |
|||
|
|||
|
|||
class FakeNewznabProvider(newznab.NewznabProvider): |
|||
|
|||
def __init__(self, *args, **kwargs): |
|||
self.FILEDIR = os.path.join(test.TESTDIR, 'newznab_data') |
|||
self._data_files_dict = ({}, kwargs['data_files_dict'])[isinstance(kwargs.get('data_files_dict'), dict)] |
|||
if 'data_files_dict' in kwargs: |
|||
del kwargs['data_files_dict'] |
|||
super(FakeNewznabProvider, self).__init__(*args, **kwargs) |
|||
|
|||
def _read_data(self, filename): |
|||
try: |
|||
f = os.path.join(self.FILEDIR, filename) |
|||
if os.path.isfile(f): |
|||
with open(f, 'r') as d: |
|||
return d.read().decode('UTF-8') |
|||
except (StandardError, Exception): |
|||
return |
|||
|
|||
# simulate Data from provider |
|||
def get_url(self, url, skip_auth=False, use_tmr_limit=True, *args, **kwargs): |
|||
data = None |
|||
if '/api?' in url: |
|||
api_parameter = url[url.find('/api?') + 5:] |
|||
if 't=caps' in api_parameter and 'caps' in self._data_files_dict: |
|||
data = self._read_data(self._data_files_dict['caps']) |
|||
return data |
|||
|
|||
|
|||
class BasicTests(test.SickbeardTestDBCase): |
|||
|
|||
ns = {'newznab': 'http://www.newznab.com/DTD/2010/feeds/attributes/', 'atom': 'http://www.w3.org/2005/Atom'} |
|||
ns_parsed = dict((k, '{%s}' % v) for (k, v) in ns.items()) |
|||
|
|||
@staticmethod |
|||
def _create_item(title, link, size=-1, uuid='', ids=None, pubdate=None): |
|||
item = etree.Element('item', nsmap=BasicTests.ns) |
|||
title_item = etree.Element('title') |
|||
title_item.text = title |
|||
link_item = etree.Element('link') |
|||
link_item.text = link |
|||
item.append(title_item) |
|||
item.append(link_item) |
|||
if -1 != size: |
|||
size_item = etree.Element('{%s}attr' % BasicTests.ns['newznab'], nsmap=BasicTests.ns) |
|||
size_item.set('name', 'size') |
|||
size_item.set('value', '%s' % size) |
|||
item.append(size_item) |
|||
if uuid: |
|||
uuid_item = etree.Element('{%s}attr' % BasicTests.ns['newznab'], nsmap=BasicTests.ns) |
|||
uuid_item.set('name', 'guid') |
|||
uuid_item.set('value', '%s' % uuid) |
|||
item.append(uuid_item) |
|||
if ids: |
|||
for a, b in ids.iteritems(): |
|||
ids_item = etree.Element('{%s}attr' % BasicTests.ns['newznab'], nsmap=BasicTests.ns) |
|||
ids_item.set('name', a) |
|||
ids_item.set('value', '%s' % b) |
|||
item.append(ids_item) |
|||
if pubdate: |
|||
pubdate_item = etree.Element('pubDate') |
|||
pubdate_item.text = pubdate |
|||
item.append(pubdate_item) |
|||
return item |
|||
|
|||
def test_title_and_url(self): |
|||
|
|||
if VERBOSE: |
|||
print('Running tests') |
|||
|
|||
newznab_provider = newznab.NewznabProvider('test', '') |
|||
|
|||
for cur_test, cur_expected in item_parse_test_cases: |
|||
item = self._create_item(cur_test[0], cur_test[1]) |
|||
result = newznab_provider._title_and_url(item) |
|||
self.assertEqual(cur_expected, result) |
|||
|
|||
def test_get_size_uid(self): |
|||
|
|||
newznab_provider = newznab.NewznabProvider('test', '') |
|||
|
|||
for cur_test, cur_expected in size_test_cases: |
|||
item = self._create_item('Show.Name.S01E01.x264-Group', 'http://test.h', cur_test[0], cur_test[1]) |
|||
result = newznab_provider.get_size_uid(item, name_space=BasicTests.ns_parsed) |
|||
self.assertEqual(cur_expected, result) |
|||
|
|||
def test_parse_ids(self): |
|||
ids_test_cases = [] |
|||
for k in newznab.NewznabConstants.providerToIndexerMapping.iterkeys(): |
|||
rand_id = random.randrange(1, 99999999) |
|||
ids_test_cases.append(({k: rand_id}, {newznab.NewznabConstants.providerToIndexerMapping[k]: rand_id})) |
|||
|
|||
all_case = {} |
|||
all_case_ex = {} |
|||
for k in newznab.NewznabConstants.providerToIndexerMapping.iterkeys(): |
|||
rand_id = random.randrange(1, 99999999) |
|||
all_case.update({k: rand_id}) |
|||
all_case_ex.update({newznab.NewznabConstants.providerToIndexerMapping[k]: rand_id}) |
|||
|
|||
ids_test_cases.append((all_case, all_case_ex)) |
|||
|
|||
newznab_provider = newznab.NewznabProvider('test', '') |
|||
|
|||
for cur_test, cur_expected in ids_test_cases: |
|||
item = self._create_item('Show.Name.S01E01.x264-Group', 'https://test.h', ids=cur_test) |
|||
result = newznab_provider.cache.parse_ids(item, BasicTests.ns_parsed) |
|||
self.assertEqual(cur_expected, result) |
|||
|
|||
@staticmethod |
|||
def _parse_pub_date(date_str): |
|||
parsed_date = None |
|||
try: |
|||
if date_str: |
|||
p = parser.parse(date_str, fuzzy=True) |
|||
try: |
|||
p = p.astimezone(sb_timezone) |
|||
except (StandardError, Exception): |
|||
pass |
|||
if isinstance(p, datetime.datetime): |
|||
parsed_date = p.replace(tzinfo=None) |
|||
except (StandardError, Exception): |
|||
pass |
|||
|
|||
return parsed_date |
|||
|
|||
def test_parse_pub_date(self): |
|||
newznab_provider = newznab.NewznabProvider('test', '') |
|||
|
|||
for cur_test in pubdate_test_cases: |
|||
item = self._create_item('Show.Name.S01E01.x264-Group', 'https://test.h', pubdate=cur_test) |
|||
result = newznab_provider._parse_pub_date(item) |
|||
cur_expected = self._parse_pub_date(cur_test) |
|||
self.assertEqual(cur_expected, result) |
|||
|
|||
|
|||
class FakeProviderTests(test.SickbeardTestDBCase): |
|||
|
|||
def test_caps(self): |
|||
self.longMessage = True |
|||
for cur_test in caps_test_cases: |
|||
newznab_provider = FakeNewznabProvider('test', 'https://fake.fake/', data_files_dict=cur_test['data_files']) |
|||
newznab_provider.enabled = True |
|||
newznab_provider.get_caps() |
|||
msg = 'Test case: %s' % cur_test['name'] |
|||
self.assertEqual(cur_test['server_type'], newznab_provider.server_type, msg=msg) |
|||
self.assertEqual(cur_test['limits'], newznab_provider.limits, msg=msg) |
|||
self.assertEqual(cur_test['caps'], newznab_provider.caps, msg=msg) |
|||
self.assertEqual(cur_test['cats'], newznab_provider.cats, msg=msg) |
|||
self.assertEqual(cur_test['all_cats'], newznab_provider.all_cats, msg=msg) |
|||
|
|||
|
|||
if __name__ == '__main__': |
|||
if len(sys.argv) > 1: |
|||
suite = unittest.TestLoader().loadTestsFromName('newznab_tests.BasicTests.test_' + sys.argv[1]) |
|||
else: |
|||
suite = unittest.TestLoader().loadTestsFromTestCase(BasicTests) |
|||
unittest.TextTestRunner(verbosity=2).run(suite) |
|||
|
|||
suite = unittest.TestLoader().loadTestsFromTestCase(FakeProviderTests) |
|||
unittest.TextTestRunner(verbosity=2).run(FakeNewznabProvider) |
@ -1,41 +1,45 @@ |
|||
import unittest |
|||
|
|||
from sickbeard import properFinder |
|||
|
|||
import sickbeard |
|||
import test_lib as test |
|||
|
|||
sickbeard.SYS_ENCODING = 'UTF-8' |
|||
|
|||
|
|||
class ProperTests(test.SickbeardTestDBCase): |
|||
def check_webdl_type(self, cases): |
|||
for c in cases: |
|||
self.assertEqual(properFinder.get_webdl_type(*c[0]), c[1]) |
|||
|
|||
def check_get_codec(self, cases): |
|||
for c in cases: |
|||
self.assertEqual(properFinder._get_codec(c[0]), c[1]) |
|||
|
|||
def test_webdl_type(self): |
|||
self.check_webdl_type([ |
|||
(('1080p.WEB.x264', 'The.Show.Name.S04E10.1080p.WEB.x264-GROUP'), 'webrip'), |
|||
(('720p.WEB-DL.DD5.1.H.264', 'The.Show.Name.720p.WEB-DL.DD5.1.H.264-GROUP'), 'webdl'), |
|||
(('1080p.AMZN.WEB-DL.DD5.1.H.264', 'The.Show.Name.1080p.AMZN.WEB-DL.DD5.1.H.264-GROUP'), 'Amazon'), |
|||
]) |
|||
|
|||
def test_get_codec(self): |
|||
self.check_get_codec([ |
|||
('1080p.WEB.x264', '264'), |
|||
('720p.WEB.h264', '264'), |
|||
('HDTV.XviD', 'xvid'), |
|||
('720p.HEVC.x265', 'hevc'), |
|||
('1080p.HEVC.AC3', 'hevc'), |
|||
('10Bit.1080p.DD5.1.H.265', 'hevc'), |
|||
('720p.DD5.1.Widescreen.x265', 'hevc'), |
|||
]) |
|||
|
|||
|
|||
if __name__ == '__main__': |
|||
suite = unittest.TestLoader().loadTestsFromTestCase(ProperTests) |
|||
unittest.TextTestRunner(verbosity=2).run(suite) |
|||
import warnings |
|||
warnings.filterwarnings('ignore', module=r'.*fuz.*', message='.*Sequence.*') |
|||
warnings.filterwarnings('ignore', module=r'.*connectionpool.*', message='.*certificate verification.*') |
|||
|
|||
import unittest |
|||
|
|||
from sickbeard import properFinder |
|||
|
|||
import sickbeard |
|||
import test_lib as test |
|||
|
|||
sickbeard.SYS_ENCODING = 'UTF-8' |
|||
|
|||
|
|||
class ProperTests(test.SickbeardTestDBCase): |
|||
def check_webdl_type(self, cases): |
|||
for c in cases: |
|||
self.assertEqual(properFinder.get_webdl_type(*c[0]), c[1]) |
|||
|
|||
def check_get_codec(self, cases): |
|||
for c in cases: |
|||
self.assertEqual(properFinder._get_codec(c[0]), c[1]) |
|||
|
|||
def test_webdl_type(self): |
|||
self.check_webdl_type([ |
|||
(('1080p.WEB.x264', 'The.Show.Name.S04E10.1080p.WEB.x264-GROUP'), 'webrip'), |
|||
(('720p.WEB-DL.DD5.1.H.264', 'The.Show.Name.720p.WEB-DL.DD5.1.H.264-GROUP'), 'webdl'), |
|||
(('1080p.AMZN.WEB-DL.DD5.1.H.264', 'The.Show.Name.1080p.AMZN.WEB-DL.DD5.1.H.264-GROUP'), 'Amazon'), |
|||
]) |
|||
|
|||
def test_get_codec(self): |
|||
self.check_get_codec([ |
|||
('1080p.WEB.x264', '264'), |
|||
('720p.WEB.h264', '264'), |
|||
('HDTV.XviD', 'xvid'), |
|||
('720p.HEVC.x265', 'hevc'), |
|||
('1080p.HEVC.AC3', 'hevc'), |
|||
('10Bit.1080p.DD5.1.H.265', 'hevc'), |
|||
('720p.DD5.1.Widescreen.x265', 'hevc'), |
|||
]) |
|||
|
|||
|
|||
if __name__ == '__main__': |
|||
suite = unittest.TestLoader().loadTestsFromTestCase(ProperTests) |
|||
unittest.TextTestRunner(verbosity=2).run(suite) |
|||
|
Loading…
Reference in new issue