Compare commits

...

1293 commits

Author SHA1 Message Date
Leonardo Galli
30796388b0 Fixed: Radarr not loading with an invalid sort key. 2018-04-17 22:06:14 +02:00
Leonardo Galli
b593c9272e @cosmetic Updated Changelog 2018-04-17 01:21:37 +02:00
Leonardo Galli
2782d19191 Added: More logging for strange PTP errors. Please report them immediately when you see them. 2018-04-17 01:21:14 +02:00
Qstick
c592fbf6c8 Fixed: Register as Radarr to avoid issues with Sonarr (#2715)
Fixes #1232
2018-04-16 23:24:10 +01:00
Qstick
210902ecb6 Added: Setting for Colon Replacement Format (#2711)
Fixes #2140
Fixes #2657
2018-04-16 23:22:54 +01:00
Qstick
38932d82db Added: Enable Download Client Priorities (#2699)
Fixes #229
2018-04-15 05:03:32 +02:00
Leonardo Galli
17c100a7e7
@cosmetic Added todo config. 2018-04-13 00:42:14 +01:00
Marcelo Castagna
ed4add85b8 Fixed: Handling of unknown status types in DownloadStation and Import from torrent Download Station should move since DS maintains an internal copy for seeding. (#2420)
Fixes #2000
2018-04-05 21:24:21 +02:00
Qstick
39346b6127 Fixed: Misc Extra File Improvements (This changes mapping of backdrop images to Fanart instead of Banner) (#2642)
Fixes #2556
Fixes #2639
Fixes #2547
2018-04-01 21:48:22 +02:00
Leonardo Galli
0f6c5533f1 @cosmetic Updated Changelog 2018-04-01 20:24:42 +02:00
Leonardo Galli
6eb678cd92
Added: Radarr now stores cookies for PTP beyond restarts. Should limit active sessions correctly. (#2643)
Fixes #2626
2018-04-01 20:21:24 +02:00
Qstick
a2fa8c4594 Fixed: Multiple Calendar Issues, Other UI Fixes (#2685)
Fixes #2683 Fixes #1172 Fixes #563
2018-03-28 18:54:50 +02:00
Leonardo Galli
00877ad361 Fixed: Cutoff Unmet Sorting by Downloaded Quality not working.
Fixes #2678
2018-03-26 18:59:24 +02:00
Qstick
802768bd24 Fixed: Add form param before submitting request (#2674)
Co-Authored-By: taloth <taloth@users.noreply.github.com>
2018-03-26 12:03:12 +02:00
Qstick
8ee71fd0fa New: Setting for absolute maximum size for a release (#2662)
* New: Setting for absolute maximum size for a release

* Change to Advanced Setting
2018-03-26 09:03:43 +02:00
Qstick
80b698a749 Fixed: Don't add category when removing torrent from qBittorrent (#2661)
Fixes #2655
2018-03-22 23:56:47 +01:00
mueslo
9db7bd09e1 Add underscore to host part of URI regex (#2633)
Fixes #2632
2018-03-22 23:56:23 +01:00
Leonardo Galli
c13ab1388e
@cosmetic update readme 2018-03-19 23:37:24 +01:00
Leonardo Galli
0ff1908b06
@cosmetic Update Readme 2018-03-19 18:21:04 +01:00
Leonardo Galli
9b2ae8dd1f
@cosmetic updated readme 2018-03-19 18:19:31 +01:00
Leonardo Galli
37c1db9c49 @cosmetic Updated changelog. 2018-03-19 12:35:51 +01:00
Leonardo Galli
b91906b530 Fixed: ICS malformed in a lot of cases. Also events are now all day.
Additionally, theatrical and physical release are shown. Fixes #2581
2018-03-19 12:11:19 +01:00
themagicbullet
2088f5e92d Fixed: Set category when adding torrent to qBittorrent (#2649)
Hopefully fixes: #2200
2018-03-19 11:44:35 +01:00
Qstick
25e10e26e3 Added: A Huge Cleanup of old Series Code. (Let's pray nothing breaks :P) (#2589) 2018-03-14 21:41:36 +01:00
AeonLucid
8a6d67a6d7
Update stale.yml 2018-03-13 00:54:33 +01:00
Leonardo Galli
b4823ea228
@cosmetic Updated readme 2018-03-12 19:37:32 +01:00
Leonardo Galli
6196679732
@cosmetic stale bot config 2018-03-11 15:36:19 +01:00
Leonardo Galli
862eb66843
Create support.yml 2018-03-11 15:30:02 +01:00
Leonardo Galli
2e94951506 Merge remote-tracking branch 'origin/develop' into develop 2018-03-07 21:38:06 +01:00
Leonardo Galli
d2b6b603a8 Fixed: Sort by Downloaded not working.
Fixes #2195
2018-03-07 21:37:57 +01:00
Leonardo Galli
fa40005222
@cosmetic 2018-03-07 19:30:13 +01:00
Qstick
eeb5e94f06 Fixed: Incorrect Kodi nfo date format (#2605)
Fixes #2582
2018-03-05 10:07:26 +01:00
Leonardo Galli
56acf751c5 @cosmetic Updated Changelog 2018-03-04 16:10:45 +01:00
Leonardo Galli
a48793edd2 Fixed: Changes in http redirect logic causing failed grabs and >25% cpu usage. 2018-03-04 16:01:40 +01:00
Leonardo Galli
799a448544 Fixed: http->https redirects do not use the tls1.2 curl fallback.
fixes #1862
2018-03-04 15:57:02 +01:00
Leonardo Galli
57adf0e3a5 Fixed: Dates before 1970 causing an exception.
Fixes #1913
2018-03-04 15:42:15 +01:00
Leonardo Galli
61ee8edb5a Fixed: Browser not updating on Movie File Imported.
Fixes #657
2018-03-04 15:35:12 +01:00
Leonardo Galli
ed1154ec3c @cosmetic Updated Changelog 2018-03-04 15:25:52 +01:00
Paul Kozlovitch
2d99f9268a Added: Copy & Paste now triggers search (#2587) 2018-03-04 15:24:49 +01:00
Simon Chapman
55dde613c2 Fixed: Movies not getting unmonitored when folder gets deleted (#2588)
Fixes #1191, fixes #1590
2018-03-04 15:24:07 +01:00
Leonardo Galli
b83f2ca0ee Merge remote-tracking branch 'origin/develop' into develop 2018-03-04 15:23:15 +01:00
Leonardo Galli
fc61f84522 @cosmetic Updated Changelog 2018-03-04 15:23:09 +01:00
Leonardo Galli
c1692ff84c Merge remote-tracking branch 'origin/develop' into develop 2018-03-03 17:08:31 +01:00
Leonardo Galli
65c3704ff0 Fixed: NLog causing a crash under mono 5.10
Fixes #2585
Merge remote-tracking branch 'origin/develop' into develop


Revert "Fixed: NLog causing a crash under mono 5.10"

This reverts commit d11b565eda.

Added console logging in case NLog fails to initialize.

Fixed: Updated NLog to 4.5 RC6 to handle mono 5.10
Fixed: Messed up merge from Cherry pick


Fixed: Appveyor build.


Revert "Fixed: Appveyor build."

This reverts commit 99282359c4.

Revert "Fixed: Messed up merge from Cherry pick"

This reverts commit 450d90586d.

Revert "Fixed: Updated NLog to 4.5 RC6 to handle mono 5.10"

This reverts commit 1b20cbb5e3.

Fixed: NLog causing issues with mono 5.10
2018-03-03 17:07:50 +01:00
Leonardo Galli
0ab7c19e54 Revert "Fixed: Updated NLog to 4.5 RC6 to handle mono 5.10"
This reverts commit 1b20cbb5e3.
2018-03-03 00:40:31 +01:00
Leonardo Galli
f70c769070 Revert "Fixed: Messed up merge from Cherry pick"
This reverts commit 450d90586d.
2018-03-03 00:40:23 +01:00
Leonardo Galli
702f61213c Revert "Fixed: Appveyor build."
This reverts commit 99282359c4.
2018-03-03 00:40:16 +01:00
Leonardo Galli
99282359c4 Fixed: Appveyor build. 2018-03-03 00:13:28 +01:00
Leonardo Galli
450d90586d Fixed: Messed up merge from Cherry pick 2018-03-02 20:04:16 +01:00
Leonardo Galli
1b20cbb5e3 Fixed: Updated NLog to 4.5 RC6 to handle mono 5.10 2018-03-02 20:00:28 +01:00
Taloth Saldono
400cf0e073 Added console logging in case NLog fails to initialize. 2018-03-02 19:56:48 +01:00
Leonardo Galli
79b3682b0f Revert "Fixed: NLog causing a crash under mono 5.10"
This reverts commit d11b565eda.
2018-03-02 19:55:47 +01:00
Leonardo Galli
cbf8106672 Merge remote-tracking branch 'origin/develop' into develop 2018-03-01 22:37:35 +01:00
Leonardo Galli
d11b565eda Fixed: NLog causing a crash under mono 5.10
Fixes #2585
2018-03-01 22:37:30 +01:00
Leonardo Galli
2ba1af5874
Merge pull request #2590 from Qstick/patch-1
Fixed: Pin Cake and Addin Versions
2018-03-01 08:55:59 +01:00
Qstick
731c9acd94 Fixed: Pin cake and addin versions 2018-02-28 23:08:18 -05:00
Qstick
59a176f03b
Fixed: Temp Workaround for Appveyor Cake Issue 2018-02-27 22:43:16 -05:00
Qstick
6482024dc5 Fixed: Poster sliding issues (#2570)
Fixes #2568
2018-02-26 16:08:57 +01:00
Qstick
9e7e8cff11 Fixed: Multiple History Issues (#2571) 2018-02-26 16:08:44 +01:00
Leonardo Galli
15fe7a844c @cosmetic Updated Changelog 2018-02-21 11:04:23 +01:00
thezoggy
68d32e4d31 Fixed: Another Delete modal is fixed. (#2560)
Fixes #2537
2018-02-21 11:02:48 +01:00
thezoggy
29f540c4f2 Changed: Metadata links are now better readable. Also fixed links in the poster view. (#2562)
Fixes #2561
2018-02-21 11:02:04 +01:00
thezoggy
31eed11d1b Fixed: Messed up movie deletion modal (#2552)
Fixes #2537
2018-02-20 14:41:35 +01:00
thezoggy
ba0bbddce9 Fixed: Remove sorting on Monitor/Profile columns to prevent unexpected results until sorting can properly be handled. Quick Fix for #2540 (#2553)
Fixes #2540
2018-02-20 14:41:01 +01:00
thezoggy
a243a886f5 Fixed: OSX app has bundle name of Sonarr (#2555) 2018-02-20 14:40:35 +01:00
Leonardo Galli
033bc24984 @cosmetic update changelog 2018-02-19 16:16:04 +01:00
Leonardo Galli
e071850d4c Fixed: Alt Titles from TMDB not getting added when mappings server throws 404
Fixes #2535
2018-02-19 13:02:55 +01:00
Leonardo Galli
fa212872ab Added: Handle ctrl-c more gracefully.
Finally fixes #2218
2018-02-19 12:48:56 +01:00
Leonardo Galli
c34137c423 Merge remote-tracking branch 'origin/develop' into develop 2018-02-19 08:38:40 +01:00
Leonardo Galli
67848ebff5 Fixed: Omgwtfnbs parsing being too greedy.
Fixes #608
2018-02-19 08:37:47 +01:00
Qstick
d0406ced40 Fixed: Unable to execute custom scripts if IMDB ID is null (#2543)
fixes #1460
2018-02-19 08:19:14 +01:00
Qstick
ae88645180 Added: Device names for Join notifications (#2544)
Closes #2364
2018-02-19 08:18:36 +01:00
Qstick
8519b64947 Cleanup TV related code in API (#2530) 2018-02-19 08:18:14 +01:00
Leonardo Galli
d67d89f54a Merge remote-tracking branch 'origin/develop' into develop 2018-02-19 00:01:11 +01:00
Leonardo Galli
2b2bd16d4d Updated NLog to version 4.4.12. Should fix #2218 2018-02-19 00:00:59 +01:00
Qstick
0c23511b7a Added: Same File Size MediaFile Specification (#2532) 2018-02-18 17:29:41 +01:00
Qstick
4dc3612347 Fixed: Help icon not centered (#2531)
Fixes #2528
2018-02-18 15:06:53 +01:00
Qstick
2139246c4a Fixed: Radarr Changes every file due to timezones (#2533)
Fixes #1741
2018-02-18 15:06:26 +01:00
Leonardo Galli
c1a5e8e759 Fixed: Filters not working. Fuck you backbone. 2018-02-16 17:12:34 +01:00
Qstick
e70e76adcb Cleanup Series Code from UI (#2525) 2018-02-16 10:53:41 +01:00
Leonardo Galli
1dbb856ced Fixed: Apostrophe getting replaced by an empty string causing no search results.
Fixes #1505
2018-02-15 15:21:15 +01:00
Leonardo Galli
74396a7abb @cosmetic Updated changelog 2018-02-15 15:03:33 +01:00
Qstick
e7e9e2b154 Added: Importing extra files from downloaded movies and generate metadata such as .nfo (#2506)
Fixes #121, Fixes #167, Fixes #2262 and Fixes #1104
2018-02-15 13:39:01 +01:00
Qstick
b40423f3a3 Added: Quotes around alternative titles (#2522)
Fixes #2511
2018-02-15 11:16:59 +01:00
Qstick
b3e46d02c6 Fixed: Integration Unit Tests (#2500) 2018-02-13 19:10:49 +01:00
Qstick
081d8a8e53 Added: Backup improvements from Sonarr (#2513)
Fixes #2440
2018-02-13 19:07:26 +01:00
Leonardo Galli
2f271635f9 @cosmetic fixed build 2018-02-12 17:37:11 +01:00
Leonardo Galli
c460153e66 @cosmetic fixed indentation error. 2018-02-12 17:33:14 +01:00
Leonardo Galli
8a674181be @cosmetic Staged builds & upload artifacts. 2018-02-12 17:31:18 +01:00
Leonardo Galli
7537cef93c @cosmetic Fixed junit transformer. 2018-02-12 17:18:25 +01:00
Leonardo Galli
808b6d16e9 @cosmetic added junit transformer 2018-02-12 17:15:14 +01:00
Leonardo Galli
d1189e62c5 @cosmetic custom docker image for circleci 2018-02-12 17:10:44 +01:00
Leonardo Galli
ef86c83799 @cosmetic changed config again. 2018-02-12 16:37:33 +01:00
Leonardo Galli
aeb45e5f7e @cosmetic update test.sh 2018-02-12 16:27:48 +01:00
Leonardo Galli
149c7c534c
@cosmetic update config. 2018-02-12 16:21:21 +01:00
Leonardo Galli
74ae66ba14
@cosmetic Wrong filename. 2018-02-12 16:10:53 +01:00
Leonardo Galli
f94e7b562a
@cosmetic Testing CircleCI for tests. 2018-02-12 16:06:31 +01:00
Leonardo Galli
f5a7a2f29a
@cosmetic 2018-02-11 22:59:11 +01:00
Qstick
1514a00b8f Updated: NzbDrone references in FirewallAdapter.cs (#2504) 2018-02-11 17:22:31 +01:00
Scott
3ed0652feb Fixed: XSS vulnerability in the navbar search. (#2505)
Fixes #2503
2018-02-11 17:20:55 +01:00
Qstick
f4e2a510f2 Fixed: StartNzbDroneService.cs unit test (#2499) 2018-02-10 00:04:22 +01:00
geogolem
8edd15b5f8
Merge pull request #2497 from geogolem/selectAllMovieEditor
selectAll and deselectAll MovieEditor buttons
2018-02-09 11:59:31 -05:00
geogolem
2fdfd0fba5 selectAll and deselectAll MovieEditor buttons 2018-02-09 11:41:31 -05:00
geogolem
8b201af053
Merge pull request #2493 from geogolem/develop
fix build problem on windows
2018-02-08 09:35:41 -05:00
geogolem
976bc1a6a5 fix build problem on windows 2018-02-08 09:22:58 -05:00
Leonardo Galli
16ba7194a9 Merge branch 'develop' of https://github.com/Radarr/Radarr into develop 2018-02-08 11:26:58 +01:00
Leonardo Galli
a151fbbcbe Revert "Fixed: Removed hebrew ISO, since english movies are still in english. (#1922)" 2018-02-08 11:26:43 +01:00
Leonardo Galli
71db67af2c
@cosmetic 2018-02-07 17:27:04 +01:00
Leonardo Galli
1d2231a96d
@cosmetic 2018-02-07 17:26:43 +01:00
Leonardo Galli
0837d3a8a0
@cosmetic 2018-02-07 17:26:23 +01:00
Leonardo Galli
05e5d610a3
@cosmetic 2018-02-07 17:11:51 +01:00
Leonardo Galli
d2f99f1330 Fixed: Error with deluge when it doesn’t report a Hash.
Fixes #2329
2018-02-07 15:59:14 +01:00
Leonardo Galli
27001b48f6 Fixed: Logging error when accessing mount point
Fixes #2305
2018-02-07 15:26:25 +01:00
Leonardo Galli
97ab4cbcbd Fixed: Invalid runtime from CP causing issues importing.
Fixes #2081
2018-02-07 12:04:27 +01:00
Leonardo Galli
8b3a71a537 Fixed: Typo in TMDB Settings.
Fixes #2077
2018-02-07 11:57:49 +01:00
Leonardo Galli
e22141e2ed Fixed: Hopefully fixed errors with Delay Profiles.
Fixes #1817
2018-02-07 11:24:58 +01:00
Leonardo Galli
11211dc2ed Fixed: Error when importing files and old folder doesn’t exist.
Fixes #2485
2018-02-07 11:08:05 +01:00
Leonardo Galli
e71e518d30 Fixed: Zooqle torrents not getting added, since their torrent file is messed up.
Fixes #1516
2018-02-07 00:10:33 +01:00
Leonardo Galli
f9049566c1 Fixed: No Physical Release Date causing exception when setting last write time.
Fixes #390
2018-02-06 16:51:19 +01:00
Leonardo Galli
0bc61bea38 Fixed: Movies not getting unmonitored when folder gets deleted.
Fixes #1191, Fixes #1590
2018-02-03 16:44:35 +01:00
Leonardo Galli
032fc68892 Added: Include total space with root folders
Closes #2468
2018-02-02 23:13:26 +01:00
Leonardo Galli
33cc228ac1 Fixed: Rare case of null quality causing issues with manual import.
Fixes #2227
2018-02-02 15:01:02 +01:00
Leonardo Galli
d5832a6a07 Added: Manual Import now adds year after movie title for filtering. This should help finding movies such as IT.
By searching e.g. It 2017, movies with short titles should be easily filterable now. Also displays more results (50 instead of 20)
2018-02-02 14:53:03 +01:00
Leonardo Galli
5f8aeeac17 Fixed: Manual Import not automatically choosing right movie.
Fixes #2458, Fixes #2061
Generally improved Manual Import UI
2018-02-02 14:51:18 +01:00
Leonardo Galli
54e57bf16a Merge remote-tracking branch 'origin/develop' into develop 2018-02-02 13:23:36 +01:00
Leonardo Galli
b1f76082b2 Added: Dynamic paths cleanup old folders now!
Old folder is now only left behind if extra files are also present in new dir and cannot be overwritten. Generally Dynamic Paths should be more stable now. Fixes #2048
2018-02-02 13:23:29 +01:00
Leonardo Galli
73fed04228 Fixed: Rare case of RequiredIndexerFlags failing with old Newznab indexers. 2018-02-01 16:00:55 +01:00
Leonardo Galli
ca3d5c184e Merge branch 'develop' of https://github.com/Radarr/Radarr into develop 2018-02-01 14:20:01 +01:00
Leonardo Galli
861962d06c
Added: Option to require indexer flags per indexer. (e.g. only download freeleech torrents from a private tracker) (#2460) 2018-02-01 14:18:52 +01:00
Leonardo Galli
5057fcc40f Fixed: Folder name getting messed up when adding movies via a list.
Fixes #2465
2018-02-01 14:14:45 +01:00
Leonardo Galli
78e5fdf3bc Added: Files downloaded with different quality than grabbed will get rejected.
Fixes #1779, Fixes #2087, Fixes #1321
2018-01-31 20:09:04 +01:00
Leonardo Galli
aab14d02f9 Fixed: Error when adding an already excluded movie to the exclusion list.
Fixes #2462
2018-01-31 15:03:29 +01:00
Leonardo Galli
eb1c3c8b82 Fixed: Last commit still not compiling (whoops squared) 2018-01-30 18:33:30 +01:00
Leonardo Galli
4025af7895 Fixed: Last commit not compiling (whoops) 2018-01-30 18:31:07 +01:00
Leonardo Galli
95ca863697 Fixed: Clean Library being to agressive when lists are having failures.
Fixes #2455
2018-01-30 18:29:07 +01:00
Leonardo Galli
74e0db2829 @cosmetic Fixed all erroring tests. 2018-01-30 15:09:19 +01:00
Leonardo Galli
2459ddb6f4 Fixed: Error when nno quality was associated with a movie file.
Fixes #1991
2018-01-30 13:16:06 +01:00
Leonardo Galli
3e2e085b6b Fixed: Allowing in use Profiles to be Deleted.
Fixes #2030
2018-01-30 13:11:16 +01:00
Leonardo Galli
931cdacf66 Fixed: Error when Movie has no imdbid when searching Rargb
Fixes #2090
2018-01-30 12:59:45 +01:00
Leonardo Galli
18c622de40 Fixed: Rargb failing when imdbid is not found
Fixes #1845, Fixes #2319
2018-01-30 12:56:14 +01:00
Leonardo Galli
53e6fa7cf1 Fixed: {Original Filename} not allowed in Movie Filename
Fixes #1248
2018-01-30 12:42:06 +01:00
Qstick
4afd3f3bfe Fixed: Look for changes to package.json before using old build cache (#2445) 2018-01-26 08:54:59 +01:00
crhammock
da425b04b1 Updated: TMDbSettings.cs to allow pipe for or for genre ids (#2389) 2018-01-11 17:06:26 +01:00
Pieter Janssens
663ac972cd Fixed: HistoryDetailsLayoutTemplate.hbs (#2361) 2017-12-21 13:42:02 +01:00
Taloth Saldono
efbb587290 Fixed MediaCover endpoint. 2017-12-13 21:28:42 +01:00
Mark McDowall
72a12a73af Fixed: Don't handle content requests in IndexHtmlMapper 2017-12-13 21:28:21 +01:00
fhscholl
95bc93042c Added: Separate naming tags for AudioLanguage and SubtitleLanguage (#2261) (Fixes #2257) 2017-12-12 23:53:11 +01:00
Leonardo Galli
172cf4d06e Fixed: Movies parsed from lists with no year and only title getting added mutliple times. 2017-12-12 23:26:16 +01:00
Taloth Saldono
5ac0f28fff Fixed: Security Vulnerabilities allowing authentication to be bypassed (discovered by Kyle Neideck) 2017-12-12 23:15:46 +01:00
Leonardo Galli
948af901da Added: Include APFS disks in disk space calculation. 2017-12-12 22:46:00 +01:00
Leonardo Galli
f36716135b Added: Upgrade MediaInfo to 17.10 (Windows/macOS) 2017-12-12 22:44:14 +01:00
kriegalex
b70016d082 Added: Support for VF2 french tag. (#2291) (Fixes #2290) 2017-12-12 22:28:36 +01:00
grokdesigns
6a1b099117 Added: Customize Slack Channel (#2308) (Fixes #2298) 2017-12-04 09:07:42 +01:00
Leonardo Galli
ffb098357d Fixed: Movie Editor Path screwed up. Might also fix some other movie editor issues. (Fixes #2170) 2017-11-19 15:11:53 +01:00
Leonardo Galli
1a22486aba Fixed: Tags disappearing (Fixes #2204) 2017-11-19 14:57:15 +01:00
Fish2
72631eab8f Fixed: moment.js deprecated zone and add functions (Fixes #2232) (Fixes #2231) (#2264) 2017-11-16 20:20:41 +01:00
Mike
e4a3e63c44 Fixed: CPU locking at a 100% in certain instances. (#2258) (Fixes #2218) 2017-11-12 12:25:46 +01:00
Fish2
5dc2df3d49 Revert "Fixed: moment.js deprecated zone and Added: and lossless compression of images (#2232) (Fixes #2231)"
This reverts commit 32b1f75eb3.
2017-11-10 17:11:42 +01:00
fhscholl
01f0c6d85f Added: SceneName to MovieFile API output (#2250) (Fixes #2245) 2017-11-10 16:13:14 +01:00
fhscholl
c7c423b13d Added: Functionality to XBMC and Plex to update indivdual titles. Also: Notification Cleanup (#2240) 2017-11-10 16:11:09 +01:00
Fish2
32b1f75eb3 Fixed: moment.js deprecated zone and Added: and lossless compression of images (#2232) (Fixes #2231) 2017-11-10 16:08:02 +01:00
adnanklink
29909db604 Added: FolderPath to the Movie Webhook (#2230) 2017-11-10 16:06:45 +01:00
Mike
ec3f094d12
Fixes #2218. (#2254)
* Fixed: Raise ApplicationStartupEvent after Owin is running.

* Actually inject the container.
2017-11-08 19:39:50 +01:00
adnanklink
cb857934c4 Added: Download_Id to On Download/On Upgrade (#2229) 2017-10-29 19:19:30 +01:00
Leonardo Galli
d0174c7b7b Merge remote-tracking branch 'origin/develop' into develop 2017-10-29 12:24:41 +01:00
Leonardo Galli
9d19c4ec21 Fixed: Manual Import. Fixes #2160 2017-10-29 12:24:35 +01:00
fhscholl
0a030386f2 Added: Movie_Quality to onGrab (#2221) (Fixes #1833) 2017-10-28 17:19:49 +02:00
fhscholl
5e121c78e1 Updated: Webhook Improvements (#2220) (Fixes #1751) 2017-10-28 17:18:52 +02:00
James White
b521ffb588 Added: Message about adblockers preventing the log table from loading (#2213) (Fixes #2209) 2017-10-23 21:50:03 +02:00
James White
386a434aeb Changed: Sabnzbd Update test cases and rename to MovieCategory (#2212) 2017-10-23 21:49:02 +02:00
James White
5674d8ad60 Changed: Nzbget Rename TvCategory references to MovieCategory (#2211) 2017-10-23 21:47:49 +02:00
Oliver Rivett-Carnac
b313dd1845 Minor error message tweak (#1778)
* Added: some tips to how to build. Gave some info to Windows developers.

* Fixed: Alignment of validation errors in labels

* Fixed: error message mentioning 'series'
2017-10-22 20:58:25 -04:00
James White
dffa50a82f uTorrent initial state feature (#2192)
* New: Initial state for torrents added to UTorrent

Closes #409

(cherry picked from commit 19a4d3536b)

* Change default port

* Rename TvCategory to MovieCategory
2017-10-22 20:51:07 -04:00
James White
5337f79281 Change default port of qBittorrent download client config (#2187) 2017-10-22 20:49:54 -04:00
fhscholl
8861c8d8a4 Add IsUpgrade and related deleted file paths for CustomScript (#2205)
* Add IsUpgrade flag and deleted file paths for updates

* use OldMovieFiles instead of OldFiles
2017-10-22 20:49:37 -04:00
James White
4574ff5f6d Fixed: typo on margin-bottom (#2182) 2017-10-15 16:11:27 +02:00
James White
dd53e51468 @cosmetic Fix jshint warnings on MoviesCollection.js (#2180) 2017-10-15 13:37:19 +02:00
James White
7ae2d455c3 Fixed: Remove unit on zero values (#2178) 2017-10-15 13:29:32 +02:00
James White
e2e6630b69 Added: Initial state for torrents added to qBittorrent (#2176) 2017-10-15 12:35:53 +02:00
James White
ed744b5702 Fixed: Jackett apikey cleaned from log again. (#2177) 2017-10-15 12:35:04 +02:00
Leonardo Galli
5ffa27ec29 @cosmetic changed title 2017-10-14 12:05:17 +02:00
Leonardo Galli
53bfe61eb6 @cosmetic Added status images for websites and update api. 2017-10-14 12:04:22 +02:00
Leonardo Galli
a4a8e4547f Merge remote-tracking branch 'origin/develop' into develop 2017-10-11 23:09:36 +02:00
Leonardo Galli
e2bda29737 Fixed: Manual Movie Page Filtering. 2017-10-11 23:09:29 +02:00
James White
ab117082ed @cosmetic Stop commented out code appearing in HTML source (#2158) 2017-10-11 22:55:33 +02:00
Leonardo Galli
c708c3f5a1 Merge remote-tracking branch 'origin/develop' into develop 2017-10-11 22:54:51 +02:00
Leonardo Galli
a98494ab63 Fixed: MediaInfo not getting read when quality isn't Bluray, Web-dl or HDTV. Fixes #1465. Fixes #1572. 2017-10-11 22:54:45 +02:00
James White
779a722175 Changed: Adjust ambiguous date options (#2165)
(cherry picked from commit 00c3074216)
2017-10-11 22:45:15 +02:00
James White
805927205c @cosmetic Simplify ical ProductId code since adding properties (#2164) 2017-10-11 21:11:16 +02:00
James White
1d8eec42ef Added: a default name for Radarr.ics (#2163) 2017-10-11 19:19:57 +02:00
Leonardo Galli
a951ad811d @cosmetic Updated changelog. 2017-10-09 21:51:21 +02:00
James White
27c58f6151 Fixed: Alignment and buttons position of Trakt Auth (#2153) 2017-10-09 21:39:14 +02:00
Leonardo Galli
a5dd426dd7 Fixed: SUBBED in release name not recognized as hardcoded subs. Fixes #1520 2017-10-07 23:54:24 +02:00
Leonardo Galli
c30a681aea Fixed: 1080i not correctly recognized as 1080p. Fixes #1622 2017-10-07 23:47:22 +02:00
Leonardo Galli
4d712d7760 Fixed: Releases with UHD not getting correct resolution label. Fixes #2134 2017-10-07 20:24:50 +02:00
Leonardo Galli
63645c81bb Fixed: WebDL gets marked as Remux. Fixes #1954 2017-10-07 20:21:59 +02:00
Leonardo Galli
dc55eba74f Merge remote-tracking branch 'origin/develop' into develop 2017-10-07 20:20:47 +02:00
Leonardo Galli
b6be297093 Fixed: Parsing of TSRip and HDTSRip. Fixes #1998 2017-10-07 20:16:21 +02:00
Leonardo Galli
5ff9dc3500 Added: Option to omit year from indexer searches when searching by title. Also added option to force a movie search by title instead of imdb id. Fixes #1912 2017-10-07 20:09:22 +02:00
Wyall
4789f80df2 Added new codec HEVC with ID=5 for HDBits (#2146)
According to LSL1337 on Discord there's a new codec option HEVC with ID=5
2017-10-07 19:57:09 +02:00
Leonardo Galli
e77d9ce848 Added: Last round of optimisation. Large libraries should load around 2x faster again compared to the last version. 2017-10-07 18:16:15 +02:00
Leonardo Galli
a9b244bf75 Added: Improved load times of very large libraries again (around x5) 2017-10-05 23:31:12 +02:00
Leonardo Galli
628c044c46 Added: Movie files are now eager loaded. This should speed up the loading process a lot as well as RSS Sync and other tasks. It should also prevent some other bugs. 2017-10-01 18:41:19 +02:00
Leonardo Galli
ecd25dddf1 Merge remote-tracking branch 'origin/develop' into develop 2017-09-24 16:17:52 +02:00
Leonardo Galli
25b0a52ba6 Fixed: Alternative Titles appearing multiple times. Duplicate alt titles will be deleted. Fixes #2040 2017-09-24 16:17:43 +02:00
James White
321ba98e49 Fixed: unclosed <span> tag on BulkImportView (#2110) 2017-09-24 13:19:39 +02:00
James White
9178a0aa1b @cosmetic Convert backticks (#2112) 2017-09-24 13:16:05 +02:00
James White
6942fb892d Fixed: Change to correct provider of search results (#2113) 2017-09-24 13:15:35 +02:00
James White
f64d349119 Fixed: Icon not being hidden on Discover New Movies button in X-Small breakpoint (#2114) 2017-09-24 13:14:44 +02:00
James White
926dbdf2cd Fixed: Font folder case fix (#2066) 2017-09-21 22:37:10 +02:00
Adam Dangoor
645a3dca64 Fixed: Add space in confirmation message (#2101) 2017-09-20 07:55:44 +02:00
Leonardo Galli
2b2a1265ad Create LICENSE 2017-09-10 16:10:48 +02:00
Leonardo Galli
e7c9217dc0 Merge remote-tracking branch 'origin/develop' into develop 2017-09-10 15:58:47 +02:00
Leonardo Galli
8caf648a0b Fixed: Alt titles with less than 4 votes being used. 2017-09-10 15:58:31 +02:00
Leonardo Galli
349be2c454 Fixed: Cleanup of unused alt titles. 2017-09-10 15:56:45 +02:00
James White
ba0c5bc5f4 Fixed: Scripts should be included before closing body tag (#1995) 2017-09-10 15:55:36 +02:00
James White
1c1723b4f7 Fixed: Allow toolbar buttons to be full width on x-small and small breakpoints (#1972) 2017-09-10 15:55:03 +02:00
James White
c4957fffee Added: WOFF2 fonts for better performance in supported browsers (#1994) 2017-09-10 15:54:39 +02:00
James White
e6fee32cf2 Changed: Tweak NavbarLayoutTemplate.hbs (#1996) 2017-09-10 15:54:16 +02:00
Leonardo Galli
fc805e5078 Fixed: Refresh movie failing. 2017-08-27 18:55:55 +02:00
Leonardo Galli
ba531fff4d Added: Ability to force download movies that could not be mapped correctly. This also shares these mappings with other users, so everyone can profit :)
(This is just for the automatic changelog, hacky I know)
2017-08-27 18:12:09 +02:00
Leonardo Galli
1d7ce68431 Fixed: Refresh movie failing for most movies. (Fixes #2007)
Fixed: Invisible download button if no release name was found.
2017-08-27 18:05:28 +02:00
Leonardo Galli
09d51dca0f Fixed: A few issues with the new alternative titles feature. (#2008) (Fixes #1919, #1927 and #1917)
Added: Ability to force download movies that could not be mapped correctly. This also shares these mappings with other users, so everyone can profit :)
2017-08-27 16:42:11 +02:00
James White
efe49ef3c4 @cosmetic Make file name match naming format (#1997) 2017-08-25 08:37:24 +02:00
Leonardo Galli
a5823bb15f Fixed: A lot of small ui errors (e.g. More not showing) (Revert of #1959) 2017-08-24 07:57:31 +02:00
James White
38af8edd59 Fixed: Adjust Sonarr references to Radarr (#1977) 2017-08-21 21:48:45 +02:00
Leonardo Galli
685c5daf36 Fixed: Rename movie not working (#1970) (Fixes #1908) 2017-08-20 22:12:02 +02:00
Leonardo Galli
4d5a5ed2c1 Merge remote-tracking branch 'origin/develop' into develop 2017-08-20 20:13:48 +02:00
Leonardo Galli
d44de777c1 Fixed: Error with CP Import when no info is present. Fixes #1792 2017-08-20 20:13:42 +02:00
James White
dc2740aeb7 Added: Display breakpoint name in browser window in debug mode (#1968) 2017-08-20 20:00:37 +02:00
Leonardo Galli
fb53fc68a9 Added: Ability to delete multiple movies at once via the movie editor. 2017-08-20 18:58:29 +02:00
Tom
8de87bb516 Fixed: Movie files & folders will actually get deleted now (#1966) (Fixes #694) 2017-08-20 14:40:02 +02:00
James White
0c8e264668 Fixed: Bulk UI cleanup, fixes and consistency improvements (#1959) 2017-08-20 14:38:24 +02:00
MangaValk
4d8a270170 Fixed: Parser error when using (year) name folder (#1956) (Fixes #1951) 2017-08-19 00:24:41 +02:00
hotio
f184fc2827 @cosmetic Indicate proper release types for docker image (#1953) 2017-08-17 19:24:39 +02:00
hotio
4e48e6ea21 @cosmetic Update appveyor builds url to exclude pull requests (#1946) 2017-08-15 23:23:38 +02:00
Leonardo Galli
b1e75ffc57 Merge remote-tracking branch 'origin/develop' into develop 2017-08-15 23:22:43 +02:00
Leonardo Galli
285ffb19d8 Fixed: Non-Freeleech torrents showing as freeleech for AHD. 2017-08-15 23:22:00 +02:00
hotio
aea7a3f48f @cosmetic Update docker nightly image reference (#1945) 2017-08-15 23:07:34 +02:00
James White
edbf1cb4e4 Fixed: Missing icon preventing detailed explanation validation errors explanations from appearing. (#1944) 2017-08-15 22:54:59 +02:00
Leonardo Galli
2154c48304 @cosmetic Removed Tests from AppVeyor 2017-08-15 20:23:02 +02:00
James White
7a95f040c9 Added: Deprecation warning about Drone Factory to front end (#1938) 2017-08-15 20:22:17 +02:00
James White
cc1966230a Added: Package-lock.json for npm 5 (#1939) 2017-08-15 20:21:59 +02:00
James White
e97fe7b3a7 Fixed: Mask-icon and other resources when UrlBase is in use (#1933) 2017-08-13 22:56:56 +02:00
James White
6500edbd14 Fixed: Slack/Mattermost notifications improvements from Sonarr (#1930) 2017-08-13 19:42:00 +02:00
James White
e155585198 Fixed: fontawesome path (Icons disappearing) (#1929) 2017-08-13 14:18:54 +02:00
James White
d9da32173f Fixed: Charset and meta in index.html and login.html (#1926) 2017-08-13 12:57:10 +02:00
Rotem
9db46ba154 Fixed: Removed hebrew ISO, since english movies are still in english. (#1922) 2017-08-13 12:55:25 +02:00
James White
eff6e33a0b Fixed: Adjust column sizes relative to size of dropdown values (#1923) 2017-08-13 12:54:44 +02:00
James White
724097d276 Updated FontAwesome to 4.7.0 (#1928) 2017-08-13 12:54:16 +02:00
James White
7a06ead806 Fixed: Additional jshint warnings (#1921) 2017-08-12 17:11:34 +02:00
James White
d773da60e8 Fixed: Minor issues on MoreInfoViewTemplate.hbs (#1916) 2017-08-12 15:16:31 +02:00
James White
1f7b03d321 Fixed: gulp jshint warnings (#1873) 2017-08-12 15:16:12 +02:00
James White
a07ef20410 Fixed: Replace GitHub wiki references to Radarr's wiki URL (#1914) 2017-08-12 15:15:23 +02:00
Rotem
7c4c6ccd5c Added: Hebrew language (#1909) 2017-08-12 00:48:57 +02:00
James White
c754edc4b8 Fixed: Hanging form-group div (#1911) 2017-08-12 00:29:31 +02:00
Mike
7f3ab36c4f New: Run tests through powershell. (#1903) 2017-08-10 20:11:12 +02:00
Leonardo Galli
17387c8b50 Fixed: Migration failing and thus making Radarr unable to start. 2017-08-10 18:51:05 +02:00
Leonardo Galli
0d40ed7ec0 Added: Alternative Titles are now also pulled from mappings.radarr.video.
Added: A secondary year will also be pulled from mappings.radarr.video.
Added: An option to force download a movie with wrong year / title. Radarr then adds the year / title to mappings.radarr.video.
2017-08-09 22:18:04 +02:00
Leonardo Galli
cfcb66fba1 Changed: Alternative Titles were reworked greatly. This should speed up RSS Sync massively, especially for large libraries (up to 4x). 2017-08-09 22:14:01 +02:00
James White
8927e7c2c6 Fixed: Task name of PreDB Sync task (#1875) 2017-08-06 17:47:23 +02:00
Qstick
4e9a931537 Fixed: Check that Quality Profile is not in use before deleting it. 2017-08-06 12:10:17 +02:00
James White
17feedaf53 Fixed: Category not setting with qBitTorrent 3.3.14 and other api errors. (upstream from Sonarr) 2017-08-06 12:09:16 +02:00
Leonardo Galli
b06108fb45 Fixed: Older movies (released more than 30 days ago) are now not refreshed as often anymore (every 30 days) 2017-07-28 16:59:06 +02:00
Leonardo Galli
67dd498576 Fixed: (Hopefully) Bug where movie file was not correctly linked to movie. 2017-07-28 16:57:26 +02:00
Leonardo Galli
3fb356ddb6 Fixed: No API Key required with SignalR connections. 2017-07-26 23:24:28 +02:00
Leonardo Galli
605b8f9645 Fixed: Guard agains null reference exception with newznab capabilities. 2017-07-26 23:23:36 +02:00
Marc Runkel
668ef336fb Fixed: Update Info.plist to avoid conflict with Sonarr (#1783) 2017-07-16 14:09:03 +01:00
Richard Schwab
b82f2376a7 Fixed: Relax SingleInstancePolicy when using a custom data directory Fixes #1765 (#1782) 2017-07-16 14:08:16 +01:00
Leonardo Galli
964c18b236 Fixed: Lists are fetched much more efficiently. (Up to 40x loading time improvement with large lists!) 2017-07-08 16:13:28 +02:00
Taloth Saldono
fb4f510909 Revert "Fixed: Support for Mono 5.x with the newer BoringTLS provider."
This reverts commit 5b722a3a48.
2017-07-06 21:45:37 +02:00
Taloth Saldono
5b722a3a48 Fixed: Support for Mono 5.x with the newer BoringTLS provider. 2017-07-06 21:43:34 +02:00
Sandro Stikić
0892f20298 Fixed: Old Plex ValidationFailure message (#1770) 2017-07-06 18:48:46 +02:00
Leonardo Galli
ac5732536d Fixed: BDRemux not recognized as such and BDRips without resolution recognized as DVD. Fixes #1755 2017-07-01 14:01:38 +02:00
Leonardo Galli
1f4c2ad946 Fixed: A as part of an acronym being removed from clean title. Fixes #1747 2017-07-01 11:01:48 +02:00
Leonardo Galli
7712aa62da Fixed: Folder in List settings appearing blank in some browsers. Fixes #1711 2017-06-27 12:53:50 +02:00
Leonardo Galli
58b9c9d3d1 Fixed: Minimum Seeders not saving for Torznab indexer. Fixes #1736 2017-06-27 12:36:24 +02:00
Leonardo Galli
b2115e2066 Removed most of changelog. Generate changelog using gitchangelog v0.2.0.18..HEAD. @cosmetic 2017-06-20 14:29:32 +02:00
Leonardo Galli
4e4873271b Added Changelog, just for fun :D @cosmetic 2017-06-20 14:21:19 +02:00
Leonardo Galli
f2e5d9e996 Updated: Radarr API url now points to new v2 version. 2017-06-20 10:23:26 +02:00
Leonardo Galli
bae3a48aa1 Changed Name of Radarr Lists 2017-06-19 15:22:03 +02:00
Leonardo Galli
6d033c57f4 Added: More detailed descriptions why a movie was not able to be mapped. (#1696)
Added: Option to make mapping more lenient. This should practically allow all movies to be correctly mapped. Though it also opens the path for movies being wrongly mapped! (So it is a toggable option)

Added: Improved edition parsing. Now almost all releases should have the correct edition, even ones with no year, etc.
2017-06-18 23:12:14 +02:00
Leonardo Galli
d6cf53e12c Added: Options to make parsing more lenient. (Adds support for some german and french releasegroups) (#1692)
Fixes #1676. Fixes #1632.
2017-06-17 15:02:58 +02:00
Leonardo Galli
5238b78813 Merge remote-tracking branch 'origin/develop' into develop 2017-06-13 16:10:17 +02:00
Leonardo Galli
705b233819 Fix migration.
Fixes #1678
2017-06-13 16:09:12 +02:00
Mitchell Cash
295536ae30 Updated: Bootstrap Tags Input (#1674) 2017-06-13 13:15:43 +02:00
Leonardo Galli
42c980c905 Merge remote-tracking branch 'origin/develop' into develop 2017-06-13 13:09:09 +02:00
Leonardo Galli
0a71aac56c Fixed: Urls missing from multiple indexers after latest nightly update. 2017-06-13 13:09:02 +02:00
Mitchell Cash
c312ffd7db Fixed: Redirect calls missing URL Base (#1668) 2017-06-13 08:42:49 +02:00
Mitchell Cash
5c5f06a92c Fixed: Twitter oAuth callback URL (#1669) 2017-06-13 08:42:07 +02:00
Mitchell Cash
3eab8248e6 Fixed: Error when processing manual import decisions (#1670) 2017-06-13 08:40:51 +02:00
Mitchell Cash
c33d9727a0 Added: Include css files in minification (#1672) 2017-06-13 08:39:42 +02:00
Mitchell Cash
ca6784f7b5 Added: Upgrade to Bootstrap 3.3.7 (#1673) 2017-06-13 08:38:39 +02:00
Leonardo Galli
ca00d0d6cc Create README.md 2017-06-12 19:17:56 +02:00
Leonardo Galli
756fc7556c Add license 2017-06-12 19:11:11 +02:00
Leonardo Galli
9f4ce50dd6 Added: Allow minimum seeders to be set on a per indexer basis. Pulled from Sonarr Upstream (#1624) 2017-06-12 14:47:05 +02:00
Leonardo Galli
a460e89a8d Merge remote-tracking branch 'origin/develop' into develop 2017-06-12 14:10:18 +02:00
Leonardo Galli
edda8786ad Minimum availability is now working similarely to profile when adding a movie. 2017-06-12 14:10:07 +02:00
Mitchell Cash
b1c5dd8167 Changed: Remove redundant IE meta tag as we use http header instead (#1655) 2017-06-11 09:32:12 +02:00
Mitchell Cash
a620c4b5d8 Changed: Use cleancss for minification (#1654) 2017-06-11 09:31:27 +02:00
Mitchell Cash
28b523b504 Fixed: Follow 301 redirects when fetching torrents (#1653)
Closes #1564
2017-06-11 09:30:51 +02:00
Mitchell Cash
7af88037bb Fixed: Ensure an API Key is set when starting Radarr (#1652) 2017-06-11 09:30:00 +02:00
Leonardo Galli
43446ee3d0 Fixed: Forgot to include some js files in the last commit 2017-06-07 13:37:20 +02:00
Leonardo Galli
accf8a9efa Added: Ability to see TMDB and lists going through the Radarr API on the discovery page.
Added: More lists (specifically presets for IMDB Top 250 and IMDB Popular)
Added: Ability to set Radarr API endpoint as list.
2017-06-06 22:40:44 +02:00
Leonardo Galli
b70ed720c5 Fix error when we get invalid datetime from our api. 2017-06-06 20:03:52 +02:00
Leonardo Galli
cff4578c66 Merge remote-tracking branch 'origin/develop' into develop 2017-06-06 19:51:00 +02:00
Leonardo Galli
7bbebe53a3 Added: Custom Class for Radarr API requests. Also implements new error handling present on staging server. 2017-06-06 19:50:53 +02:00
Leonardo Galli
d81e3a79cf Added: Search 5 alternative titles as well. This should help with french as well as movies with very different titles. 2017-06-05 17:48:04 +02:00
Jason Costomiris
09c86013b0 Added: [Radarr] tag for Twitter Notifications (#1558) 2017-06-05 12:06:20 +02:00
Fish2
f1873a9684 lossless compression of images saved 92KB (#1620) 2017-06-04 13:11:52 +02:00
randellhodges
3d48da2111 Added HDBits Category, Codec, and Medium Filtering Capability (#1458)
* Added advanced configuration options to support filtering Categories, Codecs, and Medium to the HDBits indexer.

* Changes to use the existing tags with a controlled vocabulary.

* 1) Sorting select options by name
2) Moved the autocomplete tag code into taginput as requested

* removed commented out line

* require cleanups
2017-05-29 17:56:16 +02:00
Leonardo Galli
86634006e5 update radarr api url 2017-05-29 15:49:42 +02:00
Leonardo Galli
234827d5fd Mostly fixes UI glitches for list settings.
Fixes #679
2017-05-26 18:31:11 +02:00
Leonardo Galli
10bceaf370 Merge remote-tracking branch 'origin/develop' into develop 2017-05-26 11:12:14 +02:00
Leonardo Galli
b7f6ff7b2e Fixed PTP indexer being disabled if no results are found for a movie.
Fixes #1573
2017-05-26 11:12:07 +02:00
Sentir101
6767f602fb Refresh IsDuplicate in bulk import when the tmdbId changes (#1570) 2017-05-25 15:44:43 +02:00
flightlevel
e43e7d2b8d Encourage Torznab use with Jackett (#1559) 2017-05-23 17:30:59 +02:00
Leonardo Galli
811a4bf117 Fix basic naming settings.
Fixes #376
2017-05-21 18:10:46 +02:00
Leonardo Galli
9dee1d6fad Discovery of upcoming movies points to our server now.
Discovery results now show physical release date (if present).
All physical release dates now should show a note (if available) detailing what kind of release date it is (e.g. Netflix, DVD, Streaming, etc.)
2017-05-20 14:31:38 +02:00
Mike
390e4c3014 Most likely fixed #745 now 2017-05-18 01:08:13 +02:00
Mike
aace29e1e1 Chmod osx file as executable. (#1539) 2017-05-17 11:20:32 +02:00
tsubus
8fb257d5b7 Add IMDB URL to notifications (#1531) 2017-05-15 14:47:22 +02:00
Levi Wilcox
28e0f85e88 Fixed design calendar css bug (#1527)
Fixes #983
2017-05-15 09:40:00 +02:00
Luke Anderson
41d3f6d7ea Correct Program Name (#1524) 2017-05-14 12:19:20 +02:00
Luke Anderson
b19fbcbb71 Correct Program Name (#1523) 2017-05-14 12:19:10 +02:00
Leonardo Galli
5200758200 Osx updater now updates plist file to point to the correct executable binary. 2017-05-14 11:08:33 +02:00
Leonardo Galli
6210c5b8f8 Merge remote-tracking branch 'origin/develop' into develop 2017-05-14 11:03:28 +02:00
Leonardo Galli
6e31f7220c Fix osx updater failing. 2017-05-14 11:03:20 +02:00
Leonardo Galli
797a9acff5 Update TaskManager.cs 2017-05-13 21:22:55 +02:00
Leonardo Galli
b36053e1f4 Update LogEntries token again :) 2017-05-13 20:32:55 +02:00
Leonardo Galli
212bcebdaf Fixed: Using our own logentries token now.
Fixes #1517
2017-05-13 13:11:54 +02:00
Leonardo Galli
3c8162f1d6 Fix test. 2017-05-12 16:52:38 +02:00
Leonardo Galli
096d24ed91 Merge branch 'feature/better-mapping-info' into develop 2017-05-12 16:09:35 +02:00
Leonardo Galli
63e3361fb5 Movies with same name but different year being downloaded regardlessly is now fixed! 2017-05-12 16:09:23 +02:00
Leonardo Galli
51854ef73b Update TaskManager.cs 2017-05-11 23:05:12 +02:00
Levi Wilcox
a0486b54a6 Fixed design issue when deleting css bug (#1480) Fixes #1475 2017-05-11 22:05:34 +02:00
Leonardo Galli
7ed0db10cb 10 Movies are now shown on discover as well as search results.
Show more should also be more consistent now.
2017-05-09 22:28:15 +02:00
Leonardo Galli
e94591a290 Hotfix for when ignored movies would appear again after clicking on show more. 2017-05-09 21:28:22 +02:00
Leonardo Galli
fccd02a0ca Merge remote-tracking branch 'origin/develop' into develop 2017-05-09 20:44:43 +02:00
Leonardo Galli
b49f0e70ed Merge branch 'feature/better-import-exclusions' into develop 2017-05-09 20:44:17 +02:00
Leonardo Galli
fc1585e900 Completely overhauled how import exclusions work.
Currently new exclusions can only be added when adding new movies or deleting old ones. Not manually in the settings menu.
Movies can now be hidden in the new discover feature by using the new import exclusions!
2017-05-09 20:44:07 +02:00
Leonardo Galli
b36ac091fc Fix appveyor build 2017-05-09 19:49:30 +02:00
Leonardo Galli
ab28bfead2 Merge branch 'develop' into feature/better-import-exclusions 2017-05-09 16:55:19 +02:00
Leonardo Galli
3ab3fbfd57 Added ability to discover new movies based on upcoming blurays as well as popular movies (borrowed from steven lu :)) 2017-05-09 16:46:19 +02:00
Leonardo Galli
d133ee3143 Hopefully more logging to catch errors better. 2017-05-08 18:46:03 +02:00
Leonardo Galli
98b6932ffe Merge remote-tracking branch 'origin/develop' into develop 2017-05-08 18:07:38 +02:00
Leonardo Galli
58e81a916c Fixed error when language is present in title, but has dots instead of spaces. For example The.Danish.Girl.2015 2017-05-06 15:26:35 +02:00
PatrickGHanna
817f48448c Fix: A small bug fix for items loading as undefined in organize modal. Movie titles should now show up correctly. (#1424) 2017-05-06 12:31:41 +02:00
hotio
1eca179b4e Update Kodi icon, fixes #1464 (#1492) 2017-05-06 12:30:36 +02:00
Leonardo Galli
b05d505bce Fixed Final in titles parsing as an edition. 2017-05-02 22:15:03 +02:00
Leonardo Galli
ace426e69f Added initial migration. 2017-04-30 14:05:41 +02:00
Mitchell Cash
a57c9917cc Fixed: Radarr not importing torrents in Vuze if the torrent already finished seeding and was stopped (#1471) 2017-04-30 13:14:49 +02:00
Mitchell Cash
9e84b4a782 Fixed: Incorrect imports with Vuze when torrent contains a single file. (#1470) 2017-04-30 10:37:51 +02:00
Mitchell Cash
494ef16735 Fixed: Sonarr UI Authentication cookie should be placed on path (UrlBase) instead of domain alone. Fixes ##1451 2017-04-30 10:30:59 +02:00
Leonardo Galli
5a0f02007f Added trailer links to the discovery page. 2017-04-28 14:14:02 +02:00
Leonardo Galli
b1025e7229 Use Post for tmdbids request, to avoid too long URIs. 2017-04-28 13:14:00 +02:00
Leonardo Galli
446d661345 Added discovery tab based on tmdb recommendations based on your existing movies. (#1450)
Keep scroll position on more in search result view.
Added TMDB score to search results.
2017-04-28 11:04:30 +02:00
David Pooley
3eb351823e Tidy up layout of buttons on the Add Movies page for mobile/tablet (#1454) 2017-04-28 10:59:55 +02:00
morberg
835a7cffa1 Rename Sonarr to Radarr for OSX App 2017-04-26 18:44:57 +02:00
Leonardo Galli
e728330ce4 Minor text fixes. 2017-04-26 15:45:06 +02:00
Leonardo Galli
6f3118c142 Merge remote-tracking branch 'origin/develop' into develop 2017-04-26 15:17:49 +02:00
Leonardo Galli
b568072140 Change default page size to 250. Should help with safari timeouts. 2017-04-26 15:17:42 +02:00
Leonardo Galli
7db92c6bcf Enable automatic renaming, according to naming scheme, of movie folder after creation of the movie. (#1349)
Please test everything you can about this and report back if everything still works correctly.
2017-04-26 13:31:55 +02:00
Leonardo Galli
f1e8a9acfc Fix for error when clicking Rescan Drone Folder 2017-04-19 22:04:34 +02:00
Leonardo Galli
dae389ce64 Fix for error when trying to manually import. 2017-04-19 22:03:52 +02:00
Leonardo Galli
7c3d8c8ff9 Added multiple new editions such as FanEdit, Anniversary and 2in1. 2017-04-19 21:02:01 +02:00
Donald Webster
8ca66fb61a Change smtp.google.com to smtp.gmail.com (#1410) 2017-04-18 19:28:15 +02:00
Leonardo Galli
064844ac0c Fix PTP_Approved turning into HDBits Internal. 2017-04-18 16:41:40 +02:00
Leonardo Galli
5540594ecf Fix ptp tests. 2017-04-17 22:30:51 +02:00
Leonardo Galli
433ae019de AHD, PTP and HDB support the new indexer flags too now! Indexer flags can be preferred over other releases. 2017-04-17 17:12:09 +02:00
Leonardo Galli
10091b9454 Movies with Umlauts are now correctly matched and have correct CleanTitles.
An update library is recommended. Fixes #1338
2017-04-17 13:08:47 +02:00
Leonardo Galli
475851775f Minor Text fixes. 2017-04-17 12:11:35 +02:00
Leonardo Galli
0fff862fd2 Updated debug movie title to include Year. 2017-04-17 12:09:24 +02:00
Leonardo Galli
23754c49dc Fix error when MinimumAvailability was Announced and Delay was negative. 2017-04-17 12:08:03 +02:00
Leonardo Galli
fbf790e9fd Disable PreDB sync for now. 2017-04-17 12:04:54 +02:00
Leonardo Galli
6d00bd0f7a Stats are now sent to our server instead of Sonarr's :) 2017-04-17 12:01:56 +02:00
hotio
5bf95e0d9e Update Series reference to Movies, should fix #1399 (#1402) 2017-04-16 23:20:42 +02:00
Leonardo Galli
8bb4b02be7 Fix for sql error. Did not think everything through exactly.
Fixes #1390.
2017-04-16 00:48:39 +02:00
Leonardo Galli
b26a036eed Fix when MovieTitle is the empty string (should not occur, but what evs)
Fixes #1389
2017-04-16 00:26:16 +02:00
Leonardo Galli
ef57882291 Fixes Movie Size not showing correctly.
Fixes #1379
2017-04-15 15:47:40 +02:00
Leonardo Galli
32a2407ad1 Fixed an issue where movies which were labelled with an alternative title could not be found.
Fixes #557 Fixes #1387 Probably fixes #1372, probably fixes #555
2017-04-15 14:50:34 +02:00
Leonardo Galli
33b48eec95 Indexer flags implementation. (#1377) Will be further finalized over the next few weeks with Freelech, preferring of certain flags, etc 2017-04-14 22:27:48 +02:00
Leonardo Galli
3790dc9109 Added test for fix in last commit. 2017-04-13 14:18:48 +02:00
Leonardo Galli
343d849536 Add default runtime when runtime info of tmdb says 0.
Fixes #1371
2017-04-13 14:04:38 +02:00
Leonardo Galli
c36b259fa9 Fixes an issue where the semicolon and space afterwards was replaced.
This caused issues with cleaning the title afterwards. Fixes #1185
2017-04-13 10:27:00 +02:00
Leonardo Galli
6463913f22 Final tweak for package.sh 2017-04-12 22:31:49 +02:00
Leonardo Galli
e39deb4bdc Update branch. 2017-04-12 21:57:59 +02:00
Leonardo Galli
9ca2c21547 This should finally fix all packaging stuff. 2017-04-12 21:46:33 +02:00
Leonardo Galli
f376360611 Update packages.sh some more. 2017-04-12 21:23:02 +02:00
Leonardo Galli
3e966d4d58 Update package.sh script 2017-04-12 21:20:33 +02:00
Leonardo Galli
e036267c33 Test fixes. 2017-04-12 18:23:04 +02:00
Leonardo Galli
7d4378ca7a More test debugging. 2017-04-12 18:12:47 +02:00
Leonardo Galli
ee1ebfd893 Remote Test debugging yey! 2017-04-12 17:58:52 +02:00
Leonardo Galli
403fd0f0c0 Remove unecessary test. 2017-04-12 17:17:22 +02:00
Leonardo Galli
fc5ac8219f Using NUnit.Runners so that teamcity build works. 2017-04-12 17:03:53 +02:00
Leonardo Galli
600a433faa Merge remote-tracking branch 'origin/develop' into develop 2017-04-12 16:45:23 +02:00
Leonardo Galli
5609facd9d Fixed package script for Teamcity. 2017-04-12 16:45:13 +02:00
Leonardo Galli
36ea6c6b99 Turn installer back on. 2017-04-12 12:23:07 +02:00
Leonardo Galli
56ac87c760 Disabled installer being picked up, causes error with update api. 2017-04-11 21:19:31 +02:00
Leonardo Galli
47753c47a5 Now artifacts get pushed even if tests fail 2017-04-11 19:40:13 +02:00
Leonardo Galli
712c0eb84a Log if ParsedMovieInfo is NULL. 2017-04-11 19:31:33 +02:00
Leonardo Galli
8765155223 Merge remote-tracking branch 'origin/develop' into develop 2017-04-11 12:16:14 +02:00
Leonardo Galli
63d7596e98 Catching predb.me errors hopefully. 2017-04-11 12:15:52 +02:00
Leonardo Galli
640edf0cce Update nzbdrone.iss 2017-04-10 18:34:03 +02:00
Leonardo Galli
280445e756 Update appveyor.yml 2017-04-10 18:00:32 +02:00
Leonardo Galli
bae8d5e9a4 Update build-appveyor.cake 2017-04-10 17:21:52 +02:00
Leonardo Galli
07254adf91 Update appveyor.yml 2017-04-10 16:12:52 +02:00
Leonardo Galli
d33ec334f3 Merge remote-tracking branch 'origin/develop' into develop 2017-04-10 15:54:45 +02:00
Leonardo Galli
a80e9f11f2 Text fixes and got pending releases finally fully working.
Fixes #1318 and fixes #1023
2017-04-10 15:54:05 +02:00
Leonardo Galli
4a0ef984fb Update appveyor.yml 2017-04-10 15:51:36 +02:00
Leonardo Galli
685012280b Update nzbdrone.iss 2017-04-10 15:51:11 +02:00
Leonardo Galli
6963078669 Update build-appveyor.cake 2017-04-10 15:18:11 +02:00
Leonardo Galli
7182081fca Update build-appveyor.cake 2017-04-10 14:52:13 +02:00
Leonardo Galli
87ee360818 Update appveyor.yml 2017-04-10 14:47:07 +02:00
Leonardo Galli
ad222570be Update build-appveyor.cake 2017-04-10 14:45:59 +02:00
Leonardo Galli
680681c8bd Just getting Appveyor to build 2017-04-10 14:32:49 +02:00
Leonardo Galli
e2ae7536ad Update appveyor.yml 2017-04-10 14:32:03 +02:00
Leonardo Galli
98c117a460 Installer should be built too now. 2017-04-10 14:30:55 +02:00
Leonardo Galli
c54f8806b3 Update nzbdrone.iss 2017-04-10 14:29:08 +02:00
Leonardo Galli
454d5c37f9 Update nzbdrone.iss 2017-04-10 14:24:06 +02:00
Leonardo Galli
e9f084fd81 Update README.md 2017-04-10 13:15:06 +02:00
Leonardo Galli
d1bbcdc039 Fixed searching for movie after it is added from a list. 2017-04-10 11:55:50 +02:00
Leonardo Galli
c17deb7d92 Specific Subtitle tags (such as nlsub) can now be whitelisted and will be downloaded.
Fixes #540 and fixes a lot of other requests.
2017-04-10 11:41:08 +02:00
Leonardo Galli
7066b078ab Allow Hardcoded subs to be downloaded still. 2017-04-10 11:17:31 +02:00
Leonardo Galli
b4bb8875d3 Catching HTTP Errors when adding movies from a list. 2017-04-08 13:50:18 +02:00
Mitchell Cash
cb596488f2 SABnzbd 2.0 API compatibility (#1339)
* Fixed: Sabnzbd 2.0 api compatibility.

closes #1775

* fixed sab tests.

* Fixed: Sabnzbd error when tv sorting enabled for all categories.
2017-04-08 13:36:16 +02:00
Mitchell Cash
3403ddf993 Fixed: Zero length file causes MediaInfo hanging in 100% cpu load. (#1340) 2017-04-08 13:34:17 +02:00
Mitchell Cash
17118cf24d Fixed: Newznab default capabilities erroneously cached if indexer is unavailable. (#1341) 2017-04-08 13:34:07 +02:00
Rusk85
27ab70333c Cleanup on mapping logic. Movies with up to 4500 parts are now supported! 2017-04-05 20:44:05 +02:00
rmangahas-coupa
f4031f1e5f Added "Additional Parameters Field" for Trakt RSS Feed (#1308)
Added Additional Parameters field similar to Indexers
2017-04-03 20:53:04 -04:00
geogolem
a9154559b8 Released icon is back 2017-03-29 10:07:09 +02:00
Leonardo Galli
0f2f2e4b32 Fixed spelling mistake 2017-03-28 09:51:31 +02:00
Leonardo Galli
6deefbb997 Fixed an error when searching for movies with no imdbid. 2017-03-28 09:34:49 +02:00
Leonardo Galli
43a71da0a7 Merge remote-tracking branch 'origin/develop' into develop 2017-03-27 17:07:38 +02:00
Leonardo Galli
499e46e10a Fixed error when downloading a movie. 2017-03-27 17:07:23 +02:00
Marcelo Castagna
3f013271c9 Fixed: DownloadStation api client for DSM 5.x. (#1259) 2017-03-26 23:57:29 +02:00
Leonardo Galli
529591bc18 Should fix covers not being local 2017-03-26 19:39:12 +02:00
Leonardo Galli
79307d3c25 Fixed only one movie appearing when list does not give us a tmdbid 2017-03-26 14:59:36 +02:00
Leonardo Galli
8f79563cf0 This should fix all imdbid problems with indexers. 2017-03-21 18:51:58 +01:00
Devin Buhl
0dc67419be Revert "Move up IMDB logic in ParsingService, should help with the mismatched movies"
This reverts commit 066c746e5f.
2017-03-21 18:29:27 +01:00
Devin Buhl
066c746e5f Move up IMDB logic in ParsingService, should help with the mismatched movies 2017-03-20 21:51:48 -04:00
Zach
31fcac5bd9 Clean up jsHint warnings (#1225) 2017-03-19 12:34:22 -04:00
thejacer87
1b29b89bf1 New movie search (#1212)
* add movie search empty template (#1149)

* hooked up new route in controller (#1149)
2017-03-18 00:53:09 -04:00
Devin Buhl
c593f4250d Fix pending release service, HDBits, also the release deduper. Clean up housekeeping (#1211)
* Fix HDbits

* Fix pending release service, also fix the deduper

* Clean up the cleanup'er (housekeeping)

* Revert "Clean up the cleanup'er (housekeeping)"

This reverts commit c03c13d9241a0f59f118cd9ffccba5646a3f52ca.

* Housekeeping updates, without breaking tests

* Fix last test
2017-03-18 00:29:18 -04:00
Devin Buhl
59c07cc5f3 Patch/onedr0p 3 16 17 (#1200)
* clear localStorage on radarr update.. ya mon

* Fix when movie folder is deleted from disk and keeps showing up as downloaded in radarr

* Clear all UI localStorage items on update, set pageSize to what it needs to be.
2017-03-16 18:43:06 -04:00
Devin Buhl
2b1023e768 Revert "Small changes to list sync (#1179)"
This reverts commit f10af08f95.
2017-03-14 23:27:36 -04:00
Devin Buhl
f10af08f95 Small changes to list sync (#1179) 2017-03-14 23:22:36 -04:00
Devin Buhl
18fcda5fd6 Patch/onedr0p 3 14 17 (#1171)
* Upstream patch for rtorrent

* Whoops goes PTP
2017-03-14 14:18:36 -04:00
Leonardo Galli
1ccfde334f Maybe fix PTP? Don't have an account, so cannot test.
We should realy add some ptp tests.
2017-03-14 17:45:19 +01:00
Leonardo Galli
421a191650 Fix for editing quality of movie files.
Fixes #1165
2017-03-14 16:26:39 +01:00
Devin Buhl
35e046bb87 Patch/onedr0p 3 13 17 (#1166)
* Update message when the person has no movies with helpful links

* Added ImdbId to the release info from AwesomeHD

* Add ImdbId to release info for PTP and HDBits

* ImdbId is required for HDBits

* Added some error handling in SkyHook for TMDb

* Remove un-needed imports

* DIsable movie search after list sync (causing issues)

* small change

* Fix HDBits tests
2017-03-13 22:34:25 -04:00
Devin Buhl
8ece7e8b4d Update ISSUE_TEMPLATE.md 2017-03-13 16:24:21 -04:00
Devin Buhl
fadc5f0099 Update ISSUE_TEMPLATE.md 2017-03-13 16:23:57 -04:00
Devin Buhl
680430737d Update ISSUE_TEMPLATE.md 2017-03-13 16:23:47 -04:00
Leonardo Galli
5d3750a295 Fix issue where 1080p Telesyncs get tagged as 1080p Blurays. 2017-03-13 18:22:51 +01:00
James White
e525f23281 Grammar check HelpText for CouchPotato lists (#1142) 2017-03-12 15:43:28 +01:00
Leonardo Galli
2e41763b92 Preliminary Fix for downloaded error in Wanted section.
Ignores filters when sorting by downloaded.
2017-03-11 17:03:03 +01:00
Leonardo Galli
5b70ecaee0 Fixes banners when searching for new movies.
Fixes #120
2017-03-11 16:50:30 +01:00
Leonardo Galli
06ad30397b Fix issue where searching for new movies is not possible. 2017-03-11 16:35:18 +01:00
Mathew Giljum
f2218006a1 Add helptext for Jackett API key (#1121) 2017-03-11 08:52:34 -05:00
geogolem
e26fd22540 Merge pull request #1107 from geogolem/movieEditorRootFolderChangeDisplayFix
keep the current page the same after clicking Save
2017-03-11 01:40:00 -05:00
geogolem
05a83e4e95 better method to obtain the folderName 2017-03-11 01:37:50 -05:00
Mitchell Cash
3b3fe197ca Fixed: Parsing headers that have a trailing semi-colon (#1117) 2017-03-10 22:27:26 -05:00
Leonardo Galli
149c5292f1 PreDB Integration. Update Library is advisable 2017-03-11 00:17:09 +01:00
Devin Buhl
3cf5301e46 QOL changes to PTP logic (#1114) 2017-03-10 18:08:49 -05:00
Leonardo Galli
4b1f7da317 Fix for VS for Mac.
Let's hope this does not break anything.
2017-03-10 19:53:02 +01:00
Leonardo Galli
a25c056def Ammend to previous commit. 2017-03-10 19:48:36 +01:00
Leonardo Galli
0db27d9029 Hopefully fix all issues with unlinked movie files. 2017-03-10 19:47:48 +01:00
geogolem
e6dfd89300 keep the current page the same after clicking Save
the path needs to be updated on models that are changes
2017-03-10 06:28:38 -05:00
geogolem
db6e91cd95 Merge pull request #1106 from geogolem/filtersHotFix
this needs to match with the property forclient mode
2017-03-10 01:45:07 -05:00
geogolem
1bae7bb623 this needs to match with the property forclient mode 2017-03-10 01:42:39 -05:00
Devin Buhl
7cf2a8cb62 CP list hotfix 2017-03-09 19:40:55 -05:00
Devin Buhl
1a4fb6e7bb Update blacklist to work with movies (#1089)
* Update BlacklistService

* Update HistoryService, HistoryRepo and History

* Update UI in Blacklists to movies

* set the movie model so the movie title prints in blacklist

* Would be working if I implemented the Event Handler for MovieFileDeleted
2017-03-09 18:45:08 -05:00
geogolem
ae0fc019e5 Merge pull request #1097 from geogolem/fixIMDBNormalization
incorrect check for imdbId prefix
2017-03-09 13:59:33 -05:00
geogolem
3f438563b8 incorrect check for imdbId prefix 2017-03-09 13:58:25 -05:00
SWu
51e0cdf982 Fix regression for missing libgdiplus (#1073)
* Fix regression for missing libgdiplus

Add back error handling for systems where libgdiplus is not available. Should fix #1065

* Create GdiPlusInterop.cs

* Update DiskProviderBase.cs

* Update ImageResizer.cs

* Delete GdiPlusInterop.cs

* Update NzbDrone.Core.csproj

* Update NzbDrone.Common.csproj

* Update DiskProviderBase.cs

* Update IDiskProvider.cs

* Update ImageResizer.cs

* Update DiskProviderBase.cs

* Update IDiskProvider.cs

* Update ImageResizer.cs

This is really ugly... :(

* Update ImageResizer.cs

Never written C# before

* Update ImageResizerFixture.cs

* Fix test
2017-03-09 13:11:41 -05:00
geogolem
3d9fd3ff25 Merge pull request #1096 from geogolem/refactorFilteringExpression
refactor so that filteringExpressions are constructed in one place
2017-03-09 11:25:37 -05:00
geogolem
866cec096d refactor so that filteringExpressions are constructed in one place
less code duplication, easier to manage moving forward
2017-03-09 11:08:38 -05:00
geogolem
71eaa98518 Merge pull request #1095 from geogolem/filterFixCutoffUnmet
new filters were added, but they werent being handled via the API
2017-03-09 10:02:31 -05:00
geogolem
2899bbf330 new filters were added, but they werent being handled via the API 2017-03-09 10:01:08 -05:00
geogolem
72f40470a7 Merge pull request #1093 from geogolem/permitLargerTraktLists
allow larger trakt lists than 500
2017-03-09 09:17:16 -05:00
geogolem
7c5c4e7594 allow larger trakt lists than 500 2017-03-09 09:16:00 -05:00
Matthew Treadwell
77f369caab restructeured readme and added a new logo asset (#1088) 2017-03-08 22:16:08 -05:00
Devin Buhl
571730ddec Onedr0p/3 8 17 (#1087)
* Move ToUrlSlug to Parser, fix issue with trakt lists that have non-alphanumeric characters

* Move "Add movies" link in nav to the first link

* String interpolation!

* Add Limit to Trakt List Settings to limit the amount of movies returned, 50 by default

* Updates to FailedDownload

* Update DownloadService and CompleteDownloadService
2017-03-08 19:00:00 -05:00
Tim Turner
5c22d0b61d Ensure drone factory runs on its specificed interval (#1067)
* Ensure drone factory runs on its specificed interval
* Fix the tests for DownloadedMovieImportServiceFixture
2017-03-08 16:07:51 -05:00
Leonardo Galli
fe0a54685f Update README.md 2017-03-08 22:00:17 +01:00
Donald Webster
2d951bf378 Add hotio's nightly docker image. (#1084) 2017-03-08 21:58:12 +01:00
Donald Webster
54df46df8c Add Installation, Docker and Setup Guide to new Install section and add Feathub and Wiki to Support (#1083)
* Add Installation section with Installation, Docker and Setup Guide. Add feathub and wiki to Support.

* Convert to badges and use the best colors.

* Fix silly mistake of leaving [Word]s in.

* Switch to b7b7b7 which is easier to read w/ white text.

* Use github color from simpleicons.org.

* Changed colors a bit.

* Added FAQ
2017-03-08 21:58:03 +01:00
Leonardo Galli
b9eab860f5 Fixed the parser for movies with A.
Fixes  some parser issues.
2017-03-08 19:10:04 +01:00
Leonardo Galli
24a394bf46 Loads only request movie first into full collection. Should fix things. (#1046)
Fixes #982
2017-03-08 18:01:15 +01:00
Bill Szeliga
af2b5c2f1c Addressing jshint warnings (#1050)
* Cleaning up some jsLiniting problems

* fix jshint issue with variablle declaration

This shouldn't be an issue because of hoisting but, jshint is finicky.
2017-03-07 22:04:25 -05:00
flightlevel
961a6d89a4 Update error to include Radarr instead of Sonarr (#1069) 2017-03-07 20:04:13 -05:00
Devin Buhl
b81d8c4678 Correct DownloadDescisionMaker to use ImdbId, and update the ui a little. (#1068)
* Update variable names, also pass imdb to parsing service from downloaddescisionmaker

* Changes to the DownloadDescisionMaker to use ImdbId when looking for movie. Should fix a lot of Unknown Movie errors.

* Add movie link to nav bar, update Movies image to be fa-film :) Minor UI change.
2017-03-07 18:29:02 -05:00
Devin Buhl
73f0916fa0 Deluge 1.3.14 API support due to changed json-rpc checks 2017-03-07 12:31:56 -05:00
geogolem
6c10d77721 Merge pull request #1062 from geogolem/revertSortingChange
reverting a change made yesterday regarding sorting
2017-03-07 10:55:26 -05:00
geogolem
d9a3f303e7 reverting a change made yesterday regarding sorting
the change fixed sorting titles of newly added movies without a refresh
however, people have noticed it broke sorting of "In Cinemas" column in general.
i commented out the change; but also added a special case in the comment, that would fix the case in question, without
breaking the others; however, more investigating is needed because there is an issue with sorting newly added movies in general and the
fix this reverts was never good enough anyway.
2017-03-07 10:52:48 -05:00
geogolem
1894d493f3 Merge pull request #1061 from geogolem/hotfix
oops -- this was a fix from the last merge - sorry
2017-03-07 10:10:48 -05:00
geogolem
88140dd3aa oops -- this was a fix from the last merge - sorry 2017-03-07 10:09:27 -05:00
Mihai Blaga
fb1d13bc58 URLEncode the string for searching (#1055)
Closes #818 again
2017-03-07 10:08:14 -05:00
geogolem
b71031f6d3 Merge pull request #1060 from geogolem/clientModeFixForMovieEditor
fix client mode fetching.. only setPageSize when necessary
2017-03-07 09:58:49 -05:00
geogolem
d03f4a515e fix client mode fetching.. only setPageSize when necessary 2017-03-07 09:55:48 -05:00
Leonardo Galli
0668f12e62 Fix error with weirdly formatted audioChannelPositions on MediaInfo. 2017-03-07 10:33:59 +01:00
aptalca
0083e95019 Update wiki link for sorting and renaming (#1045) 2017-03-06 23:02:31 -05:00
Greg Fitzgerald
c7fcfe04be Fix a couple typos (#1049)
* Fix typo should be smtp.gmail.com

* Basic auth should say Radarr not Sonarr
2017-03-06 23:02:17 -05:00
Devin Buhl
e11455c964 Fix tests 2017-03-06 22:32:30 -05:00
Devin Buhl
4d0226e0d5 Patch/onedr0p (#1048)
* Replace Sonarr with Radarr in some more places, update rTorrent to use

* Uncomment some lines

* Fix CP importing

* Upon first sync with adding movies with Lists, it will search for the movie.

* Update rarbg indexer, add method to netimportsearch service

* Replace german chars in movie title when searching newznab. Update netimportsearchservice
2017-03-06 22:09:03 -05:00
Leonardo Galli
7cfa0531dc Fixed all tests and even added some new ones :) (#835)
* First fixing of tests.

* Updated more tests.

* Fix some tests

* Fix all prioritization tests.

And add new for preferred words.

* Updated CompletedDownloadservice tests

* Fixed a lot of tests

* Fixed all indexer requests. We should add more for the indexers we added.

To lazy for that though ¯\_(ツ)_/¯

* Fixed organizer tests.

Should probably be also updated to incorporate our newly added tags.

* Fix notification tests.

* Fixed update test for osx

* Fixed a few more tests.

* Fixed some more tests.

* Update appveyor.yml

* Update appveyor.yml

* Update appveyor.yml

* Update appveyor.yml

* Update appveyor.yml

* Update appveyor.yml

* Update appveyor.yml

* Update appveyor.yml

* Update appveyor.yml

* Update appveyor.yml

* Update appveyor.yml

* Update appveyor.yml

* Update appveyor.yml

* Update appveyor.yml

* Update activity.less

* Update appveyor.yml

* Update appveyor.yml

* Update CommonVersionInfo.cs

* Update build-appveyor.cake

Let's hope this works.

* Update CommonVersionInfo.cs

Just to kickstart appveyor

* Fixed a few tests

* Just ignore those tests.

* Fixed more tests.

* First steps in fixing Core.Test.Download.DownloadApprovedFixture

* Fix most DownloadApprovedFixture tests

* Fixed something.

* Fixed a few more tests.

* Fixed pending release tests.

* All Core tests are now fixed.

* Fixed the last tests :)

* Fixed Download Station Tests.

* Fixed Vuze and Transmission default settings which caused the tests to fail.

* Fix most tests.

* Fix RootFolder tests.

* Fixed last tests
2017-03-06 22:23:25 +01:00
Leonardo Galli
5bd008f468 Fixes issue where quality settings wont save due to no pagesize. 2017-03-06 22:09:00 +01:00
Leonardo Galli
f36db9f77b Merged branch develop into develop 2017-03-06 22:02:35 +01:00
Leonardo Galli
4640519438 Fix most paging issues on first load. 2017-03-06 22:02:25 +01:00
geogolem
597a070383 Merge pull request #1041 from geogolem/sortingFixForAddedMovies
fixes sorting after adding movies
2017-03-06 13:10:27 -05:00
geogolem
07d3b1b3a5 fixes sorting after adding movies 2017-03-06 13:09:19 -05:00
Leonardo Galli
665832f0cc /movies without pagesize or page gives back the old format. 2017-03-06 18:07:14 +01:00
geogolem
0d60375a56 Merge pull request #1037 from geogolem/filterFix2
this seems to make it more stable
2017-03-06 09:25:08 -05:00
geogolem
d4eeb666e0 this seems to make it more stable 2017-03-06 09:23:15 -05:00
geogolem
593fa4239f Merge pull request #1036 from geogolem/filteringFix
im not too sure why this fixes the problem
2017-03-06 09:07:25 -05:00
geogolem
3c1b5385ba im not too sure why this fixes the problem
but now the filterState is respected when returning from another page
2017-03-06 09:04:08 -05:00
geogolem
ea22f5db79 Merge pull request #1031 from geogolem/reverseProxyTraktAuthFix
use href instead of hostname+port
2017-03-05 21:01:28 -05:00
geogolem
e32bb6dbbf use href instead of hostname+port 2017-03-05 20:56:04 -05:00
Devin Buhl
f897591d32 Improve RSS parsing for movies without year 2017-03-05 20:14:05 -05:00
Devin Buhl
cf8f690d7a Add ReplaceGermanUmlauts method 2017-03-05 20:13:13 -05:00
Devin Buhl
e3dc31cca5 Try to add year to release titles that have no year (foriegn release groups) (#1028) 2017-03-05 17:58:48 -05:00
Devin Buhl
ddc6ccbf15 Added new TestCase for Parser and fixed spelling error 2017-03-05 14:32:51 -05:00
Mitchell Cash
18773bc665 Fixed: Delay profiles are no longer hidden under advanced settings (#1019) 2017-03-05 10:43:42 -05:00
Devin Buhl
91c71ed6a0 Revert "Added FindByAlternativeTitle in MovieRepo."
It won't work. You have to do it like in FindByTitle. This reverts commit 0d85c7435c.
2017-03-05 10:47:45 +01:00
geogolem
f3b5d9a1d6 Merge pull request #1018 from geogolem/useRequestBuilderTrakt
use http request builder (aided by onedrop)
2017-03-05 03:50:12 -05:00
geogolem
83deba1c99 use http request builder (aided by onedrop) 2017-03-05 03:45:20 -05:00
Mitchell Cash
9787cf6cdd Improve indexer health check messages (#1015)
* Improve indexer health check messages

Fixed: Improve health check message when all enabled indexers are disabled due to failures
Closes #1551

* Fixed: Health check failing and preventing others from running

* Fixed Indexer Health Checks and tests.
2017-03-05 02:50:45 -05:00
Mitchell Cash
7433e89467 Clean RSS feed before detecting type (#1014) 2017-03-05 02:48:48 -05:00
geogolem
0aa6066a6f Merge pull request #1016 from geogolem/exclusionsFix
Exclusions fix
2017-03-05 02:07:47 -05:00
geogolem
3dd14c72c8 store titleSlug in tags for exclusions and always use TMDBID 2017-03-05 02:02:24 -05:00
Devin Buhl
0d85c7435c Added FindByAlternativeTitle in MovieRepo. 2017-03-04 23:47:45 -05:00
geogolem
a3c0f4cb3f also use TMDBID on list sync 2017-03-04 21:55:11 -05:00
geogolem
3f2da1441f always check exclusions with tmdbid 2017-03-04 21:55:11 -05:00
geogolem
f49d68ad6a Merge pull request #778 from geogolem/traktAuthentication
fully functional traktAuthentication
2017-03-04 21:47:43 -05:00
geogolem
f138d4f677 an updated radarrAPI has been deployed --> this commit makes
trakt authentication ready to be merged to the develop branch
2017-03-04 21:45:22 -05:00
geogolem
aa977eb2d5 fully functional traktAuthentication
using api.couchpota.to with comments
for when updated RadarrAPI is deployed
2017-03-04 17:51:21 -05:00
Devin Buhl
e0f72e4853 Fix error with null dates 2017-03-04 13:42:29 -05:00
Devin Buhl
83560ad937 Patch/more updates (#1009)
* add downloaded quality to cut off

* set profile to 1 on model too

* get the lowest year in release dates
2017-03-04 13:25:04 -05:00
Leonardo Galli
5cace1d857 Added debug messages to check quality. 2017-03-04 18:39:26 +01:00
Devin Buhl
39322cbbca Revert.. 2017-03-04 12:01:59 -05:00
Leonardo Galli
46daa11c46 Fixed "wrong" quality being detected. Scan will be slower though. 2017-03-04 17:50:02 +01:00
Leonardo Galli
98e2bd00ab Fix for wrong qualities showing up. Will be slower to load though. 2017-03-04 17:48:26 +01:00
Devin Buhl
0f2234bcdc Patch/onedr0p 3 4 2017 (#1006)
* Fix link in History tab (#734)

* Fix iCal feed (#746)

* Removed DKSubs from hardcoded subs

* Fix searching all cut off unmet
2017-03-04 11:40:38 -05:00
geogolem
3f05ef810e Merge pull request #994 from geogolem/respectPageSizeWithoutReloading
respect the pageSize when initializing the layout
2017-03-04 11:36:38 -05:00
Devin Buhl
aab425ee5b Patch/onedr0p updates (#998)
* few small things

* update var names

* Validate Root Folder, Minimum Avability and ProfileId on List import.
2017-03-03 21:32:52 -05:00
geogolem
f7bc889723 Merge pull request #996 from geogolem/ImportExclusionsFix
the movie was not being printed correctly, and i believe this
2017-03-03 12:55:00 -05:00
geogolem
cc4fb5a40b the movie was not being printed correctly, and i believe this
was also causing movies to be added when they shouldnt have been...
2017-03-03 12:52:50 -05:00
geogolem
bbb4880ba4 respect the page when initializing the layout 2017-03-03 11:46:40 -05:00
geogolem
a2098a5797 Merge pull request #993 from geogolem/develop
clean up the fetching on loading of MovieEditor and MovieIndex once a…
2017-03-03 09:30:42 -05:00
geogolem
93bdac31ea clean up the fetching on loading of MovieEditor and MovieIndex once and for all 2017-03-03 09:27:54 -05:00
geogolem
92a588751a Merge pull request #992 from geogolem/anotherMovieEditorFix
i dont know why i was doing this inside the for loop... It did not sc…
2017-03-03 07:38:13 -05:00
geogolem
272db9d483 i dont know why i was doing this inside the for loop... It did not scale well !
fixed
2017-03-03 07:36:37 -05:00
geogolem
9d75fc18a1 Merge pull request #990 from geogolem/fixMovieIndexOnEmpty
use clone so that we only detect empty collection
2017-03-03 04:53:56 -05:00
geogolem
d8d60c6bb0 use clone so that we only detect empty collection
when collectio is empty.. not when current filter is empty but collectionis not
2017-03-03 04:50:52 -05:00
geogolem
8c656626d6 Merge pull request #988 from Radarr/filterFixMainIndex
i believe these are old code that is not needed since pagination..
2017-03-03 01:42:46 -05:00
geogolem
b773119193 i believe these are old code that is not needed since pagination..
the recent change to include filterType hits this when model is undefined..
commenting out these lines fixes the problem
2017-03-03 01:40:29 -05:00
Devin Buhl
bdc0db3357 Default Wanted and Cutoff to be 50 movies per page, added filtering options to Cutoff and a Search all (#984) 2017-03-02 17:28:29 -05:00
geogolem
f3b3c9ff6a Merge pull request #980 from geogolem/manualImportPagingFilterFix
[Fix] filtering on Manual Import
2017-03-02 16:20:46 -05:00
geogolem
7d394dcff2 empty string case should not be only for the contains case 2017-03-02 15:21:39 -05:00
geogolem
ff11388009 needed to pass the filterType, received the filterType and handle
the filterType
2017-03-02 15:14:43 -05:00
geogolem
b492fece6c Merge pull request #975 from geogolem/MovieEditorFilterSave
reset filters on save..
2017-03-02 02:00:15 -05:00
geogolem
5394f1dee9 reset filters on save.. 2017-03-02 01:57:51 -05:00
geogolem
e742371d15 Merge pull request #974 from geogolem/MovieEditorFixes
revert some changes -- use FullCollection (maybe just for now)
2017-03-01 23:23:09 -05:00
geogolem
d03ee006fc Merge branch 'develop' into MovieEditorFixes 2017-03-01 23:15:00 -05:00
geogolem
897d76c4a2 revert some changes -- use FullCollection (maybe just for now) 2017-03-01 22:59:00 -05:00
Devin Buhl
349dd12161 Possible fix for Custom script (#973) 2017-03-01 21:22:36 -05:00
Devin Buhl
d84e6c84f5 Hotfix when importing movie (#971) 2017-03-01 20:20:42 -05:00
Marcelo Castagna
dfcdf8871c Fixed infinite loop. Added default destination test when adding client (#968)
removed empty spaces. changed dcaex => ex

Changed error message

changed error message

Wrong message, ups

Another message
2017-03-01 18:45:52 -05:00
Devin Buhl
7122962dc8 Date added in Movie List & Possible Fix for Importing Movies. (#969)
* Is there a need to lazyload?

* Update dates in movie list

* additional check for moviefile lazy load

* lazyload not needed...
2017-03-01 18:45:12 -05:00
Tim Turner
6432928b7d Ensure collection is synced before opening movieDetails 2017-03-01 17:30:48 -05:00
geogolem
ed1d6e59b5 Merge pull request #963 from geogolem/importExclusionFix
just show imdbid or tmdbid for now in exclusions
2017-03-01 10:21:56 -05:00
geogolem
8b2d85aee5 just show imdbid or tmdbid for now in exclusions 2017-03-01 10:19:44 -05:00
geogolem
392d63fe57 MovieIndexPage Stability + MovieEditor fix (#925)
* this fixes some issues where the table
was rendering with incorrect data
prior to it being updated....

it also has the FullCollection fetched when necessary..

this will make the movie Index be accurate even after deleting files
or when returning from the movieEditor..

The footer has been improved and since
FullMovieCollection is now kept up to date the footer changes
as the user performs operations and it shows all the time with proper info
even after deletions or changes made in the movieEditor.

Prior to this it was necessary to totally refresh the page..

switching between movie editor and movie index would give unpredicatable results.

these issues have been fixed

* this is a much better solution...

still testing, but likel ready to be merged

* removing comments

* fix the movieEditor -- client side paging in movieEditor

* major code cleanup, and a slightly better implementation
no need to use FullMovieCollection..

just use moviesCollection.fullCollection when in client mode

* display a message when saving is done

perhaps eventually we can have a spinning status indicator on the
save button.. but that is not necessary right away

* some minor adjustments

* remove parseInt for tmdbId

* fix bugs

* remove some alerts

* accidentally changes this on last commit

* use the same FullMovieList everywhere

* add back alert when save is done
2017-02-28 19:46:00 -05:00
Devin Buhl
1c086b057a Patch/galileo fixes (#951)
* Update to ParseMovieTitle

* update default server to gmail to relfect other changes
2017-02-28 19:30:23 -05:00
Devin Buhl
6bbe55a46c Patch/updates onedr0p (#946)
* Update inCinemas column to abide by the short date set in settings (#511)

* Set default port to 587 for Email Settings, should help with all the people with gmail

* set SSL to true by default
2017-02-28 17:58:21 -05:00
Devin Buhl
7a269efcbc Fixed problem with TMDb list when Year is null, Revert using UrlPathEncode on newznab requests (#937)
* Fixed problem with TMDb list when Year is null

* Fuck it, just skip movies with no year. Once they have a year they will be automagically added if sync is enabled.

* Revert using UrlPathEncode on newznab requests
2017-02-27 20:16:54 -05:00
Ross Valler
06bd6db601 Expose more information to the Webhook notification (#935)
* Fix/implement Webhook notifications

* Expose more information (specifically TMDB ID)
2017-02-27 17:21:44 -05:00
Ross Valler
3dc9d3a420 Fix/implement Webhook notifications (#901) 2017-02-26 08:06:20 -05:00
geogolem
91ba503700 added more filters to the movie editor (#905) 2017-02-26 13:35:22 +01:00
Devin Buhl
28d27dca5c Add remux 1080p and 2160p as qualities (#900)
* Add Remux 1080p and 2160p as qualities, includes Tests & migration

* Whoops forgot to take this out
2017-02-26 01:14:52 -05:00
Devin Buhl
e33265b58d Update parsing french movies (#899)
* Add VO, VFF and VFQ to french language

* Added VO, VFF, TRUEFRENCH and VFQ to french parser

* Update tests for french
2017-02-25 23:45:44 -05:00
Mitchell Cash
22fcb04773 NZBGet delete:scan treated as failure (#898) 2017-02-25 23:22:25 -05:00
Devin Buhl
f9f67873ad small changes 2017-02-25 23:16:18 -05:00
Devin Buhl
b1d345f165 Hotfix 2017-02-25 16:47:18 -05:00
geogolem
1c6a32b684 List sync with removal (#656) 2017-02-25 16:38:52 -05:00
geogolem
55ac2dd1bb fix the footer to show correct information and refresh when FullCollection changes (#893) 2017-02-25 16:37:46 -05:00
Tim Turner
997dce288d Increase fullCollection page size, update Refresh Library command 2017-02-25 13:59:30 -05:00
Devin Buhl
4d745d3600 Patch/updates (#887)
* Update HDBits internal logic

* TMDb List validation

* Add Trakt validation, update rest to implement IProviderConfig

* Update wording
2017-02-25 11:34:07 -05:00
hotio
dbd1080f5c Fix poster placeholder height on small screens (#883) 2017-02-25 10:58:50 -05:00
Leonardo Galli
76963d8109 Merged branch develop into develop 2017-02-25 14:52:52 +01:00
Leonardo Galli
6b106c1b38 me = idiot 2017-02-25 14:52:46 +01:00
hotio
0016cc59af Small UI fixes (#882) 2017-02-25 08:05:40 -05:00
Leonardo Galli
8b9d0f7b19 Fixed an issue where an unloaded movie could case linking to fail. 2017-02-25 13:52:16 +01:00
Leonardo Galli
3a4b01cf6f Maybe fix issue with imported files not being linked to the movie? 2017-02-25 13:50:12 +01:00
Leonardo Galli
15acb9d204 Search is now fixed too. 2017-02-25 13:17:31 +01:00
Leonardo Galli
21fa96f78f Should fix most issues with paging. 2017-02-25 13:04:32 +01:00
Leonardo Galli
fe4e11d9c1 Add first steps of paging to movie editor. 2017-02-25 12:22:36 +01:00
Leonardo Galli
d22d5fcfc3 Merged branch develop into develop 2017-02-25 12:00:34 +01:00
Leonardo Galli
cdca4a8585 First fixes for Movie Editor. Testing to see if this approach could work. 2017-02-25 12:00:23 +01:00
Devin Buhl
46552785f5 HDBits prefer/require internal release (#584) (#881) 2017-02-24 22:41:00 -05:00
Devin Buhl
816c62979a Ignore Deleted Movies (#755) (#879) 2017-02-24 21:30:12 -05:00
Leonardo Galli
ca164c2a24 Fix missing showing downloaded instead. 2017-02-25 00:04:53 +01:00
Leonardo Galli
bf3c6f95eb Fix issue where details page wont load. 2017-02-24 21:44:21 +01:00
Leonardo Galli
f07f2e77f6 Paging for movies :) (#861)
* First steps.

* Not really sure what I am doing here.

* Pretty hacky, but it works :)

* First filter works now.

* Fix all filters.

* Fix some filters.

* PageSize saving now works.

* Fixed items being added when a refresh movie is done.

* Downloaded sort not working.

* Sorting by downloaded status now works.

Extremely hacky, but ¯\_(ツ)_/¯

* Fixed issue where users were stuck when filtering.

* Sorting via that button works now.

* Removed temp thingy.
2017-02-24 19:52:40 +01:00
Devin Buhl
50fdbd896c Bug fixes (#874)
* Update Torrent and Usenet DownloadStation

* Update Download Tests

* Fix TorrentPotato not finding results #754

* Update UpdateMediaInfoService and Tests #572

* Ignore plex otimized versions w/ tests #391

* Remove Xem Serivce files and tests #386

* Ignore TV Episode from IMDb lists
2017-02-24 09:40:25 -05:00
geogolem
bab7bd20cd the Search All Missing button (#860)
was searching all missing and monitored only
though the dialog that popped up was informing the user it was
going to search for x movies, where x corresponded to the number
of movies filtered on the page.

I changed this button, so now it will search all the items as they are
filtered on the page.

For example, if you want to search all missing (regardless of
monitor/unmonitor) click the all filter and click the button.

If you want to search only monitored/missing, click the monitored button
and then click the search all button...

this included the old functionality, but allows the user alot more
flexibility...

i also added the all filter, and refactored the code,
so that builds the expression for the LINQ.. since this needed to be
used in two places.. just implement it once and use it in both places..

I tested this out... and stepped through with debugger.. i also did a
quick test of everything else. Im confident that the featureset
implemented and bugs fixed by this commit are OK... Im not 100% that
other parts of radarr dont use the same MissingMovieSearch routines..
but i dont think so...
2017-02-24 03:22:55 -05:00
geogolem
0678908fd9 Cleanup min availability (#846)
* some minor cleanup + changed filter on wanted/missing

* MovieIndex Footer add counts + update legend

* minor spelling error + typo
2017-02-23 07:08:30 -05:00
geogolem
9d29776e8e some minor cleanup + changed filter on wanted/missing (#845) 2017-02-23 06:33:54 -05:00
geogolem
140a220340 Min availability (#816)
* availability specification to prevent downloading titles before their
release

* pull inCinamas status out of js handlebars and set it in SkyHook

* minor code improvement

* add incinemas to footer

* typo

* another typo

* release date handling

* still print cinema date out for announced titles

* revert a minor change from before since its unnecessary

* early implementation of minimumAvailability --> when does radarr
consider a movie "available" should be specified by user
default to "Physical release?"

this isn't functional yet, but it has a skeleton + comments. I dont
know how to have the minimumavailability attribute default to something
or to have it actually populate the Movieinfo object
could use some help with that

* adding another comment for another location that might need to be
updated to handle minimumAvailability

* the implementation is now function;
however, i still need to specify default values for minimumAvailability

* missed these changes in the previous commit

* fix rounded corners on new field in editmovie dialog

* add minimum availability specification to the addMovie page

* minor adjustment from last commit

* handle the case where minimumavailability has never yet been set
nullstring.. if its never been set, default to Released (Physical/Web)
represented by integer value  3

* minAvailability specification on NetImport lists

* add support for min availability to the movie editor

* use enum MovieStatusType values directly

makes for cleaner code

* need to fix up the migration forgot in last commit

* cleaning up code, proper case

* erroneous code added in this feature needed to be removed

* update "Wanted" page to take into account minimumAvailability

* implement preDB minimumAvailability as default.. behaves same as
Physical/Web a few comments with TODO for when preDB is implemented

* minor adjustment

* remove some unused code (leave commented for now)

* improve code for minimumavailability and add option for
availabilitydelay (but doesnt do anything yet)

* improve isAvailable method

* clean up and fix helper info on indexer configuration page

* add buttons in Wanted/Missing view
2017-02-23 00:03:48 -05:00
Devin Buhl
731e607666 Add NZB Station for Synology (#841) 2017-02-22 18:42:11 -05:00
Devin Buhl
97ee66465d Patch/filter trakt (#838)
* Update wording for Certification

* Add Filter Options for Trakt
2017-02-22 16:12:42 -05:00
Leonardo Galli
a0050fedd3 Fixed language parsing of movies with language in movie name.
Fixes #793
2017-02-22 13:40:06 +01:00
Tim Turner
89e5001bad Patch/bulk import tests (#833)
* Ensure duplicates are not imported

* Clean up some unnecessary code

* Added some fancy tests for bulk import.
2017-02-22 11:21:05 +01:00
Tim Turner
056fb154a8 Patch/bulk import qol (#785)
* Filter out existing movies upon import
* Update collection based on what is imported
* Ensure root folders are loaded before collectionview

TODO:
* Ensure grid region exists
* Return information about what wasn't imported
* Filter collection based on duplicates
2017-02-21 15:31:31 -05:00
Leonardo Galli
3edc2b80cf Update .travis.yml 2017-02-20 22:27:07 +01:00
Mihai Blaga
a1745cd02e URL Encode for newznab query strings, closes #818 (#819)
Closes #818
2017-02-20 11:17:28 -05:00
Mitchell Cash
1c0f9b64ca Rename Sonarr to Radarr in DownloadStation client (#812) 2017-02-20 11:15:53 -05:00
hotio
7d6a518f30 Update notification logos (#804) 2017-02-20 11:15:26 -05:00
Ryan Matthews
9f2fcebc24 Fixes error message for MovieExistsValidator to state the movie doesn't exist (#723) (#808)
Fixes #723
2017-02-19 19:05:37 +01:00
Ryan Matthews
91295f50b0 Set PROWL application to Radarr (#770) (#807) 2017-02-19 18:55:01 +01:00
Devin Buhl
68bf97f52c TMDb Lists should be working now :) (#775)
* Remove un-used imports

* Some small update to Net Import
2017-02-16 14:40:04 -05:00
Devin Buhl
363048e68e Roll back some code on Net Import (#772) 2017-02-16 13:29:21 -05:00
Marcelo Castagna
9c20c0b889 Check to see if output path is right when DownloadClient.Test is invoked (#768)
changed to string interpolation a few lines
2017-02-16 08:22:02 -05:00
Devin Buhl
50891e5dd7 TMDb Filtering Options: Rating, Min Votes, Min Vote Ave, Original Language, TMDb Genre Ids (CSV), (#765) 2017-02-16 04:46:35 -05:00
Devin Buhl
f393a95501 Small consistancy updates to PTP and AwesomeHD (#758) 2017-02-15 18:02:24 -05:00
Devin Buhl
a68dd6d2f7 Patch/onedr0p (#757)
* Fix double ? in log

* Rename Download Station to TorrentDownloadStation

* Rename Trakt, TMDb, and set Enable sync default to false

* Added omgwtfnzbs Newznab prefix

* Update Media info for Windows/macOS to 0.7.92.1
2017-02-15 17:37:23 -05:00
Marcelo Castagna
dadf6708ab Handle download data diskstation (#744)
* Delete data manually after finished seeding

* Removed try/catch
2017-02-14 09:29:47 -05:00
Tim Turner
7a86c78896 Merged patch/update-files-tab-onChange into develop 2017-02-13 20:08:31 -05:00
Tim Turner
81688399c0 When refreshing movie, refresh Files tab 2017-02-13 20:08:07 -05:00
Devin Buhl
1e28a2e5d4 Feature/Add TMDb Functionality (#739)
* Inital TMDb List, needs paging support and user lists, private or public

* Clean up Base

* TMDb grabs upto 5 pages for import, update validation, added minimum vote average

* Added logic for MovieLinksTemplate

* Clean up a bit

* Add Public Lists
2017-02-13 09:11:20 -05:00
zductiv
c5bb259555 add downloaded quality column to movie editor (#738) 2017-02-13 08:25:37 -05:00
Devin Buhl
0d5d75d6ea Update ISSUE_TEMPLATE.md 2017-02-13 08:14:37 -05:00
Devin Buhl
5bae9bbbcc Update PULL_REQUEST_TEMPLATE.md 2017-02-13 08:08:37 -05:00
Devin Buhl
a3e681078f Clean up Trakt a little (#735) 2017-02-13 00:38:19 -05:00
Devin Buhl
758228e159 Update dl-clients (#732) 2017-02-12 20:07:57 -05:00
Devin Buhl
1b900a006f Add Synology Download Station (#725)
* Add Synology Download Station

* Update DownloadStation Client from Sonarr
2017-02-12 19:44:47 -05:00
Leonardo Galli
9b5c5169ef fix pending release table. 2017-02-12 16:33:36 +01:00
Devin Buhl
e78a55ac6e Fix Hardcoded .DKSubs. (#726)
* Fix Hardcoded .DKSubs.

* Added tests
2017-02-12 09:19:48 -05:00
Devin Buhl
e82cf70399 NetImport - Do not allow TV Series / Mini-Series (works with IMDb) #699 (#727)
* Do not allow TV Series / Mini-Series (works with IMDb) #699

* Ignore Case
2017-02-12 09:16:15 -05:00
Devin Buhl
e7d65ee4ae Patch/re add ghost migrations (#724)
* Remove Wombles and Kickass Data from tables

* And that's why you build
2017-02-12 07:08:39 -05:00
Devin Buhl
1db3669afa Patch/onedr0p (#716)
* Alter IMDb lists to what was requested: #697

* Update Pending Release

* Tests (these need to be updated further)

* Alter table migration, movieId already exists

* Update HouseKeeping for pending release

* Fix migratiom and pendingrelease housekeeping
2017-02-12 06:57:07 -05:00
Mitchell Cash
93e55b7575 Increase timeout when waiting for rTorrent to finish adding torrent (#721)
Increase timeout when waiting for rTorrent to finish adding torrent
2017-02-12 03:07:38 -05:00
Devin Buhl
f850c65b56 Update ISSUE_TEMPLATE.md 2017-02-11 18:29:56 -05:00
Leonardo Galli
297348fffe Merged branch develop into develop 2017-02-11 23:25:35 +01:00
Leonardo Galli
07ff6558d1 Hopefully fixes a lot of null reference bugs in BulkImport 2017-02-11 23:25:27 +01:00
Leonardo Galli
85843efcb0 Added test for ! 2017-02-11 23:24:10 +01:00
zductiv
3d4b1c3be5 changed sort options to match UI (#707) 2017-02-11 15:04:19 -05:00
Tim Turner
a3f389af5e Fix RescanMovie command for single movie
Partial fix for #669
2017-02-11 14:38:17 -05:00
Leonardo Galli
1aeb3c6fd6 Should fix blacklist items disappearing.
Fixes #653
2017-02-11 18:32:54 +01:00
Leonardo Galli
6ab6c016c0 Fix manual import for when downloaded movies are in a folder 2017-02-11 18:26:35 +01:00
Leonardo Galli
a1961603d7 Merged branch develop into develop 2017-02-11 17:40:31 +01:00
Leonardo Galli
50ac95dec5 Update parser tests. 2017-02-11 17:40:01 +01:00
Leonardo Galli
a16e46cf38 Fix parsing with lower bluray qualities.
Fixes #706
2017-02-11 16:59:15 +01:00
zductiv
ea33b75764 search all missing movie works - missing tab only (#710) 2017-02-11 08:48:02 -05:00
Devin Buhl
31e657d052 Limit TMDb requests when importing via IMDBid (#703) 2017-02-10 23:03:24 -05:00
Leonardo Galli
fe0dfef83c Fixes issue with movies with same name but different years being downloaded. 2017-02-10 19:40:10 +01:00
Leonardo Galli
bc1a47ff5a Fixed a few parser issues. Also added some tests.
Fixes #549
2017-02-10 19:00:16 +01:00
Leonardo Galli
4e8089dd42 Cutoff tab actually working now. 2017-02-10 17:30:35 +01:00
geogolem
6dc9f90a8b fix trakt links for movies (like sonarr for shows) (#690) 2017-02-10 04:07:38 -05:00
Devin Buhl
1aae3ae2b5 Fixed Sorting In Wanted and Cutoff (#693) 2017-02-10 04:04:50 -05:00
Devin Buhl
75436bcce4 Pass at seeing if this works on linux now (#692) 2017-02-10 03:17:28 -05:00
zductiv
61df3ef40e Small UI changes (#691)
* Update FileManagementViewTemplate.hbs

* Update PermissionsViewTemplate.hbs

* modified UI, removed old episode references
2017-02-10 03:14:51 -05:00
Devin Buhl
f45aab27d1 Add required flag for PTP (#688) 2017-02-10 01:35:47 -05:00
Devin Buhl
f477c46406 Wanted & Missing (#687)
* Remove Season Pass, Update Header name, remove useless function

* Cutoff Tab now works
2017-02-10 00:15:41 -05:00
Devin Buhl
2af07d7e0d * Make Missing/Wanted Work again (#686)
* Make Missing/Wanted Load
2017-02-09 22:52:13 -05:00
Devin Buhl
df691488a9 Fixed MovieMissingModule failed while processing [MovieDownloadedEvent] 2017-02-09 16:52:35 -05:00
Tim Turner
800e7ae508 UI Enhancements for Manual Import (#681)
Fixes #589
Fixes #632
2017-02-09 16:25:51 -05:00
Leonardo Galli
fcf156293e May be fix loading view? Idk. 2017-02-09 16:48:14 +01:00
Tim Turner
94f44a0eb7 Display loading view when changing page size 2017-02-08 17:00:37 -05:00
Leonardo Galli
1e2c28f67a Merged branch develop into develop 2017-02-08 22:14:04 +01:00
Leonardo Galli
62b45f7ea7 Fix paging breaking in bulk import. 2017-02-08 22:11:11 +01:00
Devin Buhl
f577590ad6 Fix ordering in PTP, should prefer GP releases (#667)
* Fix ordering in PTP, should prefer GP releases

* Apply more checks
2017-02-08 14:26:11 -05:00
Devin Buhl
0941247f63 Patch/onedr0p updates (#664)
* Remove button for require GP in PassThePopcorn

* Fix AwesomeHD when search results yeild 1 torrent result

* Add try/catch block
2017-02-08 10:36:07 -05:00
schumi2004
3170060f37 Make Movie Title and Status sortable on Wanted tab (#662) 2017-02-08 09:22:49 -05:00
Leonardo Galli
35b384439f Bulk Import. (#583)
* First pass at bulk import.

* First pass at paging implementation for bulk import.

* Another pass at UI for bulk import

WHY WON'T THE ROWS SELECT?!?!

* Paging mostly done. UI needs to show loading still.

* Fix for selection

* fixes.

* Add caching to bulk import

* Tried to fix paging.

* Fix has next

* Fix link error.

* Pageable now works almost perfectly.

Collection now works really nicely when paged. Also movies from different pages can be added no problemo.

* /bulk-import: ProfileCell

Various other QoL changes

* Profile selection works now

Still kinda hacky

* Default monitored to true.

* Add Monitor Cell

Update styling, added path tooltip as well

* Update model when changing tmdbId

Ensure monitor status doesn't change as well

* Added spinner feedback for tmdbid cell.

* /bulk-import: Add page-size selector
2017-02-07 19:09:36 -05:00
Devin Buhl
0d1150d4d2 Wait 5 seconds before getting the next 35 movies from TMDb using X-RateLimit-Remaining (#647)
* Wait 5 seconds before getting the next 35 movies from TMDb using X-RateLimit-Remaining

* Update SkyHookProxy.cs
2017-02-07 16:55:57 -05:00
Devin Buhl
1f68b46575 Correct the Kickass migration (#649) 2017-02-07 16:36:35 -05:00
Devin Buhl
32c5c4d741 Update notif list warning when importing from a list (#648) 2017-02-07 16:29:12 -05:00
Devin Buhl
0cb15121e5 Fix movies not showing up in Queue when downloading (#640) 2017-02-07 03:03:15 -05:00
Devin Buhl
808033a01c Fixed Movie link in history tab (#637) 2017-02-06 20:57:53 -05:00
Devin Buhl
736e0d2e70 Clean up download clients to use radarr as label, fix hoduken, and blackhole. (#635)
* change default label to radarr for rtorrent

* change utorrent default label to radarr

* change hadoken to use radarr label

* change blackhole default to radarr, update hoduken

* Episodes don't work, but it needs to be here

* Fix blackhole xD
2017-02-06 19:51:30 -05:00
Devin Buhl
96741570c5 Use Movie Name-TmdbId for slug, update toUrlSlug (#629) 2017-02-06 17:01:02 -05:00
Devin Buhl
8feb3fee98 Removed Wombles and Kickass, updated torrentpotato and torznab (#625)
* Remove Wombles and kickass

* Clean up TorrentPotato Request Gen

* Opps, we need to use SupportedMovieSearchParameters xD

* Consistancy

* Clean up Newznab Request Gen, add year to search if cannot use IMDB

* Added SpecialCharRegex to remove \ / : &
2017-02-06 16:34:11 -05:00
Abzie
07e3e44a68 Various ui text fixes (#620)
* Fix notification text on rename

* Fixed profile tooltip for minimum sizes

* Updated link to now point to Radarr's FAQ

* Revert "Updated link to now point to Radarr's FAQ"

This reverts commit 726e0cc870c3fbbc40001fb2a04e366a7bc9eb69.

Revert 726e0cc

* Fixed: Updated link to now point to Radarr's FAQ
2017-02-06 13:58:24 -05:00
vertigo235
d67d405024 Delay Profile: Fix for when preferred words is null. (#618) 2017-02-06 14:07:17 +01:00
Devin Buhl
520836f475 Merge pull request #598 from vertigo235/delay-profile-patch
Delay Profile: Upgradable Check Fix
2017-02-05 15:58:49 -05:00
vertigo235
6d6bf1044b preferredcount -> preferredCount 2017-02-05 15:45:09 -05:00
vertigo235
195866f3aa Delay Profile: Require preferred word to skip delay. 2017-02-05 14:09:22 -05:00
schumi2004
10f0be0708 fix ical ics file (#603) 2017-02-05 20:04:38 +01:00
Leonardo Galli
721773ef68 Fixed issue where quality weight was mapped wrongly. Fixes #597 2017-02-05 20:00:41 +01:00
vertigo235
0d647ffb9a Delay Profile: Delay for at least 1 preferred word 2017-02-04 02:26:11 -05:00
vertigo235
b6235e99c8 Delay Profile: Upgradable Check Fix
Only do the upgradable file check if there are exisitng files.
2017-02-04 01:07:26 -05:00
Devin Buhl
1d0a6af7d7 Merge pull request #587 from Radarr/patch/preferred-tags-info
Added 'Case Insensitive.' to preferred tags info to help-inline
2017-02-03 02:30:19 -05:00
Devin Buhl
efd7af165c Added 'Case Insensitive.' to preferred tags info to help-inline 2017-02-03 01:11:01 -05:00
Leonardo Galli
3f4ee6d841 Runtime error fix. 2017-02-02 18:18:02 +01:00
Leonardo Galli
55c437d980 Fix runtime issues.
Fixes #275 and #577
2017-02-02 17:35:00 +01:00
Leonardo Galli
ecfe103c50 Fix glaringly obvious mistake that caused RSS Sync to fail.
Fixes #580
2017-02-02 17:29:49 +01:00
Devin Buhl
a282ad7809 Merge pull request #573 from Radarr/patch/more-trakt-options
Added more options to trakt, popular movies, upcoming, anticipated etc..
2017-02-01 19:06:05 -05:00
Devin Buhl
64176b8d26 Added more options to trakt, popular movies, upcoming, anticipated etc.. 2017-02-01 18:49:40 -05:00
Devin Buhl
278fb298b6 Merge pull request #571 from Radarr/patch/settings-branch-warning
Add warning for docker users when switching branch
2017-02-01 17:45:32 -05:00
Devin Buhl
1d1b88cf05 Add warning for docker users when switching branch 2017-02-01 17:33:37 -05:00
Chris Allen
0c50aa7872 Add plain "ES" audioProfile. (#569) 2017-02-01 23:13:48 +01:00
Leonardo Galli
0bfa01f072 Fix delay specification when delay is not set to zero
Fixes #410
2017-02-01 18:58:06 +01:00
Chris Allen
3e9594f069 Use shorter format Profile string. (#561) 2017-02-01 11:22:28 +01:00
Chris Allen
a07138680b Use movieFile instead of episodeFile. (#560) 2017-02-01 10:44:41 +01:00
Chris Allen
5f6f2f2859 Add expanded DTS audio codecs to FileNameBuilder and fix up Atmos TrueHD audioCodec string. (#559)
* Add DTS-ES, DTS-HD HRA, DTS-HD MA, DTS-X to audioCodec.

* Cleanup "Atmos / TrueHD" audioCodec string.
2017-02-01 10:22:33 +01:00
Tim Turner
e185ba0191 Don't display mapped movies in import list
When importing existing movies, don't list those which already exist in the collection.
2017-01-31 15:11:33 -05:00
Tim Turner
3ab0b17379 Fix Delete modal when adding movie 2017-01-31 10:32:12 -05:00
Leonardo Galli
942d97931e Delete files now works. Fixes #127 2017-01-31 14:34:35 +01:00
Leonardo Galli
40809f1d91 First pass regarding delete. 2017-01-31 13:45:20 +01:00
Leonardo Galli
f6a37186aa Fix error for movies with less than 4 characters. Fixes #507 2017-01-31 13:12:32 +01:00
Devin Buhl
9522bf3095 Merge pull request #532 from Radarr/patch/add-import-from-list-back
add importfromlist abck
2017-01-30 17:30:02 -05:00
Devin Buhl
c3c7387390 add importfromlist abck 2017-01-30 17:21:56 -05:00
Devin Buhl
09fb58c3e9 Merge pull request #531 from Radarr/patch/fix-filter-movie-list
Fix the filter modes on the movie list xD
2017-01-30 17:07:24 -05:00
Devin Buhl
3d33e630ec Fix the filter modes on the movie list xD 2017-01-30 17:00:52 -05:00
Devin Buhl
b51916fb2b Merge pull request #530 from Radarr/patch/ptp-updates
updates to ptp, and using caching for cookie
2017-01-30 16:46:14 -05:00
Devin Buhl
c9ee92cc30 updates to ptp, and using caching for cookie 2017-01-30 16:35:12 -05:00
Leonardo Galli
0e81416c2f Fix issues with different languages than english when adding alternative titles.
Fixes #509
2017-01-30 17:29:42 +01:00
Devin Buhl
6cd7d46208 Merge pull request #528 from Radarr/patch/passthepopcorn-username-etc
Use username, password and passkey for passthepopcorn
2017-01-30 01:54:09 -05:00
Devin Buhl
6af6da16b4 Use username, password and passkey for passthepopcorn 2017-01-30 01:48:28 -05:00
Devin Buhl
4c5900373d Merge pull request #517 from Radarr/patch/update-qualities
Patch/update qualities
2017-01-29 16:14:54 -05:00
Tim Turner
2fd167c446 Merged branch patch/update-qualities into patch/update-qualities 2017-01-29 16:08:18 -05:00
Tim Turner
31149aeed9 Ensure qualities don't overflow profile card 2017-01-29 16:08:14 -05:00
Devin Buhl
977b87cbf3 migration migraine-tion 2017-01-29 16:07:30 -05:00
Tim Turner
42ed4ff48a Update Fetch List button style
Let's make it not look sad and disabled
2017-01-29 15:53:30 -05:00
Devin Buhl
060c71f439 migration 2017-01-29 15:49:32 -05:00
Devin Buhl
63527858e7 Merge branch 'develop' into patch/update-qualities 2017-01-29 15:47:26 -05:00
Devin Buhl
2f4ea9cac7 migration 2017-01-29 15:47:08 -05:00
Devin Buhl
a1f2369306 Update the regex in Parser, Add workprint and telesync, change R5 to regional allow for R[0-9]{1}, changed the weights 2017-01-29 14:22:04 -05:00
Tim Turner
a35c5f79c1 Set Drone Factory Interval default to 0 (#515)
Fixes #447
2017-01-29 14:09:54 -05:00
Devin Buhl
d382e15749 Merge pull request #504 from Radarr/patch/trakt-integrations
Added options for watched, and watchlist, and customlist to trakt
2017-01-28 21:27:51 -05:00
Devin Buhl
5b7d513986 Added options for watched, and watchlist, and customlist to trakt 2017-01-28 21:17:55 -05:00
Devin Buhl
be083cfd53 Merge pull request #500 from Radarr/patch/net-import-changes
Patch/net import changes
2017-01-28 17:35:09 -05:00
Devin Buhl
f9844c284a Merge pull request #487 from mitchellcash/port_validation
Fixed: Proper port validation for download clients and connections
2017-01-28 17:32:49 -05:00
Devin Buhl
e8065d07b3 Make year nullable for trakt 2017-01-28 17:27:53 -05:00
Devin Buhl
8a0820ad1e make year nullable, and rmember the profileid 2017-01-28 17:14:51 -05:00
Devin Buhl
8274cc016f Merge pull request #499 from Radarr/patch/hdbits
Update HDBits to work with Radarr
2017-01-28 16:52:36 -05:00
Devin Buhl
b88281b458 Update HDBits to work with Radarr 2017-01-28 16:46:54 -05:00
Devin Buhl
a1cb5eb420 Merge pull request #497 from Radarr/feature/net-import
Feature/net import
2017-01-28 15:39:08 -05:00
Devin Buhl
d458c4ecc8 update taskscheduler when config is saved with netimportsynccommand 2017-01-28 15:30:46 -05:00
Devin Buhl
b6e4f53597 Make NetImport sync interval work (needs some testing) 2017-01-28 14:59:21 -05:00
Leonardo Galli
4abbf55ee4 Merge Develop into Net-Import 2017-01-28 20:32:57 +01:00
Tim Turner
1fd909cff6 Net Import UI Updates
- Change name to "StevenLu" to fix
- Hide header on New List modal
- Show "Import Selected" only after a list has been fetched
2017-01-28 13:27:54 -05:00
Tim Turner
7ca53d1073 Only show "Display Existing Movies" toggle after selecting a folder 2017-01-28 12:16:50 -05:00
vertigo235
2bda0f700c Update Synology Indexer For Movies (#486) 2017-01-28 18:13:10 +01:00
vertigo235
16b2cc49d4 Allow Duplicate Preferred Words (#484)
Allows you to weigh certain words more heavily. 

ex. This, This, That = This > That
2017-01-28 18:13:01 +01:00
Tim Turner
e3e67d1098 Clean up settings UI 2017-01-28 12:03:45 -05:00
Leonardo Galli
3276e3ec52 Fix for movies without an imdbid. Fixes 176 2017-01-28 17:54:19 +01:00
Leonardo Galli
5e9a79afe8 Quality of an existing movie file can now be edited. 2017-01-28 17:35:51 +01:00
Leonardo Galli
c6912a193c Fix recognition of 4k Movies upon import. 2017-01-28 16:24:21 +01:00
Leonardo Galli
47083e6be1 This should hopefully fix the error that decisions were not ordered correctly and therefore just the first release was grabbed. 2017-01-28 16:18:44 +01:00
Leonardo Galli
ca78cc5c3c Remove confusing warning about file not being loaded. 2017-01-28 16:01:30 +01:00
Tim Turner
76db305ffa Add movie year to NotificationService (#496) 2017-01-28 09:42:37 -05:00
Tim Turner
5d2ef4786b Revert "Merge branch 'rename-existing-folder' into develop"
This reverts commit a340bc4da3, reversing
changes made to 4be7772d53.
2017-01-28 06:49:02 -05:00
Tim Turner
9953a5ed06 Revert "Add movie year to NotificationService (#489)"
This reverts commit e2d6e39168.
2017-01-28 06:33:15 -05:00
Tim Turner
dd194d41be Revert "Ensure the movie isn't delete when the folder isn't renamed (#491)"
This reverts commit 8168cf82c5.
2017-01-28 06:29:58 -05:00
Tim Turner
8168cf82c5 Ensure the movie isn't delete when the folder isn't renamed (#491) 2017-01-27 21:24:01 -05:00
Tim Turner
e2d6e39168 Add movie year to NotificationService (#489) 2017-01-27 20:32:16 -05:00
Tim Turner
a340bc4da3 Merge branch 'rename-existing-folder' into develop 2017-01-27 19:31:55 -05:00
Tim Turner
4bcb0e17f8 Merge branch 'develop' into rename-existing-folder 2017-01-27 19:31:39 -05:00
Tim Turner
25a51df894 Merge FileNameBuilder 2017-01-27 19:31:37 -05:00
Tim Turner
f9c6ffcdaa merge from Develop 2017-01-27 19:31:03 -05:00
Mark McDowall
b76c54ceac Fixed: Proper port validation for download clients and connections 2017-01-28 09:26:47 +10:00
vertigo235
4be7772d53 Kodi Update Fix: OldFiles -> OldMovieFiles (#483) 2017-01-27 20:34:52 +01:00
Leonardo Galli
cbc70a8ff3 Added option to specify preferred words in quality profile. (#462)
* UI Done

* Should theoretically work.

* Preferred tags works now correctly :)
2017-01-27 20:01:28 +01:00
Leonardo Galli
dd8af0ad8c Manual Import works now!
Also fixed a few bugs.
2017-01-27 19:36:25 +01:00
vertigo235
00541e6cc1 More Notification Updates (#482)
* Custom Script: Add Movie_Path

* Add Emby Update Support

* Notifications: Maybe add Kodi / XBMC Update Support
2017-01-27 19:01:18 +01:00
Tim Turner
a8eec60c9d Remove old folder and all contents 2017-01-26 19:57:31 -05:00
Tim Turner
7bb319b6d6 Update Files tab when movie renamed 2017-01-26 19:16:19 -05:00
Tim Turner
50a5a2de9b Movie reference properly updates UI now
Still need to fix the 'Files' tab to be updated
2017-01-26 17:58:19 -05:00
Devin Buhl
dbe5946d10 Only wanted is default for CP 2017-01-26 17:31:27 -05:00
Devin Buhl
d5caac5d3b make DVDR not unlimited 2017-01-26 17:10:08 -05:00
vertigo235
487c5e22ce Moviefile, what movie file? (#466)
Send the moviefile object.
2017-01-26 21:46:55 +01:00
vertigo235
6efd63a292 Remove mofilefile id for now (#464) 2017-01-26 21:13:27 +01:00
Devin Buhl
f31dc3c054 Update weights 2017-01-26 14:53:43 -05:00
Devin Buhl
c60be3a467 Added new qualities, added new qualities to profile class.
Left to do: write migration, and tests
2017-01-26 14:43:24 -05:00
Leonardo Galli
44b4e71c05 Manual importing almost done. Needs fixing for mapping movies. 2017-01-26 14:21:35 +01:00
Devin Buhl
5ebd035b1c Merge pull request #460 from vertigo235/notifications
Download Movie Quality & Formatting
2017-01-25 21:36:25 -05:00
vertigo235
d50514f8bc Download Movie Quality & Formatting
Fix downloaded movie quality and add space between movie name and quality.
2017-01-25 21:19:59 -05:00
Tim Turner
7da2183080 Be more proper about Ensuring the folder exists
Still need a way to tell the UI model to update itself
2017-01-25 20:11:02 -05:00
Devin Buhl
a417ac2716 Merge pull request #459 from jrdnlc/develop
Update GeneralViewTemplate.hbs
2017-01-25 19:59:50 -05:00
Jordan
a89e662721 Update GeneralViewTemplate.hbs
Updated Wiki link to Radarr
2017-01-25 16:34:35 -08:00
Tim Turner
72aac6e551 Update Rename Preview to support folder renaming 2017-01-25 19:03:40 -05:00
Devin Buhl
4b1e4eecfb Merge pull request #456 from Radarr/patch/lang
Change lang in UI to what profile / lang they choose when they add a …
2017-01-25 18:07:26 -05:00
Devin Buhl
8e452f8b6d Change lang in UI to what profile / lang they choose when they add a movie 2017-01-25 18:00:46 -05:00
Devin Buhl
7e6db89eff Merge pull request #454 from vertigo235/notifications
Custom Script Fix: Parse movie not episode
2017-01-25 17:02:33 -05:00
vertigo235
16214e666b Custom Script Fix: Parse movie not episode 2017-01-25 16:55:36 -05:00
Devin Buhl
2b25ce237f Merge pull request #448 from hotio/patch-1
Fixes issue #447 (Notification Icon for Join)
2017-01-25 11:55:31 -05:00
Devin Buhl
f0a9955447 Merge pull request #450 from Radarr/patch/ahd
only use internal for RSS Sync
2017-01-25 11:55:19 -05:00
Devin Buhl
d0439296fe only use internal for RSS Sync 2017-01-25 11:40:04 -05:00
Devin Buhl
e2c2bdb65b nullable all the fields.. 2017-01-25 11:35:10 -05:00
Devin Buhl
bc3fdb0f80 Merge pull request #449 from Radarr/patch/ahd
include only internal for AHD
2017-01-25 11:31:04 -05:00
Devin Buhl
186b2ada36 include only internal for AHD 2017-01-25 11:24:20 -05:00
Devin Buhl
577125f345 Merge pull request #435 from vertigo235/notifications
Notification Fixes/Updates
2017-01-25 10:56:11 -05:00
hotio
687dd8a05f Update JoinProxy.cs 2017-01-25 16:54:57 +01:00
hotio
81861c6121 Fixes issue #447 (Notification Icon for Join) 2017-01-25 16:50:38 +01:00
Devin Buhl
302462f48c Merge pull request #441 from schumi2004/rss-sync
fix new rss-sync threshold
2017-01-25 06:22:48 -05:00
schumi2004
d132f55830 fix new rss-sync threshold 2017-01-25 10:52:29 +01:00
vertigo235
6bbd64e59a Update Plex Movie Sections 2017-01-24 21:32:20 -05:00
vertigo235
290c4e1f2e Update slack for movies. 2017-01-24 17:56:10 -05:00
Devin Buhl
1112616514 Merge pull request #434 from Radarr/patch/dumb-metadata-erros
"fixed" error message
2017-01-24 17:35:27 -05:00
Devin Buhl
7fddbca4b7 "fixed" error message 2017-01-24 17:29:07 -05:00
Tim Turner
692841478c Add link to Activity -> History Tab (#408)
Fixes #365
2017-01-24 16:12:58 -05:00
Tim Turner
23232b9830 Allow renaming of movies that don't have an "Edition" (#432)
Fixes #405
2017-01-24 16:08:06 -05:00
Leonardo Galli
b886566b25 Update README.md 2017-01-24 21:30:24 +01:00
Devin Buhl
2c56d60678 #292 - Allow longer threshold for RSS Sync (#428)
* #292 - Allow longer threshold for RSS Sync

Update RSS Sync interval default to 60 minutes, and don't allow values below 60 or higher than 720 minutes (12 hours)

* allow minimum of 10 mintes
2017-01-24 21:26:51 +01:00
hotio
a0c8127ecf Update to favicon section, according to (#416)
* Update to favicon section, according to

http://realfavicongenerator.net/

* Windows start not as expected

* re-add msapplication-navbutton-color
2017-01-24 21:23:42 +01:00
Devin Buhl
05f61df59e update default sort order (#429)
#426
2017-01-24 21:16:22 +01:00
Devin Buhl
a0b80ad41a Add year to search (#425)
#417
2017-01-24 20:17:35 +01:00
vertigo235
9e7cb708bf Initial Notification Updates and Support (#401)
* Bare bones of notifications working.

* Add MovieDownload event handler

To allow Download notificaitons

* Update pushover text to indicate movie

* Initial Notification Support

On Download and On Grab notifications should work.

* Telegram Notification Text

* Update Custom Script For Movies

* Update PP script WiKi page

Also added wiki page to Radarr wiki.
2017-01-24 20:17:24 +01:00
Devin Buhl
95d97c59d7 rephrase wording 2017-01-24 13:47:44 -05:00
Devin Buhl
a75f3e1f8e monitored to false for movies already downloaded on CP 2017-01-24 13:42:27 -05:00
Devin Buhl
d09d30544f allow null value for seed time. 2017-01-24 13:22:02 -05:00
Leonardo Galli
1ad4006819 Fixes an issue where movies with (year) at the beginning were recognized with a title of "(" 2017-01-24 10:02:20 +01:00
Devin Buhl
43d904d20b added trakt user list importing 2017-01-23 18:06:42 -05:00
Leonardo Galli
5339f8efdc Blind fix to support seperator in movie tags. 2017-01-23 22:34:16 +01:00
Leonardo Galli
b273bfb10e Fix issue with certain audio streams. Should fix #404 2017-01-23 22:04:49 +01:00
Devin Buhl
244e82722d Merged branch feature/net-import into feature/net-import 2017-01-23 15:18:13 -05:00
Devin Buhl
e182d8b964 fix importing for StevenLu 2017-01-23 15:18:04 -05:00
Leonardo Galli
02e610a5f2 Merged branch feature/net-import into feature/net-import 2017-01-23 20:52:05 +01:00
Leonardo Galli
032bc2d5c4 Add basic ui of manual import. 2017-01-23 20:51:33 +01:00
Devin Buhl
e59db74cad Add StevenLu to csproj 2017-01-23 14:39:27 -05:00
Leonardo Galli
fbe9ad6582 First pass at ui for manually importing from lists. 2017-01-23 20:00:31 +01:00
Devin Buhl
87da542758 Add import from http://movies.stevenlu.com/ 2017-01-23 12:54:31 -05:00
Leonardo Galli
b2317ada1f Add {Tags} to renaming options 2017-01-23 18:52:27 +01:00
Leonardo Galli
336aee7fda Fix when libgdiplus isn't present. 2017-01-23 18:42:05 +01:00
Leonardo Galli
9e7468d723 Merged branch develop into develop 2017-01-23 16:09:19 +01:00
Leonardo Galli
f05ee13206 Fix issue where monitored movies were still downloaded. Fixes #326 2017-01-23 16:09:11 +01:00
Leonardo Galli
8b3b46b724 Added easy to use List Selection for manual import use later. The place where this resides will change. 2017-01-23 16:04:52 +01:00
Leonardo Galli
80e53f209d Movies can now be added monitored or unmonitored. 2017-01-23 15:31:09 +01:00
Leonardo Galli
82f29cdc70 Add Ability to set RootFolderPath for Net Import List
Fixed other things. Finished command to automatically add a movie.
2017-01-23 15:21:49 +01:00
Leonardo Galli
93d6505f85 Fix netimport search and add NetImportSyncCommand 2017-01-23 14:04:01 +01:00
Devin Buhl
2b7afd3272 remove duplicate code 2017-01-23 00:29:31 -05:00
Devin Buhl
6d4e1f6c2e fix movies being clobbered when a new list is sent thru 2017-01-22 23:23:51 -05:00
Devin Buhl
2b579eb0d3 Merge pull request #385 from hotio/ui-logos
Ui logos
2017-01-22 23:21:23 -05:00
Devin Buhl
c0f323b05a Implement NetImportSearchService
check it out
2017-01-22 23:20:12 -05:00
hotio
791121fa06 Proper ico and favicon 2017-01-22 23:32:01 +01:00
Leonardo Galli
f25d4463f5 Merged branch feature/net-import into feature/net-import 2017-01-22 23:11:38 +01:00
Leonardo Galli
f0bcb27beb Fixes issue when multiple audio channels are present. Fixes #315 Fixes #294 2017-01-22 23:11:05 +01:00
Leonardo Galli
00099a5e40 Added Base URL 2017-01-22 23:09:07 +01:00
Leonardo Galli
7c251157ed Fix media info parsing of multiple audio channels. Fixes #315 Fixes #294 2017-01-22 23:03:47 +01:00
Tim Turner
ec6b389d75 Fix duplicate key prefixing 2017-01-22 16:59:53 -05:00
Tim Turner
f38430d632 Update localstorage key prefixes 2017-01-22 16:24:22 -05:00
Tim Turner
266f28883a Prefix localstorage keys with "Radarr"
Updates #285
2017-01-22 15:54:41 -05:00
hotio
cc3c2533fa Updated ico files 2017-01-22 21:31:20 +01:00
hotio
f8162b34f2 Update UI logos 2017-01-22 21:07:12 +01:00
Devin Buhl
3ff5b36d29 Add urlBase option to CP settings 2017-01-22 14:53:21 -05:00
Leonardo Galli
1fa736c6d8 Fixed styling. Fixed definitions not being returned. 2017-01-22 19:52:25 +01:00
hotio
309877bf76 Optimized logo (#375)
* Optimized logo
Inkscape compatible SVG Honeycomb is slightly different)
File size optimized PNG's (446kB->163kB)

* Use Sonarr honeycomb and proper id's for future use
New png's included

* And final fixes are done
2017-01-22 13:33:33 -05:00
Leonardo Galli
a50b20a397 Set update interval to 30 minutes if on nightly 2017-01-22 18:24:47 +01:00
Leonardo Galli
de5489ae9a Merged branch develop into develop 2017-01-22 18:18:26 +01:00
Leonardo Galli
12e74aa38b Change Forms Auth Cookie. Fixes #285 2017-01-22 18:18:15 +01:00
Leonardo Galli
94eccc6c14 Rethought about where certain things are stored.
Profiles are now a component of the NetImportDefinition.
2017-01-22 17:02:20 +01:00
Tim Turner
80ec66b47c Prefix Keys with "Radarr"
Makes progress on #285
2017-01-22 10:09:10 -05:00
Leonardo Galli
9fffcfaea3 Fix stuff regarding the ordering of Fields. 2017-01-22 15:08:25 +01:00
Leonardo Galli
f481676c81 Fix migration to include ConfigContract and EnableAuto. Also fixed redirects on lists.
Please delete NetImport Table and the corresponding VersionInfo Row (123)
2017-01-22 14:55:25 +01:00
Leonardo Galli
76a42b28f3 Second UI Pass, Testing now works and other little things. 2017-01-22 14:30:33 +01:00
Leonardo Galli
ad26e48408 Fix up presets. 2017-01-22 14:03:09 +01:00
Leonardo Galli
0bab97e02f Make presets work for RSS Import :) 2017-01-22 13:44:03 +01:00
Leonardo Galli
2413457323 Add CP list class. 2017-01-22 13:34:03 +01:00
Devin Buhl
585fd87ad6 Merge pull request #378 from Radarr/patch/add-more-filters
Add more filter options to movie list
2017-01-22 05:38:21 -05:00
Devin Buhl
ec5161e848 Add more filter options to movie list 2017-01-22 04:58:04 -05:00
Devin Buhl
0ec54daaff Merge pull request #373 from baltoaca/develop
search selected button in wanted tab works
2017-01-21 19:27:00 -05:00
Devin Buhl
bfcd05206f migration migrainetion 2017-01-21 19:25:28 -05:00
Devin Buhl
ddf10ed137 Added couchpotato, and added a test 2017-01-21 19:15:06 -05:00
Tim Turner
3ed1bebb7d Fix #228 - Fix Drone Factory interval input not saving 2017-01-21 18:06:10 -05:00
Devin Buhl
b4d1c0e053 couchpotato API classes 2017-01-21 17:24:21 -05:00
Tim Turner
68f58fb37d Undo unecessary changes 2017-01-21 17:22:21 -05:00
Tim Turner
f9923f4592 Move folder on rename; event doesn't fire yet 2017-01-21 17:20:30 -05:00
Vlad Ilies
29ae088a3d search selected button in wanted tab works
* switched MoviesSearchCommand to a list of id's

* adapted the MovieSearchService

* adapted UI files to use the new command
2017-01-21 23:43:58 +02:00
Leonardo Galli
dd553b9439 WIP UI Update for adding lists. 2017-01-21 22:13:55 +01:00
Leonardo Galli
451f2d30e4 Merged branch develop into feature/net-import 2017-01-21 21:28:44 +01:00
Leonardo Galli
463d85e479 Basis of UI Update. 2017-01-21 21:28:14 +01:00
Leonardo Galli
2c52795822 Add base for netimport api. Still nothing on the UI side. 2017-01-21 21:09:02 +01:00
Leonardo Galli
4f37a36619 Updated HttpNetImporterBase. Still needs work to correctly handle failures. 2017-01-21 20:57:29 +01:00
Leonardo Galli
5aaba98c57 Imdbid parsing works now from url 2017-01-21 20:37:08 +01:00
Leonardo Galli
a98b69859c Big Abstraction for IMDBWatchlist -> RSSImport (With a test) 2017-01-21 20:29:31 +01:00
Leonardo Galli
734a36de06 Added some abstraction for settings. 2017-01-21 18:42:58 +01:00
Leonardo Galli
eb299ce847 Fix Corruped Media Cover Images. 2017-01-21 12:57:04 +01:00
Leonardo Galli
a7e071318b Update README.md 2017-01-21 10:47:11 +01:00
Leonardo Galli
3d67f6237e Should fix 4K releases not getting parsed. 2017-01-21 00:39:44 +01:00
Krystian Charubin
a691ffa7b7 adds 'Movie Title, The' filename option (#359)
* adds 'Movie Title, The' filename option
* updates the FileNameBuilder.MovieTitleRegex to include new format
2017-01-20 17:42:14 -05:00
Leonardo Galli
aa9537c201 Fix issue when movie file is null. 2017-01-20 20:30:36 +01:00
Leonardo Galli
a3d9fb1c20 Should fix upgrading of existing movie files. 2017-01-20 18:26:18 +01:00
Leonardo Galli
62a1e70c86 Add tests for 4K quality. 2017-01-20 18:21:31 +01:00
Leonardo Galli
93d0d21846 Hopefully a fix for corrupt media covers. 2017-01-20 18:06:58 +01:00
Leonardo Galli
b1c5a3ac14 Fixed blacklist being ignored by download decision maker. 2017-01-20 17:48:47 +01:00
vertigo235
55a525ba2f Add helptext to nzbget "add paused" settings. (#363)
Requires nzbget 16 or greater.
2017-01-20 09:14:15 -05:00
Devin Buhl
a53768463b Merge pull request #358 from Radarr/patch/add-year-to-search
add year to search
2017-01-19 20:07:33 -05:00
Tim Turner
24cbd6bcef Fix issue with reimporting on movie fresh (#357)
Fixes #314. Still have multiple movieFiles issue to clean up.
2017-01-19 19:58:57 -05:00
Devin Buhl
3ab3e66853 Add year to quick search results 2017-01-19 19:56:26 -05:00
Leonardo Galli
40ca469339 Update MovieModule 2017-01-20 00:00:12 +01:00
Tim Turner
2cbd2f719f Merge branch 'develop' of https://github.com/Radarr/Radarr into develop 2017-01-19 16:45:39 -05:00
Tim Turner
53cbfa803b Fix MediaCoversUpdatedEvent broadcast
Cleans exception when updating media covers expects a series Id.
2017-01-19 16:45:29 -05:00
Leonardo Galli
c0b0310bbd Update ISSUE_TEMPLATE.md 2017-01-19 22:10:59 +01:00
Devin Buhl
30e50062a8 Merge pull request #352 from baltoaca/develop
bug fix for 15 movie wanted tab limit
2017-01-19 13:17:40 -05:00
Vlad Ilies
85fd8f2c65 bug fix for 15 movie wanted tab (#348) 2017-01-19 20:08:15 +02:00
Leonardo Galli
f72b042d5d Blacklisting works now. 2017-01-19 17:43:23 +01:00
Leonardo Galli
2d3a3a0677 Update sizing information in settings tab. 2017-01-19 17:40:25 +01:00
Tim Turner
2bb21fedab Update height of posters to accomodate additional labels 2017-01-18 17:24:32 -05:00
vertigo235
91c820f98b Fix pushover priority values. 2017-01-18 23:16:57 +01:00
Leonardo Galli
7d3118aece Hopefully fix issue when importing
existing scene named movies
2017-01-18 23:02:05 +01:00
Tim Turner
4f4ad77ad1 Add download status to poster view
Fixes #319
2017-01-18 16:54:17 -05:00
Leonardo Galli
42f205a731 Update SkyHookProxy.cs 2017-01-18 22:50:12 +01:00
Devin Buhl
cbb2b778a6 Merge pull request #336 from Radarr/patch/add-imdb-to-naming
Add IMDb ID to file naming
2017-01-18 15:11:16 -05:00
Devin Buhl
b3e03a648d Add IMDb ID to file naming 2017-01-18 14:53:29 -05:00
Devin Buhl
acf45a79e8 Merge pull request #333 from baltoaca/develop
basic implementation of the wanted tab
2017-01-18 14:36:48 -05:00
Devin Buhl
b5d8ac852e Merge pull request #335 from Radarr/patch/task-updates
Turn off scene mapping task #329, update TaskManager to use 'DownloadedMovieScanCommand
2017-01-18 14:36:29 -05:00
Vlad Ilies
4aec0e8fc6 fixed build 2017-01-18 21:09:00 +02:00
Devin Buhl
ecea417fd8 Revert DownloadedMovieScanCommand to DownloadedEpisodesScanCommand
Not sure if it will break anything so putting it back.
2017-01-18 14:07:51 -05:00
Devin Buhl
6a41f6a435 Turn off scene mapping task #329, update TaskManager to use 'DownloadedMovieScanCommand' 2017-01-18 14:02:04 -05:00
Vlad Ilies
da2d075aa8 basic implementation of the wanted tab (#31)
* top buttons don't yet work

* new missing module for movies

*  find missing movies method to movie service

* new movie status cell with text

* adapted UI missing collection and layout
2017-01-18 20:53:17 +02:00
Devin Buhl
10dc3993df Merge pull request #332 from Radarr/revert-318-sonarr/sqlite-updates
Revert "Sonarr/sqlite updates"
2017-01-18 13:33:46 -05:00
Devin Buhl
7e5020db9a Merge pull request #331 from vertigo235/nzbgetaddpaused
Nzbgetaddpaused
2017-01-18 13:20:12 -05:00
Devin Buhl
c48fe9de12 Revert "Sonarr/sqlite updates" 2017-01-18 13:17:35 -05:00
vertigo235
421e827a95 Update Test Files for AddPaused to NZBGET 2017-01-18 13:08:59 -05:00
vertigo235
34d8045cf4 Add "Add Paused" option for NZBGET downloader
Adds option to pause nzbs uppon sending to NZBGET downloader.
2017-01-18 12:42:33 -05:00
Devin Buhl
b02944a3b2 Added Qualties to Settings 2017-01-17 20:30:21 -05:00
Devin Buhl
c6de163748 Merge pull request #318 from Radarr/sonarr/sqlite-updates
Sonarr/sqlite updates
2017-01-17 18:59:11 -05:00
Keivan Beigi
d9e2b22e74 Upgraded System.Data.SQLite to 1.0.104.0 2017-01-17 18:45:23 -05:00
Keivan Beigi
65c0137964 Revert "Upgraded System.Data.SQLite to 1.0.104.0"
This reverts commit a6f3ac219d61964f1b923cfd89382f94c4c74243.
2017-01-17 18:44:37 -05:00
Keivan
ae19424ce7 New: Upgraded SQLite binares for macOS
Upgraded from 3.8.1 to 3.9.1
2017-01-17 18:41:11 -05:00
Keivan Beigi
7527ec52b7 New: Upgraded SQLite binaries for Windows (3.16.0) 2017-01-17 18:41:05 -05:00
Leonardo Galli
640fcf3eaf Remove series references 2017-01-17 23:57:04 +01:00
Leonardo Galli
3ce8232777 Hopefully fix download ordering. 2017-01-17 23:30:11 +01:00
Devin Buhl
864b441d8e Merge pull request #316 from Radarr/patch/skyhook-cleanup
Maybe this will solve the error Object reference not set to an instance of an object
2017-01-17 17:20:49 -05:00
Devin Buhl
bc2ff149b4 Maybe this will solve the error
Couldn't refresh info for [tt2032572][USS Indianapolis: Men of Courage]: Object reference not set to an instance of an object
2017-01-17 17:05:19 -05:00
Devin Buhl
dea305e921 Fix Issue when adding some movies. 2017-01-17 22:25:49 +01:00
Leonardo Galli
e2eab31548 Hopefully fix RSSSync 2017-01-17 21:22:51 +01:00
Devin Buhl
fe62e18f0d Merge pull request #308 from Radarr/patch/jackett
Fix publish date for jackett #239
2017-01-17 13:56:47 -05:00
Devin Buhl
f1fa1553cf Merge pull request #307 from aenima99x/aenima99x-issue91
Fix: Issue #91 - "Search All Missing" wording
2017-01-17 13:48:30 -05:00
Devin Buhl
b576ae813d Fix publish date #239 2017-01-17 13:47:11 -05:00
Aenima99x
99123be936 Fix: Issue #91 - "Search All Missing" wording 2017-01-17 09:00:56 -08:00
Leonardo Galli
dd0a033b0f Add Support for changing file date to either cinema or physical release.
Fixes #124
2017-01-17 15:02:48 +01:00
Leonardo Galli
c64597c9f1 Fix for movies with . in title when importing them. Fixes #268 2017-01-17 14:47:23 +01:00
Leonardo Galli
6d2f81e3ed Remove - as replacement for : 2017-01-17 14:28:30 +01:00
Leonardo Galli
4263808360 Fix only one movie showing. Fix more button not showing up. 2017-01-17 13:21:40 +01:00
Leonardo Galli
c5ca2babf7 Updated website and donation links 2017-01-17 13:07:02 +01:00
Leonardo Galli
08db74d6e6 Fix Audiochannels just being added together. 2017-01-17 13:03:20 +01:00
Leonardo Galli
b309a9b01f Change Scheduled Refresh Series to Refresh Movie. Fixes #301 2017-01-17 12:55:32 +01:00
Tim Turner
2730745607 Clean up rename preview & organize
Fixes #125, #129,

BE SURE TO RUN "Update Library" before renaming/organizing.
2017-01-16 18:43:32 -05:00
Tim Turner
ae0df2aef0 Disambiguate Movie from Episode Renaming
Fixes #84
2017-01-16 17:12:27 -05:00
Leonardo Galli
6d665aeb21 Fix for hardcoded subs regex. 2017-01-16 22:51:45 +01:00
Leonardo Galli
967d3fd5c0 Add Calendar Tab back. Fixes #32 2017-01-16 22:40:59 +01:00
Devin Buhl
199d9c93ed Merge pull request #287 from baltoaca/develop
Added movie studio to movie details page (#262)
2017-01-16 14:30:21 -05:00
Vlad Ilies
30d2b41fbb Added movie studio to movie details page (#262)
* modified Movie model

* db migration

* ui template modification
2017-01-16 20:57:43 +02:00
Devin Buhl
75bb2533a3 Merge pull request #286 from Radarr/onedr0p-patch-1
Removed duplicate PublishDate
2017-01-16 13:46:29 -05:00
Devin Buhl
9b3b4eb55b Removed duplicate PublishDate 2017-01-16 13:25:59 -05:00
Leonardo Galli
42f84b830c Update NewznabRequestGenerator.cs 2017-01-16 12:54:51 +01:00
Leonardo Galli
eb0f825cfc Update README.md 2017-01-16 00:10:30 +01:00
Devin Buhl
6878abe2a2 whoops, only parse title once 2017-01-15 15:35:38 -05:00
Devin Buhl
ec1c81e3ed updates and compile-able 2017-01-15 15:28:35 -05:00
Vlad Ilies
56a5b6ec89 Added trailer link to movie links (#255) (#282)
* added YouTubeTrailerId to movie model
* db migration for new column

* added videos to append_to_response for tmdb
* increased height of .series-posters-item
* new handlebar helper to build the trailer url
2017-01-15 15:17:24 -05:00
hotio
af478d3799 Add support section to README (#281)
* Add support section to README

* Update README.md

* Change docker color badge
2017-01-15 18:23:49 +01:00
Tim Turner
c2d40051d4 First pass at hiding existing movies upon import
Fixes #183
2017-01-15 11:34:43 -05:00
Devin Buhl
47824426c6 Merge branch 'develop' into feature/net-import 2017-01-15 11:14:42 -05:00
Tim Turner
281e516495 Merge branch 'develop' of https://github.com/Radarr/Radarr into develop 2017-01-15 11:07:41 -05:00
hotio
f63c3091f4 Reworked README (#280) 2017-01-15 13:50:45 +01:00
Leonardo Galli
50f49863b7 Update README.md 2017-01-15 11:42:15 +01:00
Mitchell Cash
941b3bd701 Move Travis builds to container-based infrastructure (#273)
* Remove example warning as it does not apply

* Modify the way apt packages work in .travis.yml

By modifying the way apt packages work (remove the need to directly require sudo), the builds can now run on container-based infrastructure.
2017-01-15 11:39:00 +01:00
hotio
f60b8cefca Update .gitignore and remove Thumbs.db files (#276)
* Update .gitignore

* Delete Thumbs.db

* Delete Thumbs.db

* Delete Thumbs.db

* Update .gitignore
2017-01-15 11:38:54 +01:00
Tim Turner
7c5f2ca54e 95% done with hiding existing movies 2017-01-14 23:04:31 -05:00
Leonardo Galli
401a650273 Adding only original title is now allowed. Fixes #272 2017-01-15 01:36:05 +01:00
Leonardo Galli
105af5cf11 Fix for special characters when searching with title in Newznab. Fixes #97 2017-01-15 01:20:07 +01:00
hotio
637c2e43eb Update README.md (#271)
* Update README.md

* Update README.md
2017-01-15 00:56:52 +01:00
Leonardo Galli
53373e6f4a Add {Original Title} to FileNameBuilder. Fixes #103 2017-01-15 00:55:15 +01:00
Leonardo Galli
ad147ed425 Release Group should now be available for renamer to use. 2017-01-15 00:49:37 +01:00
Devin Buhl
ed35e2f194 Merge pull request #270 from hotio/patch-1
Update README.md
2017-01-14 18:10:58 -05:00
hotio
674919dbf5 Update README.md 2017-01-15 00:06:18 +01:00
Devin Buhl
15b77e303f Merge pull request #266 from hotio/patch-1
Update README.md
2017-01-14 17:53:01 -05:00
hotio
757ca1d72c Update README.md
Some small additional fixes to README
2017-01-14 23:48:04 +01:00
Devin Buhl
8c8c7a99e3 Merge pull request #265 from mitchellcash/readme
Cleanup README
2017-01-14 17:35:33 -05:00
Mitchell Cash
b3dfb960b5
Cleanup README 2017-01-15 08:23:35 +10:00
Devin Buhl
98856e6747 Merge pull request #263 from Radarr/patch/update-movie-list
Add in theaters to 1st coumn in movie list
2017-01-14 16:51:27 -05:00
Devin Buhl
8fb5049899 Add in theaters to 1st coumn in movie list 2017-01-14 16:43:51 -05:00
Devin Buhl
3f62911a4f Merge pull request #260 from Radarr/patch/fix-downloadservice
Simplify completed download service
2017-01-14 14:12:54 -05:00
Devin Buhl
170349c950 Update CompletedDownloadService.cs 2017-01-14 14:07:34 -05:00
Devin Buhl
6c413d83eb Simply completed download service 2017-01-14 14:02:45 -05:00
Leonardo Galli
3afd27cad3 Merge branch 'develop' of https://github.com/Radarr/Radarr into develop 2017-01-14 19:21:52 +01:00
Leonardo Galli
149faf467d Fixed exception when Quality meets cutoff. 2017-01-14 19:21:48 +01:00
Devin Buhl
ce52bb8f68 Merge pull request #258 from Radarr/patch/fix-title-slugs-again
Fixed TitleSlug For Realz!
2017-01-14 13:18:58 -05:00
Devin Buhl
4bb5857444 Fixed TitleSlug For Realz! 2017-01-14 13:14:42 -05:00
Devin Buhl
620f09ef8b Merge pull request #257 from Radarr/patch-torpotato-regression
Torpotato username regression
2017-01-14 12:31:16 -05:00
Devin Buhl
16c1a2ee50 Torpotato username regression 2017-01-14 12:27:16 -05:00
Leonardo Galli
4b559cf29c Fix history items getting deleted because they do not have a series id. 2017-01-14 14:23:48 +01:00
Leonardo Galli
ca03f21b03 If this does not fix stuff with no history, I have no clue anymore. 2017-01-14 13:56:42 +01:00
Leonardo Galli
f481fe9ea9 Added more checks when tracking downloads. It should work now, even if history was not present. 2017-01-14 13:36:14 +01:00
Leonardo Galli
3a0278d0a1 Use MediaInfo to correctly identify quality when scanning disk as some file names may not contain the real quality.
Fixes #170
2017-01-14 13:33:30 +01:00
Leonardo Galli
d18b15d504 Should help identify problem with queue trying to reimport stuff. 2017-01-14 13:00:10 +01:00
Leonardo Galli
dc7e75187c Should fix issue when history fails to capture a download item. 2017-01-14 12:47:45 +01:00
Mitchell Cash
68a0ef65df Use DOGnzb name as the default rather than the URL (#250) 2017-01-14 12:15:59 +01:00
Leonardo Galli
fe11928487 Disable migration 117, takes too long to complete 2017-01-14 11:56:08 +01:00
Leonardo Galli
41dda3af48 Update uTorrent to be able to use it as download client. 2017-01-14 11:50:18 +01:00
Leonardo Galli
8c3260c545 Remove file count, unecessary after the file info tab was added
Fixes #215.
2017-01-14 11:41:39 +01:00
Leonardo Galli
bd0ec5dfce Fix epic fail on migration 117 2017-01-14 10:13:31 +01:00
Devin Buhl
ad38437b70 Merge pull request #248 from mitchellcash/sabnzbd_develop
Fixed: Parsing of SABnzbd develop version
2017-01-14 00:57:04 -05:00
Mark McDowall
4447b7cd62 Fixed: Parsing of SABnzbd develop version 2017-01-14 15:16:19 +10:00
Devin Buhl
d33de0d158 Merge pull request #247 from Radarr/patch/awesomehd-rsssync
Add rss sync to awesome-hd
2017-01-13 22:00:00 -05:00
Devin Buhl
dd5049b483 Add rss sync to awesome-hd 2017-01-13 21:55:07 -05:00
Leonardo Galli
29586667cb Files tab is now present. (#245)
* Adding file info tab. Not finished yet.

* Adding more media info options.

* Deleting files now works. Fixes #127

* Fix button for modifying episode files.

* Get Media Info when running DiskScanService.
2017-01-13 19:03:37 -05:00
Devin Buhl
5daece0ed4 Merge pull request #244 from Radarr/revert-238-patch/fix-slugs
Revert "Fix movie title slugs"
2017-01-13 18:24:23 -05:00
Devin Buhl
5dc63e5607 Revert "Fix movie title slugs" 2017-01-13 18:20:22 -05:00
Devin Buhl
7df283e57f Merge pull request #238 from Radarr/patch/fix-slugs
Fix movie title slugs
2017-01-13 18:07:13 -05:00
Devin Buhl
e9b6c250f7 Revert TMDBResources 2017-01-13 17:56:34 -05:00
Devin Buhl
10515156d1 Merge pull request #243 from Radarr/patch/update-torznab
Update Torznab to work with movies
2017-01-13 17:51:35 -05:00
Devin Buhl
4260b58535 Update Torznab to work with movies 2017-01-13 17:34:27 -05:00
Devin Buhl
3a386f2e18 Merge pull request #241 from Radarr/patch/fix-torpotato-age
#236 #239 - Fixed user being needed & fixed age on torrentpotato
2017-01-13 16:33:01 -05:00
Devin Buhl
d3bd0c9b69 This conditional makes more sense. 2017-01-13 16:16:31 -05:00
Devin Buhl
3180e648b4 #236 #239 - Fixed user being needed, fixed age on torrentpotato 2017-01-13 16:12:49 -05:00
Devin Buhl
d0c93759c6 Fix Movie Title Slugs #233 2017-01-13 15:49:57 -05:00
William Comartin
f7471940c4 Add Missing Filter (#237) 2017-01-13 20:57:25 +01:00
Devin Buhl
3a6873cc4d Merge pull request #232 from Radarr/patch/awesomehd
awesomeHD indexer support - Clean up Deluge, Transmission, rTorrent, QBitTorrent - Fix Sorting Titles
2017-01-13 13:15:52 -05:00
Leonardo Galli
330ae38ec2 Merge branch 'develop' of https://github.com/Radarr/Radarr into develop 2017-01-13 19:03:03 +01:00
Leonardo Galli
a0ecb19e32 DownloadMonitoringService should now not care about deleted movies. Fixes #131. 2017-01-13 19:02:59 +01:00
Leonardo Galli
38c966c07b Queue Service should now work properly again.
Fixes issue with Activity Tab
2017-01-13 18:57:43 +01:00
Devin Buhl
ad824d4da5 Finally fix for sorting title (hopefully) 2017-01-13 12:16:12 -05:00
Leonardo Galli
e76c160afe Downloaded column should now use the correct quality name. Fixes #210. 2017-01-13 18:13:39 +01:00
Devin Buhl
6a62546a4d Clean up QBitTorrent 2017-01-13 11:25:59 -05:00
Devin Buhl
0efdc78f8d Clean up rTorrent 2017-01-13 11:21:34 -05:00
Devin Buhl
fdd06127fc Clean up Transmission 2017-01-13 11:13:41 -05:00
Devin Buhl
317f8917b9 Clean up Deluge Settings 2017-01-13 11:08:36 -05:00
vertigo235
4038ce18c3 update movie monitor tooltip (#223) 2017-01-13 16:08:24 +01:00
Mike
7f3ca85953 Stop incrementing version for pull requests. 2017-01-13 06:15:38 +01:00
Devin Buhl
b93a9719fe initial awesomeHD support 2017-01-12 23:06:26 -05:00
Devin Buhl
2ef18edf08 Merge pull request #217 from aaearon/indexer-fix/omgwtfnzbs
omgwtfnzbs: fixed parsing of GetInfoUrl and updated tests
2017-01-12 23:00:30 -05:00
Tim Schindler
d61b9ab207 omgwtfnzbs: fixed parsing of GetInfoUrl and updated tests 2017-01-12 21:02:27 -05:00
Devin Buhl
abf4b137f1 Merge pull request #208 from Radarr/patch/usenet-crawler
improved categories, added Nzb-Tortuga as a preset
2017-01-12 18:51:52 -05:00
Devin Buhl
774c85f06b improved categories, added Nzb-Tortuga as a preset 2017-01-12 18:44:05 -05:00
Devin Buhl
4ded288c5d few changes 2017-01-12 18:33:30 -05:00
Leonardo Galli
a060335bbc Update readme.md 2017-01-13 00:15:27 +01:00
Leonardo Galli
5a8d944397 Fixed sorting in movie list view. Also added new downloaded quality column.
Fixes #128
2017-01-12 23:07:09 +01:00
Leonardo Galli
0b70a5c315 Should fix ordering of releases. Fixes #147 (hopefully) 2017-01-12 22:12:32 +01:00
Leonardo Galli
91cded3b71 Merge pull request #202 from Radarr/onedr0p-patch-1
Update UserAgentBuilder.cs
2017-01-12 21:48:16 +01:00
Leonardo Galli
84112dc85b Should fix queueService failed while processing
(#178)
2017-01-12 21:48:02 +01:00
Devin Buhl
b1b947ae7f Update UserAgentBuilder.cs
Make user-agent Radarr
2017-01-12 15:41:56 -05:00
Leonardo Galli
1b035f8657 Update Parser to support large array of Extended, Director, Collectors, ... Cut, Edition, etc.
Fixes #192
2017-01-12 19:21:09 +01:00
Devin Buhl
9d50f4d651 Merge pull request #199 from Radarr/patch/add-uhd-todefault-indexers
Add UHD to default movie categories for newsnab providers
2017-01-12 12:58:23 -05:00
Devin Buhl
c06a6dc988 Add UHD to default movie categories for newsnab providers 2017-01-12 12:53:09 -05:00
Devin Buhl
f198ca2b77 Merge pull request #177 from Radarr/patch/sort-title
Movies in list don't sort correctly #174
2017-01-12 01:08:32 -05:00
Devin Buhl
9cfc766889 Merge pull request #180 from wcomartin/Issue115
Changed Sonarr Branding to Radarr
2017-01-11 23:27:31 -05:00
William Comartin
5ef1e40403 Change Sonarr to Radarr in CLA.md and CONTRIBUTING.md 2017-01-11 22:02:54 -05:00
William Comartin
c9e6835d7b Change Sonarr to Radarr in Help Text, and in Notification Text
Change sonarr log files to radarr log files
2017-01-11 21:59:13 -05:00
William Comartin
604cea00f6 Replace Sonarr With Radarr in UI Directory 2017-01-11 21:42:47 -05:00
Tim Turner
b4782da1d1 Update sortValue when selecting movie for manual import 2017-01-11 19:29:22 -05:00
Devin Buhl
d5504043c5 Movies in list don't sort correctly #174 2017-01-11 19:06:08 -05:00
Leonardo Galli
81ebbcad70 Now hidden files are ignored :). Fixes #166. 2017-01-11 23:05:11 +01:00
Leonardo Galli
92e9dc6ee1 Fix sorting of unkown release date. 2017-01-11 22:39:07 +01:00
Leonardo Galli
5e8b617625 Sorting now working according to quality in release collection. Fixes #85. 2017-01-11 22:27:37 +01:00
Devin Buhl
d123ca6063 updates 2017-01-11 16:12:17 -05:00
Leonardo Galli
2cbe17151d Correctly check if inCinemas date is present. Creates issue with sorting, but eh. Fixes 140. 2017-01-11 22:02:24 +01:00
Devin Buhl
95bd615718 Merge pull request #169 from Radarr/patch/big-movie-revenues
Problem with Avatar (2009) #168
2017-01-11 15:53:16 -05:00
Leonardo Galli
8e8c4ff497 Update parser to recognize [] and year at the beginning. Fixes #155, fixes #137 and fixes #136. 2017-01-11 21:49:59 +01:00
Devin Buhl
5eddcc1660 Problem with Avatar (2009) #168 2017-01-11 15:48:19 -05:00
Devin Buhl
0ee8b75b54 initial autoimporter commit 2017-01-11 15:42:37 -05:00
Tim Turner
d42165a93a Clean up basic movie naming
Fixes #132
2017-01-11 15:03:55 -05:00
Devin Buhl
99012d8a40 Merge pull request #163 from Radarr/patch/fix-plex-notifs
update plex movie libraries instead of series
2017-01-11 12:35:01 -05:00
Devin Buhl
8bc42c76e4 update plex movie libraries instead of series 2017-01-11 12:25:27 -05:00
Leonardo Galli
b7f72c6259 Merge pull request #160 from Radarr/patch/fix-newznab
fix some spelling mistakes and update the newznab api 'imdbid'
2017-01-11 16:59:09 +01:00
Devin Buhl
64ef8db037 fix some spelling mistakes and update the newznab api 'imdbid' 2017-01-11 10:51:06 -05:00
Leonardo Galli
3b5887bf09 Merge pull request #133 from Radarr/fix-manual-import
Fix Manual Import & Drone Factory
2017-01-11 16:39:09 +01:00
Leonardo Galli
40a75949ba Merge pull request #156 from CHBMB/develop
aarch64 docker container added to readme.
2017-01-11 16:33:36 +01:00
Neil
6747267d19 aarch64 docker container added to readme. 2017-01-11 15:12:26 +00:00
Devin Buhl
13db03f97c Merge pull request #154 from Radarr/patch/remove-fanzub
removed indexer Fanzub - site shutdown
2017-01-11 10:12:03 -05:00
Devin Buhl
cd68eea790 removed indexer Fanzub - site shutdown 2017-01-11 09:40:42 -05:00
Devin Buhl
cfe55d00ae Merge pull request #148 from Radarr/patch/newznab-imdb
search imdbid for usenet indexers that support it
2017-01-11 08:53:28 -05:00
Devin Buhl
1d88313424 #146 search imdbid for usenet indexers that support it 2017-01-11 08:42:29 -05:00
Mike
9513068467 Get rid of unnecessary AppVeyor builds. 2017-01-11 08:57:15 +01:00
Tim Turner
9206258370 Fixes Manual Import and DroneFactory
Automatic Import still doesn't work - waiting for answer from Sonarr
team.
2017-01-10 21:12:47 -05:00
Tim Turner
0fa1509ca6 Manual Import works
Automatically importing still broken
2017-01-10 19:37:17 -05:00
Devin Buhl
c5eb772f7a Merge pull request #130 from Radarr/newznab-patch
Add category 2035 to Newznab providers for WEB-DL search support. #123
2017-01-10 19:14:21 -05:00
Devin Buhl
04fec6d4d8 Add category 2035 to Newznab providers for WEB-DL search support. #123 2017-01-10 19:09:12 -05:00
Devin Buhl
d0b5e380d7 Merge pull request #122 from Radarr/transmission-patch
Fix transmission
2017-01-10 17:43:16 -05:00
Devin Buhl
df69c58d2b Fix transmission 2017-01-10 17:37:23 -05:00
Leonardo Galli
27114c9399 Merge pull request #119 from CHBMB/develop
Update readme.md
2017-01-10 23:25:05 +01:00
Neil
cfca07996b Update readme.md 2017-01-10 22:19:12 +00:00
Leonardo Galli
e97b80f630 Update readme.md 2017-01-10 23:19:00 +01:00
Devin Buhl
792679fd81 Merge pull request #118 from lxh87/patch-1
Update SystemLayout.js
2017-01-10 16:50:15 -05:00
lxh87
ecf47d4b17 Update SystemLayout.js
Change restart/shutdown message from"Sonarr" to "Radarr"
2017-01-10 22:42:44 +01:00
Leonardo Galli
3b1d49a78f Update readme.md 2017-01-10 22:30:36 +01:00
Devin Buhl
753f3eb863 Merge pull request #117 from Radarr/wombles-patch
Fix Wombles for movies
2017-01-10 16:29:02 -05:00
Devin Buhl
9fc2d22d19 Fix Wombles for movies 2017-01-10 16:28:16 -05:00
Tim Turner
3cb42f06c2 Clean up Feature Requests 2017-01-10 16:05:56 -05:00
Devin Buhl
a6c396a595 Merge pull request #111 from Radarr/addmovie-patch
fix #108 - Links to IMDB not working when searching for movies
2017-01-10 15:45:39 -05:00
Devin Buhl
bac9076b1e fix #108 - Links to IMDB not working when searching for movies 2017-01-10 15:39:25 -05:00
Tim Turner
b228273be0 Update Info page.
Updates #73
2017-01-10 15:34:43 -05:00
Leonardo Galli
e7fa4cba19 Fix download rejections being ignored. 2017-01-10 21:25:36 +01:00
Leonardo Galli
0506cc4185 Merge branch 'develop' of https://github.com/galli-leo/Radarr into develop 2017-01-10 20:07:01 +01:00
Leonardo Galli
cde8b4dd97 Added MovieFileResource. This allows the UI to interact with movie files better. Downloaded Quality is now shown in the table. 2017-01-10 20:06:53 +01:00
Leonardo Galli
0a0a44162c Merge pull request #105 from galli-leo/linux-tmp-path-patch
Fixes #104 - Backup/update fail Access to the path "/tmp/nzbdrone_backup/config.xml" is denied
2017-01-10 19:31:12 +01:00
Devin Buhl
125f46fbec Fixes #104 - Backup/update fail Access to the path "/tmp/nzbdrone_backup/config.xml" is denied 2017-01-10 13:21:54 -05:00
Leonardo Galli
f3222ca7c7 Merge pull request #102 from galli-leo/addmovies-patch
When adding a movie, monitored toggle doesn't apply and always defaults to being monitored
2017-01-10 19:21:24 +01:00
Devin Buhl
d252a8b232 Fixes #100 - When adding a movie, monitored toggle doesn't apply and always defaults to being monitored 2017-01-10 12:39:28 -05:00
Leonardo Galli
48559cf964 Updated legend with number of movies 2017-01-10 17:36:04 +01:00
Leonardo Galli
c734e8bc7e Update legend for missing status colors. 2017-01-10 17:07:32 +01:00
Leonardo Galli
3c7d7756e6 Fix issues with media managment config not getting saved. 2017-01-10 17:05:37 +01:00
Leonardo Galli
683bda49d8 Movie Editor works now. Fixes #99. 2017-01-10 16:51:56 +01:00
Leonardo Galli
52fb29ee18 Fixes a few things with importing: Sample check is done even when file is already in movie folder. Fixed importing of movies with "DC". 2017-01-10 16:23:07 +01:00
Leonardo Galli
236e16c9a5 Update sample detection runtime minutes. Some trailers can be long. 2017-01-10 15:43:35 +01:00
Leonardo Galli
0584038273 Fix queue specification. 2017-01-10 15:33:39 +01:00
Leonardo Galli
6685aea144 Movie search should now work, even when titles returned from the TMDB do not have a release date set. Fixes #27. 2017-01-10 15:29:20 +01:00
Leonardo Galli
e4f7aa52df History now correctly shows movie title. Fixes #92 2017-01-10 15:15:15 +01:00
Leonardo Galli
f61c4feb00 Redownloading failed downloads works again. Fixes #89. 2017-01-10 14:15:27 +01:00
Leonardo Galli
04e8c635e0 Use correct Modal for editing movies in table view. Fixes #90 2017-01-10 14:05:01 +01:00
Leonardo Galli
93ea5cfdee Merge pull request #88 from schumi2004/develop
Replace Sonarr with Radarr in Test notification messages
2017-01-10 11:31:39 +01:00
schumi2004
1b7288e7cb Replace Sonarr with Radarr in Test notification messages 2017-01-10 11:21:09 +01:00
Tim Turner
f1914082b8 Merge pull request #74 from fedoranimus/develop
Taking a pass at Library import and rename/organize
2017-01-09 17:31:25 -05:00
Tim Turner
6016948329 Merge remote-tracking branch 'refs/remotes/galli-leo/develop' into develop 2017-01-09 17:26:25 -05:00
Tim Turner
708db1a75c Organize & Rename work 2017-01-09 17:26:13 -05:00
Leonardo Galli
994e881ba6 Fixes an issue with movies not being added with same title slug as existing movies. 2017-01-09 23:16:54 +01:00
Leonardo Galli
893e20c27b Fix some links under status. Needs further changing further down the line. 2017-01-09 22:17:17 +01:00
Tim Turner
23aace6149 Merge remote-tracking branch 'refs/remotes/galli-leo/develop' into develop
# Conflicts:
#	src/NzbDrone.Api/Series/MovieResource.cs
2017-01-09 15:59:25 -05:00
Leonardo Galli
e774e6a038 Fix for importing movie folders with the at the end. 2017-01-09 21:37:37 +01:00
Leonardo Galli
f19a1a5960 Update Parser to support 576p movies, fixes #67 2017-01-09 18:43:41 +01:00
Devin Buhl
03156d62f6 Remove some indexers and fixed HDBits (#79)
* Update HDBitsRequestGenerator.cs

* Removed torrentleech, btn and bitmetv
2017-01-09 18:28:08 +01:00
Leonardo Galli
04d01dc781 Fixes Parser to match ImdbId as well as (year).
Also fixes searching by imdbid. Fixes importing existing movies as well.
2017-01-09 17:52:55 +01:00
Leonardo Galli
cfae8807aa Fixes movies not being able to be searched for.
(Very stupid mistake on my part.) Fixes #80
2017-01-09 16:47:51 +01:00
Tim Turner
f90e77987e Merge pull request #70 from aaearon/indexer-fix/omgwtfnzbs
update rss sync and fix search for omgwtfnzbs indexer
2017-01-09 08:39:23 -05:00
Devin Buhl
2ed0738b30 Added PassThePopcorn indexer (#64)
* Added PassThePopcorn indexe

* Added checkboxes for Gold and Checked torrents thanks @evulhotdog

* Sorted movie releases by golden -> checked -> upload date

* Refactored logic.

* Added flags at the end of torrent name for golden / approved

* Updated PTP GOlden to be the popcorn emoji

* Revert "Updated PTP GOlden to be the popcorn emoji"

This reverts commit c6cf0f5fc520b84f43548afe558c0797e0866fbf.

* Opps, hopefully build will pass now.

* Move PTP props to new subclass.
2017-01-09 14:30:15 +01:00
Tim Turner
74c5664a7f Taking another pass at organization/renaming
Works once in a while
2017-01-08 22:16:14 -05:00
Tim Turner
4c9abe3d84 Merge remote-tracking branch 'refs/remotes/galli-leo/develop' into develop 2017-01-08 19:48:14 -05:00
Tim Turner
7a45394820 Unable to properly parse many movie titles 2017-01-08 19:48:04 -05:00
Tim Schindler
588a48e65d update rss sync and fix search for omgwtfnzbs indexer 2017-01-08 18:49:27 -05:00
Leonardo Galli
83453e2464 Update SkyHookProxy.cs 2017-01-09 00:40:36 +01:00
Leonardo Galli
e6809585c9 Update SonarrCloudRequestBuilder.cs
Fix https error on older mono versions
2017-01-08 23:58:49 +01:00
Tim Turner
14bf63e21d Merge remote-tracking branch 'refs/remotes/galli-leo/develop' into develop 2017-01-08 17:01:47 -05:00
Tim Turner
b5d932866a Second Pass at rename/organize 2017-01-08 17:01:37 -05:00
Leonardo Galli
0b8a84a57c Merge branch 'develop' of https://github.com/galli-leo/Radarr into develop 2017-01-08 20:45:22 +01:00
Leonardo Galli
3555b4ce20 Change name from updated message. 2017-01-08 20:45:19 +01:00
Mike
8cad976e7f Update readme.md 2017-01-08 20:23:24 +01:00
Leonardo Galli
ad7b6a8ec2 Remove hacky way to change branch 2017-01-08 20:09:44 +01:00
Leonardo Galli
906ecfb6a1 Fixed multiple things in the Update procedure 2017-01-08 20:06:39 +01:00
Mike
03cc3a1ad2 Change default branch in config. (#63)
* Change Sonarr / NzbDrone auto-updater stuff to Radarr.

This is required in order for the auto-updater to work.

* Change default branch to develop instead of forcing it.
2017-01-08 19:42:46 +01:00
Mike
d62dbd48ae Change Sonarr / NzbDrone auto-updater stuff to Radarr. (#61)
This is required in order for the auto-updater to work.
2017-01-08 18:47:48 +01:00
Leonardo Galli
cb12945270 Merge branch 'develop' of https://github.com/galli-leo/Radarr into develop 2017-01-08 18:16:10 +01:00
Leonardo Galli
af74854b8e Fix Service install, when Sonarr is also present. Fixes #55. 2017-01-08 18:16:07 +01:00
Leonardo Galli
f35fae109b Merge pull request #59 from galli-leo/feature/release-dates
Physical release dates now are retreived and stored.
2017-01-08 17:57:22 +01:00
Leonardo Galli
804b2130a8 Merge branch 'develop' into feature/release-dates 2017-01-08 17:49:06 +01:00
Leonardo Galli
49537a2efe Update UI to display download status. 2017-01-08 17:47:19 +01:00
Leonardo Galli
1dfb4ddcd8 Fixes sorting of movies. Fixes #53. 2017-01-08 17:10:56 +01:00
Leonardo Galli
fb7969e046 Available date is now displayed. 2017-01-08 16:36:51 +01:00
Tim Turner
cd4863b974 Display UI for MovieEditor, remove reference to SeasonPass 2017-01-08 09:16:24 -05:00
Leonardo Galli
55f4a81dee Adding first implementation of release_dates for movies. 2017-01-08 12:58:39 +01:00
Tim Turner
d006df8d7c Merge remote-tracking branch 'refs/remotes/galli-leo/develop' into develop 2017-01-08 06:51:47 -05:00
Leonardo Galli
97095733dd Sets Branch to develop. We need to change this later. 2017-01-08 11:28:23 +01:00
Mike
d08b0ce47a Integrate AppVeyor and change assembly versioning (#50)
* Change tvsearch to movie.

* Start working on AppVeyor.

* Add builds.

* MSBuild clean

* Fix.

* Added submodules.

* Add NuGet and Build.

* Restore properly.

* Proper build.

* Disable appveyor tests.

* Ignore cakebuild tools and updated build task.

* Package mono finished.

* Added osx package task.

* Less output, added osx package.

* Shut up npm.

* Actually shut up.

* Added PackageTests task.

* Added task CleanupWindowsPackage.

* Add artifacts.

* AssemblyVersion patching.

* Fix appveyor path.

* Is this a valid pattern?

* Cache node modules.

* Put in subdirectory.

* Start from v0.2.0.x to have a clean start with versions.

* Add tests.

* Tests work but disabled for now.

* Disable for real.
2017-01-08 11:03:04 +01:00
Leonardo Galli
caa5a7e6b7 Merge branch 'develop' of https://github.com/galli-leo/Radarr into develop 2017-01-08 10:58:54 +01:00
Leonardo Galli
9376c02158 Movies can now be edited, even from the detail view. Fixes #42 2017-01-08 10:58:51 +01:00
Tim Turner
1ebd639e36 Merge remote-tracking branch 'refs/remotes/galli-leo/develop' into develop 2017-01-07 21:05:30 -05:00
Tim Turner
eff34725af Merge pull request #47 from mitchellcash/remove_DS_Store
Remove all .DS_Store files
2017-01-07 20:57:10 -05:00
Tim Turner
00d4bfd712 Merge pull request #48 from fedoranimus/develop
Harden parsing of imported movie titles
2017-01-07 20:56:33 -05:00
Tim Turner
5f9e285c70 Fix issues with ", the" not trimming properly 2017-01-07 20:55:14 -05:00
Tim Turner
902824cdbd Merge remote-tracking branch 'refs/remotes/galli-leo/develop' into develop 2017-01-07 20:54:52 -05:00
Mitchell Cash
d3cbf9a8ff
Remove all .DS_Store files
It is now part of .gitignore so hopefully we shouldn't see these again.
2017-01-08 11:20:50 +10:00
Mike
c63704ba0d Change tvsearch to movie. (#46) 2017-01-07 20:48:45 +01:00
Tim Turner
da404d6435 Merge pull request #45 from fedoranimus/develop
Enables the Import UI & parses movie titles which contain year
2017-01-07 14:31:24 -05:00
Tim Turner
d9a6c4f211 Update import UI & parse titles which contain years 2017-01-07 14:29:23 -05:00
Tim Turner
7436997f9b Merge remote-tracking branch 'refs/remotes/galli-leo/develop' into develop 2017-01-07 12:38:58 -05:00
Tim Turner
4c2be68549 Merge pull request #38 from fedoranimus/develop
First pass at Media Management
2017-01-07 12:31:28 -05:00
Tim Turner
6d1766d81a Update default formats 2017-01-07 12:19:26 -05:00
Tim Turner
3e676d2073 Merge remote-tracking branch 'refs/remotes/galli-leo/develop' into develop 2017-01-07 11:58:47 -05:00
Leonardo Galli
6da73d73a5 Merge pull request #40 from AeonLucid/develop
Update services url to fix auto-updater.
2017-01-07 17:40:33 +01:00
Tim Turner
b9c98205e0 Merge remote-tracking branch 'refs/remotes/galli-leo/develop' into develop 2017-01-07 11:12:26 -05:00
Leonardo Galli
07d2f5b6a0 Update package.sh to support OSX AutoUpdater 2017-01-07 12:49:10 +01:00
Leonardo Galli
bfa479507c Update package.sh and PathExtensions in preparation for AutoUpdater 2017-01-07 12:40:19 +01:00
Leonardo Galli
4182728901 Updated all AssemblyInfos so version info only needs to be changed once 2017-01-07 12:03:56 +01:00
Leonardo Galli
5be5709043 Update package.sh, fixes #35 2017-01-07 11:24:53 +01:00
Leonardo Galli
ee5a2ec289 Merge branch 'develop' of https://github.com/galli-leo/Radarr into develop 2017-01-07 11:03:59 +01:00
Leonardo Galli
cdfb95f425 Hopefully icon is now finally fixed. 2017-01-07 11:02:56 +01:00
Leonardo Galli
451060cb65 Merge pull request #37 from aaearon/rtorrent
dirty fix for rtorrent
2017-01-07 10:47:10 +01:00
Leonardo Galli
4d795e13cd Fix for movie naming config. Still kinda hacky, but works ok now. 2017-01-07 10:42:21 +01:00
Leonardo Galli
ff6bf235aa Merge branch 'develop' of https://github.com/galli-leo/Radarr into develop 2017-01-07 09:47:14 +01:00
Leonardo Galli
a272127a00 Should finally fix exe icon and resulting build error. 2017-01-07 09:47:08 +01:00
AeonLucid
e3bc6de734 Update services url to fix auto-updater. 2017-01-07 05:48:24 +01:00
Tim Turner
23249de728 Merge remote-tracking branch 'refs/remotes/galli-leo/develop' into develop 2017-01-06 22:51:47 -05:00
Tim Turner
05e4af9ae7 1st pass at Movie Naming
Parser is failing on the sample
2017-01-06 22:51:15 -05:00
Tim Turner
1864a79f99 Merge pull request #36 from aaearon/nzbs.org
changed nzbs.org category for movies
2017-01-06 22:24:35 -05:00
Tim Schindler
5843a881e6 changed nzbs.org category for movies 2017-01-06 21:58:46 -05:00
Tim Schindler
d898fbb4b0 dirty fix for rtorrent 2017-01-06 21:54:24 -05:00
Tim Turner
721767331b Update naming management
Still need to write BuildFileName() and BuildFilePath()
2017-01-06 19:32:19 -05:00
Leonardo Galli
abd4c1a1ad Merge branch 'develop' of https://github.com/galli-leo/Radarr into develop 2017-01-06 23:16:39 +01:00
Leonardo Galli
df971b1289 Fix exe icon. 2017-01-06 23:16:35 +01:00
Leonardo Galli
e5c81eefd2 Merge pull request #34 from onedr0p/develop
Instead of searching for imdbid (which jackett may or may not have depending on the tracker) search for a word instead.
2017-01-06 21:56:02 +01:00
Tim Turner
49c7c033d9 Merge remote-tracking branch 'refs/remotes/galli-leo/develop' into develop 2017-01-06 15:31:19 -05:00
Devin Buhl
f7fb238fb4 Merge pull request #1 from onedr0p/onedr0p-patch-1
Update TorrentPotatoRequestGenerator.cs
2017-01-06 15:27:33 -05:00
Devin Buhl
52dbd8d708 Update TorrentPotatoRequestGenerator.cs
Instead of searching for imdbid (which jackett may or may not have depending on the tracker) search for a word instead.
2017-01-06 15:26:16 -05:00
Leonardo Galli
427babf34e Update readme.md 2017-01-06 19:24:40 +01:00
Leonardo Galli
1022879103 Change version number to 0.1.0 2017-01-06 18:59:01 +01:00
Leonardo Galli
dbf34e6740 Updated Interval to scan for finished downloads to .25 minutes. 2017-01-06 16:11:41 +01:00
Leonardo Galli
4fd062b4e3 Fixed bug where movies and moviefiles were not linked. 2017-01-06 15:37:44 +01:00
Leonardo Galli
9aa8050627 Decision Engine is now mostly working with movies :) 2017-01-06 15:05:30 +01:00
Leonardo Galli
cd310626e9 Parser now recognizes Hardcoded subs. By default these releases are rejected. However, they can still be manually downloaded. 2017-01-06 14:38:52 +01:00
Leonardo Galli
145c2ca4a4 Update ISSUE_TEMPLATE.md 2017-01-06 14:11:58 +01:00
Leonardo Galli
1f5dcef29d Update .travis.yml
Added Travis CI webhook for Discord
2017-01-06 13:49:33 +01:00
Leonardo Galli
899c1d98e3 Real fix for osx app icon 2017-01-06 13:27:05 +01:00
Leonardo Galli
3f8ea405bf Fix for osx icon really now. 2017-01-06 13:26:12 +01:00
Leonardo Galli
f3c9a91da8 Fixes osx app icon. 2017-01-06 13:17:19 +01:00
Leonardo Galli
a6c79cd5d8 Update build.sh
Fixes crash for Mono, because it tried to use a system tray (Not available on linux & osx)
2017-01-06 13:13:22 +01:00
Tim Turner
ed1174affb Merge pull request #28 from fedoranimus/develop
Update Logos
2017-01-05 18:17:34 -05:00
Tim Turner
451f101350 Update background logo 2017-01-05 18:16:26 -05:00
Tim Turner
a29fe1681d Update background logo and poster 2017-01-05 18:05:50 -05:00
Tim Turner
48e142c47d Replaced more logos 2017-01-05 17:41:36 -05:00
Tim Turner
f1bc0164f6 Update logos 2017-01-05 17:38:00 -05:00
Leonardo Galli
aceb282f8d Fixes text color of movie links for list view. 2017-01-05 23:23:24 +01:00
Leonardo Galli
7871c118e7 Fix for PassThePopcorn release titles 2017-01-05 23:12:22 +01:00
Leonardo Galli
5e7b379a45 Fixes for movie statuses 2017-01-05 23:12:09 +01:00
Leonardo Galli
be95311471 Updated index page for movies. 2017-01-05 23:03:34 +01:00
Leonardo Galli
17d7083412 Fixes compile issues introduced with latest commit. 2017-01-05 20:49:26 +01:00
Leonardo Galli
51e5c55d5f Merge branch 'develop' of https://github.com/galli-leo/Radarr into develop 2017-01-05 20:42:06 +01:00
Leonardo Galli
88dacc00f7 Renamed NzbDrone.exe to Radarr.exe. 2017-01-05 20:42:02 +01:00
Leonardo Galli
c314c9f6ec Update readme.md 2017-01-05 17:50:22 +01:00
Leonardo Galli
2b54f0a7f3 Fixed package script for osx. 2017-01-05 17:20:30 +01:00
Leonardo Galli
7a5fe59dbf Added TorrentPotato Indexer. 2017-01-05 17:12:46 +01:00
Leonardo Galli
a63587bb19 Fix alternative titles, if there is only one. 2017-01-05 14:54:48 +01:00
Leonardo Galli
eb46343ce8 Fix History not picking up imported movie. 2017-01-05 14:50:12 +01:00
Leonardo Galli
8fa43fb9f7 Fix for Path column in MovieFiles table. 2017-01-05 14:36:58 +01:00
Leonardo Galli
6d5e9ad4a1 Fixed matching wrong movies from database when searching. 2017-01-05 13:23:22 +01:00
Leonardo Galli
70c8228605 Updated Newznab to correctly identify movie search capabilities 2017-01-05 13:16:23 +01:00
Leonardo Galli
82470bd995 Fixed an issue where tracked downloads would not be found in the database due to alternative titles. 2017-01-05 12:39:48 +01:00
Leonardo Galli
a263558383 Fix parsing of special editions without . in title. 2017-01-05 11:36:26 +01:00
Leonardo Galli
7d82e35650 Fixes some strings still saying episode. 2017-01-05 11:28:22 +01:00
Leonardo Galli
8616bcedd4 Fixes Deluge for movies. 2017-01-05 11:04:29 +01:00
Leonardo Galli
2c66322121 Fixes default Category of QBittorent client. 2017-01-05 10:59:37 +01:00
Leonardo Galli
1402bc883e Merge branch 'develop' of https://github.com/galli-leo/Radarr into develop 2017-01-05 10:50:35 +01:00
Leonardo Galli
1325822798 Added the TMDB Configuration service. This allows Image urls to be dynamically generated! 2017-01-05 10:49:55 +01:00
Mike
7a786d4c0e Fixes all usenet download clients. (#25)
* Remove confusing abstract method from UsenetClientBase.

* Fix Sabnzbd.

* Put back abstract method.

* Fix usenet download clients.
2017-01-05 01:06:18 +01:00
Leonardo Galli
87c7afac16 Merge branch 'develop' of https://github.com/galli-leo/Radarr into develop 2017-01-04 23:20:52 +01:00
Leonardo Galli
06d39579a5 Fixed some things regarding director's cut / special edition. 2017-01-04 23:20:48 +01:00
Leonardo Galli
c8ea0a73e2 Merge pull request #24 from AeonLucid/develop
Better folder name.
2017-01-04 23:01:44 +01:00
Leonardo Galli
eeb3c88131 Merge branch 'develop' of https://github.com/galli-leo/Radarr into develop 2017-01-04 22:59:39 +01:00
Leonardo Galli
fd718b61ac Updated Parser to parse movie titles. Should also parse things, such as: Director's Cut, Special Edition, etc. This is then displayed in the manual search UI. Importing is not yet updated for the new parser! 2017-01-04 22:59:34 +01:00
AeonLucid
4a3b2a0014 Better folder name. 2017-01-04 22:54:45 +01:00
Tim Turner
cbd87dcc38 Merge pull request #23 from fedoranimus/develop
Fix newznab indexers and nzbget
2017-01-04 15:55:19 -05:00
Tim Turner
956de03a62 Fixed up Newznab indexers
Hacky way to remove the "tt" from an imdbid - need to come up with a
better way.
2017-01-04 15:48:30 -05:00
Tim Turner
2b74098040 Merge remote-tracking branch 'refs/remotes/origin/develop' into galli-leo/develop 2017-01-04 14:55:25 -05:00
Leonardo Galli
402a9e1ee0 Fixes some issues when adding movies caused by TMDB. 2017-01-04 20:52:59 +01:00
Leonardo Galli
e68653463d Merge branch 'develop' of https://github.com/galli-leo/Radarr into develop 2017-01-04 20:34:37 +01:00
Leonardo Galli
0715962ec5 TheMovieDB.org is now used as metadata source. 2017-01-04 20:27:14 +01:00
Leonardo Galli
5668a3bcfd Merge pull request #22 from AeonLucid/develop
Replace colon in movie path.
2017-01-04 18:42:01 +01:00
AeonLucid
bd241dcbe0 Replace colon in movie path. 2017-01-04 18:23:54 +01:00
Leonardo Galli
69786b3968 Fixes OSX Application name. 2017-01-04 15:05:14 +01:00
Leonardo Galli
6e2ded5d33 Fixed an issue where sometimes the json returned from IMDb just was not parsed correctly for some misterious reason. 2017-01-04 15:01:38 +01:00
Leonardo Galli
b47d5f7fa1 Update readme.md 2017-01-04 12:15:56 +01:00
Tim Turner
90ff73d45f Update NzbGet & NewznabSettings to support movies 2017-01-03 18:33:16 -05:00
Tim Turner
c2c7015f39 Merge remote-tracking branch 'refs/remotes/galli-leo/develop' into develop 2017-01-03 18:32:31 -05:00
Tim Turner
579602419e Merge remote-tracking branch 'refs/remotes/galli-leo/develop' into develop 2017-01-03 18:01:17 -05:00
Leonardo Galli
28857e7fac Fixes issue with History table. 2017-01-03 23:59:41 +01:00
Leonardo Galli
6d23fb1b61 Fixes issue with History table not having a movie id field. 2017-01-03 23:57:02 +01:00
Tim Turner
96332978a0 Merge remote-tracking branch 'refs/remotes/galli-leo/develop' into develop 2017-01-03 17:42:54 -05:00
Leonardo Galli
ad95fbfd4a Implemented importing movies. This is still in early stages, however it should work pretty well. 2017-01-03 23:18:51 +01:00
Tim Turner
1488c0a0fc Merge remote-tracking branch 'refs/remotes/galli-leo/develop' into develop 2017-01-03 16:54:20 -05:00
Leonardo Galli
d9d8cbacec Fixes package.sh for OSX builds 2017-01-03 17:35:47 +01:00
Leonardo Galli
80f2adad50 Changes name to Radarr in system tray icon. 2017-01-03 17:35:31 +01:00
Leonardo Galli
7a72f4a05b Fix package.sh 2017-01-03 16:29:49 +01:00
Leonardo Galli
6d7ff628d8 Updated package.sh for Travis 2017-01-03 16:15:13 +01:00
Leonardo Galli
e9f9f66b2f Allow Sonarr and Radarr to run together.
Also changes default port of Radarr to 7878.
However, now multiple instances of Radarr can also be run. This should
be fixed in the future.
2017-01-03 16:06:06 +01:00
Leonardo Galli
6ca88f98af Fix package.sh permissions for travis 2017-01-03 16:04:41 +01:00
Leonardo Galli
631cf776f6 Travis now automatically pushes a build to a server. 2017-01-03 15:54:15 +01:00
Leonardo Galli
6ea9b4b94a Added Script for easier packaging. 2017-01-03 14:18:13 +01:00
Leonardo Galli
d835c168d3 Searching for movies directly when adding them is now working. 2017-01-03 13:26:09 +01:00
Leonardo Galli
329786365d Fixed adding multiple movies. 2017-01-03 12:52:09 +01:00
Leonardo Galli
4f6380a73c Automatically downloading the best movie release works now. 2017-01-03 11:59:03 +01:00
Leonardo Galli
cde1217356 Movies now show up in the Queue. 2017-01-02 22:01:11 +01:00
Leonardo Galli
2eedfca78a Movie history now fully implemented. 2017-01-02 21:02:54 +01:00
Leonardo Galli
0d65984991 Fix History for Movie Details page. 2017-01-02 20:41:44 +01:00
Leonardo Galli
2a932fe7e8 First implementation of History for Movies. However, nothing is returned from the Database query misteriously. 2017-01-02 20:15:13 +01:00
Leonardo Galli
0e02171938 Fixes downloading a movie. However, now all downloaders except QBittorrent are non functional until they get fixed. See #14 2017-01-02 19:20:32 +01:00
Tim Turner
a3dfa05f25 Merge remote-tracking branch 'refs/remotes/galli-leo/develop' into develop 2017-01-02 12:24:56 -05:00
Leonardo Galli
2a3b0304cb Fixed a few things with displaying the Movie Details Page. Implemented the first round of Searching for and Downloading movie Releases. ATM this is still a bit hacky and alot of things need to be cleaned up. However, one can now manually search for and download (only in qBittorrent) a movie torrent. 2017-01-02 18:05:55 +01:00
Leonardo Galli
16e35f68bb Merge branch 'develop' of https://github.com/galli-leo/Radarr into develop 2017-01-02 13:21:11 +01:00
Leonardo Galli
74b1c846a5 Fixed css for movies. 2017-01-02 13:20:50 +01:00
Leonardo Galli
1f930c18e4 Update readme.md 2017-01-02 11:45:11 +01:00
Leonardo Galli
d9e60eff6b Update .travis.yml
Removed tests since they take far too long
2017-01-02 11:25:28 +01:00
Leonardo Galli
097982334c Update .travis.yml
Fixed syntax for test.sh
2017-01-02 10:40:09 +01:00
Leonardo Galli
be6e6b910e Update .travis.yml
symlinking node was already done in apt-get and therefore resulted in an error.
2017-01-02 10:32:23 +01:00
Leonardo Galli
31b9ec1116 Create .travis.yml
Should enable automatically testing.
2017-01-02 10:27:59 +01:00
Leonardo Galli
ff6c3b70d3 Merge pull request #12 from fedoranimus/develop
Fix template references and 'movie' strings
2017-01-02 10:12:49 +01:00
Tim Turner
0fd0b31a60 Fix template references and 'movie' strings 2016-12-31 14:42:32 -05:00
Leonardo Galli
76e6ebc63c Merge branch 'develop' of https://github.com/galli-leo/Radarr into develop 2016-12-30 11:58:43 +01:00
Leonardo Galli
2ea35adb98 Fixed issue with Homepage movies not loading correctly. 2016-12-30 11:58:39 +01:00
Leonardo Galli
782f63f510 Update readme.md 2016-12-30 11:34:11 +01:00
Leonardo Galli
c874122fc0 Use different folder to store sqlite database. Fixes #10. 2016-12-30 11:25:25 +01:00
Leonardo Galli
2efda4933d Changed the name in the UI to Radarr. 2016-12-29 17:44:51 +01:00
Leonardo Galli
b7c70d750a Movies should now show on the main page. However, a lot has to be done to the detail controller before it is really going to work. 2016-12-29 17:38:54 +01:00
Leonardo Galli
5ebfac6cc8 First implementation of custom database table for movies.Some things are not yet working quite well (e.g. search clears when movies are added.). Also movies cannot yet be looked up! 2016-12-29 16:04:01 +01:00
Leonardo Galli
74ca6149e3 Merge branch 'develop' of https://github.com/galli-leo/Radarr into develop 2016-12-29 14:07:43 +01:00
Leonardo Galli
40d7590f80 First implementation of completely rewriting the way Radarr handles movies. Searching for new movies is now mostly feature complete. 2016-12-29 14:06:51 +01:00
Leonardo Galli
2cb27240dc Update readme.md 2016-12-28 22:37:06 +01:00
Leonardo Galli
837c2683df Update readme.md 2016-12-28 18:43:31 +01:00
Leonardo Galli
0b278c7db8 Searching for movie now works with downloading. They also get imported fine.
Additionally, a whole series (or movie in this case) can now be
downloaded manually.
Note: It probably won't start downloading missed releases. Only manually
clicking search for is working ATM.
2016-12-28 17:13:18 +01:00
Leonardo Galli
0b765d10fe Updated some text to say movies instead of series 2016-12-27 18:48:59 +01:00
Leonardo Galli
20dbdfb344 Added first iteration of adding movies.
Currently working:
- Searching for new Movies on IMDb (very hacky)
- Adding movie as a series with one season and episode (very hacky)
- Rarbg.to indexer. (somewhat hacky)

TODO:
- Tweak release specifications so that they do not cause exceptions.
- Add Movie struct so that searching for ones is not so hacky.
- rework movies UI.
2016-12-27 18:31:38 +01:00
Leonardo Galli
426448ed98 Update readme.md 2016-12-25 12:43:05 +01:00
1848 changed files with 84362 additions and 45789 deletions

5
.circleci/Dockerfile Normal file
View file

@ -0,0 +1,5 @@
FROM mono:4.8
RUN apt-get update && apt-get install -y git ssh tar gzip ca-certificates
RUN curl -sL https://deb.nodesource.com/setup_6.x | bash -E -
RUN apt-get install -y nodejs npm

40
.circleci/config.yml Normal file
View file

@ -0,0 +1,40 @@
version: 2
jobs:
build:
docker:
- image: gallileo/radarr-cci-primary:4.8
steps:
- checkout
- run: git submodule update --init --recursive
- run:
name: Clean Build
command: ./build.sh Clean
- run:
name: Restore Nuget
command: ./build.sh NugetMono
- run:
name: Build
command: ./build.sh Build
- run:
name: Gulp
command: ./build.sh Gulp
- run:
name: Package
command: ./build.sh Package
- run:
name: Preparing Tests
command: mkdir _tests/reports
- run:
name: Testing
command: ./test.sh Linux Unit
- store_test_results:
path: _tests/reports/
- store_artifacts:
path: _output
- store_artifacts:
path: _output_mono
- store_artifacts:
path: _output_osx
- store_artifacts:
path: _output_osx_app

View file

@ -0,0 +1,69 @@
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/test-run">
<testsuites tests="{@testcasecount}" failures="{@failed}" disabled="{@skipped}" time="{@duration}">
<xsl:apply-templates/>
</testsuites>
</xsl:template>
<xsl:template match="test-suite">
<xsl:if test="test-case">
<testsuite tests="{@testcasecount}" time="{@duration}" errors="{@testcasecount - @passed - @skipped - @failed}" failures="{@failed}" skipped="{@skipped}" timestamp="{@start-time}">
<xsl:attribute name="name">
<xsl:for-each select="ancestor-or-self::test-suite/@name">
<xsl:value-of select="concat(., '.')"/>
</xsl:for-each>
</xsl:attribute>
<xsl:apply-templates select="test-case"/>
</testsuite>
<xsl:apply-templates select="test-suite"/>
</xsl:if>
<xsl:if test="not(test-case)">
<xsl:apply-templates/>
</xsl:if>
</xsl:template>
<xsl:template match="test-case">
<testcase name="{@name}" assertions="{@asserts}" time="{@duration}" status="{@result}" classname="{@classname}">
<xsl:if test="@runstate = 'Skipped' or @runstate = 'Ignored'">
<skipped/>
</xsl:if>
<xsl:apply-templates/>
</testcase>
</xsl:template>
<xsl:template match="command-line"/>
<xsl:template match="settings"/>
<xsl:template match="output">
<system-out>
<xsl:value-of select="."/>
</system-out>
</xsl:template>
<xsl:template match="stack-trace">
</xsl:template>
<xsl:template match="test-case/failure">
<failure message="{./message}">
<xsl:value-of select="./stack-trace"/>
</failure>
</xsl:template>
<xsl:template match="test-suite/failure"/>
<xsl:template match="test-case/reason">
<skipped message="{./message}"/>
</xsl:template>
<xsl:template match="test-case/assertions">
</xsl:template>
<xsl:template match="test-suite/reason"/>
<xsl:template match="properties"/>
</xsl:stylesheet>

294
.gitchangelog.rc Normal file
View file

@ -0,0 +1,294 @@
# -*- coding: utf-8; mode: python -*-
##
## Format
##
## ACTION: [AUDIENCE:] COMMIT_MSG [!TAG ...]
##
## Description
##
## ACTION is one of 'chg', 'fix', 'new'
##
## Is WHAT the change is about.
##
## 'chg' is for refactor, small improvement, cosmetic changes...
## 'fix' is for bug fixes
## 'new' is for new features, big improvement
##
## AUDIENCE is optional and one of 'dev', 'usr', 'pkg', 'test', 'doc'
##
## Is WHO is concerned by the change.
##
## 'dev' is for developpers (API changes, refactors...)
## 'usr' is for final users (UI changes)
## 'pkg' is for packagers (packaging changes)
## 'test' is for testers (test only related changes)
## 'doc' is for doc guys (doc only changes)
##
## COMMIT_MSG is ... well ... the commit message itself.
##
## TAGs are additionnal adjective as 'refactor' 'minor' 'cosmetic'
##
## They are preceded with a '!' or a '@' (prefer the former, as the
## latter is wrongly interpreted in github.) Commonly used tags are:
##
## 'refactor' is obviously for refactoring code only
## 'minor' is for a very meaningless change (a typo, adding a comment)
## 'cosmetic' is for cosmetic driven change (re-indentation, 80-col...)
## 'wip' is for partial functionality but complete subfunctionality.
##
## Example:
##
## new: usr: support of bazaar implemented
## chg: re-indentend some lines !cosmetic
## new: dev: updated code to be compatible with last version of killer lib.
## fix: pkg: updated year of licence coverage.
## new: test: added a bunch of test around user usability of feature X.
## fix: typo in spelling my name in comment. !minor
##
## Please note that multi-line commit message are supported, and only the
## first line will be considered as the "summary" of the commit message. So
## tags, and other rules only applies to the summary. The body of the commit
## message will be displayed in the changelog without reformatting.
##
## ``ignore_regexps`` is a line of regexps
##
## Any commit having its full commit message matching any regexp listed here
## will be ignored and won't be reported in the changelog.
##
ignore_regexps = [
r'@minor', r'!minor',
r'@cosmetic', r'!cosmetic',
r'@refactor', r'!refactor',
r'@wip', r'!wip',
r'^([cC]hg|[fF]ix|[nN]ew)\s*:\s*[p|P]kg:',
r'^([cC]hg|[fF]ix|[nN]ew)\s*:\s*[d|D]ev:',
r'^(.{3,3}\s*:)?\s*[fF]irst commit.?\s*$',
r'^$', ## ignore commits with empty messages
]
## ``section_regexps`` is a list of 2-tuples associating a string label and a
## list of regexp
##
## Commit messages will be classified in sections thanks to this. Section
## titles are the label, and a commit is classified under this section if any
## of the regexps associated is matching.
##
## Please note that ``section_regexps`` will only classify commits and won't
## make any changes to the contents. So you'll probably want to go check
## ``subject_process`` (or ``body_process``) to do some changes to the subject,
## whenever you are tweaking this variable.
##
section_regexps = [
('**New features**', [
r'^[aA]dded?\s*:?\s*((dev|use?r|pkg|test|doc)\s*:\s*)?([^\n]*)$',
r'^[uU]pdated?\s*:?\s*((dev|use?r|pkg|test|doc)\s*:\s*)?([^\n]*)$',
r'^[cC]hanged?\s*:?\s*((dev|use?r|pkg|test|doc)\s*:\s*)?([^\n]*)$',
r'^[nN]ew?\s*:?\s*((dev|use?r|pkg|test|doc)\s*:\s*)?([^\n]*)$',
]),
('**Fixes**', [
r'^(?![mM]erge\s*)'
]
),
]
## ``body_process`` is a callable
##
## This callable will be given the original body and result will
## be used in the changelog.
##
## Available constructs are:
##
## - any python callable that take one txt argument and return txt argument.
##
## - ReSub(pattern, replacement): will apply regexp substitution.
##
## - Indent(chars=" "): will indent the text with the prefix
## Please remember that template engines gets also to modify the text and
## will usually indent themselves the text if needed.
##
## - Wrap(regexp=r"\n\n"): re-wrap text in separate paragraph to fill 80-Columns
##
## - noop: do nothing
##
## - ucfirst: ensure the first letter is uppercase.
## (usually used in the ``subject_process`` pipeline)
##
## - final_dot: ensure text finishes with a dot
## (usually used in the ``subject_process`` pipeline)
##
## - strip: remove any spaces before or after the content of the string
##
## - SetIfEmpty(msg="No commit message."): will set the text to
## whatever given ``msg`` if the current text is empty.
##
## Additionally, you can `pipe` the provided filters, for instance:
#body_process = Wrap(regexp=r'\n(?=\w+\s*:)') | Indent(chars=" ")
#body_process = Wrap(regexp=r'\n(?=\w+\s*:)')
#body_process = noop
body_process = ReSub(r'((^|\n)[A-Z]\w+(-\w+)*: .*(\n\s+.*)*)+$', r'') | strip
## ``subject_process`` is a callable
##
## This callable will be given the original subject and result will
## be used in the changelog.
##
## Available constructs are those listed in ``body_process`` doc.
subject_process = (strip |
ReSub(r'^([cC]hanged|[fF]ixed|[aA]dded|[uU]pdated)\s*:\s*((dev|use?r|pkg|test|doc)\s*:\s*)?([^\n@]*)(@[a-z]+\s+)*$', r'\4') |
SetIfEmpty("No commit message.") | ucfirst | final_dot)
## ``tag_filter_regexp`` is a regexp
##
## Tags that will be used for the changelog must match this regexp.
##
tag_filter_regexp = r'^v[0]+\.[2-9]+\.[0-9]+\.[0-9]+$'
## ``unreleased_version_label`` is a string or a callable that outputs a string
##
## This label will be used as the changelog Title of the last set of changes
## between last valid tag and HEAD if any.
unreleased_version_label = "(unreleased)"
## ``output_engine`` is a callable
##
## This will change the output format of the generated changelog file
##
## Available choices are:
##
## - rest_py
##
## Legacy pure python engine, outputs ReSTructured text.
## This is the default.
##
## - mustache(<template_name>)
##
## Template name could be any of the available templates in
## ``templates/mustache/*.tpl``.
## Requires python package ``pystache``.
## Examples:
## - mustache("markdown")
## - mustache("restructuredtext")
##
## - makotemplate(<template_name>)
##
## Template name could be any of the available templates in
## ``templates/mako/*.tpl``.
## Requires python package ``mako``.
## Examples:
## - makotemplate("restructuredtext")
##
#output_engine = rest_py
#output_engine = mustache("restructuredtext")
output_engine = mustache("changelog.tpl")
#output_engine = makotemplate("restructuredtext")
## ``include_merge`` is a boolean
##
## This option tells git-log whether to include merge commits in the log.
## The default is to include them.
include_merge = False
## ``log_encoding`` is a string identifier
##
## This option tells gitchangelog what encoding is outputed by ``git log``.
## The default is to be clever about it: it checks ``git config`` for
## ``i18n.logOutputEncoding``, and if not found will default to git's own
## default: ``utf-8``.
#log_encoding = 'utf-8'
## ``publish`` is a callable
##
## Sets what ``gitchangelog`` should do with the output generated by
## the output engine. ``publish`` is a callable taking one argument
## that is an interator on lines from the output engine.
##
## Some helper callable are provided:
##
## Available choices are:
##
## - stdout
##
## Outputs directly to standard output
## (This is the default)
##
## - FileInsertAtFirstRegexMatch(file, pattern, idx=lamda m: m.start())
##
## Creates a callable that will parse given file for the given
## regex pattern and will insert the output in the file.
## ``idx`` is a callable that receive the matching object and
## must return a integer index point where to insert the
## the output in the file. Default is to return the position of
## the start of the matched string.
##
## - FileRegexSubst(file, pattern, replace, flags)
##
## Apply a replace inplace in the given file. Your regex pattern must
## take care of everything and might be more complex. Check the README
## for a complete copy-pastable example.
##
# publish = FileInsertIntoFirstRegexMatch(
# "CHANGELOG.rst",
# r'/(?P<rev>[0-9]+\.[0-9]+(\.[0-9]+)?)\s+\([0-9]+-[0-9]{2}-[0-9]{2}\)\n--+\n/',
# idx=lambda m: m.start(1)
# )
#publish = stdout
def write_to_file(content):
with open("CHANGELOG.md", "w+") as f:
for chunk in content:
f.write(chunk)
publish = write_to_file
## ``revs`` is a list of callable or a list of string
##
## callable will be called to resolve as strings and allow dynamical
## computation of these. The result will be used as revisions for
## gitchangelog (as if directly stated on the command line). This allows
## to filter exaclty which commits will be read by gitchangelog.
##
## To get a full documentation on the format of these strings, please
## refer to the ``git rev-list`` arguments. There are many examples.
##
## Using callables is especially useful, for instance, if you
## are using gitchangelog to generate incrementally your changelog.
##
## Some helpers are provided, you can use them::
##
## - FileFirstRegexMatch(file, pattern): will return a callable that will
## return the first string match for the given pattern in the given file.
## If you use named sub-patterns in your regex pattern, it'll output only
## the string matching the regex pattern named "rev".
##
## - Caret(rev): will return the rev prefixed by a "^", which is a
## way to remove the given revision and all its ancestor.
##
## Please note that if you provide a rev-list on the command line, it'll
## replace this value (which will then be ignored).
##
## If empty, then ``gitchangelog`` will act as it had to generate a full
## changelog.
##
## The default is to use all commits to make the changelog.
#revs = ["^1.0.3", ]
#revs = [
# Caret(
# FileFirstRegexMatch(
# "CHANGELOG.rst",
# r"(?P<rev>[0-9]+\.[0-9]+(\.[0-9]+)?)\s+\([0-9]+-[0-9]{2}-[0-9]{2}\)\n--+\n")),
# "HEAD"
#]
revs = []

View file

@ -1,5 +1,20 @@
**Description:**
Check first that your problem is not listed in our wiki section:
* https://github.com/Radarr/Radarr/wiki/Common-Problems
* https://github.com/Radarr/Radarr/wiki/FAQ
**Just because you receive an exception in your logs, doesn't mean it's a bug and should be reported here. Often it's something else, such as a permission error. If you are unsure ask on the Discord or Subreddit first.**
Provide a description of the feature request or bug, the more details the better.
Please use https://forums.sonarr.tv/ for support or other questions. (When in doubt, use the forums)
Visit our [Discord server](https://discord.gg/NWYch8M) or [Subreddit](https://reddit.com/r/radarr) for support or longer discussions. Support questions posed on here will be closed immediately.
Provide a description of the feature request or bug here, the more details the better.
Please also include the following if you are reporting a bug. If you do not include it, the issue will probably be closed as we cannot help you.
**Radarr Version:**
**Mono Version:**
**Debug Logs:**
Please use the search bar and make sure you are not submitting an already submitted issue.

View file

@ -2,13 +2,11 @@
YES | NO
#### Description
A few sentences describing the overall goals of the pull request's commits.
#### Todos
- [ ] Tests
- [ ] Documentation
#### Issues Fixed or Closed by this PR
*
* #

2
.github/config.yml vendored Normal file
View file

@ -0,0 +1,2 @@
todo:
keyword: "TODO"

15
.github/stale.yml vendored Normal file
View file

@ -0,0 +1,15 @@
# Number of days of inactivity before an issue becomes stale
daysUntilStale: 60
# Number of days of inactivity before a stale issue is closed
daysUntilClose: 7
# Issues with these labels will never be considered stale
exemptLabels:
- feature request
- parser
# Label to use when marking an issue as stale
staleLabel: stale
# Comment to post when marking an issue as stale. Set to `false` to disable
markComment: >
This issue has been automatically marked as stale because it has not had recent activity. Please verify that this is still an issue with the latest version of Radarr and report back. Otherwise this issue will be closed.
# Comment to post when closing a stale issue. Set to `false` to disable
closeComment: false

13
.github/support.yml vendored Normal file
View file

@ -0,0 +1,13 @@
# Configuration for support-requests - https://github.com/dessant/support-requests
# Label used to mark issues as support requests
supportLabel: support
# Comment to post on issues marked as support requests. Add a link
# to a support page, or set to `false` to disable
supportComment: >
We use the issue tracker exclusively for bug reports and feature requests.
However, this issue appears to be a support request. Please hop over onto our [Discord](https://discord.gg/ZDmT7qb) or [Subreddit](https://reddit.com/r/radarr)
# Whether to close issues marked as support requests
close: true
# Whether to lock issues marked as support requests
lock: false

33
.gitignore vendored
View file

@ -101,16 +101,21 @@ App_Data/*.ldf
_NCrunch_*
_TeamCity*
# Sonarr
config.xml
nzbdrone.log*txt
# Radarr
Backups/
logs/
MediaCover/
UpdateLogs/
xdg/
config.xml
logs.db*
nzbdrone.db*
nzbdrone.pid
*workspace.xml
*.test-cache
*.userprefs
*/test-results/*
src/UI/.idea/*
*log.txt
node_modules/
_output*
_rawPackage/
@ -122,14 +127,30 @@ setup/Output/
UI.Phantom/
#VS outout folders
# VS outout folders
bin
obj
output/*
# Packages
Radarr_*/
Radarr_*.zip
Radarr_*.gz
#OS X metadata files
# macOS metadata files
._*
.DS_Store
_start
_temp_*/**/*
# Windows thumbnail cache files
Thumbs.db
# AppVeyor
/tools/cake/
/_artifacts/
# Cake
/tools/Addins/*
packages.config.md5sum

1
.idea/Sonarr.iml generated
View file

@ -20,6 +20,5 @@
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" name="Sonarr node_modules" level="project" />
</component>
</module>

View file

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="JavaScriptLibraryMappings">
<includedPredefinedLibrary name="ECMAScript 6" />
<excludedPredefinedLibrary name="Radarr/node_modules" />
</component>
</project>

View file

@ -1,14 +0,0 @@
<component name="libraryTable">
<library name="Sonarr node_modules" type="javaScript">
<properties>
<option name="frameworkName" value="node_modules" />
<sourceFilesUrls>
<item url="file://$PROJECT_DIR$/node_modules" />
</sourceFilesUrls>
</properties>
<CLASSES>
<root url="file://$PROJECT_DIR$/node_modules" />
</CLASSES>
<SOURCES />
</library>
</component>

16
.travis.yml Normal file
View file

@ -0,0 +1,16 @@
language: csharp
solution: src/NzbDrone.sln
addons:
apt:
packages:
- nodejs
# - npm apparently not needed anymore.
script:
- ./build.sh
- chmod +x test.sh
# - ./test.sh Linux Unit Takes far too long, maybe even crashes travis :/
after_success:
- chmod +x package.sh
- ./package.sh
notifications:
- webhooks: https://discordapp.com/api/webhooks/266910310219251712/V-QvCcnYkg3O8PMevcAJOJyCgrYkZQoF2pupLDGbaISNUECmYPd6LRwl3avKHsPyfgWP

BIN
7za.dll Normal file

Binary file not shown.

BIN
7za.exe Normal file

Binary file not shown.

BIN
7zxa.dll Normal file

Binary file not shown.

7841
CHANGELOG.md Normal file

File diff suppressed because it is too large Load diff

4
CLA.md
View file

@ -1,6 +1,6 @@
# Sonarr Individual Contributor License Agreement #
# Radarr Individual Contributor License Agreement #
Thank you for your interest in contributing to Sonarr ("We" or "Us").
Thank you for your interest in contributing to Radarr ("We" or "Us").
This contributor agreement ("Agreement") documents the rights granted by contributors to Us. To make this document effective, please complete the form below. This is a legally binding document, so please read it carefully before agreeing to it. The Agreement may cover more than one software project managed by Us.
## 1. Definitions ##

View file

@ -1,6 +1,6 @@
# How to Contribute #
We're always looking for people to help make Sonarr even better, there are a number of ways to contribute.
We're always looking for people to help make Radarr even better, there are a number of ways to contribute.
## Documentation ##
Setup guides, FAQ, the more information we have on the wiki the better.
@ -15,7 +15,7 @@ Setup guides, FAQ, the more information we have on the wiki the better.
### Getting started ###
1. Fork Sonarr
1. Fork Radarr
2. Clone (develop branch) *you may need pull in submodules separately if you client doesn't clone them automatically (CurlSharp)*
3. Run `npm install`
4. Run `npm start` - Used to compile the UI components and copy them.
@ -24,8 +24,8 @@ Setup guides, FAQ, the more information we have on the wiki the better.
5. Compile in Visual Studio
### Contributing Code ###
- If you're adding a new, already requested feature, please comment on [Github Issues](https://github.com/Sonarr/Sonarr/issues "Github Issues") so work is not duplicated (If you want to add something not already on there, please talk to us first)
- Rebase from Sonarr's develop branch, don't merge
- If you're adding a new, already requested feature, please comment on [Github Issues](https://github.com/Radarr/Radarr/issues "Github Issues") so work is not duplicated (If you want to add something not already on there, please talk to us first)
- Rebase from Radarr's develop branch, don't merge
- Make meaningful commits, or squash them
- Feel free to make a pull request before work is complete, this will let us see where its at and make comments/suggest improvements
- Reach out to us on the forums or on IRC if you have any questions

674
LICENSE Normal file
View file

@ -0,0 +1,674 @@
GNU GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The GNU General Public License is a free, copyleft license for
software and other kinds of works.
The licenses for most software and other practical works are designed
to take away your freedom to share and change the works. By contrast,
the GNU General Public License is intended to guarantee your freedom to
share and change all versions of a program--to make sure it remains free
software for all its users. We, the Free Software Foundation, use the
GNU General Public License for most of our software; it applies also to
any other work released this way by its authors. You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
them if you wish), that you receive source code or can get it if you
want it, that you can change the software or use pieces of it in new
free programs, and that you know you can do these things.
To protect your rights, we need to prevent others from denying you
these rights or asking you to surrender the rights. Therefore, you have
certain responsibilities if you distribute copies of the software, or if
you modify it: responsibilities to respect the freedom of others.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must pass on to the recipients the same
freedoms that you received. You must make sure that they, too, receive
or can get the source code. And you must show them these terms so they
know their rights.
Developers that use the GNU GPL protect your rights with two steps:
(1) assert copyright on the software, and (2) offer you this License
giving you legal permission to copy, distribute and/or modify it.
For the developers' and authors' protection, the GPL clearly explains
that there is no warranty for this free software. For both users' and
authors' sake, the GPL requires that modified versions be marked as
changed, so that their problems will not be attributed erroneously to
authors of previous versions.
Some devices are designed to deny users access to install or run
modified versions of the software inside them, although the manufacturer
can do so. This is fundamentally incompatible with the aim of
protecting users' freedom to change the software. The systematic
pattern of such abuse occurs in the area of products for individuals to
use, which is precisely where it is most unacceptable. Therefore, we
have designed this version of the GPL to prohibit the practice for those
products. If such problems arise substantially in other domains, we
stand ready to extend this provision to those domains in future versions
of the GPL, as needed to protect the freedom of users.
Finally, every program is threatened constantly by software patents.
States should not allow patents to restrict development and use of
software on general-purpose computers, but in those that do, we wish to
avoid the special danger that patents applied to a free program could
make it effectively proprietary. To prevent this, the GPL assures that
patents cannot be used to render the program non-free.
The precise terms and conditions for copying, distribution and
modification follow.
TERMS AND CONDITIONS
0. Definitions.
"This License" refers to version 3 of the GNU General Public License.
"Copyright" also means copyright-like laws that apply to other kinds of
works, such as semiconductor masks.
"The Program" refers to any copyrightable work licensed under this
License. Each licensee is addressed as "you". "Licensees" and
"recipients" may be individuals or organizations.
To "modify" a work means to copy from or adapt all or part of the work
in a fashion requiring copyright permission, other than the making of an
exact copy. The resulting work is called a "modified version" of the
earlier work or a work "based on" the earlier work.
A "covered work" means either the unmodified Program or a work based
on the Program.
To "propagate" a work means to do anything with it that, without
permission, would make you directly or secondarily liable for
infringement under applicable copyright law, except executing it on a
computer or modifying a private copy. Propagation includes copying,
distribution (with or without modification), making available to the
public, and in some countries other activities as well.
To "convey" a work means any kind of propagation that enables other
parties to make or receive copies. Mere interaction with a user through
a computer network, with no transfer of a copy, is not conveying.
An interactive user interface displays "Appropriate Legal Notices"
to the extent that it includes a convenient and prominently visible
feature that (1) displays an appropriate copyright notice, and (2)
tells the user that there is no warranty for the work (except to the
extent that warranties are provided), that licensees may convey the
work under this License, and how to view a copy of this License. If
the interface presents a list of user commands or options, such as a
menu, a prominent item in the list meets this criterion.
1. Source Code.
The "source code" for a work means the preferred form of the work
for making modifications to it. "Object code" means any non-source
form of a work.
A "Standard Interface" means an interface that either is an official
standard defined by a recognized standards body, or, in the case of
interfaces specified for a particular programming language, one that
is widely used among developers working in that language.
The "System Libraries" of an executable work include anything, other
than the work as a whole, that (a) is included in the normal form of
packaging a Major Component, but which is not part of that Major
Component, and (b) serves only to enable use of the work with that
Major Component, or to implement a Standard Interface for which an
implementation is available to the public in source code form. A
"Major Component", in this context, means a major essential component
(kernel, window system, and so on) of the specific operating system
(if any) on which the executable work runs, or a compiler used to
produce the work, or an object code interpreter used to run it.
The "Corresponding Source" for a work in object code form means all
the source code needed to generate, install, and (for an executable
work) run the object code and to modify the work, including scripts to
control those activities. However, it does not include the work's
System Libraries, or general-purpose tools or generally available free
programs which are used unmodified in performing those activities but
which are not part of the work. For example, Corresponding Source
includes interface definition files associated with source files for
the work, and the source code for shared libraries and dynamically
linked subprograms that the work is specifically designed to require,
such as by intimate data communication or control flow between those
subprograms and other parts of the work.
The Corresponding Source need not include anything that users
can regenerate automatically from other parts of the Corresponding
Source.
The Corresponding Source for a work in source code form is that
same work.
2. Basic Permissions.
All rights granted under this License are granted for the term of
copyright on the Program, and are irrevocable provided the stated
conditions are met. This License explicitly affirms your unlimited
permission to run the unmodified Program. The output from running a
covered work is covered by this License only if the output, given its
content, constitutes a covered work. This License acknowledges your
rights of fair use or other equivalent, as provided by copyright law.
You may make, run and propagate covered works that you do not
convey, without conditions so long as your license otherwise remains
in force. You may convey covered works to others for the sole purpose
of having them make modifications exclusively for you, or provide you
with facilities for running those works, provided that you comply with
the terms of this License in conveying all material for which you do
not control copyright. Those thus making or running the covered works
for you must do so exclusively on your behalf, under your direction
and control, on terms that prohibit them from making any copies of
your copyrighted material outside their relationship with you.
Conveying under any other circumstances is permitted solely under
the conditions stated below. Sublicensing is not allowed; section 10
makes it unnecessary.
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
No covered work shall be deemed part of an effective technological
measure under any applicable law fulfilling obligations under article
11 of the WIPO copyright treaty adopted on 20 December 1996, or
similar laws prohibiting or restricting circumvention of such
measures.
When you convey a covered work, you waive any legal power to forbid
circumvention of technological measures to the extent such circumvention
is effected by exercising rights under this License with respect to
the covered work, and you disclaim any intention to limit operation or
modification of the work as a means of enforcing, against the work's
users, your or third parties' legal rights to forbid circumvention of
technological measures.
4. Conveying Verbatim Copies.
You may convey verbatim copies of the Program's source code as you
receive it, in any medium, provided that you conspicuously and
appropriately publish on each copy an appropriate copyright notice;
keep intact all notices stating that this License and any
non-permissive terms added in accord with section 7 apply to the code;
keep intact all notices of the absence of any warranty; and give all
recipients a copy of this License along with the Program.
You may charge any price or no price for each copy that you convey,
and you may offer support or warranty protection for a fee.
5. Conveying Modified Source Versions.
You may convey a work based on the Program, or the modifications to
produce it from the Program, in the form of source code under the
terms of section 4, provided that you also meet all of these conditions:
a) The work must carry prominent notices stating that you modified
it, and giving a relevant date.
b) The work must carry prominent notices stating that it is
released under this License and any conditions added under section
7. This requirement modifies the requirement in section 4 to
"keep intact all notices".
c) You must license the entire work, as a whole, under this
License to anyone who comes into possession of a copy. This
License will therefore apply, along with any applicable section 7
additional terms, to the whole of the work, and all its parts,
regardless of how they are packaged. This License gives no
permission to license the work in any other way, but it does not
invalidate such permission if you have separately received it.
d) If the work has interactive user interfaces, each must display
Appropriate Legal Notices; however, if the Program has interactive
interfaces that do not display Appropriate Legal Notices, your
work need not make them do so.
A compilation of a covered work with other separate and independent
works, which are not by their nature extensions of the covered work,
and which are not combined with it such as to form a larger program,
in or on a volume of a storage or distribution medium, is called an
"aggregate" if the compilation and its resulting copyright are not
used to limit the access or legal rights of the compilation's users
beyond what the individual works permit. Inclusion of a covered work
in an aggregate does not cause this License to apply to the other
parts of the aggregate.
6. Conveying Non-Source Forms.
You may convey a covered work in object code form under the terms
of sections 4 and 5, provided that you also convey the
machine-readable Corresponding Source under the terms of this License,
in one of these ways:
a) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by the
Corresponding Source fixed on a durable physical medium
customarily used for software interchange.
b) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by a
written offer, valid for at least three years and valid for as
long as you offer spare parts or customer support for that product
model, to give anyone who possesses the object code either (1) a
copy of the Corresponding Source for all the software in the
product that is covered by this License, on a durable physical
medium customarily used for software interchange, for a price no
more than your reasonable cost of physically performing this
conveying of source, or (2) access to copy the
Corresponding Source from a network server at no charge.
c) Convey individual copies of the object code with a copy of the
written offer to provide the Corresponding Source. This
alternative is allowed only occasionally and noncommercially, and
only if you received the object code with such an offer, in accord
with subsection 6b.
d) Convey the object code by offering access from a designated
place (gratis or for a charge), and offer equivalent access to the
Corresponding Source in the same way through the same place at no
further charge. You need not require recipients to copy the
Corresponding Source along with the object code. If the place to
copy the object code is a network server, the Corresponding Source
may be on a different server (operated by you or a third party)
that supports equivalent copying facilities, provided you maintain
clear directions next to the object code saying where to find the
Corresponding Source. Regardless of what server hosts the
Corresponding Source, you remain obligated to ensure that it is
available for as long as needed to satisfy these requirements.
e) Convey the object code using peer-to-peer transmission, provided
you inform other peers where the object code and Corresponding
Source of the work are being offered to the general public at no
charge under subsection 6d.
A separable portion of the object code, whose source code is excluded
from the Corresponding Source as a System Library, need not be
included in conveying the object code work.
A "User Product" is either (1) a "consumer product", which means any
tangible personal property which is normally used for personal, family,
or household purposes, or (2) anything designed or sold for incorporation
into a dwelling. In determining whether a product is a consumer product,
doubtful cases shall be resolved in favor of coverage. For a particular
product received by a particular user, "normally used" refers to a
typical or common use of that class of product, regardless of the status
of the particular user or of the way in which the particular user
actually uses, or expects or is expected to use, the product. A product
is a consumer product regardless of whether the product has substantial
commercial, industrial or non-consumer uses, unless such uses represent
the only significant mode of use of the product.
"Installation Information" for a User Product means any methods,
procedures, authorization keys, or other information required to install
and execute modified versions of a covered work in that User Product from
a modified version of its Corresponding Source. The information must
suffice to ensure that the continued functioning of the modified object
code is in no case prevented or interfered with solely because
modification has been made.
If you convey an object code work under this section in, or with, or
specifically for use in, a User Product, and the conveying occurs as
part of a transaction in which the right of possession and use of the
User Product is transferred to the recipient in perpetuity or for a
fixed term (regardless of how the transaction is characterized), the
Corresponding Source conveyed under this section must be accompanied
by the Installation Information. But this requirement does not apply
if neither you nor any third party retains the ability to install
modified object code on the User Product (for example, the work has
been installed in ROM).
The requirement to provide Installation Information does not include a
requirement to continue to provide support service, warranty, or updates
for a work that has been modified or installed by the recipient, or for
the User Product in which it has been modified or installed. Access to a
network may be denied when the modification itself materially and
adversely affects the operation of the network or violates the rules and
protocols for communication across the network.
Corresponding Source conveyed, and Installation Information provided,
in accord with this section must be in a format that is publicly
documented (and with an implementation available to the public in
source code form), and must require no special password or key for
unpacking, reading or copying.
7. Additional Terms.
"Additional permissions" are terms that supplement the terms of this
License by making exceptions from one or more of its conditions.
Additional permissions that are applicable to the entire Program shall
be treated as though they were included in this License, to the extent
that they are valid under applicable law. If additional permissions
apply only to part of the Program, that part may be used separately
under those permissions, but the entire Program remains governed by
this License without regard to the additional permissions.
When you convey a copy of a covered work, you may at your option
remove any additional permissions from that copy, or from any part of
it. (Additional permissions may be written to require their own
removal in certain cases when you modify the work.) You may place
additional permissions on material, added by you to a covered work,
for which you have or can give appropriate copyright permission.
Notwithstanding any other provision of this License, for material you
add to a covered work, you may (if authorized by the copyright holders of
that material) supplement the terms of this License with terms:
a) Disclaiming warranty or limiting liability differently from the
terms of sections 15 and 16 of this License; or
b) Requiring preservation of specified reasonable legal notices or
author attributions in that material or in the Appropriate Legal
Notices displayed by works containing it; or
c) Prohibiting misrepresentation of the origin of that material, or
requiring that modified versions of such material be marked in
reasonable ways as different from the original version; or
d) Limiting the use for publicity purposes of names of licensors or
authors of the material; or
e) Declining to grant rights under trademark law for use of some
trade names, trademarks, or service marks; or
f) Requiring indemnification of licensors and authors of that
material by anyone who conveys the material (or modified versions of
it) with contractual assumptions of liability to the recipient, for
any liability that these contractual assumptions directly impose on
those licensors and authors.
All other non-permissive additional terms are considered "further
restrictions" within the meaning of section 10. If the Program as you
received it, or any part of it, contains a notice stating that it is
governed by this License along with a term that is a further
restriction, you may remove that term. If a license document contains
a further restriction but permits relicensing or conveying under this
License, you may add to a covered work material governed by the terms
of that license document, provided that the further restriction does
not survive such relicensing or conveying.
If you add terms to a covered work in accord with this section, you
must place, in the relevant source files, a statement of the
additional terms that apply to those files, or a notice indicating
where to find the applicable terms.
Additional terms, permissive or non-permissive, may be stated in the
form of a separately written license, or stated as exceptions;
the above requirements apply either way.
8. Termination.
You may not propagate or modify a covered work except as expressly
provided under this License. Any attempt otherwise to propagate or
modify it is void, and will automatically terminate your rights under
this License (including any patent licenses granted under the third
paragraph of section 11).
However, if you cease all violation of this License, then your
license from a particular copyright holder is reinstated (a)
provisionally, unless and until the copyright holder explicitly and
finally terminates your license, and (b) permanently, if the copyright
holder fails to notify you of the violation by some reasonable means
prior to 60 days after the cessation.
Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from that
copyright holder, and you cure the violation prior to 30 days after
your receipt of the notice.
Termination of your rights under this section does not terminate the
licenses of parties who have received copies or rights from you under
this License. If your rights have been terminated and not permanently
reinstated, you do not qualify to receive new licenses for the same
material under section 10.
9. Acceptance Not Required for Having Copies.
You are not required to accept this License in order to receive or
run a copy of the Program. Ancillary propagation of a covered work
occurring solely as a consequence of using peer-to-peer transmission
to receive a copy likewise does not require acceptance. However,
nothing other than this License grants you permission to propagate or
modify any covered work. These actions infringe copyright if you do
not accept this License. Therefore, by modifying or propagating a
covered work, you indicate your acceptance of this License to do so.
10. Automatic Licensing of Downstream Recipients.
Each time you convey a covered work, the recipient automatically
receives a license from the original licensors, to run, modify and
propagate that work, subject to this License. You are not responsible
for enforcing compliance by third parties with this License.
An "entity transaction" is a transaction transferring control of an
organization, or substantially all assets of one, or subdividing an
organization, or merging organizations. If propagation of a covered
work results from an entity transaction, each party to that
transaction who receives a copy of the work also receives whatever
licenses to the work the party's predecessor in interest had or could
give under the previous paragraph, plus a right to possession of the
Corresponding Source of the work from the predecessor in interest, if
the predecessor has it or can get it with reasonable efforts.
You may not impose any further restrictions on the exercise of the
rights granted or affirmed under this License. For example, you may
not impose a license fee, royalty, or other charge for exercise of
rights granted under this License, and you may not initiate litigation
(including a cross-claim or counterclaim in a lawsuit) alleging that
any patent claim is infringed by making, using, selling, offering for
sale, or importing the Program or any portion of it.
11. Patents.
A "contributor" is a copyright holder who authorizes use under this
License of the Program or a work on which the Program is based. The
work thus licensed is called the contributor's "contributor version".
A contributor's "essential patent claims" are all patent claims
owned or controlled by the contributor, whether already acquired or
hereafter acquired, that would be infringed by some manner, permitted
by this License, of making, using, or selling its contributor version,
but do not include claims that would be infringed only as a
consequence of further modification of the contributor version. For
purposes of this definition, "control" includes the right to grant
patent sublicenses in a manner consistent with the requirements of
this License.
Each contributor grants you a non-exclusive, worldwide, royalty-free
patent license under the contributor's essential patent claims, to
make, use, sell, offer for sale, import and otherwise run, modify and
propagate the contents of its contributor version.
In the following three paragraphs, a "patent license" is any express
agreement or commitment, however denominated, not to enforce a patent
(such as an express permission to practice a patent or covenant not to
sue for patent infringement). To "grant" such a patent license to a
party means to make such an agreement or commitment not to enforce a
patent against the party.
If you convey a covered work, knowingly relying on a patent license,
and the Corresponding Source of the work is not available for anyone
to copy, free of charge and under the terms of this License, through a
publicly available network server or other readily accessible means,
then you must either (1) cause the Corresponding Source to be so
available, or (2) arrange to deprive yourself of the benefit of the
patent license for this particular work, or (3) arrange, in a manner
consistent with the requirements of this License, to extend the patent
license to downstream recipients. "Knowingly relying" means you have
actual knowledge that, but for the patent license, your conveying the
covered work in a country, or your recipient's use of the covered work
in a country, would infringe one or more identifiable patents in that
country that you have reason to believe are valid.
If, pursuant to or in connection with a single transaction or
arrangement, you convey, or propagate by procuring conveyance of, a
covered work, and grant a patent license to some of the parties
receiving the covered work authorizing them to use, propagate, modify
or convey a specific copy of the covered work, then the patent license
you grant is automatically extended to all recipients of the covered
work and works based on it.
A patent license is "discriminatory" if it does not include within
the scope of its coverage, prohibits the exercise of, or is
conditioned on the non-exercise of one or more of the rights that are
specifically granted under this License. You may not convey a covered
work if you are a party to an arrangement with a third party that is
in the business of distributing software, under which you make payment
to the third party based on the extent of your activity of conveying
the work, and under which the third party grants, to any of the
parties who would receive the covered work from you, a discriminatory
patent license (a) in connection with copies of the covered work
conveyed by you (or copies made from those copies), or (b) primarily
for and in connection with specific products or compilations that
contain the covered work, unless you entered into that arrangement,
or that patent license was granted, prior to 28 March 2007.
Nothing in this License shall be construed as excluding or limiting
any implied license or other defenses to infringement that may
otherwise be available to you under applicable patent law.
12. No Surrender of Others' Freedom.
If conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot convey a
covered work so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you may
not convey it at all. For example, if you agree to terms that obligate you
to collect a royalty for further conveying from those to whom you convey
the Program, the only way you could satisfy both those terms and this
License would be to refrain entirely from conveying the Program.
13. Use with the GNU Affero General Public License.
Notwithstanding any other provision of this License, you have
permission to link or combine any covered work with a work licensed
under version 3 of the GNU Affero General Public License into a single
combined work, and to convey the resulting work. The terms of this
License will continue to apply to the part which is the covered work,
but the special requirements of the GNU Affero General Public License,
section 13, concerning interaction through a network will apply to the
combination as such.
14. Revised Versions of this License.
The Free Software Foundation may publish revised and/or new versions of
the GNU General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the
Program specifies that a certain numbered version of the GNU General
Public License "or any later version" applies to it, you have the
option of following the terms and conditions either of that numbered
version or of any later version published by the Free Software
Foundation. If the Program does not specify a version number of the
GNU General Public License, you may choose any version ever published
by the Free Software Foundation.
If the Program specifies that a proxy can decide which future
versions of the GNU General Public License can be used, that proxy's
public statement of acceptance of a version permanently authorizes you
to choose that version for the Program.
Later license versions may give you additional or different
permissions. However, no additional obligations are imposed on any
author or copyright holder as a result of your choosing to follow a
later version.
15. Disclaimer of Warranty.
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. Limitation of Liability.
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
SUCH DAMAGES.
17. Interpretation of Sections 15 and 16.
If the disclaimer of warranty and limitation of liability provided
above cannot be given local legal effect according to their terms,
reviewing courts shall apply local law that most closely approximates
an absolute waiver of all civil liability in connection with the
Program, unless a warranty or assumption of liability accompanies a
copy of the Program in return for a fee.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
state the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
{one line to give the program's name and a brief idea of what it does.}
Copyright (C) {year} {name of author}
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
Also add information on how to contact you by electronic and paper mail.
If the program does terminal interaction, make it output a short
notice like this when it starts in an interactive mode:
{project} Copyright (C) {year} {fullname}
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, your program's commands
might be different; for a GUI interface, you would use an "about box".
You should also get your employer (if you work as a programmer) or school,
if any, to sign a "copyright disclaimer" for the program, if necessary.
For more information on this, and how to apply and follow the GNU GPL, see
<http://www.gnu.org/licenses/>.
The GNU General Public License does not permit incorporating your program
into proprietary programs. If your program is a subroutine library, you
may consider it more useful to permit linking proprietary applications with
the library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License. But first, please read
<http://www.gnu.org/philosophy/why-not-lgpl.html>.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 62 KiB

After

Width:  |  Height:  |  Size: 44 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.1 KiB

After

Width:  |  Height:  |  Size: 5 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 707 B

After

Width:  |  Height:  |  Size: 605 B

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 10 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 16 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 2 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

After

Width:  |  Height:  |  Size: 21 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.5 KiB

After

Width:  |  Height:  |  Size: 2.6 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 48 KiB

After

Width:  |  Height:  |  Size: 34 KiB

Before After
Before After

25
Logo/Radarr.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 31 KiB

View file

@ -1,240 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="218px"
height="218px" viewBox="0 0 218 218" enable-background="new 0 0 218 218" xml:space="preserve">
<symbol id="hex_grid" viewBox="-114.25 -98.617 228.55 197.233">
<path fill-rule="evenodd" clip-rule="evenodd" fill="none" stroke="#989898" stroke-width="0.5" stroke-linecap="square" stroke-miterlimit="1" d="
M72.15,90.3l4.7-2.7l4.65,2.7v5.4l-4.65,2.7l-4.7-2.7V90.3z M62.85,95.7l-4.65,2.7l-4.65-2.7v-5.4l4.65-2.7l4.65,2.7V95.7l4.65,2.7
l4.65-2.7 M62.85,90.3l4.65-2.7l4.65,2.7 M62.85,79.55v-5.4l4.65-2.7l4.65,2.7v5.4L67.5,82.2L62.85,79.55L58.2,82.2l-4.65-2.65
M72.15,74.15l4.7-2.7l4.65,2.7v5.4l-4.65,2.65l-4.7-2.65 M76.85,87.6v-5.4 M67.5,87.6v-5.4 M81.5,95.7l4.65,2.7l4.65-2.7l4.65,2.7
l4.65-2.7l4.65,2.7l4.65-2.7v-5.4l4.65-2.7v-5.4l-4.65-2.65v-5.4l4.65-2.7v-5.4l-4.65-2.7v-5.4l4.65-2.7v-5.4l-4.65-2.65v-5.4
l4.65-2.7v-5.4L109.4,31v-5.4l4.65-2.7v-5.4l-4.65-2.65v-5.4l4.65-2.7v-5.4l-4.65-2.7v-5.4l4.65-2.7v-5.4l-4.65-2.65v-5.4l4.65-2.7
V-31l-4.65-2.7v-5.4l4.65-2.7v-5.4l-4.65-2.65v-5.4l4.65-2.7v-5.4l-4.65-2.7v-5.4l4.65-2.7v-5.4l-4.65-2.65v-5.4l4.65-2.7v-5.4
l-4.65-2.7l-4.65,2.7l-4.65-2.7l-4.65,2.7l-4.65-2.7l-4.65,2.7l-4.65-2.7l-4.65,2.7l-4.7-2.7l-4.65,2.7l-4.65-2.7l-4.65,2.7
l-4.65-2.7l-4.65,2.7l-4.65-2.7l-4.65,2.7l-4.65-2.7l-4.65,2.7l-4.7-2.7l-4.65,2.7l-4.65-2.7l-4.65,2.7L7-98.4l-4.65,2.7l-4.65-2.7
l-4.65,2.7l-4.65-2.7l-4.65,2.7l-4.65-2.7l-4.65,2.7l-4.65-2.7l-4.65,2.7l-4.7-2.7l-4.65,2.7l-4.65-2.7l-4.65,2.7l-4.65-2.7
l-4.65,2.7l-4.65-2.7l-4.65,2.7l-4.65-2.7l-4.65,2.7l-4.7-2.7l-4.65,2.7l-4.65-2.7l-4.65,2.7l-4.65-2.7l-4.65,2.7v5.4l-4.65,2.7
v5.4l4.65,2.65v5.4l-4.65,2.7v5.4l4.65,2.7v5.4l-4.65,2.7v5.4l4.65,2.65v5.4l-4.65,2.7v5.4l4.65,2.7v5.4l-4.65,2.7v5.4l4.65,2.65
v5.4l-4.65,2.7v5.4l4.65,2.7v5.4l-4.65,2.7v5.4l4.65,2.65v5.4l-4.65,2.7V31l4.65,2.7v5.4l-4.65,2.7v5.4l4.65,2.65v5.4l-4.65,2.7
v5.4l4.65,2.7v5.4l-4.65,2.7v5.4l4.65,2.65v5.4l-4.65,2.7v5.4l4.65,2.7l4.65-2.7l4.65,2.7l4.65-2.7l4.65,2.7l4.65-2.7l4.7,2.7
l4.65-2.7l4.65,2.7l4.65-2.7l4.65,2.7l4.65-2.7l4.65,2.7l4.65-2.7l4.65,2.7l4.65-2.7l4.7,2.7l4.65-2.7l4.65,2.7l4.65-2.7l4.65,2.7
l4.65-2.7l4.65,2.7l4.65-2.7l4.65,2.7L7,95.7l4.65,2.7l4.65-2.7l4.65,2.7l4.65-2.7l4.7,2.7l4.65-2.7l4.65,2.7l4.65-2.7l4.65,2.7
l4.65-2.7 M44.25,95.7v-5.4l4.65-2.7l4.65,2.7 M44.25,79.55v-5.4l4.65-2.7l4.65,2.7v5.4L48.9,82.2L44.25,79.55L39.6,82.2
l-4.65-2.65 M58.2,87.6v-5.4 M48.9,87.6v-5.4 M53.55,63.35v-5.4l4.65-2.7l4.65,2.7v5.4l-4.65,2.7L53.55,63.35l-4.65,2.7l-4.65-2.7
v-5.4l4.65-2.7l4.65,2.7 M62.85,74.15l-4.65-2.7v-5.4 M53.55,74.15l4.65-2.7 M48.9,71.45v-5.4 M48.9,55.25v-5.4l4.65-2.65
l4.65,2.65v5.4 M67.5,71.45v-5.4l4.65-2.7l4.7,2.7v5.4 M67.5,66.05l-4.65-2.7 M58.2,49.85l4.65-2.65l4.65,2.65v5.4l-4.65,2.7
M72.15,63.35v-5.4l4.7-2.7l4.65,2.7v5.4l-4.65,2.7 M76.85,55.25v-5.4l4.65-2.65l4.65,2.65v5.4l-4.65,2.7 M67.5,55.25l4.65,2.7
M34.95,95.7v-5.4l4.65-2.7l4.65,2.7 M16.3,95.7v-5.4l4.65-2.7l4.65,2.7v5.4 M25.6,90.3l4.7-2.7l4.65,2.7 M25.6,79.55v-5.4l4.7-2.7
l4.65,2.7v5.4L30.3,82.2L25.6,79.55l-4.65,2.65l-4.65-2.65v-5.4l4.65-2.7l4.65,2.7 M20.95,87.6v-5.4 M39.6,87.6v-5.4 M30.3,87.6
v-5.4 M7,95.7v-5.4l4.65-2.7l4.65,2.7 M-2.3,95.7v-5.4l4.65-2.7L7,90.3 M2.35,82.2l-4.65-2.65v-5.4l4.65-2.7L7,74.15v5.4L2.35,82.2
z M16.3,79.55l-4.65,2.65L7,79.55 M2.35,87.6v-5.4 M11.65,87.6v-5.4 M16.3,74.15l-4.65-2.7v-5.4l4.65-2.7l4.65,2.7v5.4 M2.35,71.45
v-5.4L7,63.35l4.65,2.7 M2.35,49.85L7,47.2l4.65,2.65v5.4L7,57.95l-4.65-2.7V49.85L-2.3,47.2v-5.4l4.65-2.7L7,41.8v5.4
M11.65,55.25l4.65,2.7v5.4 M7,74.15l4.65-2.7 M7,57.95v5.4 M30.3,71.45v-5.4l4.65-2.7l4.65,2.7v5.4l-4.65,2.7 M16.3,57.95
l4.65-2.7l4.65,2.7v5.4l-4.65,2.7 M30.3,66.05l-4.7-2.7 M30.3,49.85l4.65-2.65l4.65,2.65v5.4l-4.65,2.7l-4.65-2.7V49.85l-4.7-2.65
v-5.4l-4.65-2.7v-5.4L25.6,31l4.7,2.7v5.4l-4.7,2.7 M11.65,49.85l4.65-2.65l4.65,2.65v5.4 M25.6,57.95l4.7-2.7 M34.95,57.95v5.4
M34.95,47.2v-5.4l4.65-2.7l4.65,2.7v5.4l-4.65,2.65 M25.6,31v-5.4l4.7-2.7l4.65,2.7V31l-4.65,2.7 M34.95,25.6l4.65-2.7l4.65,2.7
V31l-4.65,2.7L34.95,31 M30.3,39.1l4.65,2.7 M39.6,39.1v-5.4 M20.95,39.1l-4.65,2.7l-4.65-2.7v-5.4L16.3,31l4.65,2.7 M16.3,41.8
v5.4 M2.35,33.7L-2.3,31v-5.4l4.65-2.7L7,25.6V31L2.35,33.7z M7,25.6l4.65-2.7l4.65,2.7V31 M2.35,39.1v-5.4 M11.65,33.7L7,31
M7,41.8l4.65-2.7 M11.65,17.5L7,14.85v-5.4l4.65-2.7l4.65,2.7v5.4L11.65,17.5z M11.65,22.9v-5.4 M2.35,22.9v-5.4L7,14.85 M7,9.45
l-4.65-2.7v-5.4L7-1.35l4.65,2.7v5.4 M34.95,14.85v-5.4l4.65-2.7l4.65,2.7v5.4L39.6,17.5L34.95,14.85z M39.6,22.9v-5.4 M25.6,25.6
l-4.65-2.7v-5.4l4.65-2.65l4.7,2.65v5.4 M16.3,9.45l4.65-2.7l4.65,2.7v5.4 M34.95,9.45l-4.65-2.7v-5.4l4.65-2.7l4.65,2.7v5.4
M11.65,1.35l4.65-2.7l4.65,2.7v5.4 M25.6,9.45l4.7-2.7 M30.3,17.5l4.65-2.65 M16.3,25.6l4.65-2.7 M20.95,17.5l-4.65-2.65
M76.85,49.85l-4.7-2.65v-5.4l4.7-2.7l4.65,2.7v5.4 M62.85,47.2v-5.4l4.65-2.7l4.65,2.7 M62.85,25.6l4.65-2.7l4.65,2.7V31
l-4.65,2.7L62.85,31V25.6l-4.65-2.7v-5.4 M72.15,25.6l4.7-2.7l4.65,2.7V31l-4.65,2.7l-4.7-2.7 M76.85,39.1v-5.4 M67.5,39.1v-5.4
M53.55,47.2v-5.4l4.65-2.7l4.65,2.7 M44.25,41.8l4.65-2.7l4.65,2.7 M44.25,25.6l4.65-2.7l4.65,2.7V31l-4.65,2.7L44.25,31
M62.85,31l-4.65,2.7L53.55,31 M58.2,39.1v-5.4 M48.9,39.1v-5.4 M53.55,14.85v-5.4l4.65-2.7l4.65,2.7v5.4L58.2,17.5L53.55,14.85
L48.9,17.5l-4.65-2.65 M48.9,22.9v-5.4 M53.55,9.45l-4.65-2.7v-5.4l4.65-2.7l4.65,2.7v5.4 M44.25,9.45l4.65-2.7 M76.85,22.9v-5.4
l4.65-2.65l4.65,2.65v5.4l-4.65,2.7 M76.85,17.5l-4.7-2.65v-5.4l4.7-2.7l4.65,2.7v5.4 M67.5,22.9v-5.4l4.65-2.65 M67.5,17.5
l-4.65-2.65 M72.15,9.45l-4.65-2.7v-5.4l4.65-2.7l4.7,2.7v5.4 M62.85,9.45l4.65-2.7 M53.55,25.6l4.65-2.7 M44.25,63.35l-4.65,2.7
M39.6,55.25l4.65,2.7 M39.6,71.45l4.65,2.7 M67.5,49.85l4.65-2.65 M48.9,49.85l-4.65-2.65 M25.6,47.2l-4.65,2.65 M104.75,87.6
l-4.65,2.7l-4.65-2.7v-5.4l4.65-2.65l4.65,2.65V87.6l4.65,2.7 M109.4,79.55l-4.65,2.65 M100.1,95.7v-5.4 M81.5,90.3l4.65-2.7
l4.65,2.7v5.4 M81.5,74.15l4.65-2.7l4.65,2.7v5.4l-4.65,2.65l-4.65-2.65 M90.8,79.55l4.65,2.65 M86.15,87.6v-5.4 M90.8,90.3
l4.65-2.7 M95.45,71.45v-5.4l4.65-2.7l4.65,2.7v5.4l-4.65,2.7L95.45,71.45l-4.65,2.7 M86.15,55.25l4.65,2.7v5.4l-4.65,2.7
l-4.65-2.7 M86.15,71.45v-5.4 M95.45,55.25v-5.4l4.65-2.65l4.65,2.65v5.4l-4.65,2.7L95.45,55.25l-4.65,2.7 M100.1,63.35v-5.4
M90.8,63.35l4.65,2.7 M109.4,63.35l-4.65,2.7 M104.75,71.45l4.65,2.7 M104.75,55.25l4.65,2.7 M100.1,79.55v-5.4 M100.1,47.2v-5.4
l4.65-2.7l4.65,2.7 M100.1,41.8l-4.65-2.7v-5.4l4.65-2.7l4.65,2.7v5.4 M109.4,31l-4.65,2.7 M81.5,41.8l4.65-2.7l4.65,2.7v5.4
l-4.65,2.65 M86.15,22.9l4.65,2.7V31l-4.65,2.7L81.5,31 M100.1,31v-5.4l4.65-2.7l4.65,2.7 M90.8,31l4.65,2.7 M86.15,39.1v-5.4
M90.8,41.8l4.65-2.7 M86.15,17.5l4.65-2.65l4.65,2.65v5.4l-4.65,2.7 M90.8,14.85v-5.4l4.65-2.7l4.65,2.7v5.4l-4.65,2.65
M81.5,9.45l4.65-2.7l4.65,2.7 M86.15,6.75v-5.4l4.65-2.7l4.65,2.7v5.4 M100.1,14.85l4.65,2.65v5.4 M109.4,14.85l-4.65,2.65
M100.1,9.45l4.65-2.7l4.65,2.7 M95.45,1.35l4.65-2.7l4.65,2.7v5.4 M95.45,22.9l4.65,2.7 M109.4,47.2l-4.65,2.65 M90.8,47.2
l4.65,2.65 M104.75-9.45l-4.65,2.7l-4.65-2.7v-5.4l4.65-2.65l4.65,2.65V-9.45l4.65,2.7 M109.4-17.5l-4.65,2.65 M100.1-1.35v-5.4
M90.8-1.35v-5.4l4.65-2.7 M81.5-6.75l-4.65-2.7v-5.4l4.65-2.65l4.65,2.65v5.4L81.5-6.75v5.4l-4.65,2.7 M90.8-6.75l-4.65-2.7
M95.45-14.85L90.8-17.5v-5.4l4.65-2.7l4.65,2.7v5.4 M76.85-14.85l-4.7-2.65v-5.4l4.7-2.7l4.65,2.7v5.4 M86.15-14.85l4.65-2.65
M95.45-31l-4.65-2.7v-5.4l4.65-2.7l4.65,2.7v5.4L95.45-31z M95.45-25.6V-31 M90.8-22.9l-4.65-2.7V-31l4.65-2.7 M86.15-31
l-4.65-2.7v-5.4l4.65-2.7l4.65,2.7 M86.15-41.8v-5.4l4.65-2.65l4.65,2.65v5.4 M100.1-33.7l4.65,2.7v5.4l-4.65,2.7 M109.4-33.7
l-4.65,2.7 M95.45-47.2l4.65-2.65l4.65,2.65v5.4l-4.65,2.7 M104.75-41.8l4.65,2.7 M81.5-22.9l4.65-2.7 M104.75-25.6l4.65,2.7
M100.1-49.85v-5.4l4.65-2.7l4.65,2.7 M109.4-66.05l-4.65,2.7l-4.65-2.7v-5.4l4.65-2.7l4.65,2.7 M104.75-63.35v5.4 M100.1-55.25
l-4.65-2.7v-5.4l4.65-2.7 M86.15-47.2l-4.65-2.65v-5.4l4.65-2.7l4.65,2.7v5.4 M86.15-74.15l4.65,2.7v5.4l-4.65,2.7l-4.65-2.7v-5.4
L86.15-74.15v-5.4l4.65-2.65l4.65,2.65 M90.8-71.45l4.65-2.7l4.65,2.7 M95.45-63.35l-4.65-2.7 M90.8-55.25l4.65-2.7 M86.15-57.95
v-5.4 M95.45-74.15v-5.4l4.65-2.65l4.65,2.65v5.4 M81.5-71.45l-4.65-2.7v-5.4l4.65-2.65l4.65,2.65 M81.5-82.2v-5.4l4.65-2.7
l4.65,2.7v5.4 M86.15-90.3v-5.4 M104.75-95.7v5.4l-4.65,2.7l-4.65-2.7v-5.4 M100.1-82.2v-5.4 M95.45-90.3l-4.65,2.7 M109.4-82.2
l-4.65,2.65 M104.75-90.3l4.65,2.7 M109.4-49.85l-4.65,2.65 M72.15-1.35v-5.4l4.7-2.7 M67.5,1.35l-4.65-2.7v-5.4l4.65-2.7l4.65,2.7
M72.15-17.5l-4.65,2.65l-4.65-2.65v-5.4l4.65-2.7l4.65,2.7 M67.5-14.85v5.4 M53.55-1.35v-5.4l4.65-2.7l4.65,2.7 M48.9,1.35
l-4.65-2.7v-5.4l4.65-2.7l4.65,2.7 M44.25-22.9l4.65-2.7l4.65,2.7v5.4l-4.65,2.65l-4.65-2.65V-22.9l-4.65-2.7V-31 M53.55-17.5
l4.65,2.65v5.4 M48.9-9.45v-5.4 M53.55-33.7v-5.4l4.65-2.7l4.65,2.7v5.4L58.2-31L53.55-33.7z M62.85-22.9l-4.65-2.7V-31 M48.9-25.6
V-31l4.65-2.7 M48.9-31l-4.65-2.7v-5.4l4.65-2.7l4.65,2.7 M48.9-41.8v-5.4l4.65-2.65l4.65,2.65v5.4 M76.85-25.6V-31l4.65-2.7
M76.85-31l-4.7-2.7v-5.4l4.7-2.7l4.65,2.7 M62.85-33.7L67.5-31v5.4 M72.15-39.1l-4.65-2.7v-5.4l4.65-2.65l4.7,2.65v5.4
M62.85-39.1l4.65-2.7 M72.15-33.7L67.5-31 M53.55-22.9l4.65-2.7 M58.2-14.85l4.65-2.65 M30.3,1.35l-4.7-2.7v-5.4l4.7-2.7l4.65,2.7
v5.4 M30.3-9.45v-5.4l4.65-2.65l4.65,2.65v5.4l-4.65,2.7 M16.3-1.35v-5.4l4.65-2.7l4.65,2.7 M30.3-14.85l-4.7-2.65v-5.4l4.7-2.7
l4.65,2.7v5.4 M25.6-17.5l-4.65,2.65L16.3-17.5v-5.4l4.65-2.7l4.65,2.7 M20.95-14.85v5.4 M16.3-6.75l-4.65-2.7v-5.4l4.65-2.65
M2.35,1.35l-4.65-2.7v-5.4l4.65-2.7L7-6.75v5.4 M7-17.5l-4.65,2.65L-2.3-17.5v-5.4l4.65-2.7L7-22.9V-17.5l4.65,2.65 M11.65-9.45
L7-6.75 M2.35-9.45v-5.4 M11.65-31L7-33.7v-5.4l4.65-2.7l4.65,2.7v5.4L11.65-31z M16.3-22.9l-4.65-2.7V-31 M2.35-25.6V-31L7-33.7
M7-39.1l-4.65-2.7v-5.4L7-49.85l4.65,2.65v5.4 M44.25-33.7L39.6-31l-4.65-2.7v-5.4l4.65-2.7l4.65,2.7 M20.95-25.6V-31l4.65-2.7
l4.7,2.7v5.4 M20.95-47.2l4.65-2.65l4.7,2.65v5.4l-4.7,2.7l-4.65-2.7V-47.2l-4.65-2.65v-5.4l4.65-2.7l4.65,2.7 M30.3-47.2
l4.65-2.65l4.65,2.65v5.4 M30.3-41.8l4.65,2.7 M25.6-33.7v-5.4 M34.95-33.7L30.3-31 M34.95-22.9l4.65-2.7 M20.95-31l-4.65-2.7
M16.3-39.1l4.65-2.7 M7-22.9l4.65-2.7 M34.95-55.25l-4.65-2.7v-5.4l4.65-2.7l4.65,2.7v5.4L34.95-55.25v5.4 M25.6-49.85v-5.4
l4.7-2.7 M30.3-63.35l-4.7-2.7v-5.4l4.7-2.7l4.65,2.7v5.4 M25.6-66.05l-4.65,2.7l-4.65-2.7v-5.4l4.65-2.7l4.65,2.7 M30.3-74.15
v-5.4l4.65-2.65l4.65,2.65v5.4l-4.65,2.7 M20.95-63.35v5.4 M7-49.85v-5.4l4.65-2.7l4.65,2.7 M2.35-47.2l-4.65-2.65v-5.4l4.65-2.7
L7-55.25 M2.35-63.35l-4.65-2.7v-5.4l4.65-2.7L7-71.45v5.4L2.35-63.35z M16.3-71.45l-4.65-2.7v-5.4l4.65-2.65l4.65,2.65v5.4
M11.65-57.95v-5.4l4.65-2.7 M2.35-57.95v-5.4 M7-66.05l4.65,2.7 M11.65-74.15L7-71.45 M2.35-74.15v-5.4L7-82.2l4.65,2.65
M11.65-95.7v5.4L7-87.6l-4.65-2.7v-5.4 M20.95-95.7v5.4l-4.65,2.7l-4.65-2.7 M7-87.6v5.4 M16.3-87.6v5.4 M20.95-90.3l4.65,2.7v5.4
l-4.65,2.65 M30.3-79.55l-4.7-2.65 M30.3-95.7v5.4l-4.7,2.7 M48.9-95.7v5.4l-4.65,2.7l-4.65-2.7v-5.4 M34.95-82.2v-5.4l4.65-2.7
M30.3-90.3l4.65,2.7 M72.15-49.85v-5.4l4.7-2.7l4.65,2.7 M67.5-47.2l-4.65-2.65v-5.4l4.65-2.7l4.65,2.7 M67.5-74.15l4.65,2.7v5.4
l-4.65,2.7l-4.65-2.7v-5.4L67.5-74.15v-5.4l4.65-2.65l4.7,2.65 M81.5-66.05l-4.65,2.7l-4.7-2.7 M72.15-71.45l4.7-2.7 M76.85-63.35
v5.4 M67.5-57.95v-5.4 M53.55-49.85v-5.4l4.65-2.7l4.65,2.7 M48.9-47.2l-4.65-2.65v-5.4l4.65-2.7l4.65,2.7 M44.25-66.05v-5.4
l4.65-2.7l4.65,2.7v5.4l-4.65,2.7L44.25-66.05l-4.65,2.7 M62.85-66.05l-4.65,2.7l-4.65-2.7 M53.55-71.45l4.65-2.7l4.65,2.7
M58.2-57.95v-5.4 M48.9-57.95v-5.4 M48.9-74.15v-5.4l4.65-2.65l4.65,2.65v5.4 M48.9-79.55l-4.65-2.65v-5.4 M58.2-95.7v5.4
l-4.65,2.7l-4.65-2.7 M53.55-87.6v5.4 M58.2-79.55l4.65-2.65l4.65,2.65 M62.85-82.2v-5.4l4.65-2.7l4.65,2.7v5.4 M67.5-90.3v-5.4
M76.85-95.7v5.4l-4.7,2.7 M58.2-90.3l4.65,2.7 M44.25-17.5l-4.65,2.65 M39.6-9.45l4.65,2.7 M39.6-74.15l4.65,2.7 M39.6-57.95
l4.65,2.7 M44.25-49.85L39.6-47.2 M62.85-49.85L58.2-47.2 M16.3-49.85l-4.65,2.65 M44.25-82.2l-4.65,2.65 M76.85-90.3l4.65,2.7
M81.5-49.85l-4.65,2.65 M86.15,1.35l-4.65-2.7 M44.25-1.35l-4.65,2.7 M62.85-1.35l-4.65,2.7 M109.4-1.35l-4.65,2.7 M25.6-1.35
l-4.65,2.7 M-95.4,95.7v-5.4l4.65-2.7l4.65,2.7v5.4 M-86.1,90.3l4.7-2.7l4.65,2.7v5.4 M-104.7,95.7v-5.4l4.65-2.7l4.65,2.7
M-100.05,82.2l-4.65-2.65v-5.4l4.65-2.7l4.65,2.7v5.4L-100.05,82.2z M-95.4,74.15l4.65-2.7l4.65,2.7v5.4l-4.65,2.65l-4.65-2.65
M-86.1,74.15l4.7-2.7l4.65,2.7v5.4l-4.65,2.65l-4.7-2.65 M-100.05,87.6v-5.4 M-90.75,87.6v-5.4 M-81.4,87.6v-5.4 M-109.35,87.6
l4.65,2.7 M-104.7,79.55l-4.65,2.65 M-109.35,55.25l4.65,2.7v5.4l-4.65,2.7 M-109.35,71.45l4.65,2.7 M-90.75,66.05l-4.65-2.7v-5.4
l4.65-2.7l4.65,2.7v5.4L-90.75,66.05v5.4 M-86.1,57.95l4.7-2.7l4.65,2.7v5.4l-4.65,2.7l-4.7-2.7 M-81.4,71.45v-5.4 M-100.05,71.45
v-5.4l4.65-2.7 M-95.4,57.95l-4.65-2.7v-5.4l4.65-2.65l4.65,2.65v5.4 M-81.4,55.25v-5.4l4.65-2.65l4.65,2.65v5.4l-4.65,2.7
M-100.05,66.05l-4.65-2.7 M-104.7,57.95l4.65-2.7 M-86.1,41.8l-4.65-2.7v-5.4l4.65-2.7l4.7,2.7v5.4L-86.1,41.8z M-81.4,49.85
l-4.7-2.65v-5.4 M-100.05,49.85l-4.65-2.65v-5.4l4.65-2.7l4.65,2.7v5.4 M-95.4,31l-4.65,2.7l-4.65-2.7v-5.4l4.65-2.7l4.65,2.7V31
l4.65,2.7 M-86.1,31v-5.4l4.7-2.7l4.65,2.7V31l-4.65,2.7 M-100.05,39.1v-5.4 M-90.75,39.1l-4.65,2.7 M-109.35,39.1l4.65,2.7
M-104.7,31l-4.65,2.7 M-109.35,6.75l4.65,2.7v5.4l-4.65,2.65 M-86.1,14.85v-5.4l4.7-2.7l4.65,2.7v5.4l-4.65,2.65L-86.1,14.85z
M-81.4,22.9v-5.4 M-86.1,25.6l-4.65-2.7v-5.4l4.65-2.65 M-100.05,22.9v-5.4l4.65-2.65l4.65,2.65 M-100.05,6.75v-5.4l4.65-2.7
l4.65,2.7v5.4l-4.65,2.7L-100.05,6.75z M-81.4,6.75v-5.4l4.65-2.7l4.65,2.7v5.4l-4.65,2.7 M-90.75,6.75l4.65,2.7 M-95.4,14.85v-5.4
M-95.4,25.6l4.65-2.7 M-100.05,17.5l-4.65-2.65 M-104.7,9.45l4.65-2.7 M-109.35,22.9l4.65,2.7 M-86.1,47.2l-4.65,2.65
M-104.7,47.2l-4.65,2.65 M-11.6,95.7v-5.4l4.65-2.7l4.65,2.7 M-20.9,95.7v-5.4l4.65-2.7l4.65,2.7 M-16.25,82.2l-4.65-2.65v-5.4
l4.65-2.7l4.65,2.7v5.4L-16.25,82.2v5.4 M-2.3,79.55l-4.65,2.65l-4.65-2.65 M-6.95,82.2v5.4 M-30.2,95.7v-5.4l4.65-2.7l4.65,2.7
M-39.55,95.7v-5.4l4.7-2.7l4.65,2.7 M-39.55,79.55v-5.4l4.7-2.7l4.65,2.7v5.4l-4.65,2.65L-39.55,79.55l-4.65,2.65l-4.65-2.65
M-20.9,79.55l-4.65,2.65l-4.65-2.65 M-34.85,87.6v-5.4 M-25.55,87.6v-5.4 M-20.9,74.15l-4.65-2.7v-5.4l4.65-2.7l4.65,2.7v5.4
M-30.2,74.15l4.65-2.7 M-25.55,66.05l-4.65-2.7v-5.4l4.65-2.7l4.65,2.7v5.4 M-39.55,74.15l-4.65-2.7v-5.4l4.65-2.7l4.7,2.7v5.4
M-30.2,57.95l-4.65-2.7v-5.4l4.65-2.65l4.65,2.65v5.4 M-39.55,63.35v-5.4l4.7-2.7 M-30.2,63.35l-4.65,2.7 M-11.6,74.15l4.65-2.7
l4.65,2.7 M-6.95,66.05l-4.65-2.7v-5.4l4.65-2.7l4.65,2.7v5.4L-6.95,66.05v5.4 M-16.25,66.05l4.65-2.7 M-11.6,57.95l-4.65-2.7v-5.4
l4.65-2.65l4.65,2.65v5.4 M-16.25,55.25l-4.65,2.7 M-48.85,95.7v-5.4l4.65-2.7l4.65,2.7 M-58.15,95.7v-5.4l4.65-2.7l4.65,2.7
M-58.15,79.55v-5.4l4.65-2.7l4.65,2.7v5.4l-4.65,2.65L-58.15,79.55l-4.65,2.65l-4.65-2.65 M-44.2,87.6v-5.4 M-53.5,87.6v-5.4
M-67.45,95.7v-5.4l4.65-2.7l4.65,2.7 M-76.75,90.3l4.65-2.7l4.65,2.7 M-76.75,74.15l4.65-2.7l4.65,2.7v5.4l-4.65,2.65l-4.65-2.65
M-62.8,87.6v-5.4 M-72.1,87.6v-5.4 M-67.45,74.15l4.65-2.7l4.65,2.7 M-62.8,71.45v-5.4l4.65-2.7l4.65,2.7v5.4 M-62.8,66.05
l-4.65-2.7v-5.4l4.65-2.7l4.65,2.7v5.4 M-76.75,63.35l4.65,2.7v5.4 M-62.8,55.25v-5.4l4.65-2.65l4.65,2.65v5.4l-4.65,2.7
M-67.45,63.35l-4.65,2.7 M-72.1,55.25l4.65,2.7 M-48.85,74.15l4.65-2.7 M-44.2,66.05l-4.65-2.7v-5.4l4.65-2.7l4.65,2.7
M-53.5,49.85l4.65-2.65l4.65,2.65v5.4 M-53.5,66.05l4.65-2.7 M-53.5,55.25l4.65,2.7 M-48.85,47.2v-5.4l4.65-2.7l4.65,2.7v5.4
l-4.65,2.65 M-58.15,47.2v-5.4l4.65-2.7l4.65,2.7 M-58.15,25.6l4.65-2.7l4.65,2.7V31l-4.65,2.7l-4.65-2.7V25.6l-4.65-2.7v-5.4
M-48.85,25.6l4.65-2.7l4.65,2.7V31l-4.65,2.7l-4.65-2.7 M-44.2,39.1v-5.4 M-53.5,39.1v-5.4 M-62.8,49.85l-4.65-2.65v-5.4l4.65-2.7
l4.65,2.7 M-76.75,47.2v-5.4l4.65-2.7l4.65,2.7 M-76.75,25.6l4.65-2.7l4.65,2.7V31l-4.65,2.7l-4.65-2.7 M-58.15,31l-4.65,2.7
l-4.65-2.7 M-72.1,39.1v-5.4 M-62.8,39.1v-5.4 M-67.45,14.85v-5.4l4.65-2.7l4.65,2.7v5.4l-4.65,2.65L-67.45,14.85l-4.65,2.65
l-4.65-2.65 M-72.1,22.9v-5.4 M-62.8,6.75v-5.4l4.65-2.7l4.65,2.7v5.4l-4.65,2.7 M-72.1,6.75l4.65,2.7 M-44.2,22.9v-5.4l4.65-2.65
l4.7,2.65v5.4l-4.7,2.7 M-44.2,17.5l-4.65-2.65v-5.4l4.65-2.7l4.65,2.7v5.4 M-48.85,14.85l-4.65,2.65l-4.65-2.65 M-53.5,22.9v-5.4
M-44.2,6.75v-5.4l4.65-2.7l4.7,2.7v5.4l-4.7,2.7 M-53.5,6.75l4.65,2.7 M-67.45,25.6l4.65-2.7 M-11.6,47.2v-5.4l4.65-2.7l4.65,2.7
M-11.6,41.8l-4.65-2.7v-5.4l4.65-2.7l4.65,2.7v5.4 M-16.25,33.7L-20.9,31v-5.4l4.65-2.7l4.65,2.7V31 M-2.3,31l-4.65,2.7
M-30.2,47.2v-5.4l4.65-2.7l4.65,2.7v5.4l-4.65,2.65 M-39.55,41.8l4.7-2.7l4.65,2.7 M-34.85,22.9l4.65,2.7V31l-4.65,2.7l-4.7-2.7
M-20.9,31l-4.65,2.7L-30.2,31 M-34.85,39.1v-5.4 M-25.55,39.1v-5.4 M-20.9,25.6l-4.65-2.7v-5.4l4.65-2.65l4.65,2.65v5.4
M-25.55,17.5l-4.65-2.65v-5.4l4.65-2.7l4.65,2.7v5.4 M-25.55,6.75v-5.4l4.65-2.7l4.65,2.7v5.4l-4.65,2.7 M-30.2,14.85l-4.65,2.65
M-34.85,6.75l4.65,2.7 M-6.95,17.5l-4.65-2.65v-5.4l4.65-2.7l4.65,2.7v5.4L-6.95,17.5v5.4l-4.65,2.7 M-11.6,14.85l-4.65,2.65
M-16.25,6.75l4.65,2.7 M-16.25,1.35l4.65-2.7l4.65,2.7v5.4 M-6.95,22.9l4.65,2.7 M-30.2,25.6l4.65-2.7 M-16.25,39.1l-4.65,2.7
M-67.45,47.2l-4.65,2.65 M-2.3,47.2l-4.65,2.65 M-34.85,49.85l-4.7-2.65 M-16.25,49.85l-4.65-2.65 M-81.4,39.1l4.65,2.7
M-11.6-1.35v-5.4l4.65-2.7l4.65,2.7 M-11.6-6.75l-4.65-2.7v-5.4l4.65-2.65l4.65,2.65v5.4 M-16.25-14.85l-4.65-2.65v-5.4l4.65-2.7
l4.65,2.7v5.4 M-2.3-17.5l-4.65,2.65 M-20.9-1.35v-5.4l4.65-2.7 M-20.9-6.75l-4.65-2.7v-5.4l4.65-2.65 M-25.55-9.45l-4.65,2.7
l-4.65-2.7v-5.4l4.65-2.65l4.65,2.65 M-30.2-6.75v5.4l-4.65,2.7 M-39.55-1.35v-5.4l4.7-2.7 M-34.85-14.85l-4.7-2.65v-5.4l4.7-2.7
l4.65,2.7v5.4 M-30.2-33.7v-5.4l4.65-2.7l4.65,2.7v5.4l-4.65,2.7L-30.2-33.7l-4.65,2.7l-4.7-2.7v-5.4l4.7-2.7l4.65,2.7 M-20.9-22.9
l-4.65-2.7V-31 M-34.85-25.6V-31 M-39.55-39.1l-4.65-2.7v-5.4l4.65-2.65l4.7,2.65v5.4 M-25.55-41.8v-5.4l4.65-2.65l4.65,2.65v5.4
l-4.65,2.7 M-6.95-31l-4.65-2.7v-5.4l4.65-2.7l4.65,2.7v5.4L-6.95-31v5.4l-4.65,2.7 M-16.25-25.6V-31l4.65-2.7 M-16.25-41.8
l4.65,2.7 M-16.25-47.2l4.65-2.65l4.65,2.65v5.4 M-30.2-22.9l4.65-2.7 M-16.25-31l-4.65-2.7 M-6.95-25.6l4.65,2.7 M-44.2,1.35
l-4.65-2.7v-5.4l4.65-2.7l4.65,2.7 M-58.15-1.35v-5.4l4.65-2.7l4.65,2.7 M-58.15-6.75l-4.65-2.7v-5.4l4.65-2.65l4.65,2.65v5.4
M-62.8-14.85l-4.65-2.65v-5.4l4.65-2.7l4.65,2.7v5.4 M-39.55-17.5l-4.65,2.65l-4.65-2.65v-5.4l4.65-2.7l4.65,2.7 M-44.2-9.45v-5.4
M-53.5-14.85l4.65-2.65 M-62.8,1.35l-4.65-2.7v-5.4l4.65-2.7 M-76.75-6.75l-4.65-2.7v-5.4l4.65-2.65l4.65,2.65v5.4L-76.75-6.75
v5.4 M-76.75-17.5v-5.4l4.65-2.7l4.65,2.7 M-67.45-17.5l-4.65,2.65 M-72.1-9.45l4.65,2.7 M-67.45-33.7v-5.4l4.65-2.7l4.65,2.7v5.4
L-62.8-31L-67.45-33.7z M-62.8-25.6V-31 M-72.1-25.6V-31l4.65-2.7 M-72.1-31l-4.65-2.7v-5.4l4.65-2.7l4.65,2.7 M-76.75-39.1
l-4.65-2.7v-5.4l4.65-2.65l4.65,2.65v5.4 M-62.8-41.8v-5.4l4.65-2.65l4.65,2.65v5.4l-4.65,2.7 M-44.2-25.6V-31l4.65-2.7 M-44.2-31
l-4.65-2.7v-5.4l4.65-2.7 M-48.85-33.7L-53.5-31l-4.65-2.7 M-48.85-22.9l-4.65-2.7V-31 M-53.5-41.8l4.65,2.7 M-58.15-22.9l4.65-2.7
M-58.15-49.85v-5.4l4.65-2.7l4.65,2.7v5.4l-4.65,2.65 M-48.85-55.25l4.65-2.7l4.65,2.7v5.4 M-58.15-71.45l4.65-2.7l4.65,2.7v5.4
l-4.65,2.7l-4.65-2.7V-71.45z M-48.85-71.45l4.65-2.7l4.65,2.7v5.4l-4.65,2.7l-4.65-2.7 M-44.2-57.95v-5.4 M-53.5-57.95v-5.4
M-76.75-49.85v-5.4l4.65-2.7l4.65,2.7v5.4l-4.65,2.65 M-67.45-55.25l4.65-2.7l4.65,2.7 M-76.75-55.25l-4.65-2.7v-5.4l4.65-2.7
l4.65,2.7v5.4 M-81.4-63.35l-4.7-2.7v-5.4l4.7-2.7l4.65,2.7v5.4 M-81.4-74.15v-5.4l4.65-2.65l4.65,2.65v5.4l-4.65,2.7
M-58.15-66.05l-4.65,2.7l-4.65-2.7v-5.4l4.65-2.7l4.65,2.7 M-62.8-57.95v-5.4 M-72.1-74.15l4.65,2.7 M-67.45-66.05l-4.65,2.7
M-67.45-82.2v-5.4l4.65-2.7l4.65,2.7v5.4l-4.65,2.65L-67.45-82.2l-4.65,2.65 M-76.75-82.2v-5.4l4.65-2.7l4.65,2.7 M-72.1-90.3
v-5.4 M-62.8-90.3v-5.4 M-53.5-74.15v-5.4l4.65-2.65l4.65,2.65v5.4 M-58.15-82.2l4.65,2.65 M-58.15-87.6l4.65-2.7l4.65,2.7v5.4
M-53.5-90.3v-5.4 M-44.2-95.7v5.4l-4.65,2.7 M-62.8-74.15v-5.4 M-11.6-49.85v-5.4l4.65-2.7l4.65,2.7 M-20.9-49.85v-5.4l4.65-2.7
l4.65,2.7 M-16.25-63.35l-4.65-2.7v-5.4l4.65-2.7l4.65,2.7v5.4L-16.25-63.35v5.4 M-2.3-66.05l-4.65,2.7l-4.65-2.7 M-11.6-71.45
l4.65-2.7l4.65,2.7 M-6.95-63.35v5.4 M-25.55-47.2l-4.65-2.65v-5.4l4.65-2.7l4.65,2.7 M-39.55-55.25l4.7-2.7l4.65,2.7
M-39.55-71.45l4.7-2.7l4.65,2.7v5.4l-4.65,2.7l-4.7-2.7 M-20.9-71.45l-4.65-2.7v-5.4l4.65-2.65l4.65,2.65v5.4 M-20.9-66.05
l-4.65,2.7l-4.65-2.7 M-25.55-74.15l-4.65,2.7 M-34.85-63.35v5.4 M-25.55-57.95v-5.4 M-34.85-74.15v-5.4l4.65-2.65l4.65,2.65
M-44.2-79.55l4.65-2.65l4.7,2.65 M-39.55-82.2v-5.4l4.7-2.7l4.65,2.7v5.4 M-34.85-90.3v-5.4 M-16.25-95.7v5.4l-4.65,2.7l-4.65-2.7
v-5.4 M-25.55-90.3l-4.65,2.7 M-20.9-82.2v-5.4 M-6.95-79.55l-4.65-2.65v-5.4l4.65-2.7l4.65,2.7v5.4L-6.95-79.55v5.4 M-16.25-79.55
l4.65-2.65 M-11.6-87.6l-4.65-2.7 M-6.95-95.7v5.4 M-44.2-90.3l4.65,2.7 M-62.8-47.2l-4.65-2.65 M-44.2-47.2l-4.65-2.65
M-30.2-49.85l-4.65,2.65 M-2.3-49.85l-4.65,2.65 M-95.4-1.35v-5.4l4.65-2.7l4.65,2.7v5.4l-4.65,2.7 M-86.1-6.75l4.7-2.7
M-100.05,1.35l-4.65-2.7v-5.4l4.65-2.7l4.65,2.7 M-95.4-17.5l-4.65,2.65l-4.65-2.65v-5.4l4.65-2.7l4.65,2.7V-17.5z M-95.4-22.9
l4.65-2.7l4.65,2.7v5.4l-4.65,2.65l-4.65-2.65 M-81.4-14.85l-4.7-2.65 M-100.05-9.45v-5.4 M-90.75-14.85v5.4 M-109.35-9.45
l4.65,2.7 M-104.7-17.5l-4.65,2.65 M-109.35-41.8l4.65,2.7v5.4l-4.65,2.7 M-90.75-25.6V-31l4.65-2.7l4.7,2.7v5.4l-4.7,2.7
M-100.05-25.6V-31l4.65-2.7l4.65,2.7 M-100.05-47.2l4.65-2.65l4.65,2.65v5.4l-4.65,2.7l-4.65-2.7V-47.2l-4.65-2.65 M-90.75-41.8
l4.65,2.7v5.4 M-86.1-39.1l4.7-2.7 M-95.4-33.7v-5.4 M-109.35-25.6l4.65,2.7 M-100.05-31l-4.65-2.7 M-104.7-39.1l4.65-2.7
M-95.4-49.85v-5.4l4.65-2.7l4.65,2.7v5.4l-4.65,2.65 M-86.1-55.25l4.7-2.7 M-95.4-55.25l-4.65-2.7v-5.4l4.65-2.7l4.65,2.7v5.4
M-100.05-63.35l-4.65-2.7v-5.4l4.65-2.7l4.65,2.7v5.4 M-95.4-71.45l4.65-2.7l4.65,2.7 M-86.1-66.05l-4.65,2.7 M-109.35-57.95
l4.65,2.7v5.4l-4.65,2.65 M-109.35-74.15l4.65,2.7 M-104.7-66.05l-4.65,2.7 M-109.35-90.3l4.65,2.7v5.4l-4.65,2.65 M-81.4-79.55
l-4.7-2.65v-5.4l4.7-2.7l4.65,2.7 M-86.1-82.2l-4.65,2.65l-4.65-2.65v-5.4l4.65-2.7l4.65,2.7 M-100.05-74.15v-5.4l4.65-2.65
M-95.4-87.6l-4.65-2.7v-5.4 M-81.4-95.7v5.4 M-90.75-95.7v5.4 M-90.75-79.55v5.4 M-104.7-55.25l4.65-2.7 M-100.05-79.55
l-4.65-2.65 M-104.7-87.6l4.65-2.7 M-81.4-47.2l-4.7-2.65 M-76.75-33.7L-81.4-31 M-81.4-25.6l4.65,2.7 M-67.45-1.35l-4.65,2.7
M-104.7-1.35l-4.65,2.7 M-81.4,1.35l-4.7-2.7 M-25.55,1.35l-4.65-2.7 M-53.5,1.35l4.65-2.7 M-2.3-1.35l-4.65,2.7 M-2.3,57.95
l4.65-2.7 M2.35,66.05l-4.65-2.7 M-2.3-39.1l4.65-2.7 M2.35-31l-4.65-2.7 M2.35-79.55L-2.3-82.2 M-2.3-87.6l4.65-2.7 M-2.3,9.45
l4.65-2.7 M2.35,17.5l-4.65-2.65"/>
</symbol>
<g id="Layer_1">
</g>
<g id="Layer_6">
<path fill-rule="evenodd" clip-rule="evenodd" fill="#EFEEEE" d="M217.5,108.95c0,29.833-10.533,55.399-31.6,76.7
c-0.7,0.833-1.484,1.6-2.351,2.3c-3.466,3.399-7.134,6.483-11,9.25c-18.267,13.467-39.366,20.2-63.3,20.2
c-23.967,0-45.033-6.733-63.2-20.2c-4.8-3.4-9.3-7.25-13.5-11.55c-16.367-16.267-26.417-35.167-30.15-56.7
c-0.733-4.2-1.217-8.467-1.45-12.8c-0.1-2.4-0.15-4.801-0.15-7.2c0-2.534,0.05-4.95,0.15-7.25c0-0.233,0.066-0.467,0.2-0.7
c1.567-26.6,12.033-49.583,31.4-68.95C53.85,11.017,79.417,0.5,109.25,0.5c29.934,0,55.483,10.517,76.65,31.55
C206.967,53.483,217.5,79.117,217.5,108.95z"/>
</g>
<g id="Layer_5">
<path fill-rule="evenodd" clip-rule="evenodd" fill="#010101" d="M195.45,43l-22.4,22.4c-8.833,13-13.25,27.867-13.25,44.6
c0,17.934,5.067,33.833,15.2,47.7l19,18.95c-2.5,3.066-5.2,6.066-8.1,9c-0.7,0.833-1.484,1.6-2.351,2.3
c-2.533,2.5-5.167,4.816-7.899,6.95L158.1,177.35c-13.934-10.733-30.133-16.1-48.6-16.1c-17.933,0-33.833,5.1-47.7,15.3
L43.25,195.15c-3.767-2.867-7.333-6.034-10.7-9.5c-2.8-2.801-5.417-5.667-7.85-8.601l19.15-19.2
c10.066-13.966,15.1-29.916,15.1-47.85c0-17.5-4.867-33.017-14.6-46.55l-21.05-21c2.833-3.6,5.917-7.067,9.25-10.4
c2.934-2.867,5.934-5.55,9-8.05L61.9,44.35C75.7,54.583,91.567,59.7,109.5,59.7c18.467,0,34.666-5.367,48.6-16.1L177.4,24.35
c2.899,2.367,5.732,4.933,8.5,7.7C189.367,35.583,192.55,39.233,195.45,43z"/>
</g>
<g id="Layer_4">
<defs>
<path id="SVGID_1_" d="M159.8,110c0-16.733,4.417-31.6,13.25-44.6l22.4-22.4c-2.9-3.767-6.083-7.417-9.55-10.95
c-2.768-2.767-5.601-5.333-8.5-7.7L158.1,43.6c-13.934,10.733-30.133,16.1-48.6,16.1c-17.933,0-33.8-5.117-47.6-15.35L41.55,24
c-3.066,2.5-6.066,5.183-9,8.05c-3.333,3.333-6.417,6.8-9.25,10.4l21.05,21c9.733,13.533,14.6,29.05,14.6,46.55
c0,17.934-5.034,33.884-15.1,47.85l-19.15,19.2c2.433,2.934,5.05,5.8,7.85,8.601c3.367,3.466,6.934,6.633,10.7,9.5L61.8,176.55
c13.867-10.2,29.767-15.3,47.7-15.3c18.467,0,34.666,5.366,48.6,16.1L175.65,194.9c2.732-2.134,5.366-4.45,7.899-6.95
c0.866-0.7,1.65-1.467,2.351-2.3c2.899-2.934,5.6-5.934,8.1-9l-19-18.95C164.867,143.833,159.8,127.934,159.8,110z"/>
</defs>
<clipPath id="SVGID_2_">
<use xlink:href="#SVGID_1_" overflow="visible"/>
</clipPath>
<g clip-path="url(#SVGID_2_)">
<use xlink:href="#hex_grid" width="228.55" height="197.233" x="-114.25" y="-98.617" transform="matrix(1.1415 0 0 -1.1415 105.5 107.75)" overflow="visible"/>
</g>
</g>
<g id="Layer_2">
<g>
<path fill-rule="evenodd" clip-rule="evenodd" fill="#35C6F4" d="M79.1,110.95c-0.033-0.667-0.05-1.333-0.05-2
c0-0.7,0.017-1.366,0.05-2c0-0.067,0.017-0.134,0.05-0.2c0.434-7.367,3.333-13.733,8.7-19.1c5.9-5.833,12.983-8.75,21.25-8.75
c8.301,0,15.384,2.917,21.25,8.75c5.834,5.934,8.75,13.033,8.75,21.3c0,8.267-2.916,15.35-8.75,21.25
c-0.199,0.233-0.416,0.45-0.649,0.649c-0.967,0.934-1.983,1.784-3.05,2.551c-5.066,3.733-10.917,5.6-17.551,5.6
c-6.633,0-12.466-1.866-17.5-5.6c-1.333-0.934-2.583-2-3.75-3.2c-4.533-4.5-7.317-9.733-8.35-15.7
C79.3,113.334,79.167,112.15,79.1,110.95z M126.1,127.25l3.601,3.6L126.1,127.25z"/>
<path fill-rule="evenodd" clip-rule="evenodd" fill="none" stroke="#35C6F4" stroke-width="2" stroke-miterlimit="1" d="
M158.6,60.25l-15,14.65 M31.7,33.1l40.75,40.65 M126.1,127.25l3.601,3.6 M157.05,158l27.65,28.6 M153.05,153.95l-10.75-11.2
M186.6,33l-28,27.25 M33.15,186.25l27.35-27.4"/>
<path fill-rule="evenodd" clip-rule="evenodd" fill="none" stroke="#35C6F4" stroke-width="7" stroke-miterlimit="1" d="
M158.6,60.25l-16.949,17.2 M59.4,61.35L76.6,78.5 M60.5,158.85l16.75-17.399 M153.05,153.95l4,4.05 M139.45,140.4l13.6,13.55"/>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 26 KiB

BIN
Logo/text256.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

147
README.md Normal file
View file

@ -0,0 +1,147 @@
<p align="center">
<img src="/Logo/text256.png" alt="Radarr">
</p>
Radarr is an __independent__ fork of [Sonarr](https://github.com/Sonarr/Sonarr) reworked for automatically downloading movies via Usenet and BitTorrent.
The project was inspired by other Usenet/BitTorrent movie downloaders such as CouchPotato.
## Getting Started
[![Installation](https://img.shields.io/badge/wiki-installation-brightgreen.svg?maxAge=60&style=flat-square)](https://github.com/Radarr/Radarr/wiki/Installation)
[![Docker](https://img.shields.io/badge/wiki-docker-1488C6.svg?maxAge=60&style=flat-square)](https://github.com/Radarr/Radarr/wiki/Docker)
[![Setup Guide](https://img.shields.io/badge/wiki-setup_guide-orange.svg?maxAge=60&style=flat-square)](https://github.com/Radarr/Radarr/wiki/Setup-Guide)
[![FAQ](https://img.shields.io/badge/wiki-FAQ-BF55EC.svg?maxAge=60&style=flat-square)](https://github.com/Radarr/Radarr/wiki/FAQ)
* [Install Radarr for your desired OS](https://github.com/Radarr/Radarr/wiki/Installation) *or* use [Docker](https://github.com/Radarr/Radarr/wiki/Docker)
* *For Linux users*, run `radarr` and *optionally* have [Radarr start automatically](https://github.com/Radarr/Radarr/wiki/Autostart-on-Linux)
* Connect to the UI through <http://localhost:7878> or <http://your-ip:7878> in your web browser
* See the [Setup Guide](https://github.com/Radarr/Radarr/wiki/Setup-Guide) for further configuration
## Downloads
[![GitHub Releases](https://img.shields.io/badge/downloads-releases-brightgreen.svg?maxAge=60&style=flat-square)](https://github.com/Radarr/Radarr/releases)
[![AppVeyor Builds](https://img.shields.io/badge/downloads-continuous-green.svg?maxAge=60&style=flat-square)](https://ci.appveyor.com/project/galli-leo/radarr-usby1/branch/develop/artifacts)
[![Docker release](https://img.shields.io/badge/docker-release-blue.svg?colorB=1488C6&maxAge=60&style=flat-square)](https://store.docker.com/community/images/linuxserver/radarr)
[![Docker nightly](https://img.shields.io/badge/docker-release/nightly-blue.svg?colorB=1488C6&maxAge=60&style=flat-square)](https://store.docker.com/community/images/hotio/suitarr)
[![Docker armhf](https://img.shields.io/badge/docker-armhf-blue.svg?colorB=1488C6&maxAge=60&style=flat-square)](https://store.docker.com/community/images/lsioarmhf/radarr)
[![Docker aarch64](https://img.shields.io/badge/docker-aarch64-blue.svg?colorB=1488C6&maxAge=60&style=flat-square)](https://store.docker.com/community/images/lsioarmhf/radarr-aarch64)
## Support
[![Discord](https://img.shields.io/badge/discord-chat-7289DA.svg?maxAge=60&style=flat-square)](https://discord.gg/AD3UP37)
[![Reddit](https://img.shields.io/badge/reddit-discussion-FF4500.svg?maxAge=60&style=flat-square)](https://www.reddit.com/r/radarr)
[![Feathub](https://img.shields.io/badge/feathub-requests-lightgrey.svg?maxAge=60&style=flat-square)](http://feathub.com/Radarr/Radarr)
[![GitHub](https://img.shields.io/badge/github-issues-red.svg?maxAge=60&style=flat-square)](https://github.com/Radarr/Radarr/issues)
[![GitHub Wiki](https://img.shields.io/badge/github-wiki-181717.svg?maxAge=60&style=flat-square)](https://github.com/Radarr/Radarr/wiki)
## Status
[![GitHub issues](https://img.shields.io/github/issues/radarr/radarr.svg?maxAge=60&style=flat-square)](https://github.com/Radarr/Radarr/issues)
[![GitHub pull requests](https://img.shields.io/github/issues-pr/radarr/radarr.svg?maxAge=60&style=flat-square)](https://github.com/Radarr/Radarr/pulls)
[![GNU GPL v3](https://img.shields.io/badge/license-GNU%20GPL%20v3-blue.svg?maxAge=60&style=flat-square)](http://www.gnu.org/licenses/gpl.html)
[![Copyright 2010-2017](https://img.shields.io/badge/copyright-2017-blue.svg?maxAge=60&style=flat-square)](https://github.com/Radarr/Radarr)
[![Github Releases](https://img.shields.io/github/downloads/Radarr/Radarr/total.svg?maxAge=60&style=flat-square)](https://github.com/Radar/Radarr/releases/latest)
[![Docker Pulls](https://img.shields.io/docker/pulls/linuxserver/radarr.svg?maxAge=60&style=flat-square)](https://hub.docker.com/r/linuxserver/radarr/)
| Service | Master | Develop |
|----------|:---------------------------:|:----------------------------:|
| AppVeyor | [![AppVeyor](https://img.shields.io/appveyor/ci/galli-leo/Radarr/master.svg?maxAge=60&style=flat-square)](https://ci.appveyor.com/project/galli-leo/Radarr) | [![AppVeyor](https://img.shields.io/appveyor/ci/galli-leo/Radarr-usby1/develop.svg?maxAge=60&style=flat-square)](https://ci.appveyor.com/project/galli-leo/Radarr-usby1) |
| Travis | [![Travis](https://img.shields.io/travis/Radarr/Radarr/master.svg?maxAge=60&style=flat-square)](https://travis-ci.org/Radarr/Radarr) | [![Travis](https://img.shields.io/travis/Radarr/Radarr/develop.svg?maxAge=60&style=flat-square)](https://travis-ci.org/Radarr/Radarr) |
### [Site and API Status](https://status.radarr.video)
| API | Updates | Sites |
|-------|:----:|:----:|
| [![API V2 (develop)](http://status.radarr.video/component/1/shield?style=flat-square)](https://api.radarr.video/v2/) | [![Update Server](http://status.radarr.video/component/4/shield?style=flat-square)](https://radarr.aeonlucid.com) | [![Radarr Mappings](http://status.radarr.video/component/6/shield?style=flat-square)](https://mappings.radarr.video/)
| [![API Staging (nightly)](http://status.radarr.video/component/2/shield?style=flat-square)](https://staging.api.radarr.video/) | [![Github Updates](http://status.radarr.video/component/5/shield?style=flat-square)](https://api.github.com/v3/) | [![Main Site](http://status.radarr.video/component/7/shield?style=flat-square)](https://radarr.video/)
Radarr is currently undergoing rapid development and pull requests are actively added into the repository.
## Features
### Current Features
* Adding new movies with lots of information, such as trailers, ratings, etc.
* Support for major platforms: Windows, Linux, macOS, Raspberry Pi, etc.
* Can watch for better quality of the movies you have and do an automatic upgrade. *eg. from DVD to Blu-Ray*
* Automatic failed download handling will try another release if one fails
* Manual search so you can pick any release or to see why a release was not downloaded automatically
* Full integration with SABnzbd and NZBGet
* Automatically searching for releases as well as RSS Sync
* Automatically importing downloaded movies
* Recognizing Special Editions, Director's Cut, etc.
* Identifying releases with hardcoded subs
* All indexers supported by Sonarr also supported
* New PassThePopcorn Indexer
* QBittorrent, Deluge, rTorrent, Transmission and uTorrent download client (Other clients are coming)
* New TorrentPotato Indexer
* Torznab Indexer now supports Movies (Works well with [Jackett](https://github.com/Jackett/Jackett))
* Scanning PreDB to know when a new release is available
* Importing movies from various online sources, such as IMDb Watchlists (A complete list can be found [here](https://github.com/Radarr/Radarr/issues/114))
* Full integration with Kodi, Plex (notification, library update)
* And a beautiful UI
* Importing Metadata such as trailers or subtitles
* Adding metadata such as posters and information for Kodi and others to use
### Planned Features
* Dynamically renaming folders with quality info, etc. (Currently working partially.) (\*)
* Supporting custom folder structures, such as all movie files in one folder (\*)
* Supporting multiple editions per movies (\*)
* Supporting collections of movies, such as James Bond (\*)
**Note:** All features marked with (\*) are set to be in the first release of Radarr.
#### [Feature Requests](http://feathub.com/Radarr/Radarr)
## Configuring the Development Environment
### Requirements
* [Visual Studio Community](https://www.visualstudio.com/vs/community/) or [MonoDevelop](http://www.monodevelop.com)
* [Git](https://git-scm.com/downloads)
* [Node.js](https://nodejs.org/en/download/)
### Setup
* Make sure all the required software mentioned above are installed
* Clone the repository into your development machine ([*info*](https://help.github.com/desktop/guides/contributing/working-with-your-remote-repository-on-github-or-github-enterprise))
* Grab the submodules `git submodule init && git submodule update`
* Install the required Node Packages `npm install`
* Start gulp to monitor your dev environment for any changes that need post processing using `npm start` command.
> **Notice**
> Gulp must be running at all times while you are working with Radarr client source files.
### Build
* To build run `sh build.sh`
**Note:** Windows users must have bash available to do this. [cmder](http://cmder.net/) which is a console emulator for windows has bash as part of it's default installation.
### Development
* Open `NzbDrone.sln` in Visual Studio or run the build.sh script, if Mono is installed
* Make sure `NzbDrone.Console` is set as the startup project
* Run `build.sh` before running
## Supporters
This project would not be possible without the support by these amazing folks. [**Become a sponsor or backer**](https://opencollective.com/radarr) to help us out!
[![Sponsors](https://opencollective.com/radarr/tiers/sponsor.svg?avatarHeight=36)](https://opencollective.com/radarr/order/3851)
---
[![Flexible Sponsors](https://opencollective.com/radarr/tiers/flexible-sponsor.svg?avatarHeight=36)](https://opencollective.com/radarr/order/3856)
---
[![Backers](https://opencollective.com/radarr/tiers/backer.svg?avatarHeight=36)](https://opencollective.com/radarr/order/3850)
## License
* [GNU GPL v3](http://www.gnu.org/licenses/gpl.html)
* Copyright 2010-2017

53
appveyor.yml Normal file
View file

@ -0,0 +1,53 @@
version: '0.2.0.{build}'
assembly_info:
patch: true
file: 'src\NzbDrone.Common\Properties\SharedAssemblyInfo.cs'
assembly_version: '{version}'
assembly_file_version: '{version}'
assembly_informational_version: '{version}-rc1'
environment:
DOTNET_CLI_TELEMETRY_OPTOUT: 1
install:
- git submodule update --init --recursive
build_script:
- ps: ./build-appveyor.ps1
test: off
#test:
# assemblies:
# - '_tests\*Test.dll'
# categories:
# except:
# - IntegrationTest
# - AutomationTest
artifacts:
- path: '_artifacts\*.zip'
- path: '_artifacts\*.exe'
- path: '_artifacts\*.tar.gz'
cache:
- '%USERPROFILE%\.nuget\packages'
- node_modules -> package.json
pull_requests:
do_not_increment_build_number: true
on_failure:
- ps: Get-ChildItem .\_artifacts\*.zip | % { Push-AppveyorArtifact $_.FullName -FileName $_.Name }
- ps: Get-ChildItem .\_artifacts\*.exe | % { Push-AppveyorArtifact $_.FullName -FileName $_.Name }
- ps: Get-ChildItem .\_artifacts\*.tar.gz | % { Push-AppveyorArtifact $_.FullName -FileName $_.Name }
only_commits:
files:
- src/
- osx/
- gulp/
- logo/
- setup/
- appveyor.yml
- build-appveyor.cake

319
build-appveyor.cake Normal file
View file

@ -0,0 +1,319 @@
#addin nuget:?package=Cake.Npm&version=0.12.1
#addin nuget:?package=SharpZipLib&version=0.86.0
#addin nuget:?package=Cake.Compression&version=0.1.4
// Build variables
var outputFolder = "./_output";
var outputFolderMono = outputFolder + "_mono";
var outputFolderOsx = outputFolder + "_osx";
var outputFolderOsxApp = outputFolderOsx + "_app";
var testPackageFolder = "./_tests";
var testSearchPattern = "*.Test/bin/x86/Release";
var sourceFolder = "./src";
var solutionFile = sourceFolder + "/NzbDrone.sln";
var updateFolder = outputFolder + "/NzbDrone.Update";
var updateFolderMono = outputFolderMono + "/NzbDrone.Update";
// Artifact variables
var artifactsFolder = "./_artifacts";
var artifactsFolderWindows = artifactsFolder + "/windows";
var artifactsFolderLinux = artifactsFolder + "/linux";
var artifactsFolderOsx = artifactsFolder + "/osx";
var artifactsFolderOsxApp = artifactsFolder + "/osx-app";
// Utility methods
public void RemoveEmptyFolders(string startLocation) {
foreach (var directory in System.IO.Directory.GetDirectories(startLocation))
{
RemoveEmptyFolders(directory);
if (System.IO.Directory.GetFiles(directory).Length == 0 &&
System.IO.Directory.GetDirectories(directory).Length == 0)
{
DeleteDirectory(directory, false);
}
}
}
public void CleanFolder(string path, bool keepConfigFiles) {
DeleteFiles(path + "/**/*.transform");
if (!keepConfigFiles) {
DeleteFiles(path + "/**/*.dll.config");
}
DeleteFiles(path + "/**/FluentValidation.resources.dll");
DeleteFiles(path + "/**/App.config");
DeleteFiles(path + "/**/*.less");
DeleteFiles(path + "/**/*.vshost.exe");
DeleteFiles(path + "/**/*.dylib");
RemoveEmptyFolders(path);
}
public void CreateMdbs(string path) {
foreach (var file in System.IO.Directory.EnumerateFiles(path, "*.pdb", System.IO.SearchOption.AllDirectories)) {
var actualFile = file.Substring(0, file.Length - 4);
if (FileExists(actualFile + ".exe")) {
StartProcess("./tools/pdb2mdb/pdb2mdb.exe", new ProcessSettings()
.WithArguments(args => args.Append(actualFile + ".exe")));
}
if (FileExists(actualFile + ".dll")) {
StartProcess("./tools/pdb2mdb/pdb2mdb.exe", new ProcessSettings()
.WithArguments(args => args.Append(actualFile + ".dll")));
}
}
}
// Build Tasks
Task("Compile").Does(() => {
// Build
if (DirectoryExists(outputFolder)) {
DeleteDirectory(outputFolder, true);
}
MSBuild(solutionFile, config =>
config.UseToolVersion(MSBuildToolVersion.VS2015)
.WithTarget("Clean")
.SetVerbosity(Verbosity.Minimal));
NuGetRestore(solutionFile);
MSBuild(solutionFile, config =>
config.UseToolVersion(MSBuildToolVersion.VS2015)
.SetPlatformTarget(PlatformTarget.x86)
.SetConfiguration("Release")
.WithProperty("AllowedReferenceRelatedFileExtensions", new string[] { ".pdb" })
.WithTarget("Build")
.SetVerbosity(Verbosity.Minimal));
CleanFolder(outputFolder, false);
// Add JsonNet
DeleteFiles(outputFolder + "/Newtonsoft.Json.*");
CopyFiles(sourceFolder + "/packages/Newtonsoft.Json.*/lib/net35/*.dll", outputFolder);
CopyFiles(sourceFolder + "/packages/Newtonsoft.Json.*/lib/net35/*.dll", updateFolder);
// Remove Mono stuff
DeleteFile(outputFolder + "/Mono.Posix.dll");
});
Task("Gulp").Does(() => {
NpmInstall(new NpmInstallSettings {
LogLevel = NpmLogLevel.Silent,
WorkingDirectory = "./",
Production = true
});
NpmRunScript("build");
});
Task("PackageMono").Does(() => {
// Start mono package
if (DirectoryExists(outputFolderMono)) {
DeleteDirectory(outputFolderMono, true);
}
CopyDirectory(outputFolder, outputFolderMono);
// Create MDBs
CreateMdbs(outputFolderMono);
// Remove PDBs
DeleteFiles(outputFolderMono + "/**/*.pdb");
// Remove service helpers
DeleteFiles(outputFolderMono + "/ServiceUninstall.*");
DeleteFiles(outputFolderMono + "/ServiceInstall.*");
// Remove native windows binaries
DeleteFiles(outputFolderMono + "/sqlite3.*");
DeleteFiles(outputFolderMono + "/MediaInfo.*");
// Adding NzbDrone.Core.dll.config (for dllmap)
CopyFile(sourceFolder + "/NzbDrone.Core/NzbDrone.Core.dll.config", outputFolderMono + "/NzbDrone.Core.dll.config");
// Adding CurlSharp.dll.config (for dllmap)
CopyFile(sourceFolder + "/NzbDrone.Common/CurlSharp.dll.config", outputFolderMono + "/CurlSharp.dll.config");
// Renaming Radarr.Console.exe to Radarr.exe
DeleteFiles(outputFolderMono + "/Radarr.exe*");
MoveFile(outputFolderMono + "/Radarr.Console.exe", outputFolderMono + "/Radarr.exe");
MoveFile(outputFolderMono + "/Radarr.Console.exe.config", outputFolderMono + "/Radarr.exe.config");
MoveFile(outputFolderMono + "/Radarr.Console.exe.mdb", outputFolderMono + "/Radarr.exe.mdb");
// Remove NzbDrone.Windows.*
DeleteFiles(outputFolderMono + "/NzbDrone.Windows.*");
// Adding NzbDrone.Mono to updatePackage
CopyFiles(outputFolderMono + "/NzbDrone.Mono.*", updateFolderMono);
});
Task("PackageOsx").Does(() => {
// Start osx package
if (DirectoryExists(outputFolderOsx)) {
DeleteDirectory(outputFolderOsx, true);
}
CopyDirectory(outputFolderMono, outputFolderOsx);
// Adding sqlite dylibs
CopyFiles(sourceFolder + "/Libraries/Sqlite/*.dylib", outputFolderOsx);
// Adding MediaInfo dylib
CopyFiles(sourceFolder + "/Libraries/MediaInfo/*.dylib", outputFolderOsx);
// Chmod as executable
StartProcess(@"C:\cygwin64\bin\chmod.exe", new ProcessSettings()
.WithArguments(args => args
.Append("+x")
.Append(outputFolderOsx + "/Radarr")));
// Adding Startup script
CopyFile("./osx/Radarr", outputFolderOsx + "/Radarr");
});
Task("PackageOsxApp").Does(() => {
// Start osx app package
if (DirectoryExists(outputFolderOsxApp)) {
DeleteDirectory(outputFolderOsxApp, true);
}
CreateDirectory(outputFolderOsxApp);
// Copy osx package files
CopyDirectory("./osx/Radarr.app", outputFolderOsxApp + "/Radarr.app");
CopyDirectory(outputFolderOsx, outputFolderOsxApp + "/Radarr.app/Contents/MacOS");
});
Task("PackageTests").Does(() => {
// Start tests package
if (DirectoryExists(testPackageFolder)) {
DeleteDirectory(testPackageFolder, true);
}
CreateDirectory(testPackageFolder);
// Copy tests
CopyFiles(sourceFolder + "/" + testSearchPattern + "/*", testPackageFolder);
foreach (var directory in System.IO.Directory.GetDirectories(sourceFolder, "*.Test")) {
var releaseDirectory = directory + "/bin/x86/Release";
if (DirectoryExists(releaseDirectory)) {
foreach (var releaseSubDirectory in System.IO.Directory.GetDirectories(releaseDirectory)) {
Information(System.IO.Path.GetDirectoryName(releaseSubDirectory));
CopyDirectory(releaseSubDirectory, testPackageFolder + "/" + System.IO.Path.GetFileName(releaseSubDirectory));
}
}
}
// Install NUnit.ConsoleRunner
NuGetInstall("NUnit.ConsoleRunner", new NuGetInstallSettings {
Version = "3.2.0",
OutputDirectory = testPackageFolder
});
// Copy dlls
CopyFiles(outputFolder + "/*.dll", testPackageFolder);
// Copy scripts
CopyFiles("./*.sh", testPackageFolder);
// Create MDBs for tests
CreateMdbs(testPackageFolder);
// Remove config
DeleteFiles(testPackageFolder + "/*.log.config");
// Clean
CleanFolder(testPackageFolder, true);
// Adding NzbDrone.Core.dll.config (for dllmap)
CopyFile(sourceFolder + "/NzbDrone.Core/NzbDrone.Core.dll.config", testPackageFolder + "/NzbDrone.Core.dll.config");
// Adding CurlSharp.dll.config (for dllmap)
CopyFile(sourceFolder + "/NzbDrone.Common/CurlSharp.dll.config", testPackageFolder + "/CurlSharp.dll.config");
// Adding CurlSharp libraries
CopyFiles(sourceFolder + "/ExternalModules/CurlSharp/libs/i386/*", testPackageFolder);
});
Task("CleanupWindowsPackage").Does(() => {
// Remove mono
DeleteFiles(outputFolder + "/NzbDrone.Mono.*");
// Adding NzbDrone.Windows to updatePackage
CopyFiles(outputFolder + "/NzbDrone.Windows.*", updateFolder);
});
Task("Build")
.IsDependentOn("Compile")
.IsDependentOn("Gulp")
.IsDependentOn("PackageMono")
.IsDependentOn("PackageOsx")
.IsDependentOn("PackageOsxApp")
.IsDependentOn("PackageTests")
.IsDependentOn("CleanupWindowsPackage");
// Build Artifacts
Task("CleanArtifacts").Does(() => {
if (DirectoryExists(artifactsFolder)) {
DeleteDirectory(artifactsFolder, true);
}
CreateDirectory(artifactsFolder);
});
Task("ArtifactsWindows").Does(() => {
CopyDirectory(outputFolder, artifactsFolderWindows + "/Radarr");
});
Task("ArtifactsWindowsInstaller").Does(() => {
InnoSetup("./setup/nzbdrone.iss", new InnoSetupSettings {
OutputDirectory = artifactsFolder,
ToolPath = "./setup/inno/ISCC.exe"
});
});
Task("ArtifactsLinux").Does(() => {
CopyDirectory(outputFolderMono, artifactsFolderLinux + "/Radarr");
});
Task("ArtifactsOsx").Does(() => {
CopyDirectory(outputFolderOsx, artifactsFolderOsx + "/Radarr");
});
Task("ArtifactsOsxApp").Does(() => {
CopyDirectory(outputFolderOsxApp, artifactsFolderOsxApp);
});
Task("CompressArtifacts").Does(() => {
var prefix = "";
if (AppVeyor.IsRunningOnAppVeyor) {
prefix += AppVeyor.Environment.Repository.Branch.Replace("/", "-") + ".";
prefix += AppVeyor.Environment.Build.Version + ".";
}
Zip(artifactsFolderWindows, artifactsFolder + "/Radarr." + prefix + "windows.zip");
GZipCompress(artifactsFolderLinux, artifactsFolder + "/Radarr." + prefix + "linux.tar.gz");
GZipCompress(artifactsFolderOsx, artifactsFolder + "/Radarr." + prefix + "osx.tar.gz");
Zip(artifactsFolderOsxApp, artifactsFolder + "/Radarr." + prefix + "osx-app.zip");
});
Task("Artifacts")
.IsDependentOn("CleanArtifacts")
.IsDependentOn("ArtifactsWindows")
.IsDependentOn("ArtifactsWindowsInstaller")
.IsDependentOn("ArtifactsLinux")
.IsDependentOn("ArtifactsOsx")
.IsDependentOn("ArtifactsOsxApp")
.IsDependentOn("CompressArtifacts");
// Run
RunTarget("Build");
RunTarget("Artifacts");

189
build-appveyor.ps1 Normal file
View file

@ -0,0 +1,189 @@
##########################################################################
# This is the Cake bootstrapper script for PowerShell.
# This file was downloaded from https://github.com/cake-build/resources
# Feel free to change this file to fit your needs.
##########################################################################
<#
.SYNOPSIS
This is a Powershell script to bootstrap a Cake build.
.DESCRIPTION
This Powershell script will download NuGet if missing, restore NuGet tools (including Cake)
and execute your Cake build script with the parameters you provide.
.PARAMETER Script
The build script to execute.
.PARAMETER Target
The build script target to run.
.PARAMETER Configuration
The build configuration to use.
.PARAMETER Verbosity
Specifies the amount of information to be displayed.
.PARAMETER Experimental
Tells Cake to use the latest Roslyn release.
.PARAMETER WhatIf
Performs a dry run of the build script.
No tasks will be executed.
.PARAMETER Mono
Tells Cake to use the Mono scripting engine.
.PARAMETER SkipToolPackageRestore
Skips restoring of packages.
.PARAMETER ScriptArgs
Remaining arguments are added here.
.LINK
http://cakebuild.net
#>
[CmdletBinding()]
Param(
[string]$Script = "build-appveyor.cake",
[string]$Target = "Default",
[ValidateSet("Release", "Debug")]
[string]$Configuration = "Release",
[ValidateSet("Quiet", "Minimal", "Normal", "Verbose", "Diagnostic")]
[string]$Verbosity = "Verbose",
[switch]$Experimental,
[Alias("DryRun","Noop")]
[switch]$WhatIf,
[switch]$Mono,
[switch]$SkipToolPackageRestore,
[Parameter(Position=0,Mandatory=$false,ValueFromRemainingArguments=$true)]
[string[]]$ScriptArgs
)
[Reflection.Assembly]::LoadWithPartialName("System.Security") | Out-Null
function MD5HashFile([string] $filePath)
{
if ([string]::IsNullOrEmpty($filePath) -or !(Test-Path $filePath -PathType Leaf))
{
return $null
}
[System.IO.Stream] $file = $null;
[System.Security.Cryptography.MD5] $md5 = $null;
try
{
$md5 = [System.Security.Cryptography.MD5]::Create()
$file = [System.IO.File]::OpenRead($filePath)
return [System.BitConverter]::ToString($md5.ComputeHash($file))
}
finally
{
if ($file -ne $null)
{
$file.Dispose()
}
}
}
Write-Host "Preparing to run build script..."
if(!$PSScriptRoot){
$PSScriptRoot = Split-Path $MyInvocation.MyCommand.Path -Parent
}
$TOOLS_DIR = Join-Path $PSScriptRoot "tools"
$NUGET_EXE = Join-Path $TOOLS_DIR "nuget/nuget.exe"
$CAKE_EXE = Join-Path $TOOLS_DIR "Cake/Cake.exe"
$NUGET_URL = "https://dist.nuget.org/win-x86-commandline/latest/nuget.exe"
$PACKAGES_CONFIG = Join-Path $TOOLS_DIR "packages.config"
$PACKAGES_CONFIG_MD5 = Join-Path $TOOLS_DIR "packages.config.md5sum"
# Should we use mono?
$UseMono = "";
if($Mono.IsPresent) {
Write-Verbose -Message "Using the Mono based scripting engine."
$UseMono = "-mono"
}
# Should we use the new Roslyn?
$UseExperimental = "";
if($Experimental.IsPresent -and !($Mono.IsPresent)) {
Write-Verbose -Message "Using experimental version of Roslyn."
$UseExperimental = "-experimental"
}
# Is this a dry run?
$UseDryRun = "";
if($WhatIf.IsPresent) {
$UseDryRun = "-dryrun"
}
# Make sure tools folder exists
if ((Test-Path $PSScriptRoot) -and !(Test-Path $TOOLS_DIR)) {
Write-Verbose -Message "Creating tools directory..."
New-Item -Path $TOOLS_DIR -Type directory | out-null
}
# Make sure that packages.config exist.
if (!(Test-Path $PACKAGES_CONFIG)) {
Write-Verbose -Message "Downloading packages.config..."
try { (New-Object System.Net.WebClient).DownloadFile("http://cakebuild.net/download/bootstrapper/packages", $PACKAGES_CONFIG) } catch {
Throw "Could not download packages.config."
}
}
# Try find NuGet.exe in path if not exists
if (!(Test-Path $NUGET_EXE)) {
Write-Verbose -Message "Trying to find nuget.exe in PATH..."
$existingPaths = $Env:Path -Split ';' | Where-Object { (![string]::IsNullOrEmpty($_)) -and (Test-Path $_) }
$NUGET_EXE_IN_PATH = Get-ChildItem -Path $existingPaths -Filter "nuget.exe" | Select -First 1
if ($NUGET_EXE_IN_PATH -ne $null -and (Test-Path $NUGET_EXE_IN_PATH.FullName)) {
Write-Verbose -Message "Found in PATH at $($NUGET_EXE_IN_PATH.FullName)."
$NUGET_EXE = $NUGET_EXE_IN_PATH.FullName
}
}
# Try download NuGet.exe if not exists
if (!(Test-Path $NUGET_EXE)) {
Write-Verbose -Message "Downloading NuGet.exe..."
try {
(New-Object System.Net.WebClient).DownloadFile($NUGET_URL, $NUGET_EXE)
} catch {
Throw "Could not download NuGet.exe."
}
}
# Save nuget.exe path to environment to be available to child processed
$ENV:NUGET_EXE = $NUGET_EXE
# Restore tools from NuGet?
if(-Not $SkipToolPackageRestore.IsPresent) {
Push-Location
Set-Location $TOOLS_DIR
# Check for changes in packages.config and remove installed tools if true.
[string] $md5Hash = MD5HashFile($PACKAGES_CONFIG)
if((!(Test-Path $PACKAGES_CONFIG_MD5)) -Or
($md5Hash -ne (Get-Content $PACKAGES_CONFIG_MD5 ))) {
Write-Verbose -Message "Missing or changed package.config hash..."
Get-ChildItem -Path $TOOLS_DIR -Recurse -Exclude packages.config |
Select -ExpandProperty FullName |
Where {$_ -notlike (Join-Path $TOOLS_DIR "pdb2mdb*")} |
Where {$_ -notlike (Join-Path $TOOLS_DIR "nuget*")} |
sort length -Descending |
Remove-Item -Recurse
}
Write-Verbose -Message "Restoring tools from NuGet..."
$NuGetOutput = Invoke-Expression "&`"$NUGET_EXE`" install -ExcludeVersion -OutputDirectory `"$TOOLS_DIR`""
if ($LASTEXITCODE -ne 0) {
Throw "An error occured while restoring NuGet tools."
}
else
{
$md5Hash | Out-File $PACKAGES_CONFIG_MD5 -Encoding "ASCII"
}
Write-Verbose -Message ($NuGetOutput | out-string)
Pop-Location
}
# Make sure that Cake has been installed.
if (!(Test-Path $CAKE_EXE)) {
Throw "Could not find Cake.exe at $CAKE_EXE"
}
# Start Cake
Write-Host "Running build script..."
Invoke-Expression "& `"$CAKE_EXE`" `"$Script`" -target=`"$Target`" -configuration=`"$Configuration`" -verbosity=`"$Verbosity`" $UseMono $UseDryRun $UseExperimental $ScriptArgs"
exit $LASTEXITCODE

View file

@ -69,11 +69,21 @@ BuildWithMSBuild()
CheckExitCode MSBuild.exe $slnFile //p:Configuration=Release //p:Platform=x86 //t:Build //m //p:AllowedReferenceRelatedFileExtensions=.pdb
}
BuildWithXbuild()
RestoreNuget()
{
export MONO_IOMAP=case
mono $nuget restore $slnFile
}
CleanWithXbuild()
{
export MONO_IOMAP=case
CheckExitCode xbuild /t:Clean $slnFile
mono $nuget restore $slnFile
}
BuildWithXbuild()
{
export MONO_IOMAP=case
CheckExitCode xbuild /p:Configuration=Release /p:Platform=x86 /t:Build /p:AllowedReferenceRelatedFileExtensions=.pdb $slnFile
}
@ -86,6 +96,8 @@ Build()
if [ $runtime = "dotnet" ] ; then
BuildWithMSBuild
else
CleanWithXbuild
RestoreNuget
BuildWithXbuild
fi
@ -154,8 +166,8 @@ PackageMono()
cp $sourceFolder/NzbDrone.Common/CurlSharp.dll.config $outputFolderMono
echo "Renaming NzbDrone.Console.exe to NzbDrone.exe"
rm $outputFolderMono/NzbDrone.exe*
for file in $outputFolderMono/NzbDrone.Console.exe*; do
rm $outputFolderMono/Radarr.exe*
for file in $outputFolderMono/Radarr.Console.exe*; do
mv "$file" "${file//.Console/}"
done
@ -181,7 +193,7 @@ PackageOsx()
cp $sourceFolder/Libraries/MediaInfo/*.dylib $outputFolderOsx
echo "Adding Startup script"
cp ./osx/Sonarr $outputFolderOsx
cp ./osx/Radarr $outputFolderOsx
echo "##teamcity[progressFinish 'Creating OS X Package']"
}
@ -192,8 +204,8 @@ PackageOsxApp()
rm -rf $outputFolderOsxApp
mkdir $outputFolderOsxApp
cp -r ./osx/Sonarr.app $outputFolderOsxApp
cp -r $outputFolderOsx $outputFolderOsxApp/Sonarr.app/Contents/MacOS
cp -r ./osx/Radarr.app $outputFolderOsxApp
cp -r $outputFolderOsx $outputFolderOsxApp/Radarr.app/Contents/MacOS
echo "##teamcity[progressFinish 'Creating OS X App Package']"
}
@ -208,9 +220,9 @@ PackageTests()
find $sourceFolder -path $testSearchPattern -exec cp -r -u -T "{}" $testPackageFolder \;
if [ $runtime = "dotnet" ] ; then
$nuget install NUnit.ConsoleRunner -Version 3.2.0 -Output $testPackageFolder
$nuget install NUnit.Runners -Version 3.2.1 -Output $testPackageFolder
else
mono $nuget install NUnit.ConsoleRunner -Version 3.2.0 -Output $testPackageFolder
mono $nuget install NUnit.Runners -Version 3.2.1 -Output $testPackageFolder
fi
cp $outputFolder/*.dll $testPackageFolder
@ -256,10 +268,42 @@ case "$(uname -s)" in
;;
esac
Build
RunGulp
PackageMono
PackageOsx
PackageOsxApp
PackageTests
CleanupWindowsPackage
if [ $# -eq 0 ]
then
Build
RunGulp
PackageMono
PackageOsx
PackageOsxApp
PackageTests
CleanupWindowsPackage
fi
if [ "$1" = "CleanXbuild" ]
then rm -rf $outputFolder
CleanWithXbuild
fi
if [ "$1" = "NugetMono" ]
then rm -rf $outputFolder
RestoreNuget
fi
if [ "$1" = "Build" ]
then BuildWithXbuild
CleanFolder $outputFolder false
AddJsonNet
rm $outputFolder/Mono.Posix.dll
fi
if [ "$1" = "Gulp" ]
then RunGulp
fi
if [ "$1" = "Package" ]
then PackageMono
PackageOsx
PackageOsxApp
PackageTests
CleanupWindowsPackage
fi

14
changelog.tpl Normal file
View file

@ -0,0 +1,14 @@
# Changelog
{{#versions}}
## {{{label}}}
{{#sections}}
### {{{label}}}
{{#commits}}
- {{{subject}}} [{{{author}}}]
{{/commits}}
{{/sections}}
{{/versions}}

44
create_test_cases.py Normal file
View file

@ -0,0 +1,44 @@
input1 = """Prometheus.Special.Edition.Fan Edit.2012..BRRip.x264.AAC-m2g
Star Wars Episode IV - A New Hope (Despecialized) 1999.mkv
Prometheus.(Special.Edition.Remastered).2012.[Bluray-1080p].mkv
Prometheus Extended 2012
Prometheus Extended Directors Cut Fan Edit 2012
Prometheus Director's Cut 2012
Prometheus Directors Cut 2012
Prometheus.(Extended.Theatrical.Version.IMAX).BluRay.1080p.2012.asdf
2001 A Space Odyssey Director's Cut (1968).mkv
2001: A Space Odyssey (Extended Directors Cut FanEdit) Bluray 1080p 1968
A Fake Movie 2035 Directors 2012.mkv
Blade Runner Director's Cut 2049.mkv
Prometheus 50th Anniversary Edition 2012.mkv
Movie 2in1 2012.mkv
Movie IMAX 2012.mkv"""
output1 = """Special.Edition.Fan Edit BRRip.x264.AAC-m2g
Despecialized mkv
Special.Edition.Remastered Bluray-1080p].mkv
Extended mkv
Extended Directors Cut Fan Edit mkv
Director's Cut mkv
Directors Cut mkv
Extended.Theatrical.Version.IMAX asdf
Director's Cut mkv
Extended Directors Cut FanEdit mkv
Directors mkv
Director's Cut mkv
50th Anniversary Edition mkv
2in1 mkv
IMAX mkv"""
inputs = input1.split("\n")
outputs = output1.split("\n")
real_o = []
for output in outputs:
real_o.append(output.split(" ")[0].replace(".", " ").strip())
count = 0
for inp in inputs:
o = real_o[count]
print "[TestCase(\"{0}\", \"{1}\")]".format(inp, o)
count += 1

View file

@ -25,7 +25,7 @@ gulp.task('copyHtml', function () {
});
gulp.task('copyContent', function () {
return gulp.src([paths.src.content + '**/*.*', '!**/*.less'])
return gulp.src([paths.src.content + '**/*.*', '!**/*.less', '!**/*.css'])
.pipe(gulp.dest(paths.dest.content))
.pipe(livereload());
});

View file

@ -5,7 +5,7 @@ var postcss = require('gulp-postcss');
var sourcemaps = require('gulp-sourcemaps');
var autoprefixer = require('autoprefixer-core');
var livereload = require('gulp-livereload');
var cleancss = require('gulp-clean-css');
var print = require('gulp-print');
var paths = require('./paths');
var errorHandler = require('./errorHandler');
@ -16,16 +16,23 @@ gulp.task('less', function() {
paths.src.content + 'bootstrap.less',
paths.src.content + 'theme.less',
paths.src.content + 'overrides.less',
paths.src.content + 'bootstrap.toggle-switch.css',
paths.src.content + 'fullcalendar.css',
paths.src.content + 'Messenger/messenger.css',
paths.src.content + 'Messenger/messenger.flat.css',
paths.src.root + 'Series/series.less',
paths.src.root + 'Activity/activity.less',
paths.src.root + 'AddSeries/addSeries.less',
paths.src.root + 'AddMovies/addMovies.less',
paths.src.root + 'Calendar/calendar.less',
paths.src.root + 'Cells/cells.less',
paths.src.root + 'ManualImport/manualimport.less',
paths.src.root + 'Settings/settings.less',
paths.src.root + 'System/Logs/logs.less',
paths.src.root + 'System/Update/update.less',
paths.src.root + 'System/Info/info.less'
paths.src.root + 'System/Info/info.less',
paths.src.root + 'Movies/movies.less',
];
return gulp.src(src)
@ -33,12 +40,13 @@ gulp.task('less', function() {
.pipe(sourcemaps.init())
.pipe(less({
dumpLineNumbers : 'false',
compress : true,
yuicompress : true,
compress : false,
yuicompress : false,
ieCompat : true,
strictImports : true
}))
.pipe(postcss([ autoprefixer({ browsers: ['last 2 versions'] }) ]))
.pipe(cleancss())
.on('error', errorHandler.onError)
.pipe(sourcemaps.write(paths.dest.content))
.pipe(gulp.dest(paths.dest.content))

View file

@ -4,8 +4,8 @@
DIR=$(cd "$(dirname "$0")"; pwd)
#change these values to match your app
EXE_PATH="$DIR/NzbDrone.exe"
APPNAME="Sonarr"
EXE_PATH="$DIR/Radarr.exe"
APPNAME="Radarr"
#set up environment
if [[ -x '/opt/local/bin/mono' ]]; then

View file

@ -11,15 +11,15 @@
<key>CFBundleDevelopmentRegion</key>
<string>English</string>
<key>CFBundleExecutable</key>
<string>Sonarr</string>
<string>Radarr</string>
<key>CFBundleIconFile</key>
<string>sonarr.icns</string>
<string>radarr.icns</string>
<key>CFBundleIdentifier</key>
<string>com.osx.sonarr.tv</string>
<string>com.osx.radarr.video</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>Sonarr</string>
<string>Radarr</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>

Binary file not shown.

4986
package-lock.json generated Normal file

File diff suppressed because it is too large Load diff

View file

@ -1,7 +1,7 @@
{
"name": "Sonarr",
"name": "Radarr",
"version": "2.0.0",
"description": "Sonarr",
"description": "Radarr",
"main": "main.js",
"scripts": {
"build": "gulp build",
@ -9,7 +9,7 @@
},
"repository": {
"type": "git",
"url": "git://github.com/Sonarr/Sonarr.git"
"url": "git://github.com/Radarr/Radarr.git"
},
"author": "",
"license": "GPL-3.0",
@ -20,6 +20,7 @@
"del": "1.2.0",
"gulp": "3.9.0",
"gulp-cached": "1.1.0",
"gulp-clean-css": "^3.0.4",
"gulp-concat": "2.6.0",
"gulp-declare": "0.3.0",
"gulp-handlebars": "3.0.1",
@ -40,6 +41,7 @@
"run-sequence": "1.1.1",
"streamqueue": "1.1.0",
"tar.gz": "0.1.1",
"url-search-params": "^0.6.1",
"webpack": "1.12.0",
"webpack-stream": "2.1.0"
}

77
package.sh Normal file
View file

@ -0,0 +1,77 @@
if [ $# -eq 0 ]; then
if [ "$TRAVIS_PULL_REQUEST" != false ]; then
echo "Need to supply version argument" && exit;
fi
fi
# Use mono or .net depending on OS
case "$(uname -s)" in
CYGWIN*|MINGW32*|MINGW64*|MSYS*)
# on windows, use dotnet
runtime="dotnet"
;;
*)
# otherwise use mono
runtime="mono"
;;
esac
if [ "$TRAVIS_PULL_REQUEST" = "false" ]; then
VERSION="$(date +%H:%M:%S)"
YEAR="$(date +%Y)"
MONTH="$(date +%m)"
DAY="$(date +%d)"
else
VERSION=$1
BRANCH=$2
BRANCH=${BRANCH#refs\/heads\/}
BRANCH=${BRANCH//\//-}
fi
outputFolder='./_output'
outputFolderMono='./_output_mono'
outputFolderOsx='./_output_osx'
outputFolderOsxApp='./_output_osx_app'
tr -d "\r" < $outputFolderOsxApp/Radarr.app/Contents/MacOS/Radarr > $outputFolderOsxApp/Radarr.app/Contents/MacOS/Radarr2
rm $outputFolderOsxApp/Radarr.app/Contents/MacOS/Radarr
chmod +x $outputFolderOsxApp/Radarr.app/Contents/MacOS/Radarr2
mv $outputFolderOsxApp/Radarr.app/Contents/MacOS/Radarr2 $outputFolderOsxApp/Radarr.app/Contents/MacOS/Radarr >& error.log
if [ $runtime = "dotnet" ] ; then
./7za.exe a Radarr_Windows_$VERSION.zip ./Radarr_Windows_$VERSION/*
./7za.exe a -ttar -so Radarr_Mono_$VERSION.tar ./Radarr_Mono_$VERSION/* | ./7za.exe a -si Radarr_Mono_$VERSION.tar.gz
./7za.exe a -ttar -so Radarr_OSX_$VERSION.tar ./_output_osx/* | ./7za.exe a -si Radarr_OSX_$VERSION.tar.gz
./7za.exe a -ttar -so Radarr_OSX_App_$VERSION.tar ./_output_osx_app/* | ./7za.exe a -si Radarr_OSX_App_$VERSION.tar.gz
else
cp -r $outputFolder/ Radarr
zip -r Radarr.$BRANCH.$VERSION.windows.zip Radarr
rm -rf Radarr
cp -r $outputFolderMono/ Radarr
tar -zcvf Radarr.$BRANCH.$VERSION.linux.tar.gz Radarr
rm -rf Radarr
cp -r $outputFolderOsx/ Radarr
tar -zcvf Radarr.$BRANCH.$VERSION.osx.tar.gz Radarr
rm -rf Radarr
#TODO update for tar.gz
cd _output_osx_app/
zip -r ../Radarr.$BRANCH.$VERSION.osx-app.zip *
fi
# ftp -n ftp.leonardogalli.ch << END_SCRIPT
# passive
# quote USER $FTP_USER
# quote PASS $FTP_PASS
# mkdir builds
# cd builds
# mkdir $YEAR
# cd $YEAR
# mkdir $MONTH
# cd $MONTH
# mkdir $DAY
# cd $DAY
# binary
# put Radarr_Windows_$VERSION.zip
# put Radarr_Mono_$VERSION.zip
# put Radarr_OSX_$VERSION.zip
# quit
# END_SCRIPT

View file

@ -1,53 +0,0 @@
# Sonarr #
Sonarr is a PVR for Usenet and BitTorrent users. It can monitor multiple RSS feeds for new episodes of your favorite shows and will grab, sort and rename them. It can also be configured to automatically upgrade the quality of files already downloaded when a better quality format becomes available.
## Major Features Include: ##
* Support for major platforms: Windows, Linux, OSX, Raspberry Pi, etc.
* Automatically detects new episodes
* Can scan your existing library and download any missing episodes
* Can watch for better quality of the episodes you already have and do an automatic upgrade. *eg. from DVD to Blu-Ray*
* Automatic failed download handling will try another release if one fails
* Manual search so you can pick any release or to see why a release was not downloaded automatically
* Fully configurable episode renaming
* Full integration with SABNzbd and NzbGet
* Full integration with XBMC, Plex (notification, library update, metadata)
* Full support for specials and multi-episode releases
* And a beautiful UI
## Configuring Development Environment: ##
### Requirements ###
- Visual Studio 2015 [Free Community Edition](https://www.visualstudio.com/en-us/products/visual-studio-community-vs.aspx)
- [Git](http://git-scm.com/downloads)
- [NodeJS](http://nodejs.org/download/)
### Setup ###
- Make sure all the required software mentioned above are installed.
- Clone the repository into your development machine. [*info*](https://help.github.com/articles/working-with-repositories)
- Grab the submodules `git submodule init && git submodule update`
- install the required Node Packages `npm install`
- start gulp to monitor your dev environment for any changes that need post processing using `npm start` command.
*Please note gulp must be running at all times while you are working with Sonarr client source files.*
### Development ###
- Open `NzbDrone.sln` in Visual Studio
- Make sure `NzbDrone.Console` is set as the startup project
### License ###
* [GNU GPL v3](http://www.gnu.org/licenses/gpl.html)
Copyright 2010-2016
### Sponsors ###
- [JetBrains](http://www.jetbrains.com/) for providing us with free licenses to their great tools
- [ReSharper](http://www.jetbrains.com/resharper/)
- [WebStorm](http://www.jetbrains.com/webstorm/)
- [TeamCity](http://www.jetbrains.com/teamcity/)

View file

@ -1,35 +1,35 @@
; Script generated by the Inno Setup Script Wizard.
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!
#define AppName "Sonarr"
#define AppPublisher "Team Sonarr"
#define AppURL "https://sonarr.tv/"
#define ForumsURL "https://forums.sonarr.tv/"
#define AppExeName "NzbDrone.exe"
#define AppName "Radarr"
#define AppPublisher "Team Radarr"
#define AppURL "https://radarr.video/"
#define ForumsURL "https://github.com/Radarr/Radarr/issues"
#define AppExeName "Radarr.exe"
#define BuildNumber "2.0"
#define BuildNumber GetEnv('BUILD_NUMBER')
#define BranchName GetEnv('branch')
#define BuildVersion GetEnv('APPVEYOR_BUILD_VERSION')
#define BranchName GetEnv('APPVEYOR_REPO_BRANCH')
[Setup]
; NOTE: The value of AppId uniquely identifies this application.
; Do not use the same AppId value in installers for other applications.
; (To generate a new GUID, click Tools | Generate GUID inside the IDE.)
AppId={{56C1065D-3523-4025-B76D-6F73F67F7F71}
AppId={{56C1065D-3523-4025-B76D-6F73F67F7F82}
AppName={#AppName}
AppVersion=2.0
AppVersion=0.2
AppPublisher={#AppPublisher}
AppPublisherURL={#AppURL}
AppSupportURL={#ForumsURL}
AppUpdatesURL={#AppURL}
DefaultDirName={commonappdata}\NzbDrone\bin
DefaultDirName={commonappdata}\Radarr\bin
DisableDirPage=yes
DefaultGroupName={#AppName}
DisableProgramGroupPage=yes
OutputBaseFilename=NzbDrone.{#BranchName}.{#BuildNumber}
OutputBaseFilename=Radarr.{#BranchName}.{#BuildVersion}.installer
SolidCompression=yes
AppCopyright=Creative Commons 3.0 License
AllowUNCPath=False
UninstallDisplayIcon={app}\NzbDrone.exe
UninstallDisplayIcon={app}\Radarr.exe
DisableReadyPage=True
CompressionThreads=2
Compression=lzma2/normal
@ -44,7 +44,7 @@ Name: "english"; MessagesFile: "compiler:Default.isl"
Name: "windowsService"; Description: "Install as a Windows Service"
[Files]
Source: "..\_output\NzbDrone.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "..\_output\Radarr.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "..\_output\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
; NOTE: Don't use "Flags: ignoreversion" on any shared system files
@ -53,8 +53,8 @@ Name: "{group}\{#AppName}"; Filename: "{app}\{#AppExeName}"; Parameters: "/icon"
Name: "{commondesktop}\{#AppName}"; Filename: "{app}\{#AppExeName}"; Parameters: "/icon"
[Run]
Filename: "{app}\nzbdrone.console.exe"; Parameters: "/u"; Flags: waituntilterminated;
Filename: "{app}\nzbdrone.console.exe"; Parameters: "/i"; Flags: waituntilterminated; Tasks: windowsService
Filename: "{app}\radarr.console.exe"; Parameters: "/u"; Flags: waituntilterminated;
Filename: "{app}\radarr.console.exe"; Parameters: "/i"; Flags: waituntilterminated; Tasks: windowsService
[UninstallRun]
Filename: "{app}\nzbdrone.console.exe"; Parameters: "/u"; Flags: waituntilterminated skipifdoesntexist
Filename: "{app}\radarr.console.exe"; Parameters: "/u"; Flags: waituntilterminated skipifdoesntexist

BIN
sonarr.icns Normal file

Binary file not shown.

1
src/.idea/.idea.NzbDrone/.idea/.name generated Normal file
View file

@ -0,0 +1 @@
NzbDrone

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ContentModelUserStore">
<explicitIncludes />
<explicitExcludes />
</component>
</project>

View file

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/.idea.NzbDrone/riderModule.iml" filepath="$PROJECT_DIR$/.idea/.idea.NzbDrone/riderModule.iml" />
</modules>
</component>
</project>

View file

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="RIDER_MODULE" version="4">
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$/../../../Logo/1024.png" />
<content url="file://$MODULE_DIR$/../../../Logo/64.png" />
<content url="file://$MODULE_DIR$/../.." />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>

View file

@ -2,4 +2,4 @@
using System.Reflection;
[assembly: AssemblyVersion("10.0.0.*")]
[assembly: AssemblyVersion("0.1.0.*")]

View file

@ -52,11 +52,14 @@
</PropertyGroup>
<ItemGroup>
<Reference Include="NLog, Version=4.0.0.0, Culture=neutral, PublicKeyToken=5120e14c03d0593c, processorArchitecture=MSIL">
<HintPath>..\packages\NLog.4.3.11\lib\net40\NLog.dll</HintPath>
<Private>True</Private>
<HintPath>..\packages\NLog.4.5.0-rc06\lib\net40-client\NLog.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Configuration" />
<Reference Include="System.Core" />
<Reference Include="System.Runtime.Serialization" />
<Reference Include="System.ServiceModel" />
<Reference Include="System.Transactions" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />

View file

@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="NLog" version="4.3.11" targetFramework="net40" />
<package id="NLog" version="4.5.0-rc06" targetFramework="net40" />
</packages>

View file

@ -14,8 +14,10 @@ You should have received a copy of the GNU Lesser General Public
License along with this library. If not, see <http://www.gnu.org/licenses/>. */
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Common;
using System.Runtime.InteropServices.ComTypes;
using Marr.Data.Converters;
namespace Marr.Data.Parameters
@ -42,16 +44,26 @@ namespace Marr.Data.Parameters
Type valueType = value.GetType();
// Check for a registered IConverter
IConverter converter = MapRepository.Instance.GetConverter(valueType);
if (converter != null)
//If we have a list of ints, we ignore the converter since we want to do an in statement!
var list = value as List<int>;
if (list != null)
{
Parameter.Value = converter.ToDB(value);
Parameter.Value = $"{string.Join(",", list)}";
}
else
{
Parameter.Value = value;
IConverter converter = MapRepository.Instance.GetConverter(valueType);
if (converter != null)
{
Parameter.Value = converter.ToDB(value);
}
else
{
Parameter.Value = value;
}
}
//// Determine the correct DbType based on the passed in value type
//IDbTypeBuilder typeBuilder = MapRepository.Instance.DbTypeBuilder;
//Enum dbType = typeBuilder.GetDbType(valueType);

View file

@ -68,5 +68,13 @@ namespace Marr.Data.QGen.Dialects
{
get { return "({0} LIKE '%' + {1} + '%')"; }
}
public virtual string InFormat
{
get
{
return "({0} in ({1}))";
}
}
}
}

View file

@ -1,4 +1,5 @@
using System.Text;
using System.Linq;
using System.Text;
using Marr.Data.Mapping;
using Marr.Data.QGen.Dialects;
@ -131,6 +132,15 @@ namespace Marr.Data.QGen
sql.Append(OrderBy.ToString());
}
public void BuildGroupBy(StringBuilder sql)
{
var baseTable = this.Tables.First();
var primaryKeyColumn = baseTable.Columns.Single(c => c.ColumnInfo.IsPrimaryKey);
string token = this.Dialect.CreateToken(string.Concat(baseTable.Alias, ".", primaryKeyColumn.ColumnInfo.Name));
sql.AppendFormat(" GROUP BY {0}", token);
}
private string TranslateJoin(JoinType join)
{
switch (join)

View file

@ -16,6 +16,20 @@ namespace Marr.Data.QGen
StringBuilder sql = new StringBuilder();
BuildSelectCountClause(sql);
if (_innerQuery.IsJoin)
{
sql.Append(" FROM (");
_innerQuery.BuildSelectClause(sql);
_innerQuery.BuildFromClause(sql);
_innerQuery.BuildJoinClauses(sql);
_innerQuery.BuildWhereClause(sql);
_innerQuery.BuildGroupBy(sql);
sql.Append(") ");
return sql.ToString();
}
_innerQuery.BuildFromClause(sql);
_innerQuery.BuildJoinClauses(sql);
_innerQuery.BuildWhereClause(sql);

View file

@ -1,4 +1,5 @@
using System;
using System.Collections.Generic;
using System.Text;
using System.Linq.Expressions;
using System.Data.Common;
@ -93,6 +94,10 @@ namespace Marr.Data.QGen
Write_EndsWith(expression);
break;
case "In":
Write_In(expression);
break;
default:
string msg = string.Format("'{0}' expressions are not yet implemented in the where clause expression tree parser.", method);
throw new NotImplementedException(msg);
@ -140,31 +145,47 @@ namespace Marr.Data.QGen
return expression;
}
private object GetRightValue(Expression rightExpression)
private object GetRightValue(Expression expression)
{
object rightValue = null;
var right = rightExpression as ConstantExpression;
if (right == null) // Value is not directly passed in as a constant
var simpleConstExp = expression as ConstantExpression;
if (simpleConstExp == null) // Value is not directly passed in as a constant
{
var rightMemberExp = (rightExpression as MemberExpression);
var parentMemberExpression = rightMemberExp.Expression as MemberExpression;
if (parentMemberExpression != null) // Value is passed in as a property on a parent entity
MemberExpression memberExp = expression as MemberExpression;
ConstantExpression constExp = null;
// Value may be nested in multiple levels of objects/properties, so traverse the MemberExpressions
// until a ConstantExpression property value is found, and then unwind the stack to get the value.
var memberNames = new Stack<string>();
while (memberExp != null)
{
string entityName = (rightMemberExp.Expression as MemberExpression).Member.Name;
var container = ((rightMemberExp.Expression as MemberExpression).Expression as ConstantExpression).Value;
var entity = _repos.ReflectionStrategy.GetFieldValue(container, entityName);
rightValue = _repos.ReflectionStrategy.GetFieldValue(entity, rightMemberExp.Member.Name);
memberNames.Push(memberExp.Member.Name);
// Function calls are not supported - user needs to simplify their Where expression.
var methodExp = memberExp.Expression as MethodCallExpression;
if (methodExp != null)
{
var errMsg = string.Format("Function calls are not supported by the Where clause expression parser. Please evaluate your function call, '{0}', manually and then use the resulting paremeter value in your Where expression.", methodExp.Method.Name);
throw new NotSupportedException(errMsg);
}
constExp = memberExp.Expression as ConstantExpression;
memberExp = memberExp.Expression as MemberExpression;
}
else // Value is passed in as a variable
object entity = constExp.Value;
while (memberNames.Count > 0)
{
var parent = (rightMemberExp.Expression as ConstantExpression).Value;
rightValue = _repos.ReflectionStrategy.GetFieldValue(parent, rightMemberExp.Member.Name);
string entityName = memberNames.Pop();
entity = _repos.ReflectionStrategy.GetFieldValue(entity, entityName);
}
rightValue = entity;
}
else // Value is passed in directly as a constant
{
rightValue = right.Value;
rightValue = simpleConstExp.Value;
}
return rightValue;
@ -238,6 +259,17 @@ namespace Marr.Data.QGen
_sb.AppendFormat(_dialect.ContainsFormat, fqColumn, paramName);
}
private void Write_In(MethodCallExpression body)
{
object value = GetRightValue(body.Arguments[1]);
//string paramName = string.Concat(_paramPrefix, "P", _command.Parameters.Count.ToString());
//var parameter = new ParameterChainMethods(_command, paramName, value).Parameter;
MemberExpression memberExp = (body.Arguments[0] as MemberExpression);
string fqColumn = GetFullyQualifiedColumnName(memberExp.Member, memberExp.Expression.Type);
_sb.AppendFormat(_dialect.InFormat, fqColumn, string.Join(",", value as List<int>));
}
private void Write_StartsWith(MethodCallExpression body)
{
// Add parameter to Command.Parameters

View file

@ -96,7 +96,7 @@ namespace MonoTorrent.BEncoding
if (stream == null)
throw new ArgumentNullException("stream");
return Decode(new RawReader(stream));
return Decode(new RawReader(stream, false));
}

View file

@ -21,4 +21,3 @@ using System.Runtime.InteropServices;
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("260b2ff9-d3b7-4d8a-b720-a12c93d045e5")]
[assembly: AssemblyVersion("10.0.0.*")]

View file

@ -38,7 +38,7 @@ namespace NzbDrone.Api.Authentication
else if (_configFileProvider.AuthenticationMethod == AuthenticationType.Basic)
{
pipelines.EnableBasicAuthentication(new BasicAuthenticationConfiguration(_authenticationService, "Sonarr"));
pipelines.EnableBasicAuthentication(new BasicAuthenticationConfiguration(_authenticationService, "Radarr"));
}
pipelines.BeforeRequest.AddItemToEndOfPipeline((Func<NancyContext, Response>) RequiresAuthentication);
@ -64,10 +64,13 @@ namespace NzbDrone.Api.Authentication
new DefaultHmacProvider(new PassphraseKeyGenerator(_configService.HmacPassphrase, Encoding.ASCII.GetBytes(_configService.HmacSalt)))
);
FormsAuthentication.FormsAuthenticationCookieName = "_ncfaradarr"; //For those people that both have sonarr and radarr.
FormsAuthentication.Enable(pipelines, new FormsAuthenticationConfiguration
{
RedirectUrl = _configFileProvider.UrlBase + "/login",
UserMapper = _authenticationService,
Path = _configFileProvider.UrlBase,
CryptographyConfiguration = cryptographyConfiguration
});
}

View file

@ -1,8 +1,8 @@
using System;
using System;
using System.Collections.Generic;
using NzbDrone.Api.Movies;
using NzbDrone.Api.REST;
using NzbDrone.Core.Qualities;
using NzbDrone.Api.Series;
using NzbDrone.Core.Indexers;
namespace NzbDrone.Api.Blacklist
@ -11,14 +11,14 @@ namespace NzbDrone.Api.Blacklist
{
public int SeriesId { get; set; }
public List<int> EpisodeIds { get; set; }
public int MovieId { get; set; }
public string SourceTitle { get; set; }
public QualityModel Quality { get; set; }
public DateTime Date { get; set; }
public DownloadProtocol Protocol { get; set; }
public string Indexer { get; set; }
public string Message { get; set; }
public SeriesResource Series { get; set; }
public MovieResource Movie { get; set; }
}
public static class BlacklistResourceMapper
@ -30,17 +30,14 @@ namespace NzbDrone.Api.Blacklist
return new BlacklistResource
{
Id = model.Id,
SeriesId = model.SeriesId,
EpisodeIds = model.EpisodeIds,
MovieId = model.MovieId,
SourceTitle = model.SourceTitle,
Quality = model.Quality,
Date = model.Date,
Protocol = model.Protocol,
Indexer = model.Indexer,
Message = model.Message,
Series = model.Series.ToResource()
Movie = model.Movie.ToResource()
};
}
}

View file

@ -1,13 +1,14 @@
using Nancy;
using Nancy;
using System;
using System.Collections.Generic;
using System.Linq;
using Ical.Net;
using Ical.Net.DataTypes;
using Ical.Net.General;
using Ical.Net.Interfaces.Serialization;
using Ical.Net.Serialization;
using Ical.Net.Serialization.iCalendar.Factory;
using NzbDrone.Core.Tv;
using NzbDrone.Core.Movies;
using Nancy.Responses;
using NzbDrone.Core.Tags;
using NzbDrone.Common.Extensions;
@ -16,17 +17,18 @@ namespace NzbDrone.Api.Calendar
{
public class CalendarFeedModule : NzbDroneFeedModule
{
private readonly IEpisodeService _episodeService;
private readonly IMovieService _movieService;
private readonly ITagService _tagService;
public CalendarFeedModule(IEpisodeService episodeService, ITagService tagService)
public CalendarFeedModule(IMovieService movieService, ITagService tagService)
: base("calendar")
{
_episodeService = episodeService;
_movieService = movieService;
_tagService = tagService;
Get["/NzbDrone.ics"] = options => GetCalendarFeed();
Get["/Sonarr.ics"] = options => GetCalendarFeed();
Get["/Radarr.ics"] = options => GetCalendarFeed();
}
private Response GetCalendarFeed()
@ -36,7 +38,7 @@ namespace NzbDrone.Api.Calendar
var start = DateTime.Today.AddDays(-pastDays);
var end = DateTime.Today.AddDays(futureDays);
var unmonitored = false;
var premiersOnly = false;
//var premiersOnly = false;
var tags = new List<int>();
// TODO: Remove start/end parameters in v3, they don't work well for iCal
@ -45,7 +47,7 @@ namespace NzbDrone.Api.Calendar
var queryPastDays = Request.Query.PastDays;
var queryFutureDays = Request.Query.FutureDays;
var queryUnmonitored = Request.Query.Unmonitored;
var queryPremiersOnly = Request.Query.PremiersOnly;
// var queryPremiersOnly = Request.Query.PremiersOnly;
var queryTags = Request.Query.Tags;
if (queryStart.HasValue) start = DateTime.Parse(queryStart.Value);
@ -68,10 +70,10 @@ namespace NzbDrone.Api.Calendar
unmonitored = bool.Parse(queryUnmonitored.Value);
}
if (queryPremiersOnly.HasValue)
{
premiersOnly = bool.Parse(queryPremiersOnly.Value);
}
//if (queryPremiersOnly.HasValue)
//{
// premiersOnly = bool.Parse(queryPremiersOnly.Value);
//}
if (queryTags.HasValue)
{
@ -79,43 +81,26 @@ namespace NzbDrone.Api.Calendar
tags.AddRange(tagInput.Split(',').Select(_tagService.GetTag).Select(t => t.Id));
}
var episodes = _episodeService.EpisodesBetweenDates(start, end, unmonitored);
var movies = _movieService.GetMoviesBetweenDates(start, end, unmonitored);
var calendar = new Ical.Net.Calendar
{
ProductId = "-//sonarr.tv//Sonarr//EN"
ProductId = "-//radarr.video//Radarr//EN"
};
var calendarName = "Radarr Movies Calendar";
calendar.AddProperty(new CalendarProperty("NAME", calendarName));
calendar.AddProperty(new CalendarProperty("X-WR-CALNAME", calendarName));
foreach (var episode in episodes.OrderBy(v => v.AirDateUtc.Value))
foreach (var movie in movies.OrderBy(v => v.Added))
{
if (premiersOnly && (episode.SeasonNumber == 0 || episode.EpisodeNumber != 1))
if (tags.Any() && tags.None(movie.Tags.Contains))
{
continue;
}
if (tags.Any() && tags.None(episode.Series.Tags.Contains))
{
continue;
}
CreateEvent(calendar, movie, true);
CreateEvent(calendar, movie, false);
var occurrence = calendar.Create<Event>();
occurrence.Uid = "NzbDrone_episode_" + episode.Id;
occurrence.Status = episode.HasFile ? EventStatus.Confirmed : EventStatus.Tentative;
occurrence.Start = new CalDateTime(episode.AirDateUtc.Value) { HasTime = true };
occurrence.End = new CalDateTime(episode.AirDateUtc.Value.AddMinutes(episode.Series.Runtime)) { HasTime = true };
occurrence.Description = episode.Overview;
occurrence.Categories = new List<string>() { episode.Series.Network };
switch (episode.Series.SeriesType)
{
case SeriesTypes.Daily:
occurrence.Summary = $"{episode.Series.Title} - {episode.Title}";
break;
default:
occurrence.Summary =$"{episode.Series.Title} - {episode.SeasonNumber}x{episode.EpisodeNumber:00} - {episode.Title}";
break;
}
}
var serializer = (IStringSerializer) new SerializerFactory().Build(calendar.GetType(), new SerializationContext());
@ -123,5 +108,30 @@ namespace NzbDrone.Api.Calendar
return new TextResponse(icalendar, "text/calendar");
}
private void CreateEvent(Ical.Net.Calendar calendar, Movie movie, bool cinemasRelease)
{
var date = cinemasRelease ? movie.InCinemas : movie.PhysicalRelease;
if (!date.HasValue)
{
return;
}
var occurrence = calendar.Create<Event>();
occurrence.Uid = "NzbDrone_movie_" + movie.Id + (cinemasRelease ? "_cinemas" : "_physical");
occurrence.Status = movie.Status == MovieStatusType.Announced ? EventStatus.Tentative : EventStatus.Confirmed;
occurrence.Start = new CalDateTime(date.Value);
occurrence.End = occurrence.Start;
occurrence.IsAllDay = true;
occurrence.Description = movie.Overview;
occurrence.Categories = new List<string>() { movie.Studio };
var physicalText = movie.PhysicalReleaseNote.IsNotNullOrWhiteSpace()
? $"(Physical Release, {movie.PhysicalReleaseNote})"
: "(Physical Release)";
occurrence.Summary = $"{movie.Title} " + (cinemasRelease ? "(Theatrical Release)" : physicalText);
}
}
}

View file

@ -1,25 +1,34 @@
using System;
using System;
using System.Collections.Generic;
using System.Linq;
using NzbDrone.Api.Episodes;
using Nancy;
using NzbDrone.Api.Movies;
using NzbDrone.Core.Datastore.Events;
using NzbDrone.Core.MediaCover;
using NzbDrone.Core.MediaFiles;
using NzbDrone.Core.MediaFiles.Events;
using NzbDrone.Core.Messaging.Events;
using NzbDrone.Core.Movies;
using NzbDrone.Core.Movies.Events;
using NzbDrone.Core.Validation.Paths;
using NzbDrone.Core.Validation;
using NzbDrone.Core.DecisionEngine;
using NzbDrone.Core.Tv;
using NzbDrone.SignalR;
namespace NzbDrone.Api.Calendar
{
public class CalendarModule : EpisodeModuleWithSignalR
public class CalendarModule : MovieModule
{
public CalendarModule(IEpisodeService episodeService,
ISeriesService seriesService,
IQualityUpgradableSpecification qualityUpgradableSpecification,
IBroadcastSignalRMessage signalRBroadcaster)
: base(episodeService, seriesService, qualityUpgradableSpecification, signalRBroadcaster, "calendar")
public CalendarModule(IBroadcastSignalRMessage signalR,
IMovieService moviesService,
IMapCoversToLocal coverMapper)
: base(signalR, moviesService, coverMapper, "calendar")
{
GetResourceAll = GetCalendar;
}
private List<EpisodeResource> GetCalendar()
private List<MovieResource> GetCalendar()
{
var start = DateTime.Today;
var end = DateTime.Today.AddDays(2);
@ -33,9 +42,9 @@ namespace NzbDrone.Api.Calendar
if (queryEnd.HasValue) end = DateTime.Parse(queryEnd.Value);
if (queryIncludeUnmonitored.HasValue) includeUnmonitored = Convert.ToBoolean(queryIncludeUnmonitored.Value);
var resources = MapToResource(_episodeService.EpisodesBetweenDates(start, end, includeUnmonitored), true, true);
var resources = _moviesService.GetMoviesBetweenDates(start, end, includeUnmonitored).Select(MapToResource);
return resources.OrderBy(e => e.AirDateUtc).ToList();
return resources.OrderBy(e => e.InCinemas).ToList();
}
}
}

View file

@ -1,11 +1,14 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using Newtonsoft.Json.Linq;
using NzbDrone.Common.EnsureThat;
using NzbDrone.Common.Extensions;
using NzbDrone.Common.Reflection;
using NzbDrone.Core.Annotations;
using NzbDrone.Core.Qualities;
using NzbDrone.Core.Profiles;
namespace NzbDrone.Api.ClientSchema
{
@ -38,12 +41,22 @@ namespace NzbDrone.Api.ClientSchema
};
var value = propertyInfo.GetValue(model, null);
if (propertyInfo.PropertyType.HasAttribute<FlagsAttribute>())
{
int intVal = (int)value;
value = Enum.GetValues(propertyInfo.PropertyType)
.Cast<int>()
.Where(f=> (f & intVal) == f)
.ToList();
}
if (value != null)
{
field.Value = value;
}
if (fieldAttribute.Type == FieldType.Select)
if (fieldAttribute.Type == FieldType.Select || fieldAttribute.Type == FieldType.Tag)
{
field.SelectOptions = GetSelectOptions(fieldAttribute.SelectOptions);
}
@ -73,14 +86,14 @@ namespace NzbDrone.Api.ClientSchema
if (propertyInfo.PropertyType == typeof(int))
{
var value = Convert.ToInt32(field.Value);
propertyInfo.SetValue(target, value, null);
var value = field.Value.ToString().ParseInt32();
propertyInfo.SetValue(target, value ?? 0, null);
}
else if (propertyInfo.PropertyType == typeof(long))
{
var value = Convert.ToInt64(field.Value);
propertyInfo.SetValue(target, value, null);
var value = field.Value.ToString().ParseInt64();
propertyInfo.SetValue(target, value ?? 0, null);
}
else if (propertyInfo.PropertyType == typeof(int?))
@ -129,6 +142,12 @@ namespace NzbDrone.Api.ClientSchema
propertyInfo.SetValue(target, value, null);
}
else if (propertyInfo.PropertyType.HasAttribute<FlagsAttribute>())
{
int value = field.Value.ToString().Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries).Select(s => Convert.ToInt32(s)).Sum();
propertyInfo.SetValue(target, value, null);
}
else
{
propertyInfo.SetValue(target, field.Value, null);
@ -147,10 +166,22 @@ namespace NzbDrone.Api.ClientSchema
private static List<SelectOption> GetSelectOptions(Type selectOptions)
{
if (selectOptions == null || selectOptions == typeof(Profile))
{
return new List<SelectOption>();
}
if (selectOptions == typeof(Quality))
{
var qOptions = from Quality q in selectOptions.GetProperties(BindingFlags.Static | BindingFlags.Public)
select new SelectOption {Name = q.Name, Value = q.Id};
return qOptions.OrderBy(o => o.Value).ToList();
}
var options = from Enum e in Enum.GetValues(selectOptions)
select new SelectOption { Value = Convert.ToInt32(e), Name = e.ToString() };
return options.OrderBy(o => o.Value).ToList();
return options.OrderBy(o => o.Name).ToList();
}
}
}

View file

@ -1,6 +1,7 @@
using System;
using System.Collections.Generic;
using System.Linq;
using NLog;
using NzbDrone.Api.Extensions;
using NzbDrone.Api.Validation;
using NzbDrone.Common;
@ -17,14 +18,17 @@ namespace NzbDrone.Api.Commands
{
private readonly IManageCommandQueue _commandQueueManager;
private readonly IServiceFactory _serviceFactory;
private readonly Logger _logger;
public CommandModule(IManageCommandQueue commandQueueManager,
IBroadcastSignalRMessage signalRBroadcaster,
IServiceFactory serviceFactory)
IServiceFactory serviceFactory,
Logger logger)
: base(signalRBroadcaster)
{
_commandQueueManager = commandQueueManager;
_serviceFactory = serviceFactory;
_logger = logger;
GetResourceById = GetCommand;
CreateResource = StartCommand;
@ -41,7 +45,13 @@ namespace NzbDrone.Api.Commands
private int StartCommand(CommandResource commandResource)
{
var commandType = _serviceFactory.GetImplementations(typeof(Command))
.Single(c => c.Name.Replace("Command", "").Equals(commandResource.Name, StringComparison.InvariantCultureIgnoreCase));
.SingleOrDefault(c => c.Name.Replace("Command", "").Equals(commandResource.Name, StringComparison.InvariantCultureIgnoreCase));
if (commandType == null)
{
_logger.Error("Found no matching command for {0}", commandResource.Name);
return 0;
}
dynamic command = Request.Body.FromJson(commandType);
command.Trigger = CommandTrigger.Manual;

View file

@ -12,13 +12,13 @@ namespace NzbDrone.Api.Config
MappedNetworkDriveValidator mappedNetworkDriveValidator)
: base(configService)
{
SharedValidator.RuleFor(c => c.DownloadedEpisodesFolder)
SharedValidator.RuleFor(c => c.DownloadedMoviesFolder)
.Cascade(CascadeMode.StopOnFirstFailure)
.IsValidPath()
.SetValidator(rootFolderValidator)
.SetValidator(mappedNetworkDriveValidator)
.SetValidator(pathExistsValidator)
.When(c => !string.IsNullOrWhiteSpace(c.DownloadedEpisodesFolder));
.When(c => !string.IsNullOrWhiteSpace(c.DownloadedMoviesFolder));
}
protected override DownloadClientConfigResource ToResource(IConfigService model)

View file

@ -5,9 +5,9 @@ namespace NzbDrone.Api.Config
{
public class DownloadClientConfigResource : RestResource
{
public string DownloadedEpisodesFolder { get; set; }
public string DownloadedMoviesFolder { get; set; }
public string DownloadClientWorkingFolders { get; set; }
public int DownloadedEpisodesScanInterval { get; set; }
public int DownloadedMoviesScanInterval { get; set; }
public bool EnableCompletedDownloadHandling { get; set; }
public bool RemoveCompletedDownloads { get; set; }
@ -22,9 +22,9 @@ namespace NzbDrone.Api.Config
{
return new DownloadClientConfigResource
{
DownloadedEpisodesFolder = model.DownloadedEpisodesFolder,
DownloadedMoviesFolder = model.DownloadedMoviesFolder,
DownloadClientWorkingFolders = model.DownloadClientWorkingFolders,
DownloadedEpisodesScanInterval = model.DownloadedEpisodesScanInterval,
DownloadedMoviesScanInterval = model.DownloadedMoviesScanInterval,
EnableCompletedDownloadHandling = model.EnableCompletedDownloadHandling,
RemoveCompletedDownloads = model.RemoveCompletedDownloads,

View file

@ -1,4 +1,4 @@
using FluentValidation;
using FluentValidation;
using NzbDrone.Api.Validation;
using NzbDrone.Core.Configuration;
@ -13,6 +13,9 @@ namespace NzbDrone.Api.Config
SharedValidator.RuleFor(c => c.MinimumAge)
.GreaterThanOrEqualTo(0);
SharedValidator.RuleFor(c => c.MaximumSize)
.GreaterThanOrEqualTo(0);
SharedValidator.RuleFor(c => c.Retention)
.GreaterThanOrEqualTo(0);

View file

@ -1,13 +1,20 @@
using NzbDrone.Api.REST;
using NzbDrone.Api.REST;
using NzbDrone.Core.Configuration;
using NzbDrone.Core.Parser;
namespace NzbDrone.Api.Config
{
public class IndexerConfigResource : RestResource
{
public int MinimumAge { get; set; }
public int MaximumSize { get; set; }
public int Retention { get; set; }
public int RssSyncInterval { get; set; }
public bool PreferIndexerFlags { get; set; }
public int AvailabilityDelay { get; set; }
public bool AllowHardcodedSubs { get; set; }
public string WhitelistedHardcodedSubs { get; set; }
public ParsingLeniencyType ParsingLeniency { get; set; }
}
public static class IndexerConfigResourceMapper
@ -17,8 +24,14 @@ namespace NzbDrone.Api.Config
return new IndexerConfigResource
{
MinimumAge = model.MinimumAge,
MaximumSize = model.MaximumSize,
Retention = model.Retention,
RssSyncInterval = model.RssSyncInterval,
PreferIndexerFlags = model.PreferIndexerFlags,
AvailabilityDelay = model.AvailabilityDelay,
AllowHardcodedSubs = model.AllowHardcodedSubs,
WhitelistedHardcodedSubs = model.WhitelistedHardcodedSubs,
ParsingLeniency = model.ParsingLeniency,
};
}
}

View file

@ -1,4 +1,4 @@
using NzbDrone.Api.REST;
using NzbDrone.Api.REST;
using NzbDrone.Core.Configuration;
using NzbDrone.Core.MediaFiles;
@ -11,6 +11,8 @@ namespace NzbDrone.Api.Config
public bool AutoDownloadPropers { get; set; }
public bool CreateEmptySeriesFolders { get; set; }
public FileDateType FileDate { get; set; }
public bool AutoRenameFolders { get; set; }
public bool PathsDefaultStatic { get; set; }
public bool SetPermissionsLinux { get; set; }
public string FileChmod { get; set; }
@ -20,6 +22,7 @@ namespace NzbDrone.Api.Config
public bool SkipFreeSpaceCheckWhenImporting { get; set; }
public bool CopyUsingHardlinks { get; set; }
public bool ImportExtraFiles { get; set; }
public string ExtraFileExtensions { get; set; }
public bool EnableMediaInfo { get; set; }
}
@ -35,6 +38,8 @@ namespace NzbDrone.Api.Config
AutoDownloadPropers = model.AutoDownloadPropers,
CreateEmptySeriesFolders = model.CreateEmptySeriesFolders,
FileDate = model.FileDate,
AutoRenameFolders = model.AutoRenameFolders,
PathsDefaultStatic = model.PathsDefaultStatic,
SetPermissionsLinux = model.SetPermissionsLinux,
FileChmod = model.FileChmod,
@ -44,6 +49,7 @@ namespace NzbDrone.Api.Config
SkipFreeSpaceCheckWhenImporting = model.SkipFreeSpaceCheckWhenImporting,
CopyUsingHardlinks = model.CopyUsingHardlinks,
ImportExtraFiles = model.ImportExtraFiles,
ExtraFileExtensions = model.ExtraFileExtensions,
EnableMediaInfo = model.EnableMediaInfo
};

View file

@ -1,4 +1,4 @@
using System.Collections.Generic;
using System.Collections.Generic;
using System.Linq;
using FluentValidation;
using FluentValidation.Results;
@ -34,11 +34,8 @@ namespace NzbDrone.Api.Config
Get["/samples"] = x => GetExamples(this.Bind<NamingConfigResource>());
SharedValidator.RuleFor(c => c.MultiEpisodeStyle).InclusiveBetween(0, 5);
SharedValidator.RuleFor(c => c.StandardEpisodeFormat).ValidEpisodeFormat();
SharedValidator.RuleFor(c => c.DailyEpisodeFormat).ValidDailyEpisodeFormat();
SharedValidator.RuleFor(c => c.AnimeEpisodeFormat).ValidAnimeEpisodeFormat();
SharedValidator.RuleFor(c => c.SeriesFolderFormat).ValidSeriesFolderFormat();
SharedValidator.RuleFor(c => c.SeasonFolderFormat).ValidSeasonFolderFormat();
SharedValidator.RuleFor(c => c.StandardMovieFormat).ValidMovieFormat();
SharedValidator.RuleFor(c => c.MovieFolderFormat).ValidMovieFolderFormat();
}
private void UpdateNamingConfig(NamingConfigResource resource)
@ -54,7 +51,7 @@ namespace NzbDrone.Api.Config
var nameSpec = _namingConfigService.GetConfig();
var resource = nameSpec.ToResource();
if (resource.StandardEpisodeFormat.IsNotNullOrWhiteSpace())
if (resource.StandardMovieFormat.IsNotNullOrWhiteSpace())
{
var basicConfig = _filenameBuilder.GetBasicNamingConfig(nameSpec);
basicConfig.AddToResource(resource);
@ -73,64 +70,28 @@ namespace NzbDrone.Api.Config
var nameSpec = config.ToModel();
var sampleResource = new NamingSampleResource();
var singleEpisodeSampleResult = _filenameSampleService.GetStandardSample(nameSpec);
var multiEpisodeSampleResult = _filenameSampleService.GetMultiEpisodeSample(nameSpec);
var dailyEpisodeSampleResult = _filenameSampleService.GetDailySample(nameSpec);
var animeEpisodeSampleResult = _filenameSampleService.GetAnimeSample(nameSpec);
var animeMultiEpisodeSampleResult = _filenameSampleService.GetAnimeMultiEpisodeSample(nameSpec);
var movieSampleResult = _filenameSampleService.GetMovieSample(nameSpec);
sampleResource.SingleEpisodeExample = _filenameValidationService.ValidateStandardFilename(singleEpisodeSampleResult) != null
? "Invalid format"
: singleEpisodeSampleResult.FileName;
sampleResource.MovieExample = nameSpec.StandardMovieFormat.IsNullOrWhiteSpace()
? "Invalid Format"
: movieSampleResult.FileName;
sampleResource.MultiEpisodeExample = _filenameValidationService.ValidateStandardFilename(multiEpisodeSampleResult) != null
? "Invalid format"
: multiEpisodeSampleResult.FileName;
sampleResource.DailyEpisodeExample = _filenameValidationService.ValidateDailyFilename(dailyEpisodeSampleResult) != null
? "Invalid format"
: dailyEpisodeSampleResult.FileName;
sampleResource.AnimeEpisodeExample = _filenameValidationService.ValidateAnimeFilename(animeEpisodeSampleResult) != null
? "Invalid format"
: animeEpisodeSampleResult.FileName;
sampleResource.AnimeMultiEpisodeExample = _filenameValidationService.ValidateAnimeFilename(animeMultiEpisodeSampleResult) != null
? "Invalid format"
: animeMultiEpisodeSampleResult.FileName;
sampleResource.SeriesFolderExample = nameSpec.SeriesFolderFormat.IsNullOrWhiteSpace()
sampleResource.MovieFolderExample = nameSpec.MovieFolderFormat.IsNullOrWhiteSpace()
? "Invalid format"
: _filenameSampleService.GetSeriesFolderSample(nameSpec);
sampleResource.SeasonFolderExample = nameSpec.SeasonFolderFormat.IsNullOrWhiteSpace()
? "Invalid format"
: _filenameSampleService.GetSeasonFolderSample(nameSpec);
: _filenameSampleService.GetMovieFolderSample(nameSpec);
return sampleResource.AsResponse();
}
private void ValidateFormatResult(NamingConfig nameSpec)
{
var singleEpisodeSampleResult = _filenameSampleService.GetStandardSample(nameSpec);
var multiEpisodeSampleResult = _filenameSampleService.GetMultiEpisodeSample(nameSpec);
var dailyEpisodeSampleResult = _filenameSampleService.GetDailySample(nameSpec);
var animeEpisodeSampleResult = _filenameSampleService.GetAnimeSample(nameSpec);
var animeMultiEpisodeSampleResult = _filenameSampleService.GetAnimeMultiEpisodeSample(nameSpec);
var movieSampleResult = _filenameSampleService.GetMovieSample(nameSpec);
var singleEpisodeValidationResult = _filenameValidationService.ValidateStandardFilename(singleEpisodeSampleResult);
var multiEpisodeValidationResult = _filenameValidationService.ValidateStandardFilename(multiEpisodeSampleResult);
var dailyEpisodeValidationResult = _filenameValidationService.ValidateDailyFilename(dailyEpisodeSampleResult);
var animeEpisodeValidationResult = _filenameValidationService.ValidateAnimeFilename(animeEpisodeSampleResult);
var animeMultiEpisodeValidationResult = _filenameValidationService.ValidateAnimeFilename(animeMultiEpisodeSampleResult);
//var standardMovieValidationResult = _filenameValidationService.ValidateMovieFilename(movieSampleResult); For now, let's hope the user is not stupid enough :/
var validationFailures = new List<ValidationFailure>();
validationFailures.AddIfNotNull(singleEpisodeValidationResult);
validationFailures.AddIfNotNull(multiEpisodeValidationResult);
validationFailures.AddIfNotNull(dailyEpisodeValidationResult);
validationFailures.AddIfNotNull(animeEpisodeValidationResult);
validationFailures.AddIfNotNull(animeMultiEpisodeValidationResult);
//validationFailures.AddIfNotNull(standardMovieValidationResult);
if (validationFailures.Any())
{

View file

@ -1,4 +1,4 @@
using NzbDrone.Api.REST;
using NzbDrone.Api.REST;
using NzbDrone.Core.Organizer;
namespace NzbDrone.Api.Config
@ -7,12 +7,10 @@ namespace NzbDrone.Api.Config
{
public bool RenameEpisodes { get; set; }
public bool ReplaceIllegalCharacters { get; set; }
public ColonReplacementFormat ColonReplacementFormat { get; set; }
public string StandardMovieFormat { get; set; }
public string MovieFolderFormat { get; set; }
public int MultiEpisodeStyle { get; set; }
public string StandardEpisodeFormat { get; set; }
public string DailyEpisodeFormat { get; set; }
public string AnimeEpisodeFormat { get; set; }
public string SeriesFolderFormat { get; set; }
public string SeasonFolderFormat { get; set; }
public bool IncludeSeriesTitle { get; set; }
public bool IncludeEpisodeTitle { get; set; }
public bool IncludeQuality { get; set; }
@ -31,12 +29,10 @@ namespace NzbDrone.Api.Config
RenameEpisodes = model.RenameEpisodes,
ReplaceIllegalCharacters = model.ReplaceIllegalCharacters,
ColonReplacementFormat = model.ColonReplacementFormat,
MultiEpisodeStyle = model.MultiEpisodeStyle,
StandardEpisodeFormat = model.StandardEpisodeFormat,
DailyEpisodeFormat = model.DailyEpisodeFormat,
AnimeEpisodeFormat = model.AnimeEpisodeFormat,
SeriesFolderFormat = model.SeriesFolderFormat,
SeasonFolderFormat = model.SeasonFolderFormat
StandardMovieFormat = model.StandardMovieFormat,
MovieFolderFormat = model.MovieFolderFormat
//IncludeSeriesTitle
//IncludeEpisodeTitle
//IncludeQuality
@ -64,12 +60,9 @@ namespace NzbDrone.Api.Config
RenameEpisodes = resource.RenameEpisodes,
ReplaceIllegalCharacters = resource.ReplaceIllegalCharacters,
MultiEpisodeStyle = resource.MultiEpisodeStyle,
StandardEpisodeFormat = resource.StandardEpisodeFormat,
DailyEpisodeFormat = resource.DailyEpisodeFormat,
AnimeEpisodeFormat = resource.AnimeEpisodeFormat,
SeriesFolderFormat = resource.SeriesFolderFormat,
SeasonFolderFormat = resource.SeasonFolderFormat
ColonReplacementFormat = resource.ColonReplacementFormat,
StandardMovieFormat = resource.StandardMovieFormat,
MovieFolderFormat = resource.MovieFolderFormat
};
}
}

View file

@ -9,5 +9,8 @@
public string AnimeMultiEpisodeExample { get; set; }
public string SeriesFolderExample { get; set; }
public string SeasonFolderExample { get; set; }
public string MovieExample { get; set; }
public string MovieFolderExample { get; set; }
}
}

View file

@ -0,0 +1,22 @@
using FluentValidation;
using NzbDrone.Api.Validation;
using NzbDrone.Core.Configuration;
namespace NzbDrone.Api.Config
{
public class NetImportConfigModule : NzbDroneConfigModule<NetImportConfigResource>
{
public NetImportConfigModule(IConfigService configService)
: base(configService)
{
SharedValidator.RuleFor(c => c.NetImportSyncInterval)
.IsValidNetImportSyncInterval();
}
protected override NetImportConfigResource ToResource(IConfigService model)
{
return NetImportConfigResourceMapper.ToResource(model);
}
}
}

View file

@ -0,0 +1,31 @@
using NzbDrone.Api.REST;
using NzbDrone.Core.Configuration;
namespace NzbDrone.Api.Config
{
public class NetImportConfigResource : RestResource
{
public int NetImportSyncInterval { get; set; }
public string ListSyncLevel { get; set; }
public string ImportExclusions { get; set; }
public string TraktAuthToken { get; set; }
public string TraktRefreshToken { get; set; }
public int TraktTokenExpiry { get; set; }
}
public static class NetImportConfigResourceMapper
{
public static NetImportConfigResource ToResource(IConfigService model)
{
return new NetImportConfigResource
{
NetImportSyncInterval = model.NetImportSyncInterval,
ListSyncLevel = model.ListSyncLevel,
ImportExclusions = model.ImportExclusions,
TraktAuthToken = model.TraktAuthToken,
TraktRefreshToken = model.TraktRefreshToken,
TraktTokenExpiry = model.TraktTokenExpiry,
};
}
}
}

View file

@ -1,88 +0,0 @@
using System.Collections.Generic;
using System.IO;
using NLog;
using NzbDrone.Api.REST;
using NzbDrone.Core.Datastore.Events;
using NzbDrone.Core.MediaFiles;
using NzbDrone.Core.MediaFiles.Events;
using NzbDrone.Core.Messaging.Events;
using NzbDrone.Core.Tv;
using NzbDrone.Core.DecisionEngine;
using NzbDrone.SignalR;
namespace NzbDrone.Api.EpisodeFiles
{
public class EpisodeFileModule : NzbDroneRestModuleWithSignalR<EpisodeFileResource, EpisodeFile>,
IHandle<EpisodeFileAddedEvent>
{
private readonly IMediaFileService _mediaFileService;
private readonly IRecycleBinProvider _recycleBinProvider;
private readonly ISeriesService _seriesService;
private readonly IQualityUpgradableSpecification _qualityUpgradableSpecification;
private readonly Logger _logger;
public EpisodeFileModule(IBroadcastSignalRMessage signalRBroadcaster,
IMediaFileService mediaFileService,
IRecycleBinProvider recycleBinProvider,
ISeriesService seriesService,
IQualityUpgradableSpecification qualityUpgradableSpecification,
Logger logger)
: base(signalRBroadcaster)
{
_mediaFileService = mediaFileService;
_recycleBinProvider = recycleBinProvider;
_seriesService = seriesService;
_qualityUpgradableSpecification = qualityUpgradableSpecification;
_logger = logger;
GetResourceById = GetEpisodeFile;
GetResourceAll = GetEpisodeFiles;
UpdateResource = SetQuality;
DeleteResource = DeleteEpisodeFile;
}
private EpisodeFileResource GetEpisodeFile(int id)
{
var episodeFile = _mediaFileService.Get(id);
var series = _seriesService.GetSeries(episodeFile.SeriesId);
return episodeFile.ToResource(series, _qualityUpgradableSpecification);
}
private List<EpisodeFileResource> GetEpisodeFiles()
{
if (!Request.Query.SeriesId.HasValue)
{
throw new BadRequestException("seriesId is missing");
}
var seriesId = (int)Request.Query.SeriesId;
var series = _seriesService.GetSeries(seriesId);
return _mediaFileService.GetFilesBySeries(seriesId).ConvertAll(f => f.ToResource(series, _qualityUpgradableSpecification));
}
private void SetQuality(EpisodeFileResource episodeFileResource)
{
var episodeFile = _mediaFileService.Get(episodeFileResource.Id);
episodeFile.Quality = episodeFileResource.Quality;
_mediaFileService.Update(episodeFile);
}
private void DeleteEpisodeFile(int id)
{
var episodeFile = _mediaFileService.Get(id);
var series = _seriesService.GetSeries(episodeFile.SeriesId);
var fullPath = Path.Combine(series.Path, episodeFile.RelativePath);
_logger.Info("Deleting episode file: {0}", fullPath);
_recycleBinProvider.DeleteFile(fullPath);
_mediaFileService.Delete(episodeFile, DeleteMediaFileReason.Manual);
}
public void Handle(EpisodeFileAddedEvent message)
{
BroadcastResourceChange(ModelAction.Updated, message.EpisodeFile.Id);
}
}
}

View file

@ -1,64 +0,0 @@
using System;
using System.IO;
using NzbDrone.Api.REST;
using NzbDrone.Core.Qualities;
namespace NzbDrone.Api.EpisodeFiles
{
public class EpisodeFileResource : RestResource
{
public int SeriesId { get; set; }
public int SeasonNumber { get; set; }
public string RelativePath { get; set; }
public string Path { get; set; }
public long Size { get; set; }
public DateTime DateAdded { get; set; }
public string SceneName { get; set; }
public QualityModel Quality { get; set; }
public bool QualityCutoffNotMet { get; set; }
}
public static class EpisodeFileResourceMapper
{
private static EpisodeFileResource ToResource(this Core.MediaFiles.EpisodeFile model)
{
if (model == null) return null;
return new EpisodeFileResource
{
Id = model.Id,
SeriesId = model.SeriesId,
SeasonNumber = model.SeasonNumber,
RelativePath = model.RelativePath,
//Path
Size = model.Size,
DateAdded = model.DateAdded,
SceneName = model.SceneName,
Quality = model.Quality,
//QualityCutoffNotMet
};
}
public static EpisodeFileResource ToResource(this Core.MediaFiles.EpisodeFile model, Core.Tv.Series series, Core.DecisionEngine.IQualityUpgradableSpecification qualityUpgradableSpecification)
{
if (model == null) return null;
return new EpisodeFileResource
{
Id = model.Id,
SeriesId = model.SeriesId,
SeasonNumber = model.SeasonNumber,
RelativePath = model.RelativePath,
Path = Path.Combine(series.Path, model.RelativePath),
Size = model.Size,
DateAdded = model.DateAdded,
SceneName = model.SceneName,
Quality = model.Quality,
QualityCutoffNotMet = qualityUpgradableSpecification.CutoffNotMet(series.Profile.Value, model.Quality)
};
}
}
}

View file

@ -1,41 +0,0 @@
using System.Collections.Generic;
using NzbDrone.Api.REST;
using NzbDrone.Core.Tv;
using NzbDrone.Core.DecisionEngine;
using NzbDrone.SignalR;
using Nancy;
namespace NzbDrone.Api.Episodes
{
public class EpisodeModule : EpisodeModuleWithSignalR
{
public EpisodeModule(ISeriesService seriesService,
IEpisodeService episodeService,
IQualityUpgradableSpecification qualityUpgradableSpecification,
IBroadcastSignalRMessage signalRBroadcaster)
: base(episodeService, seriesService, qualityUpgradableSpecification, signalRBroadcaster)
{
GetResourceAll = GetEpisodes;
UpdateResource = SetMonitored;
}
private List<EpisodeResource> GetEpisodes()
{
if (!Request.Query.SeriesId.HasValue)
{
throw new BadRequestException("seriesId is missing");
}
var seriesId = (int)Request.Query.SeriesId;
var resources = MapToResource(_episodeService.GetEpisodeBySeries(seriesId), false, true);
return resources;
}
private void SetMonitored(EpisodeResource episodeResource)
{
_episodeService.SetEpisodeMonitored(episodeResource.Id, episodeResource.Monitored);
}
}
}

View file

@ -1,126 +0,0 @@
using System.Collections.Generic;
using NzbDrone.Common.Extensions;
using NzbDrone.Api.EpisodeFiles;
using NzbDrone.Api.Series;
using NzbDrone.Core.Datastore.Events;
using NzbDrone.Core.DecisionEngine;
using NzbDrone.Core.Download;
using NzbDrone.Core.MediaFiles.Events;
using NzbDrone.Core.Messaging.Events;
using NzbDrone.Core.Tv;
using NzbDrone.SignalR;
namespace NzbDrone.Api.Episodes
{
public abstract class EpisodeModuleWithSignalR : NzbDroneRestModuleWithSignalR<EpisodeResource, Episode>,
IHandle<EpisodeGrabbedEvent>,
IHandle<EpisodeDownloadedEvent>
{
protected readonly IEpisodeService _episodeService;
protected readonly ISeriesService _seriesService;
protected readonly IQualityUpgradableSpecification _qualityUpgradableSpecification;
protected EpisodeModuleWithSignalR(IEpisodeService episodeService,
ISeriesService seriesService,
IQualityUpgradableSpecification qualityUpgradableSpecification,
IBroadcastSignalRMessage signalRBroadcaster)
: base(signalRBroadcaster)
{
_episodeService = episodeService;
_seriesService = seriesService;
_qualityUpgradableSpecification = qualityUpgradableSpecification;
GetResourceById = GetEpisode;
}
protected EpisodeModuleWithSignalR(IEpisodeService episodeService,
ISeriesService seriesService,
IQualityUpgradableSpecification qualityUpgradableSpecification,
IBroadcastSignalRMessage signalRBroadcaster,
string resource)
: base(signalRBroadcaster, resource)
{
_episodeService = episodeService;
_seriesService = seriesService;
_qualityUpgradableSpecification = qualityUpgradableSpecification;
GetResourceById = GetEpisode;
}
protected EpisodeResource GetEpisode(int id)
{
var episode = _episodeService.GetEpisode(id);
var resource = MapToResource(episode, true, true);
return resource;
}
protected EpisodeResource MapToResource(Episode episode, bool includeSeries, bool includeEpisodeFile)
{
var resource = episode.ToResource();
if (includeSeries || includeEpisodeFile)
{
var series = episode.Series ?? _seriesService.GetSeries(episode.SeriesId);
if (includeSeries)
{
resource.Series = series.ToResource();
}
if (includeEpisodeFile && episode.EpisodeFileId != 0)
{
resource.EpisodeFile = episode.EpisodeFile.Value.ToResource(series, _qualityUpgradableSpecification);
}
}
return resource;
}
protected List<EpisodeResource> MapToResource(List<Episode> episodes, bool includeSeries, bool includeEpisodeFile)
{
var result = episodes.ToResource();
if (includeSeries || includeEpisodeFile)
{
var seriesDict = new Dictionary<int, Core.Tv.Series>();
for (var i = 0; i < episodes.Count; i++)
{
var episode = episodes[i];
var resource = result[i];
var series = episode.Series ?? seriesDict.GetValueOrDefault(episodes[i].SeriesId) ?? _seriesService.GetSeries(episodes[i].SeriesId);
seriesDict[series.Id] = series;
if (includeSeries)
{
resource.Series = series.ToResource();
}
if (includeEpisodeFile && episodes[i].EpisodeFileId != 0)
{
resource.EpisodeFile = episodes[i].EpisodeFile.Value.ToResource(series, _qualityUpgradableSpecification);
}
}
}
return result;
}
public void Handle(EpisodeGrabbedEvent message)
{
foreach (var episode in message.Episode.Episodes)
{
var resource = episode.ToResource();
resource.Grabbed = true;
BroadcastResourceChange(ModelAction.Updated, resource);
}
}
public void Handle(EpisodeDownloadedEvent message)
{
foreach (var episode in message.Episode.Episodes)
{
BroadcastResourceChange(ModelAction.Updated, episode.Id);
}
}
}
}

View file

@ -1,78 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using Newtonsoft.Json;
using NzbDrone.Api.EpisodeFiles;
using NzbDrone.Api.REST;
using NzbDrone.Api.Series;
using NzbDrone.Core.Tv;
namespace NzbDrone.Api.Episodes
{
public class EpisodeResource : RestResource
{
public int SeriesId { get; set; }
public int EpisodeFileId { get; set; }
public int SeasonNumber { get; set; }
public int EpisodeNumber { get; set; }
public string Title { get; set; }
public string AirDate { get; set; }
public DateTime? AirDateUtc { get; set; }
public string Overview { get; set; }
public EpisodeFileResource EpisodeFile { get; set; }
public bool HasFile { get; set; }
public bool Monitored { get; set; }
public int? AbsoluteEpisodeNumber { get; set; }
public int? SceneAbsoluteEpisodeNumber { get; set; }
public int? SceneEpisodeNumber { get; set; }
public int? SceneSeasonNumber { get; set; }
public bool UnverifiedSceneNumbering { get; set; }
public string SeriesTitle { get; set; }
public SeriesResource Series { get; set; }
//Hiding this so people don't think its usable (only used to set the initial state)
[JsonProperty(DefaultValueHandling = DefaultValueHandling.Ignore)]
public bool Grabbed { get; set; }
}
public static class EpisodeResourceMapper
{
public static EpisodeResource ToResource(this Episode model)
{
if (model == null) return null;
return new EpisodeResource
{
Id = model.Id,
SeriesId = model.SeriesId,
EpisodeFileId = model.EpisodeFileId,
SeasonNumber = model.SeasonNumber,
EpisodeNumber = model.EpisodeNumber,
Title = model.Title,
AirDate = model.AirDate,
AirDateUtc = model.AirDateUtc,
Overview = model.Overview,
//EpisodeFile
HasFile = model.HasFile,
Monitored = model.Monitored,
AbsoluteEpisodeNumber = model.AbsoluteEpisodeNumber,
SceneAbsoluteEpisodeNumber = model.SceneAbsoluteEpisodeNumber,
SceneEpisodeNumber = model.SceneEpisodeNumber,
SceneSeasonNumber = model.SceneSeasonNumber,
UnverifiedSceneNumbering = model.UnverifiedSceneNumbering,
SeriesTitle = model.SeriesTitle,
//Series = model.Series.MapToResource(),
};
}
public static List<EpisodeResource> ToResource(this IEnumerable<Episode> models)
{
if (models == null) return null;
return models.Select(ToResource).ToList();
}
}
}

View file

@ -1,37 +0,0 @@
using System.Collections.Generic;
using NzbDrone.Api.REST;
using NzbDrone.Core.MediaFiles;
namespace NzbDrone.Api.Episodes
{
public class RenameEpisodeModule : NzbDroneRestModule<RenameEpisodeResource>
{
private readonly IRenameEpisodeFileService _renameEpisodeFileService;
public RenameEpisodeModule(IRenameEpisodeFileService renameEpisodeFileService)
: base("rename")
{
_renameEpisodeFileService = renameEpisodeFileService;
GetResourceAll = GetEpisodes;
}
private List<RenameEpisodeResource> GetEpisodes()
{
if (!Request.Query.SeriesId.HasValue)
{
throw new BadRequestException("seriesId is missing");
}
var seriesId = (int)Request.Query.SeriesId;
if (Request.Query.SeasonNumber.HasValue)
{
var seasonNumber = (int)Request.Query.SeasonNumber;
return _renameEpisodeFileService.GetRenamePreviews(seriesId, seasonNumber).ToResource();
}
return _renameEpisodeFileService.GetRenamePreviews(seriesId).ToResource();
}
}
}

View file

@ -1,39 +0,0 @@
using System.Collections.Generic;
using System.Linq;
using NzbDrone.Api.REST;
namespace NzbDrone.Api.Episodes
{
public class RenameEpisodeResource : RestResource
{
public int SeriesId { get; set; }
public int SeasonNumber { get; set; }
public List<int> EpisodeNumbers { get; set; }
public int EpisodeFileId { get; set; }
public string ExistingPath { get; set; }
public string NewPath { get; set; }
}
public static class RenameEpisodeResourceMapper
{
public static RenameEpisodeResource ToResource(this Core.MediaFiles.RenameEpisodeFilePreview model)
{
if (model == null) return null;
return new RenameEpisodeResource
{
SeriesId = model.SeriesId,
SeasonNumber = model.SeasonNumber,
EpisodeNumbers = model.EpisodeNumbers.ToList(),
EpisodeFileId = model.EpisodeFileId,
ExistingPath = model.ExistingPath,
NewPath = model.NewPath
};
}
public static List<RenameEpisodeResource> ToResource(this IEnumerable<Core.MediaFiles.RenameEpisodeFilePreview> models)
{
return models.Select(ToResource).ToList();
}
}
}

View file

@ -23,6 +23,8 @@ namespace NzbDrone.Api.Extensions.Pipelines
private void Handle(NancyContext context)
{
if (context.Request.Method == "OPTIONS") return;
if (_cacheableSpecification.IsCacheable(context))
{
context.Response.Headers.EnableCache();

View file

@ -2,6 +2,7 @@
using System.Linq;
using Nancy;
using Nancy.Bootstrapper;
using NzbDrone.Common.Extensions;
namespace NzbDrone.Api.Extensions.Pipelines
{
@ -11,10 +12,25 @@ namespace NzbDrone.Api.Extensions.Pipelines
public void Register(IPipelines pipelines)
{
pipelines.AfterRequest.AddItemToEndOfPipeline((Action<NancyContext>) Handle);
pipelines.BeforeRequest.AddItemToEndOfPipeline(HandleRequest);
pipelines.AfterRequest.AddItemToEndOfPipeline(HandleResponse);
}
private void Handle(NancyContext context)
private Response HandleRequest(NancyContext context)
{
if (context == null || context.Request.Method != "OPTIONS")
{
return null;
}
var response = new Response()
.WithStatusCode(HttpStatusCode.OK)
.WithContentType("");
ApplyResponseHeaders(response, context.Request);
return response;
}
private void HandleResponse(NancyContext context)
{
if (context == null || context.Response.Headers.ContainsKey(AccessControlHeaders.AllowOrigin))
{
@ -26,21 +42,39 @@ namespace NzbDrone.Api.Extensions.Pipelines
private static void ApplyResponseHeaders(Response response, Request request)
{
var allowedMethods = "GET, OPTIONS, PATCH, POST, PUT, DELETE";
if (response.Headers.ContainsKey("Allow"))
if (request.IsApiRequest())
{
allowedMethods = response.Headers["Allow"];
// Allow Cross-Origin access to the API since it's protected with the apikey, and nothing else.
ApplyCorsResponseHeaders(response, request, "*", "GET, OPTIONS, PATCH, POST, PUT, DELETE");
}
else if (request.IsSharedContentRequest())
{
// Allow Cross-Origin access to specific shared content such as mediacovers and images.
ApplyCorsResponseHeaders(response, request, "*", "GET, OPTIONS");
}
var requestedHeaders = string.Join(", ", request.Headers[AccessControlHeaders.RequestHeaders]);
// Disallow Cross-Origin access for any other route.
}
response.Headers.Add(AccessControlHeaders.AllowOrigin, "*");
response.Headers.Add(AccessControlHeaders.AllowMethods, allowedMethods);
private static void ApplyCorsResponseHeaders(Response response, Request request, string allowOrigin, string allowedMethods)
{
response.Headers.Add(AccessControlHeaders.AllowOrigin, allowOrigin);
if (request.Headers[AccessControlHeaders.RequestHeaders].Any())
if (request.Method == "OPTIONS")
{
response.Headers.Add(AccessControlHeaders.AllowHeaders, requestedHeaders);
if (response.Headers.ContainsKey("Allow"))
{
allowedMethods = response.Headers["Allow"];
}
response.Headers.Add(AccessControlHeaders.AllowMethods, allowedMethods);
if (request.Headers[AccessControlHeaders.RequestHeaders].Any())
{
var requestedHeaders = string.Join(", ", request.Headers[AccessControlHeaders.RequestHeaders]);
response.Headers.Add(AccessControlHeaders.AllowHeaders, requestedHeaders);
}
}
}
}

View file

@ -33,7 +33,8 @@ namespace NzbDrone.Api.Extensions.Pipelines
try
{
if (
!response.ContentType.Contains("image")
response.Contents != Response.NoBody
&& !response.ContentType.Contains("image")
&& !response.ContentType.Contains("font")
&& request.Headers.AcceptEncoding.Any(x => x.Contains("gzip"))
&& !AlreadyGzipEncoded(response)

View file

@ -66,13 +66,9 @@ namespace NzbDrone.Api.Extensions.Pipelines
private Response LogError(NancyContext context, Exception exception)
{
var response = _errorPipeline.HandleException(context, exception);
context.Response = response;
LogEnd(context);
context.Response = null;
return response;
}
@ -80,12 +76,9 @@ namespace NzbDrone.Api.Extensions.Pipelines
{
if (request.Url.Query.IsNotNullOrWhiteSpace())
{
return string.Concat(request.Url.Path, "?", request.Url.Query);
}
else
{
return request.Url.Path;
return string.Concat(request.Url.Path, request.Url.Query);
}
return request.Url.Path;
}
}
}

View file

@ -0,0 +1,46 @@
using System;
using Nancy;
using Nancy.Bootstrapper;
using Nancy.Responses;
using NzbDrone.Common.Extensions;
using NzbDrone.Core.Configuration;
namespace NzbDrone.Api.Extensions.Pipelines
{
public class UrlBasePipeline : IRegisterNancyPipeline
{
private readonly string _urlBase;
public UrlBasePipeline(IConfigFileProvider configFileProvider)
{
_urlBase = configFileProvider.UrlBase;
}
public int Order => 99;
public void Register(IPipelines pipelines)
{
if (_urlBase.IsNotNullOrWhiteSpace())
{
pipelines.BeforeRequest.AddItemToStartOfPipeline((Func<NancyContext, Response>) Handle);
}
}
private Response Handle(NancyContext context)
{
var basePath = context.Request.Url.BasePath;
if (basePath.IsNullOrWhiteSpace())
{
return new RedirectResponse($"{_urlBase}{context.Request.Path}{context.Request.Url.Query}");
}
if (_urlBase != basePath)
{
return new NotFoundResponse();
}
return null;
}
}
}

View file

@ -36,5 +36,11 @@ namespace NzbDrone.Api.Extensions
{
return request.Path.StartsWith("/Content/", StringComparison.InvariantCultureIgnoreCase);
}
public static bool IsSharedContentRequest(this Request request)
{
return request.Path.StartsWith("/MediaCover/", StringComparison.InvariantCultureIgnoreCase) ||
request.Path.StartsWith("/Content/Images/", StringComparison.InvariantCultureIgnoreCase);
}
}
}

View file

@ -0,0 +1,45 @@
using System.Collections.Generic;
using NzbDrone.Api.REST;
using NzbDrone.Core.Extras.Files;
using NzbDrone.Core.Extras.Metadata.Files;
using NzbDrone.Core.Extras.Others;
using NzbDrone.Core.Extras.Subtitles;
namespace NzbDrone.Api.ExtraFiles
{
public class ExtraFileModule : NzbDroneRestModule<ExtraFileResource>
{
private readonly IExtraFileService<SubtitleFile> _subtitleFileService;
private readonly IExtraFileService<MetadataFile> _metadataFileService;
private readonly IExtraFileService<OtherExtraFile> _otherFileService;
public ExtraFileModule(IExtraFileService<SubtitleFile> subtitleFileService, IExtraFileService<MetadataFile> metadataFileService, IExtraFileService<OtherExtraFile> otherExtraFileService)
: base("/extrafile")
{
_subtitleFileService = subtitleFileService;
_metadataFileService = metadataFileService;
_otherFileService = otherExtraFileService;
GetResourceAll = GetFiles;
}
private List<ExtraFileResource> GetFiles()
{
if (!Request.Query.MovieId.HasValue)
{
throw new BadRequestException("MovieId is missing");
}
var extraFiles = new List<ExtraFileResource>();
List<SubtitleFile> subtitleFiles = _subtitleFileService.GetFilesByMovie(Request.Query.MovieId);
List<MetadataFile> metadataFiles = _metadataFileService.GetFilesByMovie(Request.Query.MovieId);
List<OtherExtraFile> otherExtraFiles = _otherFileService.GetFilesByMovie(Request.Query.MovieId);
extraFiles.AddRange(subtitleFiles.ToResource());
extraFiles.AddRange(metadataFiles.ToResource());
extraFiles.AddRange(otherExtraFiles.ToResource());
return extraFiles;
}
}
}

Some files were not shown because too many files have changed in this diff Show more