diff --git a/Radarr/Radarr-collection-of-custom-formats/index.html b/Radarr/Radarr-collection-of-custom-formats/index.html index 88af8d1c3..316550b50 100644 --- a/Radarr/Radarr-collection-of-custom-formats/index.html +++ b/Radarr/Radarr-collection-of-custom-formats/index.html @@ -788,15 +788,43 @@
+++TrueHD ATMOS - [CLICK TO EXPAND]
From Wikipedia, the free encyclopedia
Dolby Atmos is a surround sound technology developed by Dolby Laboratories. It expands on existing surround sound systems by adding height channels, allowing sounds to be interpreted as three-dimensional objects.
-
{
"trash_id": "496f355514737f7d83bf7aa4d24f8169",
"trash_score": "2000",
@@ -3294,11 +3317,12 @@ Special thanks to rg9400, TOP
DTS X¶
-
+
+DTS X - [CLICK TO EXPAND]
DTS:X is an object-based audio codec, which aims to create a multi-dimensional sound that “moves around you like it would in real life”
-
+
-json
+JSON - [CLICK TO EXPAND]
{
"trash_id": "2f22d89048b01681dde8afe203bf2e95",
"trash_score": "1900",
@@ -3383,15 +3407,16 @@ Special thanks to rg9400, TOP
ATMOS (undefined)¶
-
+
+ATMOS (undefined) - [CLICK TO EXPAND]
Handles cases where only Atmos is specified in title but not DD+ or TrueHD (Where it is not specified if it is Lossy or Lossless)
-
Note
Give this the same score as Lossy Atmos, and then on import, it will get changed to either lossy or lossless based on mediainfo.
+
-json
+JSON - [CLICK TO EXPAND]
{
"trash_id": "417804f7f2c4308c1f4c5d380d4c4475",
"trash_score": "1800",
@@ -3476,11 +3501,12 @@ Special thanks to rg9400, TOP
DD+ ATMOS¶
-
+
+DD+ ATMOS - [CLICK TO EXPAND]
Atmos via UHD Blu-ray will be lossless, or lossy via streaming services so in this case it will be lossy + Atmos
-
+
-json
+JSON - [CLICK TO EXPAND]
{
"trash_id": "1af239278386be2919e1bcee0bde047e",
"trash_score": "1800",
@@ -3566,12 +3592,13 @@ Special thanks to rg9400, TOP
TrueHD¶
-
+
+TrueHD - [CLICK TO EXPAND]
From Wikipedia, the free encyclopedia
Dolby TrueHD is a lossless, multi-channel audio codec developed by Dolby Laboratories for home video, used principally in Blu-ray Disc and compatible hardware.
-
+
-json
+JSON - [CLICK TO EXPAND]
{
"trash_id": "3cafb66171b47f226146a0770576870f",
"trash_score": "1700",
@@ -3638,12 +3665,13 @@ Special thanks to rg9400, TOP
DTS-HD MA¶
-
+
+DTS-HD MA - [CLICK TO EXPAND]
From Wikipedia, the free encyclopedia
DTS-HD Master Audio is a multi-channel, lossless audio codec developed by DTS as an extension of the lossy DTS Coherent Acoustics codec (DTS CA; usually itself referred to as just DTS). Rather than being an entirely new coding mechanism, DTS-HD MA encodes an audio master in lossy DTS first, then stores a concurrent stream of supplementary data representing whatever the DTS encoder discarded. This gives DTS-HD MA a lossy "core" able to be played back by devices that cannot decode the more complex lossless audio. DTS-HD MA's primary application is audio storage and playback for Blu-ray Disc media.
-
+
-json
+JSON - [CLICK TO EXPAND]
{
"trash_id": "dcf3ec6938fa32445f590a4da84256cd",
"trash_score": "1600",
@@ -3746,11 +3774,12 @@ Special thanks to rg9400, TOP
FLAC¶
-
+
+FLAC - [CLICK TO EXPAND]
FLAC stands for Free Lossless Audio Codec, an audio format similar to MP3, but lossless, meaning that audio is compressed in FLAC without any loss in quality. This is similar to how Zip works, except with FLAC you will get much better compression because it is designed specifically for audio
-
+
-json
+JSON - [CLICK TO EXPAND]
{
"trash_id": "a570d4a0e56a2874b64e5bfa55202a1b",
"trash_score": "1500",
@@ -3826,11 +3855,12 @@ Special thanks to rg9400, TOP
PCM¶
-
+
+PCM - [CLICK TO EXPAND]
PCM is the method of encoding typically used for uncompressed digital audio
-
+
-json
+JSON - [CLICK TO EXPAND]
{
"trash_id": "e7c2fcae07cbada050a0af3357491d7b",
"trash_score": "1500",
@@ -3906,11 +3936,12 @@ Special thanks to rg9400, TOP
DTS-HD HRA¶
-
+
+DTS-HD HRA - [CLICK TO EXPAND]
Description placeholder
-
+
-json
+JSON - [CLICK TO EXPAND]
{
"trash_id": "8e109e50e0a0b83a5098b056e13bf6db",
"trash_score": "1400",
@@ -4023,12 +4054,13 @@ Special thanks to rg9400, Dolby Digital Plus¶
Dolby Digital Plus = DD+
-
+
+DD+ - [CLICK TO EXPAND]
From Wikipedia, the free encyclopedia
Dolby Digital Plus, also known as Enhanced AC-3 (and commonly abbreviated as DD+ or E-AC-3, or EC-3) is a digital audio compression scheme developed by Dolby Labs for transport and storage of multi-channel digital audio. It is a successor to Dolby Digital (AC-3).
-
+
-json
+JSON - [CLICK TO EXPAND]
{
"trash_id": "185f1dd7264c4562b9022d963ac37424",
"trash_score": "1300",
@@ -4104,11 +4136,12 @@ Special thanks to rg9400, TOP
DTS-ES¶
-
+
+DTS-ES - [CLICK TO EXPAND]
DTS-ES (DTS Extended Surround) includes two variants, DTS-ES Discrete 6.1, and DTS-ES Matrix 5.1, depending on how the sound was originally mastered and stored.
-
+
-json
+JSON - [CLICK TO EXPAND]
{
"trash_id": "f9f847ac70a0af62ea4a08280b859636",
"trash_score": "1200",
@@ -4212,11 +4245,12 @@ Special thanks to rg9400, DTS¶
DTS = Basic DTS
-
+
+DTS - [CLICK TO EXPAND]
Description placeholder
-
+
-json
+JSON - [CLICK TO EXPAND]
{
"trash_id": "1c1a4c5e823891c75bc50380a6866f73",
"trash_score": "1100",
@@ -4310,13 +4344,14 @@ Special thanks to rg9400, TOP
AAC¶
+
+AAC - [CLICK TO EXPAND]
Advanced Audio Coding
-
From Wikipedia, the free encyclopedia
Advanced Audio Coding (AAC) is an audio coding standard for lossy digital audio compression. Designed to be the successor of the MP3 format, AAC generally achieves higher sound quality than MP3 at the same bit rate.
-
+
-json
+JSON - [CLICK TO EXPAND]
{
"trash_id": "240770601cc226190c367ef59aba7463",
"trash_score": "1000",
@@ -4393,12 +4428,13 @@ Advanced Audio Coding (AAC) is an audio coding standard for lossy digital audio
Dolby Digital¶
(Basic) Dolby Digital = DD
-
+
+DD - [CLICK TO EXPAND]
From Wikipedia, the free encyclopedia
Dolby Digital, also known as Dolby AC-3, the audio compression is lossy.
-
+
-json
+JSON - [CLICK TO EXPAND]
{
"trash_id": "c2998bd0d90ed5621d8df281e839436e",
"trash_score": "900",
@@ -4474,11 +4510,12 @@ Advanced Audio Coding (AAC) is an audio coding standard for lossy digital audio
MP3¶
-
+
+MP3 - [CLICK TO EXPAND]
Description placeholder
-
+
-json
+JSON - [CLICK TO EXPAND]
{
"trash_id": "6ba9033150e7896bdc9ec4b44f2b230f",
"name": "MP3",
@@ -4498,12 +4535,13 @@ Advanced Audio Coding (AAC) is an audio coding standard for lossy digital audio
Opus¶
-
+
+Opus - [CLICK TO EXPAND]
From Wikipedia, the free encyclopedia
Opus is a lossy audio coding format developed by the Xiph.Org Foundation and standardized by the Internet Engineering Task Force, designed to efficiently code speech and general audio in a single format, while remaining low-latency enough for real-time interactive communication and low-complexity enough for low-end embedded processors.Opus replaces both Vorbis and Speex for new applications, and several blind listening tests have ranked it higher-quality than any other standard audio format at any given bitrate until transparency is reached, including MP3, AAC, and HE-AAC
-
+
-json
+JSON - [CLICK TO EXPAND]
{
"trash_id": "a061e2e700f81932daf888599f8a8273",
"name": "Opus",
@@ -4526,7 +4564,7 @@ Advanced Audio Coding (AAC) is an audio coding standard for lossy digital audio
1.0 Mono¶
-json
+JSON - [CLICK TO EXPAND]
{
"trash_id": "b124be9b146540f8e62f98fe32e49a2a",
"name": "1.0 Mono",
@@ -4584,7 +4622,7 @@ Advanced Audio Coding (AAC) is an audio coding standard for lossy digital audio
2.0 Stereo¶
-json
+JSON - [CLICK TO EXPAND]
{
"trash_id": "89dac1be53d5268a7e10a19d3c896826",
"name": "2.0 Stereo",
@@ -4642,7 +4680,7 @@ Advanced Audio Coding (AAC) is an audio coding standard for lossy digital audio
3.0 Sound¶
-json
+JSON - [CLICK TO EXPAND]
{
"trash_id": "205125755c411c3b8622ca3175d27b37",
"name": "3.0 Sound",
@@ -4700,7 +4738,7 @@ Advanced Audio Coding (AAC) is an audio coding standard for lossy digital audio
4.0 Sound¶
-json
+JSON - [CLICK TO EXPAND]
{
"trash_id": "373b58bd188fc00c817bd8c7470ea285",
"name": "4.0 Sound",
@@ -4758,7 +4796,7 @@ Advanced Audio Coding (AAC) is an audio coding standard for lossy digital audio
5.1 Surround¶
-json
+JSON - [CLICK TO EXPAND]
{
"trash_id": "77ff61788dfe1097194fd8743d7b4524",
"name": "5.1 Surround",
@@ -4807,7 +4845,7 @@ Advanced Audio Coding (AAC) is an audio coding standard for lossy digital audio
6.1 Surround¶
-json
+JSON - [CLICK TO EXPAND]
{
"trash_id": "6fd7b090c3f7317502ab3b63cc7f51e3",
"name": "6.1 Surround",
@@ -4865,7 +4903,7 @@ Advanced Audio Coding (AAC) is an audio coding standard for lossy digital audio
7.1 Surround¶
-json
+JSON - [CLICK TO EXPAND]
{
"trash_id": "e77382bcfeba57cb83744c9c5449b401",
"name": "7.1 Surround",
@@ -4905,7 +4943,7 @@ Advanced Audio Coding (AAC) is an audio coding standard for lossy digital audio
9.1 Surround¶
-json
+JSON - [CLICK TO EXPAND]
{
"trash_id": "f2aacebe2c932337fe352fa6e42c1611",
"name": "9.1 Surround",
@@ -4954,36 +4992,46 @@ Advanced Audio Coding (AAC) is an audio coding standard for lossy digital audio
HDR metadata¶
-DoVi¶
-Dolby Vision = DoVi
-
+DV HDR10¶
+Dolby Vision = DoVi = DV
+
+DV HDR10 - [CLICK TO EXPAND]
Dolby Vision is a content mastering and delivery format similar to the HDR10 media profile.
Dolby Vision is a proprietary, dynamic HDR format developed by Dolby Labs. By adjusting the picture on a scene-by-scene (and even frame-by-frame) basis, it lets you see more detail with better color accuracy. It is constantly making adjustments so that each image on the screen is optimized.
-
+
-json
+JSON - [CLICK TO EXPAND]
{
- "trash_id": "5d96ce331b98e077abb8ceb60553aa16",
- "trash_score": "1000",
- "name": "DoVi",
- "includeCustomFormatWhenRenaming": true,
+ "trash_id": "e23edd2482476e595fb990b12e7c609c",
+ "trash_score": "1100",
+ "name": "DV HDR10",
+ "includeCustomFormatWhenRenaming": false,
"specifications": [
{
- "name": "Dolby Vision",
+ "name": "DV HDR10",
"implementation": "ReleaseTitleSpecification",
"negate": false,
"required": true,
"fields": {
- "value": "\\b(dv|dovi|dolby[ .]vision)\\b"
+ "value": "\\b(DV[ .]HDR10)\\b"
+ }
+ },
+ {
+ "name": "Not DV HLG",
+ "implementation": "ReleaseTitleSpecification",
+ "negate": true,
+ "required": true,
+ "fields": {
+ "value": "\\b(DV[ ]HLG)\\b"
}
},
{
- "name": "DoVi-SL: Dolby Vision (Single Layer)",
+ "name": "Not DV SDR",
"implementation": "ReleaseTitleSpecification",
"negate": true,
"required": true,
"fields": {
- "value": "\\b(sl[ .]dv|single[ .]layer[ .]dovi)\\b"
+ "value": "\\b(DV[ ]SDR)\\b"
}
}
]
@@ -4992,77 +5040,55 @@ Advanced Audio Coding (AAC) is an audio coding standard for lossy digital audio
-DoVi (SL)¶
-Score [295]
-Dolby Vision (Single Layer) = DoVi (SL)
-
-Custom Format for Single Layer Dolby Vision releases.
-
-
-Note
-This used to be the the preferred option for PLeX with a Shield 2019 model that supports DV.
-But now DV is part of the MKV spec and ExoPlayer added native support.
-
-
-json
-{
- "trash_id": "462c511637953269a9053d1ed1ffc3a5",
- "trash_score": "950",
- "name": "DoVi (SL)",
- "includeCustomFormatWhenRenaming": true,
- "specifications": [{
- "name": "Dolby Vision (Single Layer)",
- "implementation": "ReleaseTitleSpecification",
- "negate": false,
- "required": true,
- "fields": {
- "value": "\\b(sl[ .]dv|single[ .]layer[ .]dovi)\\b"
- }
- },
- {
- "name": "Remux",
- "implementation": "QualityModifierSpecification",
- "negate": false,
- "required": true,
- "fields": {
- "value": 5
- }
- }
- ]
-}
-
+DV¶
+Dolby Vision = DoVi = DV
+
+DV - [CLICK TO EXPAND]
+Dolby Vision is a content mastering and delivery format similar to the HDR10 media profile.
+Dolby Vision is a proprietary, dynamic HDR format developed by Dolby Labs. By adjusting the picture on a scene-by-scene (and even frame-by-frame) basis, it lets you see more detail with better color accuracy. It is constantly making adjustments so that each image on the screen is optimized.
-
-
-HDR¶
-
-From Wikipedia, the free encyclopedia
-High-dynamic-range video (HDR video) is video having a dynamic range greater than that of standard-dynamic-range video (SDR video).HDR video involves capture, production, content/encoding, and display. HDR capture and displays are capable of brighter whites and deeper blacks. To accommodate this, HDR encoding standards allow for a higher maximum luminance and use at least a 10-bit dynamic range (color depth, compared to 8-bit for non-professional and 10-bit for professional SDR video) in order to maintain precision across this extended range.
-
-json
+JSON - [CLICK TO EXPAND]
{
- "trash_id": "e61e28db95d22bedcadf030b8f156d96",
- "trash_score": "850",
- "name": "HDR",
+ "trash_id": "58d6a88f13e2db7f5059c41047876f00",
+ "trash_score": "1000",
+ "name": "DV",
"includeCustomFormatWhenRenaming": false,
"specifications": [
{
- "name": "HDR",
+ "name": "DV",
"implementation": "ReleaseTitleSpecification",
"negate": false,
"required": true,
"fields": {
- "value": "\\bHDR(\\b|\\d)"
+ "value": "\\b(dv|dovi|dolby[ .]vision)\\b"
}
},
{
- "name": "DoVi",
+ "name": "Not DV HDR10",
"implementation": "ReleaseTitleSpecification",
"negate": true,
"required": true,
"fields": {
- "value": "\\b(dv|dovi|dolby[ .]vision)\\b"
+ "value": "\\b(DV[ .]HDR10)\\b"
+ }
+ },
+ {
+ "name": "Not DV HLG",
+ "implementation": "ReleaseTitleSpecification",
+ "negate": true,
+ "required": true,
+ "fields": {
+ "value": "\\b(DV[ ]HLG)\\b"
+ }
+ },
+ {
+ "name": "Not DV SDR",
+ "implementation": "ReleaseTitleSpecification",
+ "negate": true,
+ "required": true,
+ "fields": {
+ "value": "\\b(DV[ ]SDR)\\b"
}
}
]
@@ -5071,62 +5097,94 @@ Advanced Audio Coding (AAC) is an audio coding standard for lossy digital audio
-HDR (undefined)¶
-
-Some groups don't add HDR to their 4K release name so I suggest to add this Custom Format at the same score as you add one of your HDR Custom Formats.
-For now it's only FraMeSToR that doesn't add HDR to their release name but in the feature we can add more to it if needed.
-
+DV HLG¶
+Dolby Vision = DoVi = DV
+
+DV HLG - [CLICK TO EXPAND]
+Dolby Vision is a content mastering and delivery format similar to the HDR10 media profile.
+Dolby Vision is a proprietary, dynamic HDR format developed by Dolby Labs. By adjusting the picture on a scene-by-scene (and even frame-by-frame) basis, it lets you see more detail with better color accuracy. It is constantly making adjustments so that each image on the screen is optimized.
+
-json
+JSON - [CLICK TO EXPAND]
{
- "trash_id": "2a4d9069cc1fe3242ff9bdaebed239bb",
- "trash_score": "850",
- "name": "HDR (undefined)",
+ "trash_id": "55d53828b9d81cbe20b02efd00aa0efd",
+ "trash_score": "1000",
+ "name": "DV HLG",
"includeCustomFormatWhenRenaming": false,
"specifications": [
{
- "name": "Groups",
+ "name": "DV HLG",
"implementation": "ReleaseTitleSpecification",
"negate": false,
"required": true,
"fields": {
- "value": "\\b(FraMeSToR|HQMUX)\\b"
+ "value": "\\b(DV[ ]HLG)\\b"
}
},
{
- "name": "2160p",
- "implementation": "ResolutionSpecification",
- "negate": false,
+ "name": "not DV HDR10",
+ "implementation": "ReleaseTitleSpecification",
+ "negate": true,
"required": true,
"fields": {
- "value": 2160
+ "value": "\\b(DV[ .]HDR10)\\b"
}
},
{
- "name": "HDR: HDR",
+ "name": "Not DV SDR",
"implementation": "ReleaseTitleSpecification",
"negate": true,
"required": true,
"fields": {
- "value": "\\bHDR(\\b|\\d)"
+ "value": "\\b(DV[ ]SDR)\\b"
+ }
+ }
+ ]
+}
+
+
+
+
+DV SDR¶
+Dolby Vision = DoVi = DV
+
+DV SDR - [CLICK TO EXPAND]
+Dolby Vision is a content mastering and delivery format similar to the HDR10 media profile.
+Dolby Vision is a proprietary, dynamic HDR format developed by Dolby Labs. By adjusting the picture on a scene-by-scene (and even frame-by-frame) basis, it lets you see more detail with better color accuracy. It is constantly making adjustments so that each image on the screen is optimized.
+
+
+JSON - [CLICK TO EXPAND]
+{
+ "trash_id": "a3e19f8f627608af0211acd02bf89735",
+ "trash_score": "1000",
+ "name": "DV SDR",
+ "includeCustomFormatWhenRenaming": false,
+ "specifications": [
+ {
+ "name": "DV SDR",
+ "implementation": "ReleaseTitleSpecification",
+ "negate": false,
+ "required": true,
+ "fields": {
+ "value": "\\b(DV[ ]SDR)\\b"
}
},
{
- "name": "DoVi: Dolby Vision",
+ "name": "Not DV HDR10",
"implementation": "ReleaseTitleSpecification",
"negate": true,
"required": true,
"fields": {
- "value": "\\b(dv|dovi|dolby[ .]vision)\\b"
+ "value": "\\b(DV[ .]HDR10)\\b"
}
},
{
- "name": "SDR: SDR",
+ "name": "Not DV HLG",
"implementation": "ReleaseTitleSpecification",
"negate": true,
"required": true,
"fields": {
- "value": "\\bSDR(\\b|\\d)"
+ "value": "\\b(DV[ ]HLG)\\b"
}
}
]
@@ -5135,45 +5193,497 @@ Advanced Audio Coding (AAC) is an audio coding standard for lossy digital audio
-10 Bit¶
+HDR10Plus¶
+HDR10Plus = HDR10+
+
+HDR10+ - [CLICK TO EXPAND]
+HDR10+ enhances upon a pre-existing HDR10 base layer allowing backwards compatibility with HDR10 devices. It adds dynamic metadata for the devices that support it.
+From Wikipedia, the free encyclopedia
+HDR10+, also known as HDR10 Plus, is an HDR video format, announced on 20 April 2017. It is the same as HDR10 but with the addition of a system of dynamic metadata developed by Samsung. It is free to use for content creators and has a maximum $10,000 annual license for some manufacturers. It has been positioned as an alternative to Dolby Vision without the same expenses.
+
-json
+JSON - [CLICK TO EXPAND]
{
- "trash_id": "e114f2f915fa2414b60683cd73c554f3",
- "name": "10 Bit",
+ "trash_id": "b974a6cd08c1066250f1f177d7aa1225",
+ "trash_score": "900",
+ "name": "HDR10+",
"includeCustomFormatWhenRenaming": false,
- "specifications": [{
- "name": "10 Bit",
+ "specifications": [
+ {
+ "name": "HDR10+",
"implementation": "ReleaseTitleSpecification",
"negate": false,
"required": true,
"fields": {
- "value": "\\b10bit(\\b|\\d)"
+ "value": "\\bHDR10Plus|HDR10(\\b\\+)"
}
- }]
-}
-
-
-
-
-Movie Versions¶
-
-Hybrid¶
-
-A hybrid release means any combination of sources (video + audio) and not a direct encode of a single source. Generally you can be sure that any hybrid that has been put together is the best quality release of a particular title.
-
-
-json
-{
- "trash_id": "0f12c086e289cf966fa5948eac571f44",
- "trash_score": "200",
- "name": "Hybrid",
- "includeCustomFormatWhenRenaming": true,
- "specifications": [{
- "name": "Hybrid",
- "implementation": "ReleaseTitleSpecification",
- "negate": false,
- "required": true,
+ },
+ {
+ "name": "Not DV HDR10",
+ "implementation": "ReleaseTitleSpecification",
+ "negate": true,
+ "required": true,
+ "fields": {
+ "value": "\\b(DV[ .]HDR10)\\b"
+ }
+ },
+ {
+ "name": "Not HDR10",
+ "implementation": "ReleaseTitleSpecification",
+ "negate": true,
+ "required": true,
+ "fields": {
+ "value": "\\bHDR10(\\b[^+|Plus])"
+ }
+ },
+ {
+ "name": "Not PQ",
+ "implementation": "ReleaseTitleSpecification",
+ "negate": true,
+ "required": true,
+ "fields": {
+ "value": "\\b(PQ)\\b"
+ }
+ },
+ {
+ "name": "Not HLG",
+ "implementation": "ReleaseTitleSpecification",
+ "negate": true,
+ "required": true,
+ "fields": {
+ "value": "\\b(HLG)\\b"
+ }
+ },
+ {
+ "name": "Not SDR",
+ "implementation": "ReleaseTitleSpecification",
+ "negate": true,
+ "required": true,
+ "fields": {
+ "value": "\\bSDR(\\b|\\d)"
+ }
+ }
+ ]
+}
+
+
+
+
+HDR10¶
+HDR10
+
+HDR10 - [CLICK TO EXPAND]
+HDR10 is the most basic HDR format used in consumer media and is supported by all HDR-supported devices. It adds static metadata upon the PQ10 format.
+From Wikipedia, the free encyclopedia
+HDR10 Media Profile, more commonly known as HDR10, is an open HDR standard announced on 27 August 2015 by the Consumer Technology Association. It is the most widespread of the HDR formats. It is not backward compatible with SDR displays. It is technically limited to a maximum of 10,000 nits peak brightness; however, HDR10 content is commonly mastered with a peak brightness between 1000 and 4000 nits.
+HDR10 lacks dynamic metadata. On HDR10 displays that have lower color volume than the HDR10 content (e.g. lower peak brightness capability), the HDR10 metadata provides information to help the display adjust to the video. The metadata, however, is static and constant with respect to each individual video and doesn't inform the display exactly how the content should be adjusted. The interaction between display capabilities, video metadata, and the ultimate output (i.e. the presentation of the video) is mediated by the display, with the result that the original producer's intent may not be preserved.
+
+
+JSON - [CLICK TO EXPAND]
+{
+ "trash_id": "dfb86d5941bc9075d6af23b09c2aeecd",
+ "trash_score": "875",
+ "name": "HDR10",
+ "includeCustomFormatWhenRenaming": false,
+ "specifications": [
+ {
+ "name": "HDR10",
+ "implementation": "ReleaseTitleSpecification",
+ "negate": false,
+ "required": true,
+ "fields": {
+ "value": "\\bHDR10(\\b[^+|Plus])"
+ }
+ },
+ {
+ "name": "Not DV HDR10",
+ "implementation": "ReleaseTitleSpecification",
+ "negate": true,
+ "required": true,
+ "fields": {
+ "value": "\\b(DV[ .]HDR10)\\b"
+ }
+ },
+ {
+ "name": "Not HDR10+",
+ "implementation": "ReleaseTitleSpecification",
+ "negate": true,
+ "required": true,
+ "fields": {
+ "value": "\\bHDR10Plus|HDR10(\\b\\+)"
+ }
+ },
+ {
+ "name": "Not PQ",
+ "implementation": "ReleaseTitleSpecification",
+ "negate": true,
+ "required": true,
+ "fields": {
+ "value": "\\b(PQ)\\b"
+ }
+ },
+ {
+ "name": "Not HLG",
+ "implementation": "ReleaseTitleSpecification",
+ "negate": true,
+ "required": true,
+ "fields": {
+ "value": "\\b(HLG)\\b"
+ }
+ },
+ {
+ "name": "Not SDR",
+ "implementation": "ReleaseTitleSpecification",
+ "negate": true,
+ "required": true,
+ "fields": {
+ "value": "\\bSDR(\\b|\\d)"
+ }
+ }
+ ]
+}
+
+
+
+
+HDR¶
+HDR
+
+HDR - [CLICK TO EXPAND]
+From Wikipedia, the free encyclopedia
+High-dynamic-range video (HDR video) is video having a dynamic range greater than that of standard-dynamic-range video (SDR video).HDR video involves capture, production, content/encoding, and display. HDR capture and displays are capable of brighter whites and deeper blacks. To accommodate this, HDR encoding standards allow for a higher maximum luminance and use at least a 10-bit dynamic range (color depth, compared to 8-bit for non-professional and 10-bit for professional SDR video) in order to maintain precision across this extended range.
+
+
+JSON - [CLICK TO EXPAND]
+{
+ "trash_id": "e61e28db95d22bedcadf030b8f156d96",
+ "trash_score": "850",
+ "name": "HDR",
+ "includeCustomFormatWhenRenaming": false,
+ "specifications": [
+ {
+ "name": "HDR",
+ "implementation": "ReleaseTitleSpecification",
+ "negate": false,
+ "required": true,
+ "fields": {
+ "value": "\\bHDR(\\b|\\d)"
+ }
+ },
+ {
+ "name": "Not DV",
+ "implementation": "ReleaseTitleSpecification",
+ "negate": true,
+ "required": true,
+ "fields": {
+ "value": "\\b(dv|dovi|dolby[ .]vision)\\b"
+ }
+ },
+ {
+ "name": "Not HDR10+",
+ "implementation": "ReleaseTitleSpecification",
+ "negate": true,
+ "required": true,
+ "fields": {
+ "value": "\\bHDR10Plus|HDR10(\\b\\+)"
+ }
+ },
+ {
+ "name": "Not HDR10",
+ "implementation": "ReleaseTitleSpecification",
+ "negate": true,
+ "required": true,
+ "fields": {
+ "value": "\\bHDR10(\\b[^+|Plus])"
+ }
+ },
+ {
+ "name": "Not PQ",
+ "implementation": "ReleaseTitleSpecification",
+ "negate": true,
+ "required": true,
+ "fields": {
+ "value": "\\b(PQ)\\b"
+ }
+ },
+ {
+ "name": "Not HLG",
+ "implementation": "ReleaseTitleSpecification",
+ "negate": true,
+ "required": true,
+ "fields": {
+ "value": "\\b(HLG)\\b"
+ }
+ },
+ {
+ "name": "Not SDR",
+ "implementation": "ReleaseTitleSpecification",
+ "negate": true,
+ "required": true,
+ "fields": {
+ "value": "\\bSDR(\\b|\\d)"
+ }
+ }
+ ]
+}
+
+
+
+
+HDR (undefined)¶
+
+HDR (undefined) - [CLICK TO EXPAND]
+Some groups don't add HDR to their 4K release name so I suggest to add this Custom Format at the same score as you add one of your HDR Custom Formats.
+For now it's only FraMeSToR/HQMUX that doesn't add HDR to their release name but in the feature we can add more to it if needed.
+
+
+JSON - [CLICK TO EXPAND]
+{
+ "trash_id": "2a4d9069cc1fe3242ff9bdaebed239bb",
+ "trash_score": "850",
+ "name": "HDR (undefined)",
+ "includeCustomFormatWhenRenaming": false,
+ "specifications": [
+ {
+ "name": "Groups",
+ "implementation": "ReleaseTitleSpecification",
+ "negate": false,
+ "required": true,
+ "fields": {
+ "value": "\\b(FraMeSToR|HQMUX)\\b"
+ }
+ },
+ {
+ "name": "2160p",
+ "implementation": "ResolutionSpecification",
+ "negate": false,
+ "required": true,
+ "fields": {
+ "value": 2160
+ }
+ },
+ {
+ "name": "Not DV",
+ "implementation": "ReleaseTitleSpecification",
+ "negate": true,
+ "required": true,
+ "fields": {
+ "value": "\\b(dv|dovi|dolby[ .]vision)\\b"
+ }
+ },
+ {
+ "name": "Not HDR10+",
+ "implementation": "ReleaseTitleSpecification",
+ "negate": true,
+ "required": true,
+ "fields": {
+ "value": "\\bHDR10Plus|HDR10(\\b\\+)"
+ }
+ },
+ {
+ "name": "Not HDR10",
+ "implementation": "ReleaseTitleSpecification",
+ "negate": true,
+ "required": true,
+ "fields": {
+ "value": "\\bHDR10(\\b[^+|Plus])"
+ }
+ },
+ {
+ "name": "Not PQ",
+ "implementation": "ReleaseTitleSpecification",
+ "negate": true,
+ "required": true,
+ "fields": {
+ "value": "\\b(PQ)\\b"
+ }
+ },
+ {
+ "name": "Not HLG",
+ "implementation": "ReleaseTitleSpecification",
+ "negate": true,
+ "required": true,
+ "fields": {
+ "value": "\\b(HLG)\\b"
+ }
+ },
+ {
+ "name": "Not SDR",
+ "implementation": "ReleaseTitleSpecification",
+ "negate": true,
+ "required": true,
+ "fields": {
+ "value": "\\bSDR(\\b|\\d)"
+ }
+ }
+ ]
+}
+
+
+
+
+PQ¶
+PQ = PQ10
+
+PQ - [CLICK TO EXPAND]
+PQ10 is the most basic HDR format which all other common formats are based upon. It is the barebones SMPTE 2084 specification and has no metadata.
+From Wikipedia, the free encyclopedia
+PQ10, sometimes simply referred as the PQ format, is an HDR format that can be used for both video and still images. It is the same as the HDR10 format without any metadata. It uses the PQ transfer function, Rec. 2020 color primaries and a bit depth of 10-bits. It is not backward compatible with SDR.
+
+
+JSON - [CLICK TO EXPAND]
+{
+ "trash_id": "08d6d8834ad9ec87b1dc7ec8148e7a1f",
+ "trash_score": "850",
+ "name": "PQ",
+ "includeCustomFormatWhenRenaming": false,
+ "specifications": [
+ {
+ "name": "PQ",
+ "implementation": "ReleaseTitleSpecification",
+ "negate": false,
+ "required": true,
+ "fields": {
+ "value": "\\b(PQ)\\b"
+ }
+ },
+ {
+ "name": "Not DV",
+ "implementation": "ReleaseTitleSpecification",
+ "negate": true,
+ "required": true,
+ "fields": {
+ "value": "\\b(dv|dovi|dolby[ .]vision)\\b"
+ }
+ },
+ {
+ "name": "Not HDR10+",
+ "implementation": "ReleaseTitleSpecification",
+ "negate": true,
+ "required": true,
+ "fields": {
+ "value": "\\bHDR10Plus|HDR10(\\b\\+)"
+ }
+ },
+ {
+ "name": "Not HDR10",
+ "implementation": "ReleaseTitleSpecification",
+ "negate": true,
+ "required": true,
+ "fields": {
+ "value": "\\bHDR10(\\b[^+|Plus])"
+ }
+ },
+ {
+ "name": "Not HLG",
+ "implementation": "ReleaseTitleSpecification",
+ "negate": true,
+ "required": true,
+ "fields": {
+ "value": "\\b(HLG)\\b"
+ }
+ },
+ {
+ "name": "Not SDR",
+ "implementation": "ReleaseTitleSpecification",
+ "negate": true,
+ "required": true,
+ "fields": {
+ "value": "\\bSDR(\\b|\\d)"
+ }
+ }
+ ]
+}
+
+
+
+
+HLG¶
+HLG = HLG10
+
+HLG - [CLICK TO EXPAND]
+HLG does not use dynamic metadata and is backwards compatible with SDR devices. It is mostly used in broadcasting.
+From Wikipedia, the free encyclopedia
+HLG10, commonly simply referred as the HLG format, is an HDR format that can be used for both video and still images. It uses the HLG transfer function, Rec. 2020 color primaries, and a bit depth of 10 bits. The format is backwards compatible with SDR UHDTV but not with older SDR displays that do not implement the Rec. 2020 color standards. It doesn't use metadata and is royalty free.
+
+
+JSON - [CLICK TO EXPAND]
+{
+ "trash_id": "9364dd386c9b4a1100dde8264690add7",
+ "trash_score": "850",
+ "name": "HLG",
+ "includeCustomFormatWhenRenaming": false,
+ "specifications": [
+ {
+ "name": "HLG",
+ "implementation": "ReleaseTitleSpecification",
+ "negate": false,
+ "required": true,
+ "fields": {
+ "value": "\\b(HLG)\\b"
+ }
+ },
+ {
+ "name": "Not DV",
+ "implementation": "ReleaseTitleSpecification",
+ "negate": true,
+ "required": true,
+ "fields": {
+ "value": "\\b(dv|dovi|dolby[ .]vision)\\b"
+ }
+ },
+ {
+ "name": "Not HDR10+",
+ "implementation": "ReleaseTitleSpecification",
+ "negate": true,
+ "required": true,
+ "fields": {
+ "value": "\\bHDR10Plus|HDR10(\\b\\+)"
+ }
+ },
+ {
+ "name": "Not HDR10",
+ "implementation": "ReleaseTitleSpecification",
+ "negate": true,
+ "required": true,
+ "fields": {
+ "value": "\\bHDR10(\\b[^+|Plus])"
+ }
+ },
+ {
+ "name": "Not PQ",
+ "implementation": "ReleaseTitleSpecification",
+ "negate": true,
+ "required": true,
+ "fields": {
+ "value": "\\b(PQ)\\b"
+ }
+ }
+ ]
+}
+
+
+
+
+Movie Versions¶
+
+Hybrid¶
+
+Hybrid - [CLICK TO EXPAND]
+A hybrid release means any combination of sources (video + audio) and not a direct encode of a single source. Generally you can be sure that any hybrid that has been put together is the best quality release of a particular title.
+
+
+JSON - [CLICK TO EXPAND]
+{
+ "trash_id": "0f12c086e289cf966fa5948eac571f44",
+ "trash_score": "200",
+ "name": "Hybrid",
+ "includeCustomFormatWhenRenaming": true,
+ "specifications": [{
+ "name": "Hybrid",
+ "implementation": "ReleaseTitleSpecification",
+ "negate": false,
+ "required": true,
"fields": {
"value": "\\bhybrid(\\b|\\d)"
}
@@ -5194,13 +5704,14 @@ Advanced Audio Coding (AAC) is an audio coding standard for lossy digital audio
Remaster¶
-
+
+Remaster - [CLICK TO EXPAND]
From Wikipedia, the free encyclopedia
For the software term, see Software remastering.
Remaster (also digital remastering and digitally remastered) refers to changing the quality of the sound or of the image, or both, of previously created recordings, either audiophonic, cinematic, or videographic.
-
+
-json
+JSON - [CLICK TO EXPAND]
{
"trash_id": "570bc9ebecd92723d2d21500f4be314c",
"trash_score": "190",
@@ -5231,13 +5742,14 @@ Remaster (also digital remastering and digitally remastered) refers to changing
4K Remaster¶
-
+
+4K Remaster - [CLICK TO EXPAND]
A remastered or mastered in 4K should give you usually the best picture and audio currently for the movie. Both are just names to describe the best possible currently for the movie.
To be clear, the final digital films on the Mastered in 4K Blu-rays still only have the same 1920 x 1080 pixels of actual resolution as normal Blu-rays. But the argument goes that because these full HD files were derived from higher-resolution masters, their images will be more precise, with better colours, less noise, and enhanced sharpness and detail. Not least because the higher-resolution mastering process will provide more detail from the original print for the Blu-ray masters to draw on when going through their (hopefully…) frame-by-frame compression process.
Another important element of the Mastered in 4K discs is that they’re all mastered with ‘x.v.YCC’ colour specification. This delivers an expanded colour range closer to that contained in original source material.
-
+
-json
+JSON - [CLICK TO EXPAND]
{
"trash_id": "eca37840c13c6ef2dd0262b141a5482f",
"trash_score": "190",
@@ -5278,11 +5790,12 @@ Remaster (also digital remastering and digitally remastered) refers to changing
Criterion Collection¶
-
+
+Criterion Collection - [CLICK TO EXPAND]
The Criterion Collection, Inc. (or simply Criterion) is an American home video distribution company which focuses on licensing "important classic and contemporary films" and selling them to film aficionados.Criterion has helped to standardize characteristics of home video such as film restoration, using the letterbox format for widescreen films, and adding bonus features and commentary tracks.
-
+
-json
+JSON - [CLICK TO EXPAND]
{
"trash_id": "e0c07d59beb37348e975a930d5e50319",
"trash_score": "170",
@@ -5313,11 +5826,12 @@ Remaster (also digital remastering and digitally remastered) refers to changing
Theatrical Cut¶
-
+
+Theatrical Cut - [CLICK TO EXPAND]
The Theatrical Cut is the version of the film that was shown at cinemas.
-
+
-json
+JSON - [CLICK TO EXPAND]
{
"trash_id": "e9001909a4c88013a359d0b9920d7bea",
"name": "Theatrical Cut",
@@ -5337,15 +5851,16 @@ Remaster (also digital remastering and digitally remastered) refers to changing
Special Edition¶
-
+
+Special Edition - [CLICK TO EXPAND]
Custom format for several Special Editions
- The Director's Cut is the version edited by the Director, usually for additional home media releases.
- An Extended Cut is usually any version of the film which is longer than the theatrical cut (though in very rare cases, its shorter).
-
+
-json
+JSON - [CLICK TO EXPAND]
{
"trash_id": "957d0f44b592285f26449575e8b1167e",
"trash_score": "180",
@@ -5376,11 +5891,12 @@ Remaster (also digital remastering and digitally remastered) refers to changing
IMAX¶
-
+
+IMAX - [CLICK TO EXPAND]
Description placeholder
-
+
-json
+JSON - [CLICK TO EXPAND]
{
"trash_id": "eecf3a857724171f968a66cb5719e152",
"trash_score": "190",
@@ -5405,10 +5921,10 @@ Remaster (also digital remastering and digitally remastered) refers to changing
Misc (-10000)¶
BR-DISK¶
-
+
+BR-DISK - [CLICK TO EXPAND]
This is a custom format to help Radarr recognize & ignore BR-DISK (ISO's and Blu-ray folder structure) in addition to the standard BR-DISK quality.
You will need to add the following to your new Custom Format when created in your Quality Profile (Setting
=> Profiles
) and then set the score to -1000
or even -10000
-
Note
Depending on your renaming scheme it could happen that Radarr will match renamed files after they are downloaded and imported as BR-DISK
,
@@ -5417,11 +5933,12 @@ being that this Custom Format is used to not download BR-DISK it does its purpos
Several reasons why this is happening:
- Blame the often wrongly used naming of x265 encodes.
-- Radarr v3 uses dynamic custom formats.
+- Radarr v3/v4 uses dynamic custom formats.
+
-json
+JSON - [CLICK TO EXPAND]
{
"trash_id": "ed38b889b31be83fda192888e2286d83",
"trash_score": "-10000",
@@ -5453,12 +5970,13 @@ Several reasons why this is happening:
EVO (no WEBDL)¶
-
+
+EVO (no WEBDL) - [CLICK TO EXPAND]
This group is often banned for the low quality Blu-ray releases, but their WEB-DL are okay.
You will need to add the following to your new Custom Format when created in your Quality Profile (Setting
=> Profiles
) and then set the score to -1000
or even -10000
-
+
-json
+JSON - [CLICK TO EXPAND]
{
"trash_id": "90cedc1fea7ea5d11298bebd3d1d3223",
"trash_score": "-10000",
@@ -5500,9 +6018,9 @@ Several reasons why this is happening:
LQ¶
Low Quality Releases = LQ
-
+
+LQ - [CLICK TO EXPAND]
A collection of known Low Quality groups that are often banned from the the top trackers because the lack of quality.
-
Note
You might want to add the following also EVO (no WEBDL)
@@ -5516,8 +6034,9 @@ Several reasons why this is happening:
- RiffTrax = RiffTrax is an American company that produces scripted humorous audio commentary tracks intended to be played in unison with particular television programs and films, In short just annoying !!!
+
-json
+JSON - [CLICK TO EXPAND]
{
"trash_id": "90a6f9a284dff5103f6346090e6280c8",
"trash_score": "-10000",
@@ -5595,10 +6114,10 @@ Several reasons why this is happening:
x265 (720/1080p)¶
720/1080p no x265 = x265 (720/1080p)
-
+
+720/1080p no x265 - [CLICK TO EXPAND]
This blocks/ignores 720/1080p releases that are encoded in x265
You will need to add the following to your new Custom Format when created in your Quality Profile (Setting
=> Profiles
) and then set the score to -1000
or even -10000
-
Quote
@@ -5625,8 +6144,9 @@ It's all really dependent on specific situations for different people
- 2160p/4k => x265
+
-json
+JSON - [CLICK TO EXPAND]
{
"trash_id": "dc98083864ea246d05a42df0d05f81cc",
"trash_score": "-10000",
@@ -5676,12 +6196,13 @@ It's all really dependent on specific situations for different people
3D¶
-
+
+3D - [CLICK TO EXPAND]
If you prefer or not prefer 3D.
You can use Custom Format or use Restrictions (Settings
=> Indexers
=> Restrictions
) what ever you prefer.
-
+
-json
+JSON - [CLICK TO EXPAND]
{
"trash_id": "b8cd450cbfa689c0259a01d9e29ba3d6",
"trash_score": "-10000",
@@ -5702,16 +6223,17 @@ It's all really dependent on specific situations for different people
No-RlsGroup¶
-
+
+No-RlsGroup - [CLICK TO EXPAND]
Some indexers strip out the release group what could result in LQ groups getting a higher score.
For example a lot of EVO releases end up stripping the group name, so they appear as "upgrades", and they end up getting a decent score if other things match
-
Warning
If you don't use a decent filenames like not adding release groups don't add this Custom Format, except if you want to upgrade them.
+
-json
+JSON - [CLICK TO EXPAND]
{
"trash_id": "ae9b7c9ebde1f3bd336a8cbd1ec4c5e5",
"trash_score": "-10000",
@@ -5743,11 +6265,12 @@ For example a lot of EVO releases end up stripping the group name, so they appea
Obfuscated¶
-
+
+Obfuscated - [CLICK TO EXPAND]
Optional (use these only if you dislike renamed and retagged releases)
-
+
-json
+JSON - [CLICK TO EXPAND]
{
"trash_id": "7357cf5161efbf8c4d5d0c30b4815ee2",
"trash_score": "-10000",
@@ -5779,18 +6302,20 @@ For example a lot of EVO releases end up stripping the group name, so they appea
DoVi (WEBDL)¶
-Dolby Vision = DoVi
-
-This is a special Custom Format that ignores DV for WEB-DL but together with the normal DoVi allows for other sources.
-WEB-DL from Streaming Services don't have the fallback to HDR(10), What can results in weird playback issues like weird colors if you want to play it on a not DoVi compatible setup.
-Remuxes and Bluray have a fallback to HDR(10).
-
+Dolby Vision = DoVi = DV
+
+DV (WEBDL) - [CLICK TO EXPAND]
+This is a special Custom Format that Block WEBDL with Dolby Vision but without HDR10 fallback.
+This Custom Format works together with the normal DV Custom Format that you can use to prefer Dolby Vision.
+Most WEBDL from Streaming Services don't have the fallback to HDR10, What can results in playback issues like weird colors if you want to play it on a not Dolby Vision compatible setup.
+Remuxes and Bluray have a fallback to HDR10.
+
-json
+JSON - [CLICK TO EXPAND]
{
"trash_id": "923b6abef9b17f937fab56cfcf89e1f1",
"trash_score": "-10000",
- "name": "DoVi (WEBDL)",
+ "name": "DV (WEBDL)",
"includeCustomFormatWhenRenaming": false,
"specifications": [
{
@@ -5819,6 +6344,24 @@ Remuxes and Bluray have a fallback to HDR(10).
"fields": {
"value": 8
}
+ },
+ {
+ "name": "Group Exceptions",
+ "implementation": "ReleaseTitleSpecification",
+ "negate": true,
+ "required": true,
+ "fields": {
+ "value": "\\b(SIC|HULU)\\b"
+ }
+ },
+ {
+ "name": "DV HDR10",
+ "implementation": "ReleaseTitleSpecification",
+ "negate": true,
+ "required": true,
+ "fields": {
+ "value": "\\b(DV[ .]HDR10)\\b"
+ }
}
]
}
@@ -5830,11 +6373,12 @@ Remuxes and Bluray have a fallback to HDR(10).
HQ¶
HQ-Releases = HQ
-
+
+HQ - [CLICK TO EXPAND]
A collection of P2P groups that are known for their high quality releases.
-
+
-json
+JSON - [CLICK TO EXPAND]
{
"trash_id": "1c7d7b04b15cc53ea61204bebbcc1ee2",
"trash_score": "1700",
@@ -5911,9 +6455,8 @@ Remuxes and Bluray have a fallback to HDR(10).
Repack Proper¶
-Score [1]
-json
+JSON - [CLICK TO EXPAND]
{
"trash_id": "e7718d7a3ce595f289bfee26adc178f5",
"trash_score": "1",
@@ -5952,142 +6495,14 @@ Remuxes and Bluray have a fallback to HDR(10).
-Streaming Services¶
-
-Collection of Streaming Services
-
-
-Attention
-This CF only prefers the known streaming services and doesn't work the same way like the release profile that can be used in Sonarr to include the streaming service name in your renaming scheme when using {[Custom Formats]}
!!!
-If you want to have this option then you need to add them all separate.
-
-
-json
-{
- "trash_id": "fd7da02c647dd3f1b6757e150fffc5ff",
- "name": "Streaming Services",
- "includeCustomFormatWhenRenaming": false,
- "specifications": [{
- "name": "Amazon",
- "implementation": "ReleaseTitleSpecification",
- "negate": false,
- "required": false,
- "fields": {
- "value": "(amzn|amazon).?web.?(dl|rip)"
- }
- },
- {
- "name": "Netflix",
- "implementation": "ReleaseTitleSpecification",
- "negate": false,
- "required": false,
- "fields": {
- "value": "(nf|netflix).?web.?(dl|rip)"
- }
- },
- {
- "name": "AppleTV+",
- "implementation": "ReleaseTitleSpecification",
- "negate": false,
- "required": false,
- "fields": {
- "value": "(atvp).?web.?(dl|rip)"
- }
- },
- {
- "name": "Disney+",
- "implementation": "ReleaseTitleSpecification",
- "negate": false,
- "required": false,
- "fields": {
- "value": "(dsnp|dsny|disney).?web.?(dl|rip)"
- }
- },
- {
- "name": "DCU",
- "implementation": "ReleaseTitleSpecification",
- "negate": false,
- "required": false,
- "fields": {
- "value": "(dcu).?web.?(dl|rip)"
- }
- },
- {
- "name": "HBO Max",
- "implementation": "ReleaseTitleSpecification",
- "negate": false,
- "required": false,
- "fields": {
- "value": "(hmax).?web.?(dl|rip)"
- }
- },
- {
- "name": "HBO",
- "implementation": "ReleaseTitleSpecification",
- "negate": false,
- "required": false,
- "fields": {
- "value": "(hbo).?web.?(dl|rip)"
- }
- },
- {
- "name": "Youtube Red",
- "implementation": "ReleaseTitleSpecification",
- "negate": false,
- "required": false,
- "fields": {
- "value": "(red).?web.?(dl|rip)"
- }
- },
- {
- "name": "Quibi",
- "implementation": "ReleaseTitleSpecification",
- "negate": false,
- "required": false,
- "fields": {
- "value": "(qibi).?web.?(dl|rip)"
- }
- },
- {
- "name": "iTunes",
- "implementation": "ReleaseTitleSpecification",
- "negate": false,
- "required": false,
- "fields": {
- "value": "(it).?web.?(dl|rip)"
- }
- },
- {
- "name": "Hulu",
- "implementation": "ReleaseTitleSpecification",
- "negate": false,
- "required": false,
- "fields": {
- "value": "(hulu).?web.?(dl|rip)"
- }
- },
- {
- "name": "Peacock",
- "implementation": "ReleaseTitleSpecification",
- "negate": false,
- "required": false,
- "fields": {
- "value": "(pcok|peacock).?web.?(dl|rip)"
- }
- }
- ]
-}
-
-
-
-
x264¶
-
+
+x264 - [CLICK TO EXPAND]
x264 is a free software library and application for encoding video streams into the H.264/MPEG-4 AVC compression format, and is released under the terms of the GNU GPL.
-
If you want maximum compatibility and have much better direct play support then use x264 for 720p/1080p
+
-json
+JSON - [CLICK TO EXPAND]
{
"trash_id": "2899d84dc9372de3408e6d8cc18e9666",
"name": "x264",
@@ -6117,37 +6532,15 @@ If you want to have this option then you need to add them all separate.
x265¶
-
+
+x265 - [CLICK TO EXPAND]
x265 is a free software library and application for encoding video streams into the H.265/MPEG-H HEVC compression format, and is released under the terms of the GNU GPL.
-
-
-Quote
-x265 is good for 4k stuff or 1080p if they used the the remuxes as source.
-If the media isn't source quality/remux, then there will be a loss of quality every time.
-Also, once you go x265, typically that file is done.
-It can't be changed to something else without a huge loss of quality.
-Something like 95% of video files are x264 and have much better direct play support.
-If you have more than a couple users,
-you will notice much more transcoding.
-Just depends on your priorities.
-So basically if you are storage poor and just need to save space, use x265.
-The catch is if you want best quality x265, you need source quality files, so you still have huge file sizes.
-If you want maximum compatibility and the option to change your files to something else later,
-then x264.
-It's all really dependent on specific situations for different people
-
-Microsized & Wrong Source¶
-It's a shame that most x265 groups microsize the releases or use the x264 as source what results in low quality releases. And the few groups that do use the correct source suffer from it.
-Golden Rule¶
-That's why I created my own golden rule.
-
-- 720/1080p => x264
-- 2160p/4k => x265
-
+Please don't forget to read the following Microsized & Wrong Source
+
-json
+JSON - [CLICK TO EXPAND]
{
"trash_id": "9170d55c319f4fe40da8711ba9d8050d",
"name": "x265",
@@ -6177,15 +6570,16 @@ It's all really dependent on specific situations for different people
FreeLeech¶
-
+
+FreeLeech - [CLICK TO EXPAND]
Sometimes, torrent sites set a torrent to be freeleech. This means, that the download of this torrent will not count towards your download quota or ratio. This is really useful, if you do not have the best ratio yet.
-
Attention
Keep in mind not all trackers support this option.
+
-json
+JSON - [CLICK TO EXPAND]
{
"trash_id": "0d91270a7255a1e388fa85e959f359d8",
"trash_score": "5",
@@ -6206,11 +6600,12 @@ It's all really dependent on specific situations for different people
Dutch Groups¶
-
+
+Dutch Groups - [CLICK TO EXPAND]
If you prefer movies with also a Dutch audio track.
-
+
-json
+JSON - [CLICK TO EXPAND]
{
"trash_id": "9de657fd3d327ecf144ec73dfe3a3e9a",
"name": "Dutch Groups",
@@ -6230,8 +6625,12 @@ It's all really dependent on specific situations for different people
Anime Dual Audio¶
+
+Anime Dual Audio - [CLICK TO EXPAND]
+Description placeholder
+
-json
+JSON - [CLICK TO EXPAND]
{
"trash_id": "4a3b087eea2ce012fcc1ce319259a3be",
"name": "Anime Dual Audio",
@@ -6290,7 +6689,7 @@ It's all really dependent on specific situations for different people
MPEG2¶
-json
+JSON - [CLICK TO EXPAND]
{
"trash_id": "ff86c4326018682f817830ced463332b",
"name": "MPEG2",
@@ -6311,7 +6710,7 @@ It's all really dependent on specific situations for different people
Multi¶
-json
+JSON - [CLICK TO EXPAND]
{
"trash_id": "4b900e171accbfb172729b63323ea8ca",
"name": "Multi",
@@ -6331,11 +6730,12 @@ It's all really dependent on specific situations for different people
HQ-WEBDL¶
-
+
+HQ-WEBDL - [CLICK TO EXPAND]
A personal collection of P2P WEB-DL groups that are known for their high quality releases.
-
+
-json
+JSON - [CLICK TO EXPAND]
{
"trash_id": "26fa26253af4001701fedb56cec376dc",
"trash_score": "1700",
@@ -6376,11 +6776,12 @@ It's all really dependent on specific situations for different people
HQ-Remux¶
-
+
+HQ-Remux - [CLICK TO EXPAND]
A personal collection of P2P Remux groups that are known for their high quality releases.
-
+
-json
+JSON - [CLICK TO EXPAND]
{
"trash_id": "403f3f6266b90439cacc1e07cae4dc2d",
"trash_score": "1700",
@@ -6416,7 +6817,7 @@ It's all really dependent on specific situations for different people
Last update:
- December 26, 2021 16:08:48
+ January 7, 2022 21:57:36
diff --git a/Radarr/Radarr-recommended-naming-scheme/index.html b/Radarr/Radarr-recommended-naming-scheme/index.html
index 215cff6b2..1c5d236fb 100644
--- a/Radarr/Radarr-recommended-naming-scheme/index.html
+++ b/Radarr/Radarr-recommended-naming-scheme/index.html
@@ -527,26 +527,6 @@
Standard Movie Format
-
-
-
@@ -2064,26 +2044,6 @@
Standard Movie Format
-
-
-
@@ -2142,25 +2102,24 @@ it gets imported correctly and isn't incorrectly matched as HDTV or WEB-DL etc.<
The Tokens not available in the release won't be used/shown.
Standard Movie Format¶
-All the details¶
This naming scheme is made to be compatible with the New Plex Agent that now support IMDB and TMDB IDs in file names, if you don't need it or want it just remove [imdb-{ImdbId}]
-{Movie CleanTitle} {(Release Year)} {Edition Tags} [imdb-{ImdbId}]{[Custom Formats]}{[Quality Full]}{[MediaInfo 3D]}{[MediaInfo VideoDynamicRange]}[{Mediainfo VideoBitDepth}bit][{Mediainfo VideoCodec}]{[Mediainfo AudioCodec}{ Mediainfo AudioChannels}]{-Release Group}
+
+Starting from v4.0.0.5720, Radarr now supports recognizing Dolby Vision (DV) and High Dynamic Range (HDR) types.
+If you're using a lower version replace:
+{[MediaInfo VideoDynamicRangeType]}
with {[MediaInfo VideoDynamicRange]}
+
+{Movie CleanTitle} {(Release Year)} {Edition Tags} [imdb-{ImdbId}]{[Custom Formats]}{[Quality Full]}{[MediaInfo 3D]}{[MediaInfo VideoDynamicRangeType]}{[Mediainfo AudioCodec}{ Mediainfo AudioChannels}][{Mediainfo VideoCodec}]{-Release Group}
-RESULT:
-The Movie Title (2010) Ultimate Extended Edition [imdb-tt0066921][Surround Sound x264][Bluray-1080p Proper][3D][HDR][10bit][x264][DTS 5.1]-EVOLVE
+
+RESULTS: - [CLICK TO EXPAND]
+The Movie Title (2010) Ultimate Extended Edition [imdb-tt0066921][IMAX HYBRID][Bluray-1080p Proper][3D][DV HDR10][DTS 5.1][x264]-EVOLVE
+
If you do Anime - [CLICK TO EXPAND]
-If you do Anime you might consider to add the {MediaInfo AudioLanguages}
token to your naming scheme.
-{Movie CleanTitle} {(Release Year)} {Edition Tags} [imdb-{ImdbId}]{[Custom Formats]}{[Quality Full]}{[MediaInfo 3D]}{[MediaInfo VideoDynamicRange]}[{Mediainfo VideoBitDepth}bit][{Mediainfo VideoCodec}]{[Mediainfo AudioCodec}{ Mediainfo AudioChannels}]{MediaInfo AudioLanguages}{-Release Group}
+{Movie CleanTitle} {(Release Year)} {Edition Tags} [imdb-{ImdbId}]{[Custom Formats]}{[Quality Full]}{[MediaInfo 3D]}{[MediaInfo VideoDynamicRangeType]}{[Mediainfo AudioCodec}{ Mediainfo AudioChannels}]{MediaInfo AudioLanguages}[{Mediainfo VideoCodec}]{-Release Group}
-Minimal details + the irreplaceable data¶
-This naming scheme is made to be compatible with the New Plex Agent that now support IMDB and TMDB IDs in file names, if you don't need it or want it just remove [imdb-{ImdbId}]
-{Movie CleanTitle} {(Release Year)} [imdb-{ImdbId}]{[Quality Full]}{[MediaInfo AudioCodec}{ MediaInfo AudioChannels]}{[MediaInfo VideoDynamicRange]}{[MediaInfo VideoCodec]}{-Release Group}
-
-RESULT:
-The Movie Title (2010) [imdb-tt0066921][Bluray-1080p Proper][DTS 5.1][HDR][x264]-EVOLVE
-
+
The officially supported format is {imdb-{ImdbId}}
but plex also support (imdb-{ImdbId})
or [imdb-{ImdbId}]
what you can read here, though the above should work for now. IMDb IDs are going to be very accurate and rarely change, but they may be missing for some movies added to Radarr. TMDB IDs, on the other hand, do change or are removed more frequently, but Radarr will always have this ID for each movie.
@@ -2207,7 +2166,7 @@ it gets imported correctly and isn't incorrectly matched as HDTV or WEB-DL etc.<
Last update:
- December 26, 2021 16:08:48
+ January 6, 2022 21:37:34
diff --git a/Sonarr/Sonarr-Release-Profile-RegEx/index.html b/Sonarr/Sonarr-Release-Profile-RegEx/index.html
index 5d9f12bbe..375dd2b58 100644
--- a/Sonarr/Sonarr-Release-Profile-RegEx/index.html
+++ b/Sonarr/Sonarr-Release-Profile-RegEx/index.html
@@ -2650,10 +2650,10 @@ create a new release profile specific for .su that uses the Optional Ignore DoVi for WEBDL¶
WHY ? - [CLICK TO EXPAND]
-This is a RegEx that ignores DV for WEB-DL but allows for other sources. WEB-DL from Streaming Services don't have the fallback to HDR(10), What can results in weird playback issues like weird colors if you want to play it on a not DoVi compatible setup. Remuxes and Bluray have a fallback to HDR(10).
+This is a RegEx that ignores DV that don't have the fallback to HDR10, What can results in playback issues like weird colors if you want to play it on a not Dolby Vision compatible setup.
Add this to your Must not contain (2)
-/(?=.*\b(dv|dovi|dolby[ .]vision)\b)(?=.*(WEB[-_. ]?(DL|RIP)|\bWEB\b))/i
+/^(?!.*(HDR|HULU))(?=.*\b(DV|Dovi|Dolby[- .]Vision)\b).*/i
Optional Ignore the group -scene¶
@@ -2734,7 +2734,7 @@ create a new release profile specific for .su that uses the December 28, 2021 20:48:12
+ January 7, 2022 22:28:19
diff --git a/Sonarr/Sonarr-recommended-naming-scheme/index.html b/Sonarr/Sonarr-recommended-naming-scheme/index.html
index 14e5736af..4b1aed3b9 100644
--- a/Sonarr/Sonarr-recommended-naming-scheme/index.html
+++ b/Sonarr/Sonarr-recommended-naming-scheme/index.html
@@ -2170,75 +2170,38 @@ it gets imported correctly and isn't incorrectly matched as HDTV or WEB-DL etc.<
The Tokens not available in the release won't be used/shown.
Standard Episode Format¶
-
-All the details
-
-{Series TitleYear} - S{season:00}E{episode:00} - {Episode CleanTitle} [{Preferred Words }{Quality Full}]{[MediaInfo VideoDynamicRange]}[{MediaInfo VideoBitDepth}bit]{[MediaInfo VideoCodec]}{[Mediainfo AudioCodec}{ Mediainfo AudioChannels]}{MediaInfo AudioLanguages}{-Release Group}
-
-
-RESULTS:
-Single Episode:
-The Series Title! (2010) - S01E01 - Episode Title 1 [AMZN WEBDL-1080p Proper][HDR][10bit][x264][DTS 5.1]-RlsGrp
-Multi Episode:
-The Series Title! (2010) - S01E01-E02-E03 - Episode Title [AMZN WEBDL-1080p Proper][HDR][10bit][x264][DTS 5.1]-RlsGrp
-
-
-Minimal details + the irreplaceable data
-
-{Series Title} S{season:00}E{episode:00} {[Quality Title]}{[MediaInfo AudioCodec}{ MediaInfo AudioChannels]}{[MediaInfo VideoCodec]}{-Release Group}
+
+Starting from v3.0.6.1431, Sonarr now supports recognizing Dolby Vision (DV) and High Dynamic Range (HDR) types.
+If you're using a lower version replace:
+{[MediaInfo VideoDynamicRangeType]}
with {[MediaInfo VideoDynamicRange]}
+
+{Series TitleYear} - S{season:00}E{episode:00} - {Episode CleanTitle} [{Preferred Words }{Quality Full}]{[MediaInfo VideoDynamicRangeType]}{[Mediainfo AudioCodec}{ Mediainfo AudioChannels]}{MediaInfo AudioLanguages}{[MediaInfo VideoCodec]}{-Release Group}
-RESULTS:
+RESULTS: - [CLICK TO EXPAND]
Single Episode:
-The Series Title! S01E01 [HDTV-720p][DTS 5.1][x264]-RlsGrp
+The Series Title! (2010) - S01E01 - Episode Title 1 [AMZN WEBDL-1080p Proper][DV HDR10][DTS 5.1][x264]-RlsGrp
Multi Episode:
-The Series Title! S01E01-E02-E03 [HDTV-720p][DTS 5.1][x264]-RlsGrp
+The Series Title! (2010) - S01E01-E02-E03 - Episode Title [AMZN WEBDL-1080p Proper][DV HDR10][DTS 5.1][x264]-RlsGrp
Daily Episode Format¶
-
-All the details
-
-{Series TitleYear} - {Air-Date} - {Episode CleanTitle} [{Preferred Words }{Quality Full}]{[MediaInfo VideoDynamicRange]}[{MediaInfo VideoBitDepth}bit]{[MediaInfo VideoCodec]}{[Mediainfo AudioCodec}{ Mediainfo AudioChannels]}{MediaInfo AudioLanguages}{-Release Group}
-
-
-RESULTS:
-The Series Title! (2010) - 2013-10-30 - Episode Title 1 [AMZN WEBDL-1080p Proper][HDR][10bit][x264][DTS 5.1]-RlsGrp
-
-
-Minimal details + the irreplaceable data
-
-{Series Title} - {Air-Date} - {Episode CleanTitle} {[Quality Title]}{[MediaInfo AudioCodec}{ MediaInfo AudioChannels]}{[MediaInfo VideoCodec]}{-Release Group}
+{Series TitleYear} - {Air-Date} - {Episode CleanTitle} [{Preferred Words }{Quality Full}]{[MediaInfo VideoDynamicRangeType]}{[Mediainfo AudioCodec}{ Mediainfo AudioChannels]}{MediaInfo AudioLanguages}{[MediaInfo VideoCodec]}{-Release Group}
-RESULTS:
-The Series Title! - 2013-10-30 - Episode Title 1 [HDTV-720p][DTS 5.1][x264]-RlsGrp
+RESULTS: - [CLICK TO EXPAND]
+The Series Title! (2010) - 2013-10-30 - Episode Title 1 [AMZN WEBDL-1080p Proper][DV HDR10][DTS 5.1][x264]-RlsGrp
Anime Episode Format¶
-
-All the details
-
-{Series TitleYear} - S{season:00}E{episode:00} - {absolute:000} - {Episode CleanTitle} [{Preferred Words }{Quality Full}]{[MediaInfo VideoDynamicRange]}[{MediaInfo VideoBitDepth}bit]{[MediaInfo VideoCodec]}[{Mediainfo AudioCodec} { Mediainfo AudioChannels}]{MediaInfo AudioLanguages}{-Release Group}
-
-
-RESULTS:
-Single Episode:
-The Series Title! (2010) - S01E01 - 001 - Episode Title 1 [iNTERNAL HDTV-720p v2][HDR][10bit][x264][DTS 5.1][JA]-RlsGrp
-Multi Episode:
-The Series Title! (2010) - S01E01-E02-E03 - 001-002-003 - Episode Title [iNTERNAL HDTV-720p v2][HDR][10bit][x264][DTS 5.1][JA]-RlsGrp
-
-
-Minimal details + the irreplaceable data
-
-{Series Title} - S{season:00}E{episode:00} - {absolute:000} - {[Quality Title]}[{Mediainfo AudioCodec} { Mediainfo AudioChannels}]{[MediaInfo VideoCodec]}{-Release Group}
+{Series TitleYear} - S{season:00}E{episode:00} - {absolute:000} - {Episode CleanTitle} [{Preferred Words }{Quality Full}]{[MediaInfo VideoDynamicRangeType]}[{MediaInfo VideoBitDepth}bit]{[MediaInfo VideoCodec]}[{Mediainfo AudioCodec} { Mediainfo AudioChannels}]{MediaInfo AudioLanguages}{-Release Group}
-RESULTS:
+RESULTS: - [CLICK TO EXPAND]
Single Episode:
-The Series Title! - S01E01 - 001 - [HDTV-720p][DTS 5.1][x264]-RlsGrp
+The Series Title! (2010) - S01E01 - 001 - Episode Title 1 [iNTERNAL HDTV-720p v2][HDR10][10bit][x264][DTS 5.1][JA]-RlsGrp
Multi Episode:
-The Series Title! - S01E01-E02-E03 - 001-002-003 - [HDTV-720p][DTS 5.1][x264]-RlsGrp
+The Series Title! (2010) - S01E01-E02-E03 - 001-002-003 - Episode Title [iNTERNAL HDTV-720p v2][HDR10][10bit][x264][DTS 5.1][JA]-RlsGrp
Series Folder Format¶
@@ -2301,7 +2264,7 @@ it gets imported correctly and isn't incorrectly matched as HDTV or WEB-DL etc.<
Last update:
- December 26, 2021 16:08:48
+ January 6, 2022 21:37:42
diff --git a/json/radarr/dovi-sl.json b/json/radarr/dovi-sl.json
deleted file mode 100644
index 6bad941e0..000000000
--- a/json/radarr/dovi-sl.json
+++ /dev/null
@@ -1,25 +0,0 @@
-{
- "trash_id": "462c511637953269a9053d1ed1ffc3a5",
- "trash_score": "950",
- "name": "DoVi (SL)",
- "includeCustomFormatWhenRenaming": true,
- "specifications": [{
- "name": "Dolby Vision (Single Layer)",
- "implementation": "ReleaseTitleSpecification",
- "negate": false,
- "required": true,
- "fields": {
- "value": "\\b(sl[ .]dv|single[ .]layer[ .]dovi)\\b"
- }
- },
- {
- "name": "Remux",
- "implementation": "QualityModifierSpecification",
- "negate": false,
- "required": true,
- "fields": {
- "value": 5
- }
- }
- ]
-}
\ No newline at end of file
diff --git a/json/radarr/dovi.json b/json/radarr/dovi.json
deleted file mode 100644
index 024c14fcb..000000000
--- a/json/radarr/dovi.json
+++ /dev/null
@@ -1,26 +0,0 @@
-{
- "trash_id": "5d96ce331b98e077abb8ceb60553aa16",
- "trash_score": "1000",
- "name": "DoVi",
- "includeCustomFormatWhenRenaming": true,
- "specifications": [
- {
- "name": "Dolby Vision",
- "implementation": "ReleaseTitleSpecification",
- "negate": false,
- "required": true,
- "fields": {
- "value": "\\b(dv|dovi|dolby[ .]vision)\\b"
- }
- },
- {
- "name": "DoVi-SL: Dolby Vision (Single Layer)",
- "implementation": "ReleaseTitleSpecification",
- "negate": true,
- "required": true,
- "fields": {
- "value": "\\b(sl[ .]dv|single[ .]layer[ .]dovi)\\b"
- }
- }
- ]
-}
\ No newline at end of file
diff --git a/json/radarr/dv-hdr10.json b/json/radarr/dv-hdr10.json
new file mode 100644
index 000000000..f7054e06f
--- /dev/null
+++ b/json/radarr/dv-hdr10.json
@@ -0,0 +1,35 @@
+{
+ "trash_id": "e23edd2482476e595fb990b12e7c609c",
+ "trash_score": "1100",
+ "name": "DV HDR10",
+ "includeCustomFormatWhenRenaming": false,
+ "specifications": [
+ {
+ "name": "DV HDR10",
+ "implementation": "ReleaseTitleSpecification",
+ "negate": false,
+ "required": true,
+ "fields": {
+ "value": "\\b(DV[ .]HDR10)\\b"
+ }
+ },
+ {
+ "name": "Not DV HLG",
+ "implementation": "ReleaseTitleSpecification",
+ "negate": true,
+ "required": true,
+ "fields": {
+ "value": "\\b(DV[ ]HLG)\\b"
+ }
+ },
+ {
+ "name": "Not DV SDR",
+ "implementation": "ReleaseTitleSpecification",
+ "negate": true,
+ "required": true,
+ "fields": {
+ "value": "\\b(DV[ ]SDR)\\b"
+ }
+ }
+ ]
+}
\ No newline at end of file
diff --git a/json/radarr/dv-hlg.json b/json/radarr/dv-hlg.json
new file mode 100644
index 000000000..f047ba6dd
--- /dev/null
+++ b/json/radarr/dv-hlg.json
@@ -0,0 +1,35 @@
+{
+ "trash_id": "55d53828b9d81cbe20b02efd00aa0efd",
+ "trash_score": "1000",
+ "name": "DV HLG",
+ "includeCustomFormatWhenRenaming": false,
+ "specifications": [
+ {
+ "name": "DV HLG",
+ "implementation": "ReleaseTitleSpecification",
+ "negate": false,
+ "required": true,
+ "fields": {
+ "value": "\\b(DV[ ]HLG)\\b"
+ }
+ },
+ {
+ "name": "not DV HDR10",
+ "implementation": "ReleaseTitleSpecification",
+ "negate": true,
+ "required": true,
+ "fields": {
+ "value": "\\b(DV[ .]HDR10)\\b"
+ }
+ },
+ {
+ "name": "Not DV SDR",
+ "implementation": "ReleaseTitleSpecification",
+ "negate": true,
+ "required": true,
+ "fields": {
+ "value": "\\b(DV[ ]SDR)\\b"
+ }
+ }
+ ]
+}
\ No newline at end of file
diff --git a/json/radarr/dv-sdr.json b/json/radarr/dv-sdr.json
new file mode 100644
index 000000000..7583d9896
--- /dev/null
+++ b/json/radarr/dv-sdr.json
@@ -0,0 +1,35 @@
+{
+ "trash_id": "a3e19f8f627608af0211acd02bf89735",
+ "trash_score": "1000",
+ "name": "DV SDR",
+ "includeCustomFormatWhenRenaming": false,
+ "specifications": [
+ {
+ "name": "DV SDR",
+ "implementation": "ReleaseTitleSpecification",
+ "negate": false,
+ "required": true,
+ "fields": {
+ "value": "\\b(DV[ ]SDR)\\b"
+ }
+ },
+ {
+ "name": "Not DV HDR10",
+ "implementation": "ReleaseTitleSpecification",
+ "negate": true,
+ "required": true,
+ "fields": {
+ "value": "\\b(DV[ .]HDR10)\\b"
+ }
+ },
+ {
+ "name": "Not DV HLG",
+ "implementation": "ReleaseTitleSpecification",
+ "negate": true,
+ "required": true,
+ "fields": {
+ "value": "\\b(DV[ ]HLG)\\b"
+ }
+ }
+ ]
+}
\ No newline at end of file
diff --git a/json/radarr/dovi-webdl.json b/json/radarr/dv-webdl.json
similarity index 62%
rename from json/radarr/dovi-webdl.json
rename to json/radarr/dv-webdl.json
index 09bc56e8e..f69ad10a9 100644
--- a/json/radarr/dovi-webdl.json
+++ b/json/radarr/dv-webdl.json
@@ -1,7 +1,7 @@
{
"trash_id": "923b6abef9b17f937fab56cfcf89e1f1",
"trash_score": "-10000",
- "name": "DoVi (WEBDL)",
+ "name": "DV (WEBDL)",
"includeCustomFormatWhenRenaming": false,
"specifications": [
{
@@ -30,6 +30,24 @@
"fields": {
"value": 8
}
+ },
+ {
+ "name": "Group Exceptions",
+ "implementation": "ReleaseTitleSpecification",
+ "negate": true,
+ "required": true,
+ "fields": {
+ "value": "\\b(SIC|HULU)\\b"
+ }
+ },
+ {
+ "name": "DV HDR10",
+ "implementation": "ReleaseTitleSpecification",
+ "negate": true,
+ "required": true,
+ "fields": {
+ "value": "\\b(DV[ .]HDR10)\\b"
+ }
}
]
}
\ No newline at end of file
diff --git a/json/radarr/dv.json b/json/radarr/dv.json
new file mode 100644
index 000000000..4c5bc42d1
--- /dev/null
+++ b/json/radarr/dv.json
@@ -0,0 +1,44 @@
+{
+ "trash_id": "58d6a88f13e2db7f5059c41047876f00",
+ "trash_score": "1000",
+ "name": "DV",
+ "includeCustomFormatWhenRenaming": false,
+ "specifications": [
+ {
+ "name": "DV",
+ "implementation": "ReleaseTitleSpecification",
+ "negate": false,
+ "required": true,
+ "fields": {
+ "value": "\\b(dv|dovi|dolby[ .]vision)\\b"
+ }
+ },
+ {
+ "name": "Not DV HDR10",
+ "implementation": "ReleaseTitleSpecification",
+ "negate": true,
+ "required": true,
+ "fields": {
+ "value": "\\b(DV[ .]HDR10)\\b"
+ }
+ },
+ {
+ "name": "Not DV HLG",
+ "implementation": "ReleaseTitleSpecification",
+ "negate": true,
+ "required": true,
+ "fields": {
+ "value": "\\b(DV[ ]HLG)\\b"
+ }
+ },
+ {
+ "name": "Not DV SDR",
+ "implementation": "ReleaseTitleSpecification",
+ "negate": true,
+ "required": true,
+ "fields": {
+ "value": "\\b(DV[ ]SDR)\\b"
+ }
+ }
+ ]
+}
\ No newline at end of file
diff --git a/json/radarr/hdr-undefined.json b/json/radarr/hdr-undefined.json
index 34e043c82..bf43a458c 100644
--- a/json/radarr/hdr-undefined.json
+++ b/json/radarr/hdr-undefined.json
@@ -23,25 +23,52 @@
}
},
{
- "name": "HDR: HDR",
+ "name": "Not DV",
"implementation": "ReleaseTitleSpecification",
"negate": true,
"required": true,
"fields": {
- "value": "\\bHDR(\\b|\\d)"
+ "value": "\\b(dv|dovi|dolby[ .]vision)\\b"
}
},
{
- "name": "DoVi: Dolby Vision",
+ "name": "Not HDR10+",
"implementation": "ReleaseTitleSpecification",
"negate": true,
"required": true,
"fields": {
- "value": "\\b(dv|dovi|dolby[ .]vision)\\b"
+ "value": "\\bHDR10Plus|HDR10(\\b\\+)"
+ }
+ },
+ {
+ "name": "Not HDR10",
+ "implementation": "ReleaseTitleSpecification",
+ "negate": true,
+ "required": true,
+ "fields": {
+ "value": "\\bHDR10(\\b[^+|Plus])"
+ }
+ },
+ {
+ "name": "Not PQ",
+ "implementation": "ReleaseTitleSpecification",
+ "negate": true,
+ "required": true,
+ "fields": {
+ "value": "\\b(PQ)\\b"
+ }
+ },
+ {
+ "name": "Not HLG",
+ "implementation": "ReleaseTitleSpecification",
+ "negate": true,
+ "required": true,
+ "fields": {
+ "value": "\\b(HLG)\\b"
}
},
{
- "name": "SDR: SDR",
+ "name": "Not SDR",
"implementation": "ReleaseTitleSpecification",
"negate": true,
"required": true,
diff --git a/json/radarr/hdr.json b/json/radarr/hdr.json
index a4672e4c1..58239b739 100644
--- a/json/radarr/hdr.json
+++ b/json/radarr/hdr.json
@@ -14,13 +14,58 @@
}
},
{
- "name": "DoVi",
+ "name": "Not DV",
"implementation": "ReleaseTitleSpecification",
"negate": true,
"required": true,
"fields": {
"value": "\\b(dv|dovi|dolby[ .]vision)\\b"
}
+ },
+ {
+ "name": "Not HDR10+",
+ "implementation": "ReleaseTitleSpecification",
+ "negate": true,
+ "required": true,
+ "fields": {
+ "value": "\\bHDR10Plus|HDR10(\\b\\+)"
+ }
+ },
+ {
+ "name": "Not HDR10",
+ "implementation": "ReleaseTitleSpecification",
+ "negate": true,
+ "required": true,
+ "fields": {
+ "value": "\\bHDR10(\\b[^+|Plus])"
+ }
+ },
+ {
+ "name": "Not PQ",
+ "implementation": "ReleaseTitleSpecification",
+ "negate": true,
+ "required": true,
+ "fields": {
+ "value": "\\b(PQ)\\b"
+ }
+ },
+ {
+ "name": "Not HLG",
+ "implementation": "ReleaseTitleSpecification",
+ "negate": true,
+ "required": true,
+ "fields": {
+ "value": "\\b(HLG)\\b"
+ }
+ },
+ {
+ "name": "Not SDR",
+ "implementation": "ReleaseTitleSpecification",
+ "negate": true,
+ "required": true,
+ "fields": {
+ "value": "\\bSDR(\\b|\\d)"
+ }
}
]
}
\ No newline at end of file
diff --git a/json/radarr/hdr10.json b/json/radarr/hdr10.json
new file mode 100644
index 000000000..df9c3a789
--- /dev/null
+++ b/json/radarr/hdr10.json
@@ -0,0 +1,62 @@
+{
+ "trash_id": "dfb86d5941bc9075d6af23b09c2aeecd",
+ "trash_score": "875",
+ "name": "HDR10",
+ "includeCustomFormatWhenRenaming": false,
+ "specifications": [
+ {
+ "name": "HDR10",
+ "implementation": "ReleaseTitleSpecification",
+ "negate": false,
+ "required": true,
+ "fields": {
+ "value": "\\bHDR10(\\b[^+|Plus])"
+ }
+ },
+ {
+ "name": "Not DV HDR10",
+ "implementation": "ReleaseTitleSpecification",
+ "negate": true,
+ "required": true,
+ "fields": {
+ "value": "\\b(DV[ .]HDR10)\\b"
+ }
+ },
+ {
+ "name": "Not HDR10+",
+ "implementation": "ReleaseTitleSpecification",
+ "negate": true,
+ "required": true,
+ "fields": {
+ "value": "\\bHDR10Plus|HDR10(\\b\\+)"
+ }
+ },
+ {
+ "name": "Not PQ",
+ "implementation": "ReleaseTitleSpecification",
+ "negate": true,
+ "required": true,
+ "fields": {
+ "value": "\\b(PQ)\\b"
+ }
+ },
+ {
+ "name": "Not HLG",
+ "implementation": "ReleaseTitleSpecification",
+ "negate": true,
+ "required": true,
+ "fields": {
+ "value": "\\b(HLG)\\b"
+ }
+ },
+ {
+ "name": "Not SDR",
+ "implementation": "ReleaseTitleSpecification",
+ "negate": true,
+ "required": true,
+ "fields": {
+ "value": "\\bSDR(\\b|\\d)"
+ }
+ }
+ ]
+}
\ No newline at end of file
diff --git a/json/radarr/hdr10plus.json b/json/radarr/hdr10plus.json
new file mode 100644
index 000000000..91e221f01
--- /dev/null
+++ b/json/radarr/hdr10plus.json
@@ -0,0 +1,62 @@
+{
+ "trash_id": "b974a6cd08c1066250f1f177d7aa1225",
+ "trash_score": "900",
+ "name": "HDR10+",
+ "includeCustomFormatWhenRenaming": false,
+ "specifications": [
+ {
+ "name": "HDR10+",
+ "implementation": "ReleaseTitleSpecification",
+ "negate": false,
+ "required": true,
+ "fields": {
+ "value": "\\bHDR10Plus|HDR10(\\b\\+)"
+ }
+ },
+ {
+ "name": "Not DV HDR10",
+ "implementation": "ReleaseTitleSpecification",
+ "negate": true,
+ "required": true,
+ "fields": {
+ "value": "\\b(DV[ .]HDR10)\\b"
+ }
+ },
+ {
+ "name": "Not HDR10",
+ "implementation": "ReleaseTitleSpecification",
+ "negate": true,
+ "required": true,
+ "fields": {
+ "value": "\\bHDR10(\\b[^+|Plus])"
+ }
+ },
+ {
+ "name": "Not PQ",
+ "implementation": "ReleaseTitleSpecification",
+ "negate": true,
+ "required": true,
+ "fields": {
+ "value": "\\b(PQ)\\b"
+ }
+ },
+ {
+ "name": "Not HLG",
+ "implementation": "ReleaseTitleSpecification",
+ "negate": true,
+ "required": true,
+ "fields": {
+ "value": "\\b(HLG)\\b"
+ }
+ },
+ {
+ "name": "Not SDR",
+ "implementation": "ReleaseTitleSpecification",
+ "negate": true,
+ "required": true,
+ "fields": {
+ "value": "\\bSDR(\\b|\\d)"
+ }
+ }
+ ]
+}
\ No newline at end of file
diff --git a/json/radarr/hlg.json b/json/radarr/hlg.json
new file mode 100644
index 000000000..319b0217b
--- /dev/null
+++ b/json/radarr/hlg.json
@@ -0,0 +1,53 @@
+{
+ "trash_id": "9364dd386c9b4a1100dde8264690add7",
+ "trash_score": "850",
+ "name": "HLG",
+ "includeCustomFormatWhenRenaming": false,
+ "specifications": [
+ {
+ "name": "HLG",
+ "implementation": "ReleaseTitleSpecification",
+ "negate": false,
+ "required": true,
+ "fields": {
+ "value": "\\b(HLG)\\b"
+ }
+ },
+ {
+ "name": "Not DV",
+ "implementation": "ReleaseTitleSpecification",
+ "negate": true,
+ "required": true,
+ "fields": {
+ "value": "\\b(dv|dovi|dolby[ .]vision)\\b"
+ }
+ },
+ {
+ "name": "Not HDR10+",
+ "implementation": "ReleaseTitleSpecification",
+ "negate": true,
+ "required": true,
+ "fields": {
+ "value": "\\bHDR10Plus|HDR10(\\b\\+)"
+ }
+ },
+ {
+ "name": "Not HDR10",
+ "implementation": "ReleaseTitleSpecification",
+ "negate": true,
+ "required": true,
+ "fields": {
+ "value": "\\bHDR10(\\b[^+|Plus])"
+ }
+ },
+ {
+ "name": "Not PQ",
+ "implementation": "ReleaseTitleSpecification",
+ "negate": true,
+ "required": true,
+ "fields": {
+ "value": "\\b(PQ)\\b"
+ }
+ }
+ ]
+}
\ No newline at end of file
diff --git a/json/radarr/pq.json b/json/radarr/pq.json
new file mode 100644
index 000000000..efffabfc8
--- /dev/null
+++ b/json/radarr/pq.json
@@ -0,0 +1,62 @@
+{
+ "trash_id": "08d6d8834ad9ec87b1dc7ec8148e7a1f",
+ "trash_score": "850",
+ "name": "PQ",
+ "includeCustomFormatWhenRenaming": false,
+ "specifications": [
+ {
+ "name": "PQ",
+ "implementation": "ReleaseTitleSpecification",
+ "negate": false,
+ "required": true,
+ "fields": {
+ "value": "\\b(PQ)\\b"
+ }
+ },
+ {
+ "name": "Not DV",
+ "implementation": "ReleaseTitleSpecification",
+ "negate": true,
+ "required": true,
+ "fields": {
+ "value": "\\b(dv|dovi|dolby[ .]vision)\\b"
+ }
+ },
+ {
+ "name": "Not HDR10+",
+ "implementation": "ReleaseTitleSpecification",
+ "negate": true,
+ "required": true,
+ "fields": {
+ "value": "\\bHDR10Plus|HDR10(\\b\\+)"
+ }
+ },
+ {
+ "name": "Not HDR10",
+ "implementation": "ReleaseTitleSpecification",
+ "negate": true,
+ "required": true,
+ "fields": {
+ "value": "\\bHDR10(\\b[^+|Plus])"
+ }
+ },
+ {
+ "name": "Not HLG",
+ "implementation": "ReleaseTitleSpecification",
+ "negate": true,
+ "required": true,
+ "fields": {
+ "value": "\\b(HLG)\\b"
+ }
+ },
+ {
+ "name": "Not SDR",
+ "implementation": "ReleaseTitleSpecification",
+ "negate": true,
+ "required": true,
+ "fields": {
+ "value": "\\bSDR(\\b|\\d)"
+ }
+ }
+ ]
+}
\ No newline at end of file
diff --git a/json/radarr/streaming-services.json b/json/radarr/streaming-services.json
deleted file mode 100644
index 201baac22..000000000
--- a/json/radarr/streaming-services.json
+++ /dev/null
@@ -1,114 +0,0 @@
-{
- "trash_id": "fd7da02c647dd3f1b6757e150fffc5ff",
- "name": "Streaming Services",
- "includeCustomFormatWhenRenaming": false,
- "specifications": [{
- "name": "Amazon",
- "implementation": "ReleaseTitleSpecification",
- "negate": false,
- "required": false,
- "fields": {
- "value": "(amzn|amazon).?web.?(dl|rip)"
- }
- },
- {
- "name": "Netflix",
- "implementation": "ReleaseTitleSpecification",
- "negate": false,
- "required": false,
- "fields": {
- "value": "(nf|netflix).?web.?(dl|rip)"
- }
- },
- {
- "name": "AppleTV+",
- "implementation": "ReleaseTitleSpecification",
- "negate": false,
- "required": false,
- "fields": {
- "value": "(atvp).?web.?(dl|rip)"
- }
- },
- {
- "name": "Disney+",
- "implementation": "ReleaseTitleSpecification",
- "negate": false,
- "required": false,
- "fields": {
- "value": "(dsnp|dsny|disney).?web.?(dl|rip)"
- }
- },
- {
- "name": "DCU",
- "implementation": "ReleaseTitleSpecification",
- "negate": false,
- "required": false,
- "fields": {
- "value": "(dcu).?web.?(dl|rip)"
- }
- },
- {
- "name": "HBO Max",
- "implementation": "ReleaseTitleSpecification",
- "negate": false,
- "required": false,
- "fields": {
- "value": "(hmax).?web.?(dl|rip)"
- }
- },
- {
- "name": "HBO",
- "implementation": "ReleaseTitleSpecification",
- "negate": false,
- "required": false,
- "fields": {
- "value": "(hbo).?web.?(dl|rip)"
- }
- },
- {
- "name": "Youtube Red",
- "implementation": "ReleaseTitleSpecification",
- "negate": false,
- "required": false,
- "fields": {
- "value": "(red).?web.?(dl|rip)"
- }
- },
- {
- "name": "Quibi",
- "implementation": "ReleaseTitleSpecification",
- "negate": false,
- "required": false,
- "fields": {
- "value": "(qibi).?web.?(dl|rip)"
- }
- },
- {
- "name": "iTunes",
- "implementation": "ReleaseTitleSpecification",
- "negate": false,
- "required": false,
- "fields": {
- "value": "(it).?web.?(dl|rip)"
- }
- },
- {
- "name": "Hulu",
- "implementation": "ReleaseTitleSpecification",
- "negate": false,
- "required": false,
- "fields": {
- "value": "(hulu).?web.?(dl|rip)"
- }
- },
- {
- "name": "Peacock",
- "implementation": "ReleaseTitleSpecification",
- "negate": false,
- "required": false,
- "fields": {
- "value": "(pcok|peacock).?web.?(dl|rip)"
- }
- }
- ]
-}
diff --git a/search/search_index.json b/search/search_index.json
index 352ba4383..9aa941dfc 100644
--- a/search/search_index.json
+++ b/search/search_index.json
@@ -1 +1 @@
-{"config":{"indexing":"full","lang":["en"],"min_search_length":3,"prebuild_index":false,"separator":"[\\s\\-]+"},"docs":[{"location":"","text":"TRaSH-Guides \u00b6 TRaSH Guides, Guides that aren't trash. Here you will find Guides mainly for Sonarr/Radarr/Bazarr and everything related to it. How this all started \u00b6 When I started using Sonarr/Radarr, I noticed that it didn't grab the releases that I actually wanted, as I'm a bit picky about which releases and what quality I prefer. So I decided to fine tune it to try to get the releases & quality I preferred. On Discord, I also noticed that others run in to the same issue so I explained them how I managed to get it solved. Being that I had to explain it often, I decided to write it down and make it public so I could easily link it to someone when they needed it. After a while I also decided to create guides for frequently asked questions, and started to collect all kind of information gathered from various sources. The guides I make I try to make them as easy as possible for everyone to understand, in my opinion pictures explain often more then just some text. Support \u00b6 If you have questions, suggestions, requests or want to contribute, Click the chat badge to join the Discord Channel where you can ask your questions directly or use the following link to open a issue on GitHub. Feel free to create a PR if you want to. DISCLAIMER \u00b6 The information I use for the guides is information I have gathered from different sources like their support forum, Reddit or Discord, provided by user input or from the development team itself. I have tested most things myself and I have tried to see if I could tune them a bit more to my needs and sometimes even for others. You use everything here at your own risk. I won't be responsible if something happens to your setup or collection! Special Thanks \u00b6 iXNyNe aka nemchik for introducing me in the world of dockers with DockSTARTer, and helping me to learn the basics for it. Roxedus for helping me with the transfer/conversion of my Github guides to MkDocs and make everything look great. rg9400 for the providing most of the Radarr v3 Custom Format Collection. Everyone who contributed to this project in anyway possible.","title":"Home"},{"location":"#trash-guides","text":"TRaSH Guides, Guides that aren't trash. Here you will find Guides mainly for Sonarr/Radarr/Bazarr and everything related to it.","title":"TRaSH-Guides"},{"location":"#how-this-all-started","text":"When I started using Sonarr/Radarr, I noticed that it didn't grab the releases that I actually wanted, as I'm a bit picky about which releases and what quality I prefer. So I decided to fine tune it to try to get the releases & quality I preferred. On Discord, I also noticed that others run in to the same issue so I explained them how I managed to get it solved. Being that I had to explain it often, I decided to write it down and make it public so I could easily link it to someone when they needed it. After a while I also decided to create guides for frequently asked questions, and started to collect all kind of information gathered from various sources. The guides I make I try to make them as easy as possible for everyone to understand, in my opinion pictures explain often more then just some text.","title":"How this all started"},{"location":"#support","text":"If you have questions, suggestions, requests or want to contribute, Click the chat badge to join the Discord Channel where you can ask your questions directly or use the following link to open a issue on GitHub. Feel free to create a PR if you want to.","title":"Support"},{"location":"#disclaimer","text":"The information I use for the guides is information I have gathered from different sources like their support forum, Reddit or Discord, provided by user input or from the development team itself. I have tested most things myself and I have tried to see if I could tune them a bit more to my needs and sometimes even for others. You use everything here at your own risk. I won't be responsible if something happens to your setup or collection!","title":"DISCLAIMER"},{"location":"#special-thanks","text":"iXNyNe aka nemchik for introducing me in the world of dockers with DockSTARTer, and helping me to learn the basics for it. Roxedus for helping me with the transfer/conversion of my Github guides to MkDocs and make everything look great. rg9400 for the providing most of the Radarr v3 Custom Format Collection. Everyone who contributed to this project in anyway possible.","title":"Special Thanks"},{"location":"thnx/","text":"Thanks for the Coffee \u00b6","title":"Thanks for the Coffee"},{"location":"thnx/#thanks-for-the-coffee","text":"","title":"Thanks for the Coffee"},{"location":"Bazarr/","text":"Bazarr \u00b6 Here you will find several scripts you can use with Bazarr Stable Bazarr Branch: master \u00b6 (stable) Builds Pushed after a testing period in development Github Branch: master Docker: hotio/bazarr:latest hotio/bazarr:latest Dev = Bazarr Branch: development \u00b6 (development) Builds pushed when complete Github Branch: development Docker: hotio/bazarr:nightly hotio/bazarr:nightly","title":"Home"},{"location":"Bazarr/#bazarr","text":"Here you will find several scripts you can use with Bazarr","title":"Bazarr"},{"location":"Bazarr/#stable-bazarr-branch-master","text":"(stable) Builds Pushed after a testing period in development Github Branch: master Docker: hotio/bazarr:latest hotio/bazarr:latest","title":"Stable Bazarr Branch: master"},{"location":"Bazarr/#dev-bazarr-branch-development","text":"(development) Builds pushed when complete Github Branch: development Docker: hotio/bazarr:nightly hotio/bazarr:nightly","title":"Dev = Bazarr Branch: development"},{"location":"Bazarr/After-install-configuration/","text":"After Install Configuration \u00b6 After you've installed everything it's best to check all of your settings, Attention Bazarr only searches for subs for Episodes and Movies that are added after the install. So you will need to set the preferred languages for your existing Shows and Movies. In this example I will show you how to do that with the series. click on Mass Edit Select all. Select your Language Profile you created earlier. Click on Save . Then go back to your Movies home screen and do the same for your Movies. If you've done it correctly you will get something that looks like the following screenshot with your preferred languages.","title":"After Install Configuration"},{"location":"Bazarr/After-install-configuration/#after-install-configuration","text":"After you've installed everything it's best to check all of your settings, Attention Bazarr only searches for subs for Episodes and Movies that are added after the install. So you will need to set the preferred languages for your existing Shows and Movies. In this example I will show you how to do that with the series. click on Mass Edit Select all. Select your Language Profile you created earlier. Click on Save . Then go back to your Movies home screen and do the same for your Movies. If you've done it correctly you will get something that looks like the following screenshot with your preferred languages.","title":"After Install Configuration"},{"location":"Bazarr/Setup-Guide/","text":"Setup Guide \u00b6 Note In this guide we will try to explain the basic setup you need to do to get started with Bazarr. For a more detailed few of all the setting check the following LINK . Before Bazarr works we need to setup and configure a few settings. After installation and starting up, you open a browser and go to http://ip_where_installed:6767 . Sonarr \u00b6 First we're going to setup Sonarr. Settings => Sonarr Use Sonarr \u00b6 Click on Enabled Enable Sonarr. Enter the hostname or the IP address of the computer running your Sonarr instance. Info Be aware that when using Bazarr in docker, you cannot reach another container on the same Docker host using the loopback address (ex.: 127.0.0.1 or localhost). Loopback address refer to the Bazarr Docker container, not the Docker host. Enter the TCP port of your Sonarr instance. Default is 8989. Sonarr uses the Base URL ONLY if used with a \"Reverse Proxy\" (ex: Nginx Proxy Manager or SWAG) and MUST have a leading slash if it is needed (ex: /sonarr). Info If you don't use a reverse proxy or don't know what it is leave this empty !!! Enter your Sonarr API key here. Enable this if your Sonarr instance is exposed through SSL. Info Not needed if you reach it with a local IP address. Click the Test button after filling in all the fields. Make sure the test is successful before you proceed. Options \u00b6 Select the minimum score (in percentage) required for a subtitles file to be downloaded. Info Are your subs often out of sync or just bad? Raise the score! Episodes from series with those tags (case sensitive) in Sonarr will be excluded from automatic download of Subtitles. In Sonarr you add a custom tag to a show, in this case the shows with these tags will be ignored by Bazarr. Episodes from series with these types in Sonarr will be excluded from automatic download of Subtitles. Options: Standard , Anime , Daily Automatic download of Subtitles will only happen for monitored shows/episodes in Sonarr. Path Mappings \u00b6 Note You should only use this section if Sonarr and Bazarr use a different path to access the same files. (for example if you run Sonarr on a different device then Bazarr or have a Synology and mix packages with Docker.) Click on Add and you will get a extra option Here you enter the path that Sonarr uses to access your shows. Here you enter the path that Bazarr uses to access your shows. Attention IF YOU GOT THE SAME VALUES ON BOTH SIDES THEN YOU DON'T NEED IT !!! IT SHOULD ALSO BE REMOVED OR ELSE YOU WILL GET A ERROR. Info If everything runs on Docker you normally don't need to use this except if you got messed up paths and then it would be smarter to fix those first to have consistent and well planned paths. Please take a look at TRaSH's Hardlink Tutorial https://trash-guides.info/hardlinks Don't forget to Save your settings !!! Radarr \u00b6 Next we're going to setup Radarr. Settings => Radarr Use Radarr \u00b6 Click on Enabled Enable Radarr. Enter the hostname or the IP address of the computer running your Sonarr instance. Info Be aware that when using Bazarr in docker, you cannot reach another container on the same Docker host using the loopback address (ex.: 127.0.0.1 or localhost). Loopback address refer to the Bazarr Docker container, not the Docker host. Enter the TCP port of your Radarr instance. Default is 7878. Radarr uses the Base URL ONLY if used with a \"Reverse Proxy\" (ex: Nginx Proxy Manager or SWAG) and MUST have a leading slash if it is needed (ex: /radarr). !!! info **If you don't use a reverse proxy or don't know what it is leave this empty !!!** Enter your Radarr API key here. Enable this if your Radarr instance is exposed through SSL. Info Not needed if you reach it with a local IP address. Click the Test button after filling in all the fields. Make sure the test is successful before you proceed. Options (Radarr) \u00b6 Select the minimum score (in percentage) required for a subtitles file to be downloaded. Info Are your subs often out of sync or just bad? Raise the score! Movies with those tags (case sensitive) in Radarr will be excluded from automatic download of Subtitles, In Radarr you add a custom tag to a movie. Automatic download of Subtitles will only happen for monitored movies in Radarr. Path Mappings (Radarr) \u00b6 Note You should only use this section if Radarr and Bazarr use a different path to access the same files. (for example if you run Radarr on a different device then Bazarr or have a Synology and mix packages with Docker.) Click on Add and you will get a extra option Here you enter the path that Radarr uses to access your movies. Here you enter the path that Bazarr uses to access your movies. Attention IF YOU GOT THE SAME VALUES ON BOTH SIDES THEN YOU DON'T NEED IT !!! IT SHOULD ALSO BE REMOVED OR ELSE YOU WILL GET A ERROR. Info If everything runs on Docker you normally don't need to use this except if you got messed up paths and then it would be smarter to fix those first to have consistent and well planned paths. Please take a look at TRaSH's Hardlink Tutorial https://trash-guides.info/hardlinks Don't forget to Save your settings !!! Languages \u00b6 Here we're going to configure which subtitle languages you prefer/want. Settings => Languages Subtitles Language \u00b6 Warning **We don't recommend enabling Single Language option unless absolutely required (ie: media player not supporting language code in subtitles filename). Results may vary. Be aware the language code (ex.: en) is not going to be included in the subtitles file name when enabling this.** Here you select which languages you want for your subtitles, you can just start typing your language name and it will show you what's available. These languages are the subtitle languages you later use for the Languages Profiles In this example I selected Dutch and English . Languages Profiles \u00b6 Select Add New Profile How you want to name your language profile. Click on Add to add the languages you enabled earlier in Subtitle Language . Select the languages you want to enable for your profile (Including the optional settings). Forced => FAQ - What are Forced Subtitles HI => Hearing Impaired Exclude Audio => Exclude if matching audio Optional select the cutoff where you want that Bazarr stops downloading other languages. Save your settings. Cutoff So you can have a profile that states: English, Dutch, German, French With cutoff Dutch, if it finds Dutch, it will download it and call it a day. If no Dutch is found it will continue searching the other languages till Dutch is found. Default Settings \u00b6 Automatic applied Languages Profiles to Series and Movies added to Bazarr after enabling this option. Don't forget to Save your settings !!! Providers \u00b6 Here we're going to select which Subtitle Providers you want to use. Settings => Providers Click on the Plus sign box. Select the subtitles providers you would like to enable. it is best to select multiple providers and create/use a account with them especially when you got a lot of wanted subtitles. Some subtitle providers requires a extra paid Anti-Captcha Service. Your enabled providers. Tip If possible don't forget to support them for their free service Don't forget to Save your settings !!! Subtitles \u00b6 Here we will configure some extra settings for your subtitles Settings => Subtitles Subtitle Options \u00b6 Where you want your subtitles it's recommended to put them AlongSide Media File . If you want to upgrade previously downloaded subtitles. How many days to go back in history to upgrade them. If you want to upgrade manually downloaded subtitles. Anti-Captcha Options \u00b6 Here you can select which Anti-Captcha provider you want to use. Why (or) do I need the Anti-Captcha ? Tip We Recommend the following provider => https://anti-captcha.com/ Performance / Optimization \u00b6 When searching for subtitles, Bazarr will search less frequently to limit call to providers. Search multiple providers at once (Don't choose this on low powered devices). If you want to use the embedded subtitles in the media files More Info Automatic Subtitles Synchronization \u00b6 Enable this option for automatic subtitles synchronization. Don't forget to Save your settings !!! Now wait till Bazarr gets all the info needed from Sonarr/Radarr. IMPORTANT \u00b6 Important Don't forget After Install Configuration !!! If you still have questions please check the Troubleshooting section in the wiki. For more info about the other settings check the Settings wiki.","title":"Basic-Guide"},{"location":"Bazarr/Setup-Guide/#setup-guide","text":"Note In this guide we will try to explain the basic setup you need to do to get started with Bazarr. For a more detailed few of all the setting check the following LINK . Before Bazarr works we need to setup and configure a few settings. After installation and starting up, you open a browser and go to http://ip_where_installed:6767 .","title":"Setup Guide"},{"location":"Bazarr/Setup-Guide/#sonarr","text":"First we're going to setup Sonarr. Settings => Sonarr","title":"Sonarr"},{"location":"Bazarr/Setup-Guide/#use-sonarr","text":"Click on Enabled Enable Sonarr. Enter the hostname or the IP address of the computer running your Sonarr instance. Info Be aware that when using Bazarr in docker, you cannot reach another container on the same Docker host using the loopback address (ex.: 127.0.0.1 or localhost). Loopback address refer to the Bazarr Docker container, not the Docker host. Enter the TCP port of your Sonarr instance. Default is 8989. Sonarr uses the Base URL ONLY if used with a \"Reverse Proxy\" (ex: Nginx Proxy Manager or SWAG) and MUST have a leading slash if it is needed (ex: /sonarr). Info If you don't use a reverse proxy or don't know what it is leave this empty !!! Enter your Sonarr API key here. Enable this if your Sonarr instance is exposed through SSL. Info Not needed if you reach it with a local IP address. Click the Test button after filling in all the fields. Make sure the test is successful before you proceed.","title":"Use Sonarr"},{"location":"Bazarr/Setup-Guide/#options","text":"Select the minimum score (in percentage) required for a subtitles file to be downloaded. Info Are your subs often out of sync or just bad? Raise the score! Episodes from series with those tags (case sensitive) in Sonarr will be excluded from automatic download of Subtitles. In Sonarr you add a custom tag to a show, in this case the shows with these tags will be ignored by Bazarr. Episodes from series with these types in Sonarr will be excluded from automatic download of Subtitles. Options: Standard , Anime , Daily Automatic download of Subtitles will only happen for monitored shows/episodes in Sonarr.","title":"Options"},{"location":"Bazarr/Setup-Guide/#path-mappings","text":"Note You should only use this section if Sonarr and Bazarr use a different path to access the same files. (for example if you run Sonarr on a different device then Bazarr or have a Synology and mix packages with Docker.) Click on Add and you will get a extra option Here you enter the path that Sonarr uses to access your shows. Here you enter the path that Bazarr uses to access your shows. Attention IF YOU GOT THE SAME VALUES ON BOTH SIDES THEN YOU DON'T NEED IT !!! IT SHOULD ALSO BE REMOVED OR ELSE YOU WILL GET A ERROR. Info If everything runs on Docker you normally don't need to use this except if you got messed up paths and then it would be smarter to fix those first to have consistent and well planned paths. Please take a look at TRaSH's Hardlink Tutorial https://trash-guides.info/hardlinks Don't forget to Save your settings !!!","title":"Path Mappings"},{"location":"Bazarr/Setup-Guide/#radarr","text":"Next we're going to setup Radarr. Settings => Radarr","title":"Radarr"},{"location":"Bazarr/Setup-Guide/#use-radarr","text":"Click on Enabled Enable Radarr. Enter the hostname or the IP address of the computer running your Sonarr instance. Info Be aware that when using Bazarr in docker, you cannot reach another container on the same Docker host using the loopback address (ex.: 127.0.0.1 or localhost). Loopback address refer to the Bazarr Docker container, not the Docker host. Enter the TCP port of your Radarr instance. Default is 7878. Radarr uses the Base URL ONLY if used with a \"Reverse Proxy\" (ex: Nginx Proxy Manager or SWAG) and MUST have a leading slash if it is needed (ex: /radarr). !!! info **If you don't use a reverse proxy or don't know what it is leave this empty !!!** Enter your Radarr API key here. Enable this if your Radarr instance is exposed through SSL. Info Not needed if you reach it with a local IP address. Click the Test button after filling in all the fields. Make sure the test is successful before you proceed.","title":"Use Radarr"},{"location":"Bazarr/Setup-Guide/#options-radarr","text":"Select the minimum score (in percentage) required for a subtitles file to be downloaded. Info Are your subs often out of sync or just bad? Raise the score! Movies with those tags (case sensitive) in Radarr will be excluded from automatic download of Subtitles, In Radarr you add a custom tag to a movie. Automatic download of Subtitles will only happen for monitored movies in Radarr.","title":"Options (Radarr)"},{"location":"Bazarr/Setup-Guide/#path-mappings-radarr","text":"Note You should only use this section if Radarr and Bazarr use a different path to access the same files. (for example if you run Radarr on a different device then Bazarr or have a Synology and mix packages with Docker.) Click on Add and you will get a extra option Here you enter the path that Radarr uses to access your movies. Here you enter the path that Bazarr uses to access your movies. Attention IF YOU GOT THE SAME VALUES ON BOTH SIDES THEN YOU DON'T NEED IT !!! IT SHOULD ALSO BE REMOVED OR ELSE YOU WILL GET A ERROR. Info If everything runs on Docker you normally don't need to use this except if you got messed up paths and then it would be smarter to fix those first to have consistent and well planned paths. Please take a look at TRaSH's Hardlink Tutorial https://trash-guides.info/hardlinks Don't forget to Save your settings !!!","title":"Path Mappings (Radarr)"},{"location":"Bazarr/Setup-Guide/#languages","text":"Here we're going to configure which subtitle languages you prefer/want. Settings => Languages","title":"Languages"},{"location":"Bazarr/Setup-Guide/#subtitles-language","text":"Warning **We don't recommend enabling Single Language option unless absolutely required (ie: media player not supporting language code in subtitles filename). Results may vary. Be aware the language code (ex.: en) is not going to be included in the subtitles file name when enabling this.** Here you select which languages you want for your subtitles, you can just start typing your language name and it will show you what's available. These languages are the subtitle languages you later use for the Languages Profiles In this example I selected Dutch and English .","title":"Subtitles Language"},{"location":"Bazarr/Setup-Guide/#languages-profiles","text":"Select Add New Profile How you want to name your language profile. Click on Add to add the languages you enabled earlier in Subtitle Language . Select the languages you want to enable for your profile (Including the optional settings). Forced => FAQ - What are Forced Subtitles HI => Hearing Impaired Exclude Audio => Exclude if matching audio Optional select the cutoff where you want that Bazarr stops downloading other languages. Save your settings. Cutoff So you can have a profile that states: English, Dutch, German, French With cutoff Dutch, if it finds Dutch, it will download it and call it a day. If no Dutch is found it will continue searching the other languages till Dutch is found.","title":"Languages Profiles"},{"location":"Bazarr/Setup-Guide/#default-settings","text":"Automatic applied Languages Profiles to Series and Movies added to Bazarr after enabling this option. Don't forget to Save your settings !!!","title":"Default Settings"},{"location":"Bazarr/Setup-Guide/#providers","text":"Here we're going to select which Subtitle Providers you want to use. Settings => Providers Click on the Plus sign box. Select the subtitles providers you would like to enable. it is best to select multiple providers and create/use a account with them especially when you got a lot of wanted subtitles. Some subtitle providers requires a extra paid Anti-Captcha Service. Your enabled providers. Tip If possible don't forget to support them for their free service Don't forget to Save your settings !!!","title":"Providers"},{"location":"Bazarr/Setup-Guide/#subtitles","text":"Here we will configure some extra settings for your subtitles Settings => Subtitles","title":"Subtitles"},{"location":"Bazarr/Setup-Guide/#subtitle-options","text":"Where you want your subtitles it's recommended to put them AlongSide Media File . If you want to upgrade previously downloaded subtitles. How many days to go back in history to upgrade them. If you want to upgrade manually downloaded subtitles.","title":"Subtitle Options"},{"location":"Bazarr/Setup-Guide/#anti-captcha-options","text":"Here you can select which Anti-Captcha provider you want to use. Why (or) do I need the Anti-Captcha ? Tip We Recommend the following provider => https://anti-captcha.com/","title":"Anti-Captcha Options"},{"location":"Bazarr/Setup-Guide/#performance-optimization","text":"When searching for subtitles, Bazarr will search less frequently to limit call to providers. Search multiple providers at once (Don't choose this on low powered devices). If you want to use the embedded subtitles in the media files More Info","title":"Performance / Optimization"},{"location":"Bazarr/Setup-Guide/#automatic-subtitles-synchronization","text":"Enable this option for automatic subtitles synchronization. Don't forget to Save your settings !!! Now wait till Bazarr gets all the info needed from Sonarr/Radarr.","title":"Automatic Subtitles Synchronization"},{"location":"Bazarr/Setup-Guide/#important","text":"Important Don't forget After Install Configuration !!! If you still have questions please check the Troubleshooting section in the wiki. For more info about the other settings check the Settings wiki.","title":"IMPORTANT"},{"location":"Bazarr/Tips/Bazarr-suggested-scoring/","text":"Suggested Scoring \u00b6 You just setup Bazarr and wonder which scoring you should use/setup for your subtitles and sync ? I'll going to suggest here a scoring what would work for most common languages, with this scoring 99% of your downloaded subs should be the correct ones for your release. Setting it to low could result in bad subs or completely out of sync and un-syncable. Setting to high could result in less subs. Sonarr Subtitle Minimum Score \u00b6 Settings => Sonarr Set the Minimum Score to 90 This score is the minimal score that the subs should match to for your release, settings this to low could result in bad subs or completely out of sync and un-syncable. Radarr Subtitle Minimum Score \u00b6 Settings => Radarr Set the Minimum Score to 80 This score is the minimal score that the subs should match to for your release, settings this to low could result in bad subs or completely out of sync and un-syncable. Synchronization Score Threshold \u00b6 Settings => Subtitles Enable Automatic Subtitles Synchronization at step 3. Enable Series Score Threshold at step 4 and set the score to 96 . 1 Enable Movies Score Threshold at step 5 and set the score to 86 . 1 This will set the Synchronization Score Threshold, meaning at which score bazarr will sync the subtitles. Info The synchronization is best effort based on the following. it use the embedded subtitles track as reference, if not present. it needs to extract the audio track and analyze it to define start of sentence markers. Questions or Suggestions? If you have questions or suggestions click the chat badge to join the Discord Support Channel where you can ask your questions directly and get live support. Why not set the Synchronization Score to max? It's kinda useless to start with why would you want to try to sync perfectly matching subs in the first place ? I personally noticed that when setting it to high 98-100 I would actually get subs that are like 1 second to slow/fast. \u21a9 \u21a9","title":"Suggested Scoring"},{"location":"Bazarr/Tips/Bazarr-suggested-scoring/#suggested-scoring","text":"You just setup Bazarr and wonder which scoring you should use/setup for your subtitles and sync ? I'll going to suggest here a scoring what would work for most common languages, with this scoring 99% of your downloaded subs should be the correct ones for your release. Setting it to low could result in bad subs or completely out of sync and un-syncable. Setting to high could result in less subs.","title":"Suggested Scoring"},{"location":"Bazarr/Tips/Bazarr-suggested-scoring/#sonarr-subtitle-minimum-score","text":"Settings => Sonarr Set the Minimum Score to 90 This score is the minimal score that the subs should match to for your release, settings this to low could result in bad subs or completely out of sync and un-syncable.","title":"Sonarr Subtitle Minimum Score"},{"location":"Bazarr/Tips/Bazarr-suggested-scoring/#radarr-subtitle-minimum-score","text":"Settings => Radarr Set the Minimum Score to 80 This score is the minimal score that the subs should match to for your release, settings this to low could result in bad subs or completely out of sync and un-syncable.","title":"Radarr Subtitle Minimum Score"},{"location":"Bazarr/Tips/Bazarr-suggested-scoring/#synchronization-score-threshold","text":"Settings => Subtitles Enable Automatic Subtitles Synchronization at step 3. Enable Series Score Threshold at step 4 and set the score to 96 . 1 Enable Movies Score Threshold at step 5 and set the score to 86 . 1 This will set the Synchronization Score Threshold, meaning at which score bazarr will sync the subtitles. Info The synchronization is best effort based on the following. it use the embedded subtitles track as reference, if not present. it needs to extract the audio track and analyze it to define start of sentence markers. Questions or Suggestions? If you have questions or suggestions click the chat badge to join the Discord Support Channel where you can ask your questions directly and get live support. Why not set the Synchronization Score to max? It's kinda useless to start with why would you want to try to sync perfectly matching subs in the first place ? I personally noticed that when setting it to high 98-100 I would actually get subs that are like 1 second to slow/fast. \u21a9 \u21a9","title":"Synchronization Score Threshold"},{"location":"Bazarr/scripts/","text":"Bazarr Scripts \u00b6 Here you will find a collection of Script you an use with Bazarr. Most of them are provided by other users, if you got a script you want to share don't hesitate to create a PR for it 2 to 3 language code \u00b6 2 to 3 language code Title: 2to3_language_code.sh Author(s): ??? Changes the 2 iso code to 3 iso code. Script #!/bin/bash mv \"{{subtitles}}\" \"{{directory}}/{{episode_name}}.{{subtitles_language_code3}}.srt\" exit","title":"Bazarr Scripts"},{"location":"Bazarr/scripts/#bazarr-scripts","text":"Here you will find a collection of Script you an use with Bazarr. Most of them are provided by other users, if you got a script you want to share don't hesitate to create a PR for it","title":"Bazarr Scripts"},{"location":"Bazarr/scripts/#2-to-3-language-code","text":"2 to 3 language code Title: 2to3_language_code.sh Author(s): ??? Changes the 2 iso code to 3 iso code. Script #!/bin/bash mv \"{{subtitles}}\" \"{{directory}}/{{episode_name}}.{{subtitles_language_code3}}.srt\" exit","title":"2 to 3 language code"},{"location":"Downloaders/","text":"Download Clients \u00b6 Here you will find Guides for several Download Clients. Usenet Clients \u00b6 NZBGet SABnzbd Torrent Clients \u00b6 qBittorrent Deluge ruTorrent","title":"Home"},{"location":"Downloaders/#download-clients","text":"Here you will find Guides for several Download Clients.","title":"Download Clients"},{"location":"Downloaders/#usenet-clients","text":"NZBGet SABnzbd","title":"Usenet Clients"},{"location":"Downloaders/#torrent-clients","text":"qBittorrent Deluge ruTorrent","title":"Torrent Clients"},{"location":"Downloaders/Deluge/","text":"Deluge Placeholder \u00b6","title":"Deluge Placeholder"},{"location":"Downloaders/Deluge/#deluge-placeholder","text":"","title":"Deluge Placeholder"},{"location":"Downloaders/Deluge/Deluge-Basic-Setup/","text":"Deluge - Basic Setup \u00b6 This basic example is based on the use of docker images Keep in mind the path are setup so it works with hardlinks and instant moves. More info HERE The default path setup suggested by some docker developers that encourages people to use mounts like /movies , /tv and /downloads is very suboptimal because it makes them look like two or three file systems, even if they aren\u2019t. It is the easiest way to get started. While easy to use, it has a major drawback. Mainly losing the ability to hardlink or instant move, resulting in a slower and more I/O intensive copy + delete is used. But you're able to change this, by not using the pre-defined/recommended paths like: /downloads => /data/downloads /movies => /data/media/movies /tv => /data/media/tv . Soon \u00b6","title":"Deluge - Basic Setup"},{"location":"Downloaders/Deluge/Deluge-Basic-Setup/#deluge-basic-setup","text":"This basic example is based on the use of docker images Keep in mind the path are setup so it works with hardlinks and instant moves. More info HERE The default path setup suggested by some docker developers that encourages people to use mounts like /movies , /tv and /downloads is very suboptimal because it makes them look like two or three file systems, even if they aren\u2019t. It is the easiest way to get started. While easy to use, it has a major drawback. Mainly losing the ability to hardlink or instant move, resulting in a slower and more I/O intensive copy + delete is used. But you're able to change this, by not using the pre-defined/recommended paths like: /downloads => /data/downloads /movies => /data/media/movies /tv => /data/media/tv .","title":"Deluge - Basic Setup"},{"location":"Downloaders/Deluge/Deluge-Basic-Setup/#soon","text":"","title":"Soon"},{"location":"Downloaders/Deluge/Deluge-how-to-add-labels/","text":"Deluge - How to add labels \u00b6 Placeholder","title":"Deluge - How to add labels"},{"location":"Downloaders/Deluge/Deluge-how-to-add-labels/#deluge-how-to-add-labels","text":"Placeholder","title":"Deluge - How to add labels"},{"location":"Downloaders/NZBGet/","text":"NZBGet \u00b6","title":"NZBGet"},{"location":"Downloaders/NZBGet/#nzbget","text":"","title":"NZBGet"},{"location":"Downloaders/NZBGet/Basic-Setup/","text":"NZBGet - Basic Setup \u00b6 This basic example is based on the use of docker images Keep in mind the path are setup so it works with hardlinks and instant moves. More info HERE The default path setup suggested by some docker developers that encourages people to use mounts like /movies , /tv and /downloads is very suboptimal because it makes them look like two or three file systems, even if they aren\u2019t. It is the easiest way to get started. While easy to use, it has a major drawback. Mainly losing the ability to hardlink or instant move, resulting in a slower and more I/O intensive copy + delete is used. But you're able to change this, by not using the pre-defined/recommended paths like: /downloads => /data/downloads /movies => /data/media/movies /tv => /data/media/tv . Some Basics \u00b6 Name Description ${MainDir} Root directory for all tasks. ${AppDir} Where NZBGet is installed. ${DestDir} Destination directory for downloaded files. PATHS \u00b6 I will only explain the so called most important paths. Name Description MainDir /data/usenet DestDir ${MainDir} (so it will go in to /data/usenet ) InterDir Files are downloaded into this directory (before unpack+par2) NzbDir Directory for incoming nzb-files. QueueDir This directory is used to save download queue, history, information statistics, etc. ScriptDir Directory with post-processing and other scripts. LogFile Where your log files will be stored (Please create a log directory in your config) NEWS-SERVERS \u00b6 Name Description Active Use this news server. Name The name is used in UI and for logging. It can be any string. Level Put your major download servers at level 0 and your fill servers at levels 1, 2, etc.. Host Host name of news server. Port Port to connect to. Password Password to use for authentication. Encryption Encrypted server connection (TLS/SSL). (preferred to use this) Connections Use the lowest possible amount of connections +1 to gain your max download speed. Retention How long the articles are stored on the news server. CATEGORIES \u00b6 Name Description Name This should match what you put in Sonarr/Radarr (tv/movies/sonarr/radarr/series/films) DestDir ${DestDir} Destination directory (/data/usenet/movies) Unpack Unpack downloaded nzb-files. Extensions List of extension scripts for this category. INCOMING NZBS \u00b6 Info AppendCategoryDir : Create subdirectory with category-name in destination-directory. DOWNLOAD QUEUE \u00b6 Caution WriteBuffer : If you're low on memory don't set this to high. LOGGING \u00b6 CHECK AND REPAIR \u00b6 UNPACK \u00b6 Info DirectUnpack : This might lower your download speed but the overall time could be faster. (disable on low powered devices) EXTENSION SCRIPTS \u00b6 Depending if you're using some NZBGet script here you can change the order or when it should be used Recommended Sonarr/Radarr Settings \u00b6 The following settings are recommended to for Sonarr/Radarr, else it could happen that Sonarr/Radarr will miss downloads that are still in the queue/history. Being that Sonarr/Radarr only looks at the last xx amount in the queue/history. Sonarr \u00b6 Sonarr Settings => Download Clients Make sure you check both boxes under Completed Download Handling at step 3. Select NZBGet at step 4 and scroll down to the bottom of the new window where it says Completed Download Handling and check both boxes. Radarr \u00b6 Radarr Settings => Download Clients Make sure you check both boxes under Completed Download Handling at step 3, and both boxes under Failed Download Handling at step 4. Questions or Suggestions? If you have questions or suggestions click the chat badge to join the Discord Support Channel where you can ask your questions directly and get live support.","title":"Basic-Setup"},{"location":"Downloaders/NZBGet/Basic-Setup/#nzbget-basic-setup","text":"This basic example is based on the use of docker images Keep in mind the path are setup so it works with hardlinks and instant moves. More info HERE The default path setup suggested by some docker developers that encourages people to use mounts like /movies , /tv and /downloads is very suboptimal because it makes them look like two or three file systems, even if they aren\u2019t. It is the easiest way to get started. While easy to use, it has a major drawback. Mainly losing the ability to hardlink or instant move, resulting in a slower and more I/O intensive copy + delete is used. But you're able to change this, by not using the pre-defined/recommended paths like: /downloads => /data/downloads /movies => /data/media/movies /tv => /data/media/tv .","title":"NZBGet - Basic Setup"},{"location":"Downloaders/NZBGet/Basic-Setup/#some-basics","text":"Name Description ${MainDir} Root directory for all tasks. ${AppDir} Where NZBGet is installed. ${DestDir} Destination directory for downloaded files.","title":"Some Basics"},{"location":"Downloaders/NZBGet/Basic-Setup/#paths","text":"I will only explain the so called most important paths. Name Description MainDir /data/usenet DestDir ${MainDir} (so it will go in to /data/usenet ) InterDir Files are downloaded into this directory (before unpack+par2) NzbDir Directory for incoming nzb-files. QueueDir This directory is used to save download queue, history, information statistics, etc. ScriptDir Directory with post-processing and other scripts. LogFile Where your log files will be stored (Please create a log directory in your config)","title":"PATHS"},{"location":"Downloaders/NZBGet/Basic-Setup/#news-servers","text":"Name Description Active Use this news server. Name The name is used in UI and for logging. It can be any string. Level Put your major download servers at level 0 and your fill servers at levels 1, 2, etc.. Host Host name of news server. Port Port to connect to. Password Password to use for authentication. Encryption Encrypted server connection (TLS/SSL). (preferred to use this) Connections Use the lowest possible amount of connections +1 to gain your max download speed. Retention How long the articles are stored on the news server.","title":"NEWS-SERVERS"},{"location":"Downloaders/NZBGet/Basic-Setup/#categories","text":"Name Description Name This should match what you put in Sonarr/Radarr (tv/movies/sonarr/radarr/series/films) DestDir ${DestDir} Destination directory (/data/usenet/movies) Unpack Unpack downloaded nzb-files. Extensions List of extension scripts for this category.","title":"CATEGORIES"},{"location":"Downloaders/NZBGet/Basic-Setup/#incoming-nzbs","text":"Info AppendCategoryDir : Create subdirectory with category-name in destination-directory.","title":"INCOMING NZBS"},{"location":"Downloaders/NZBGet/Basic-Setup/#download-queue","text":"Caution WriteBuffer : If you're low on memory don't set this to high.","title":"DOWNLOAD QUEUE"},{"location":"Downloaders/NZBGet/Basic-Setup/#logging","text":"","title":"LOGGING"},{"location":"Downloaders/NZBGet/Basic-Setup/#check-and-repair","text":"","title":"CHECK AND REPAIR"},{"location":"Downloaders/NZBGet/Basic-Setup/#unpack","text":"Info DirectUnpack : This might lower your download speed but the overall time could be faster. (disable on low powered devices)","title":"UNPACK"},{"location":"Downloaders/NZBGet/Basic-Setup/#extension-scripts","text":"Depending if you're using some NZBGet script here you can change the order or when it should be used","title":"EXTENSION SCRIPTS"},{"location":"Downloaders/NZBGet/Basic-Setup/#recommended-sonarrradarr-settings","text":"The following settings are recommended to for Sonarr/Radarr, else it could happen that Sonarr/Radarr will miss downloads that are still in the queue/history. Being that Sonarr/Radarr only looks at the last xx amount in the queue/history.","title":"Recommended Sonarr/Radarr Settings"},{"location":"Downloaders/NZBGet/Basic-Setup/#sonarr","text":"Sonarr Settings => Download Clients Make sure you check both boxes under Completed Download Handling at step 3. Select NZBGet at step 4 and scroll down to the bottom of the new window where it says Completed Download Handling and check both boxes.","title":"Sonarr"},{"location":"Downloaders/NZBGet/Basic-Setup/#radarr","text":"Radarr Settings => Download Clients Make sure you check both boxes under Completed Download Handling at step 3, and both boxes under Failed Download Handling at step 4. Questions or Suggestions? If you have questions or suggestions click the chat badge to join the Discord Support Channel where you can ask your questions directly and get live support.","title":"Radarr"},{"location":"Downloaders/NZBGet/Paths-and-Categories/","text":"NZBGet - Paths and Categories \u00b6 This basic example is based on the use of docker images Keep in mind the path are setup so it works with hardlinks and instant moves. More info HERE Info Pick one path layout and use it for all of them. It doesn't matter if you prefer to use /data , /shared , /storage or whatever. The screenshots in the examples are using the following root path /data Settings => PATHS Settings => CATEGORIES ATTENTION You set your download location in your download client Your download client ONLY downloads to your download folder/location. And you tell Radarr where you want your clean media library Radarr imports from your download location (copy/move/hardlink) to your media folder/library Plex, Emby, JellyFin or Kodi should ONLY have access to your media folder/library Your Download and Media Library should be NEVER the same locations Questions or Suggestions? If you have questions or suggestions click the chat badge to join the Discord Support Channel where you can ask your questions directly and get live support.","title":"Path and Categories"},{"location":"Downloaders/NZBGet/Paths-and-Categories/#nzbget-paths-and-categories","text":"This basic example is based on the use of docker images Keep in mind the path are setup so it works with hardlinks and instant moves. More info HERE Info Pick one path layout and use it for all of them. It doesn't matter if you prefer to use /data , /shared , /storage or whatever. The screenshots in the examples are using the following root path /data Settings => PATHS Settings => CATEGORIES ATTENTION You set your download location in your download client Your download client ONLY downloads to your download folder/location. And you tell Radarr where you want your clean media library Radarr imports from your download location (copy/move/hardlink) to your media folder/library Plex, Emby, JellyFin or Kodi should ONLY have access to your media folder/library Your Download and Media Library should be NEVER the same locations Questions or Suggestions? If you have questions or suggestions click the chat badge to join the Discord Support Channel where you can ask your questions directly and get live support.","title":"NZBGet - Paths and Categories"},{"location":"Downloaders/NZBGet/scripts/","text":"NzbGet Scripts \u00b6 Clean \u00b6 Clean NZB name Title: Clean.py Author(s): ??? Removes the following suffixes from NZB name: NZBgeek / Obfuscated / BUYMORE / Scrambled /etc... Cleans the NZB name by removing the retagged stuff (-Obfuscated, -postbox, etc). Script #!/usr/bin/env python3 # ############################################################################## ### NZBGET SCAN SCRIPT ### # Clean NZB name. # # Removes the following suffixes from NZB name: # NZBgeek / Obfuscated / BUYMORE / Scrambled. # # NOTE: This script requires Python to be installed on your system. ### NZBGET SCAN SCRIPT ### ############################################################################## from __future__ import print_function import os , re , sys # Exit codes used by NZBGet POSTPROCESS_SUCCESS = 93 POSTPROCESS_ERROR = 94 POSTPROCESS_SKIP = 95 # Check if the script is called from NZBGet 13.0 or later if not 'NZBOP_SCRIPTDIR' in os . environ : print ( '*** NZBGet post-processing script ***' ) print ( 'This script is supposed to be called from NZBGet (13.0 or later).' ) sys . exit ( POSTPROCESS_ERROR ) if not 'NZBNP_NZBNAME' in os . environ : print ( '[WARN] Filename not found in environment' ) sys . exit ( POSTPROCESS_ERROR ) fwp = os . environ [ 'NZBNP_NZBNAME' ] fwp = re . sub ( '(?i)-4P\\.nzb$' , '.nzb' , fwp ) fwp = re . sub ( '(?i)-4Planet\\.nzb$' , '.nzb' , fwp ) fwp = re . sub ( '(?i)-AsRequested\\.nzb$' , '.nzb' , fwp ) fwp = re . sub ( '(?i)-AsRequested-xpost\\.nzb$' , '.nzb' , fwp ) fwp = re . sub ( '(?i)-BUYMORE\\.nzb$' , '.nzb' , fwp ) fwp = re . sub ( '(?i)-Chamele0n\\.nzb$' , '.nzb' , fwp ) fwp = re . sub ( '(?i)-GEROV\\.nzb$' , '.nzb' , fwp ) fwp = re . sub ( '(?i)-iNC0GNiTO\\.nzb$' , '.nzb' , fwp ) fwp = re . sub ( '(?i)-NZBGeek\\.nzb$' , '.nzb' , fwp ) fwp = re . sub ( '(?i)-Obfuscated\\.nzb$' , '.nzb' , fwp ) fwp = re . sub ( '(?i)-postbot\\.nzb$' , '.nzb' , fwp ) fwp = re . sub ( '(?i)-Rakuv\\.nzb$' , '.nzb' , fwp ) fwp = re . sub ( '(?i)-Scrambled\\.nzb$' , '.nzb' , fwp ) fwp = re . sub ( '(?i)-WhiteRev\\.nzb$' , '.nzb' , fwp ) fwp = re . sub ( '(?i)-xpost\\.nzb$' , '.nzb' , fwp ) fwp = re . sub ( '(?i)\\[eztv\\]\\.nzb$' , '.nzb' , fwp ) fwp = re . sub ( '(?i)\\[TGx\\]\\.nzb$' , '.nzb' , fwp ) fwp = re . sub ( '(?i)\\[TGx\\]-xpost\\.nzb$' , '.nzb' , fwp ) fwp = re . sub ( '(?i)\\[ettv\\]\\.nzb$' , '.nzb' , fwp ) fwp = re . sub ( '(?i)-WRTEAM\\.nzb$' , '.nzb' , fwp ) fwp = re . sub ( '(?i)-CAPTCHA\\.nzb$' , '.nzb' , fwp ) fwp = re . sub ( r '(\\-[^-.\\n]*)(\\-. {4} )?\\.nzb$' , r '\\1.nzb' , fwp ) if fwp : print ( '[NZB] NZBNAME=' , fwp , sep = '' ) sys . exit ( POSTPROCESS_SUCCESS ) HashRenamer \u00b6 Renames hashed media files to match the source NZB Title: HashRenamer.py Author(s): l3uddz URL: github.com/cloudbox/cloudbox Part of the Cloudbox project: https://cloudbox.works Built on top of the NZBGet scripts template created by Clinton Hall . Released under GNU General Public License v2.0 Script #!/usr/bin/env python3 # ############################################################################## # Title: HashRenamer.py # # Author(s): l3uddz, desimaniac # # URL: https://github.com/l3uddz/nzbgetScripts # # Description: Renames hashed media files to match the source NZB. # # -- # # Part of the Cloudbox project: https://cloudbox.works # ############################################################################## ############################################################################## # Built on top of the NZBGet scripts template created by Clinton Hall # # (https://github.com/clinton-hall). # # Released under GNU General Public License v2.0 # ############################################################################## ############################################################################## ### NZBGET POST-PROCESSING SCRIPT ### # Rename files with hashes for file name # # NOTE: This script requires Python to be installed on your system. # ############################################################################## ### NZBGET POST-PROCESSING SCRIPT ### ############################################################################## import os import re import shutil import sys # NZBGet Exit Codes NZBGET_POSTPROCESS_PARCHECK = 92 NZBGET_POSTPROCESS_SUCCESS = 93 NZBGET_POSTPROCESS_ERROR = 94 NZBGET_POSTPROCESS_NONE = 95 ############################################################ # EXTENSION STUFF ############################################################ def do_check (): if 'NZBOP_SCRIPTDIR' not in os . environ : print ( \"This script can only be called from NZBGet (11.0 or later).\" ) sys . exit ( 0 ) if os . environ [ 'NZBOP_VERSION' ][ 0 : 5 ] < '11.0' : print ( \"[ERROR] NZBGet Version %s is not supported. Please update NZBGet.\" % ( str ( os . environ [ 'NZBOP_VERSION' ]))) sys . exit ( 0 ) print ( \"Script triggered from NZBGet Version %s .\" % ( str ( os . environ [ 'NZBOP_VERSION' ]))) status = 0 if 'NZBPP_TOTALSTATUS' in os . environ : if not os . environ [ 'NZBPP_TOTALSTATUS' ] == 'SUCCESS' : print ( \"[ERROR] Download failed with status %s .\" % ( os . environ [ 'NZBPP_STATUS' ])) status = 1 else : # Check par status if os . environ [ 'NZBPP_PARSTATUS' ] == '1' or os . environ [ 'NZBPP_PARSTATUS' ] == '4' : print ( \"[ERROR] Par-repair failed, setting status \\\" failed \\\" .\" ) status = 1 # Check unpack status if os . environ [ 'NZBPP_UNPACKSTATUS' ] == '1' : print ( \"[ERROR] Unpack failed, setting status \\\" failed \\\" .\" ) status = 1 if os . environ [ 'NZBPP_UNPACKSTATUS' ] == '0' and os . environ [ 'NZBPP_PARSTATUS' ] == '0' : # Unpack was skipped due to nzb-file properties or due to errors during par-check if os . environ [ 'NZBPP_HEALTH' ] < 1000 : print ( \"[ERROR] Download health is compromised and Par-check/repair disabled or no .par2 files found. \" \\ \"Setting status \\\" failed \\\" .\" ) print ( \"[ERROR] Please check your Par-check/repair settings for future downloads.\" ) status = 1 else : print ( \"[ERROR] Par-check/repair disabled or no .par2 files found, and Unpack not required. Health is \" \\ \"ok so handle as though download successful.\" ) print ( \"[WARNING] Please check your Par-check/repair settings for future downloads.\" ) # Check if destination directory exists (important for reprocessing of history items) if not os . path . isdir ( os . environ [ 'NZBPP_DIRECTORY' ]): print ( \"[ERROR] Nothing to post-process: destination directory\" , os . environ [ 'NZBPP_DIRECTORY' ], \"doesn't exist. Setting status \\\" failed \\\" .\" ) status = 1 # All checks done, now launching the script. if status == 1 : sys . exit ( NZBGET_POSTPROCESS_NONE ) def get_file_name ( path ): try : file_name = os . path . basename ( path ) extensions = re . findall ( r '\\.([^.]+)' , file_name ) ext = '.' . join ( extensions ) name = file_name . replace ( \". %s \" % ext , '' ) return name , ext except Exception : pass return None def is_file_hash ( file_name ): hash_regexp = [ r '^[a-fA-F0-9] {40} $' , r '^[a-fA-F0-9] {32} $' , r '^[a-f0-9] {128} $' , r '^[a-zA-Z0-9] {42} $' ] for hash in hash_regexp : if re . match ( hash , file_name ): return True return False def find_files ( folder , extension = None , depth = None ): file_list = [] start_count = folder . count ( os . sep ) for path , subdirs , files in os . walk ( folder , topdown = True ): for name in files : if depth and path . count ( os . sep ) - start_count >= depth : del subdirs [:] continue file = os . path . join ( path , name ) if not extension : file_list . append ( file ) else : if file . lower () . endswith ( extension . lower ()): file_list . append ( file ) return sorted ( file_list , key = lambda x : x . count ( os . path . sep ), reverse = True ) ############################################################ # MAIN ############################################################ # do checks do_check () # retrieve required variables directory = os . path . normpath ( os . environ [ 'NZBPP_DIRECTORY' ]) nzb_name = os . environ [ 'NZBPP_NZBFILENAME' ] if nzb_name is None : print ( \"[ERROR] Unable to retrieve NZBPP_NZBFILENAME\" ) sys . exit ( NZBGET_POSTPROCESS_ERROR ) nzb_name = nzb_name . replace ( '.nzb' , '' ) print (( \"[INFO] Using \\\" %s \\\" for hashed filenames\" % nzb_name )) print (( \"[INFO] Scanning \\\" %s \\\" for hashed filenames\" % directory )) # scan for files found_files = find_files ( directory ) if not found_files : print (( \"[INFO] No files were found in \\\" %s \\\" \" % directory )) sys . exit ( NZBGET_POSTPROCESS_NONE ) else : print (( \"[INFO] Found %d files to check for hashed filenames\" % len ( found_files ))) # loop files checking for file hash moved_files = 0 for found_file_path in found_files : # set variable dir_name = os . path . dirname ( found_file_path ) file_name , file_ext = get_file_name ( found_file_path ) # is this a file hash if is_file_hash ( file_name ): new_file_path = os . path . join ( dir_name , \" %s . %s \" % ( nzb_name , file_ext )) print (( \"[INFO] Moving \\\" %s \\\" to \\\" %s \\\" \" % ( found_file_path , new_file_path ))) try : shutil . move ( found_file_path , new_file_path ) moved_files += 1 except Exception : print (( \"[ERROR] Failed moving \\\" %s \\\" to \\\" %s \\\" \" % ( found_file_path , new_file_path ))) print (( \"[INFO] Finished processing \\\" %s \\\" , moved %d files\" % ( directory , moved_files ))) sys . exit ( NZBGET_POSTPROCESS_SUCCESS ) WtFnZb-Renamer \u00b6 Renames hashed media files to match the source NZB Title: WtFnZb-Renamer.py Author(s): WtFnZb URL: ?? NZBGET SCAN SCRIPT Extract filenames from subjects containing [PRiVATE]-[WtFnZb] This extensions extracts obfuscated filenames from .nzb files Script #!/usr/bin/env python3 ### NZBGET SCAN SCRIPT # Extract filenames from subjects containing [PRiVATE]-[WtFnZb] # # This extensions extracts obfuscated filenames from .nzb files # created by WtFnZb. # # Supported subject formats: # # - [PRiVATE]-[WtFnZb]-[filename]-[1/5] - \"\" yEnc 0 (1/1)\" # # - [PRiVATE]-[WtFnZb]-[5]-[1/filename] - \"\" yEnc # # # NOTE: Requires Python and lxml (sudo apt install python3-lxml python-lxml) # ### NZBGET SCAN SCRIPT import sys import os import re # Exit codes used by NZBGet POSTPROCESS_SUCCESS = 93 POSTPROCESS_NONE = 95 POSTPROCESS_ERROR = 94 try : from lxml import etree except ImportError : print ( u '[ERROR] Python lxml required. Please install with \"sudo apt install python-lxml\" or \"pip install lxml\".' ) sys . exit ( POSTPROCESS_ERROR ) patterns = ( re . compile ( r '^(?P.*\\[PRiVATE\\]-\\[WtFnZb\\]-)' r '\\[(?P\\d+)\\]-\\[(?P\\d+)\\/(?P.{3,}?)\\]' r '\\s+-\\s+\"\"\\s+yEnc\\s+' , re . MULTILINE | re . UNICODE ), re . compile ( r '^(?P.*\\[PRiVATE\\]-\\[WtFnZb\\]-)' r '\\[(?P.{3,}?)\\]-\\[(?P\\d+)/(?P\\d+)\\]' r '\\s+-\\s+\"\"\\s+yEnc\\s+' , re . MULTILINE | re . UNICODE )) nzb_dir = os . getenv ( 'NZBNP_DIRECTORY' ) nzb_filename = os . getenv ( 'NZBNP_FILENAME' ) nzb_name = os . getenv ( 'NZBNP_NZBNAME' ) nzb_file_naming = os . getenv ( 'NZBOP_FILENAMING' ) if nzb_dir is None or nzb_filename is None or nzb_name is None : print ( 'Please run as NZBGet plugin' ) sys . exit ( POSTPROCESS_ERROR ) if nzb_file_naming is not None and nzb_file_naming . lower () != 'nzb' : print ( u '[ERROR] NZBGet setting FileNaming (under Download Queue) ' u 'must be set to \"Nzb\" for this extension to work correctly, exiting.' ) sys . exit ( POSTPROCESS_ERROR ) if not os . path . exists ( nzb_dir ): print ( '[ERROR] NZB directory doesn \\' t exist, exiting' ) sys . exit ( POSTPROCESS_ERROR ) if not nzb_filename . lower () . endswith ( '.nzb' ): print ( u '[ERROR] {} is not a .nzb file.' . format ( nzb_filename )) sys . exit ( POSTPROCESS_ERROR ) nzb = os . path . join ( nzb_dir , nzb_filename ) if not os . path . exists ( nzb ): print ( '[ERROR] {nzb} doesn \\' t exist, exiting' . format ( nzb = nzb )) sys . exit ( POSTPROCESS_ERROR ) with open ( nzb , mode = 'rb' ) as infile : tree = etree . parse ( infile ) changed = False file_count = 0 totals = set () filenames = set () for f in tree . getiterator ( '{http://www.newzbin.com/DTD/2003/nzb}file' ): subject = f . get ( 'subject' ) if subject is None : print ( u '[DETAIL] No subject in , skipping' ) continue file_count += 1 result = [ re . match ( pattern , subject ) for pattern in patterns ] matched = [ m for m in result if m is not None ] if len ( matched ) == 0 : print ( u '[INFO] No pattern matching subject, exiting.' ) sys . exit ( POSTPROCESS_NONE ) elif len ( matched ) > 1 : print ( u '[ERROR] Multiple patterns matched, exiting.' ) sys . exit ( POSTPROCESS_ERROR ) else : match = matched [ 0 ] . groupdict () if match [ 'filename' ] . lower () . endswith ( '.par2' ): print ( u '[INFO] par2 exists, exiting' ) sys . exit ( POSTPROCESS_NONE ) if int ( match [ 'segment' ]) > int ( match [ 'total' ]): print ( u '[DETAIL] Segment index is greater then total, skipping' ) continue # NZBGet subject parsing changes when duplicate filenames are present # prefix duplicates to avoid that if match [ 'filename' ] in filenames : match [ 'filename' ] = u ' {} . {} ' . format ( file_count , match [ 'filename' ]) filenames . add ( match [ 'filename' ]) s = u 'WtFnZb \" {filename} \" yEnc ( {segment} / {total} )' . format ( filename = match [ 'filename' ], segment = match [ 'segment' ], total = match [ 'total' ]) print ( u '[INFO] New subject {subject} ' . format ( subject = s . encode ( 'ascii' , 'ignore' ))) f . set ( 'subject' , s ) changed = True totals . add ( int ( match [ 'total' ])) if not changed : print ( u '[WARNING] No subject changed, exiting.' ) sys . exit ( POSTPROCESS_NONE ) if len ( totals ) != 1 : print ( u '[WARNING] Mixed values for number of total segments, exiting.' ) sys . exit ( POSTPROCESS_NONE ) if totals . pop () != file_count : print ( u '[WARNING] Listed segment count does not match count, exiting.' ) sys . exit ( POSTPROCESS_NONE ) org = u ' {} .wtfnzb.original.processed' . format ( nzb ) exists_counter = 0 while os . path . exists ( org ): exists_counter += 1 org = u ' {} . {} .wtfnzb.original.processed' . format ( nzb , exists_counter ) print ( u '[INFO] Preserving original nzb as {} ' . format ( org )) os . rename ( nzb , org ) print ( u '[INFO] Writing {} ' . format ( nzb )) with open ( nzb , mode = 'wb' ) as outfile : outfile . write ( etree . tostring ( tree , xml_declaration = True , encoding = tree . docinfo . encoding , doctype = tree . docinfo . doctype )) sys . exit ( POSTPROCESS_SUCCESS ) Tip This script doesn't always work and is often needed if you use a certain indexer. It might be better to use the following Sonarr Regex in your release profile su season pack issue","title":"NzbGet Scripts"},{"location":"Downloaders/NZBGet/scripts/#nzbget-scripts","text":"","title":"NzbGet Scripts"},{"location":"Downloaders/NZBGet/scripts/#clean","text":"Clean NZB name Title: Clean.py Author(s): ??? Removes the following suffixes from NZB name: NZBgeek / Obfuscated / BUYMORE / Scrambled /etc... Cleans the NZB name by removing the retagged stuff (-Obfuscated, -postbox, etc). Script #!/usr/bin/env python3 # ############################################################################## ### NZBGET SCAN SCRIPT ### # Clean NZB name. # # Removes the following suffixes from NZB name: # NZBgeek / Obfuscated / BUYMORE / Scrambled. # # NOTE: This script requires Python to be installed on your system. ### NZBGET SCAN SCRIPT ### ############################################################################## from __future__ import print_function import os , re , sys # Exit codes used by NZBGet POSTPROCESS_SUCCESS = 93 POSTPROCESS_ERROR = 94 POSTPROCESS_SKIP = 95 # Check if the script is called from NZBGet 13.0 or later if not 'NZBOP_SCRIPTDIR' in os . environ : print ( '*** NZBGet post-processing script ***' ) print ( 'This script is supposed to be called from NZBGet (13.0 or later).' ) sys . exit ( POSTPROCESS_ERROR ) if not 'NZBNP_NZBNAME' in os . environ : print ( '[WARN] Filename not found in environment' ) sys . exit ( POSTPROCESS_ERROR ) fwp = os . environ [ 'NZBNP_NZBNAME' ] fwp = re . sub ( '(?i)-4P\\.nzb$' , '.nzb' , fwp ) fwp = re . sub ( '(?i)-4Planet\\.nzb$' , '.nzb' , fwp ) fwp = re . sub ( '(?i)-AsRequested\\.nzb$' , '.nzb' , fwp ) fwp = re . sub ( '(?i)-AsRequested-xpost\\.nzb$' , '.nzb' , fwp ) fwp = re . sub ( '(?i)-BUYMORE\\.nzb$' , '.nzb' , fwp ) fwp = re . sub ( '(?i)-Chamele0n\\.nzb$' , '.nzb' , fwp ) fwp = re . sub ( '(?i)-GEROV\\.nzb$' , '.nzb' , fwp ) fwp = re . sub ( '(?i)-iNC0GNiTO\\.nzb$' , '.nzb' , fwp ) fwp = re . sub ( '(?i)-NZBGeek\\.nzb$' , '.nzb' , fwp ) fwp = re . sub ( '(?i)-Obfuscated\\.nzb$' , '.nzb' , fwp ) fwp = re . sub ( '(?i)-postbot\\.nzb$' , '.nzb' , fwp ) fwp = re . sub ( '(?i)-Rakuv\\.nzb$' , '.nzb' , fwp ) fwp = re . sub ( '(?i)-Scrambled\\.nzb$' , '.nzb' , fwp ) fwp = re . sub ( '(?i)-WhiteRev\\.nzb$' , '.nzb' , fwp ) fwp = re . sub ( '(?i)-xpost\\.nzb$' , '.nzb' , fwp ) fwp = re . sub ( '(?i)\\[eztv\\]\\.nzb$' , '.nzb' , fwp ) fwp = re . sub ( '(?i)\\[TGx\\]\\.nzb$' , '.nzb' , fwp ) fwp = re . sub ( '(?i)\\[TGx\\]-xpost\\.nzb$' , '.nzb' , fwp ) fwp = re . sub ( '(?i)\\[ettv\\]\\.nzb$' , '.nzb' , fwp ) fwp = re . sub ( '(?i)-WRTEAM\\.nzb$' , '.nzb' , fwp ) fwp = re . sub ( '(?i)-CAPTCHA\\.nzb$' , '.nzb' , fwp ) fwp = re . sub ( r '(\\-[^-.\\n]*)(\\-. {4} )?\\.nzb$' , r '\\1.nzb' , fwp ) if fwp : print ( '[NZB] NZBNAME=' , fwp , sep = '' ) sys . exit ( POSTPROCESS_SUCCESS )","title":"Clean"},{"location":"Downloaders/NZBGet/scripts/#hashrenamer","text":"Renames hashed media files to match the source NZB Title: HashRenamer.py Author(s): l3uddz URL: github.com/cloudbox/cloudbox Part of the Cloudbox project: https://cloudbox.works Built on top of the NZBGet scripts template created by Clinton Hall . Released under GNU General Public License v2.0 Script #!/usr/bin/env python3 # ############################################################################## # Title: HashRenamer.py # # Author(s): l3uddz, desimaniac # # URL: https://github.com/l3uddz/nzbgetScripts # # Description: Renames hashed media files to match the source NZB. # # -- # # Part of the Cloudbox project: https://cloudbox.works # ############################################################################## ############################################################################## # Built on top of the NZBGet scripts template created by Clinton Hall # # (https://github.com/clinton-hall). # # Released under GNU General Public License v2.0 # ############################################################################## ############################################################################## ### NZBGET POST-PROCESSING SCRIPT ### # Rename files with hashes for file name # # NOTE: This script requires Python to be installed on your system. # ############################################################################## ### NZBGET POST-PROCESSING SCRIPT ### ############################################################################## import os import re import shutil import sys # NZBGet Exit Codes NZBGET_POSTPROCESS_PARCHECK = 92 NZBGET_POSTPROCESS_SUCCESS = 93 NZBGET_POSTPROCESS_ERROR = 94 NZBGET_POSTPROCESS_NONE = 95 ############################################################ # EXTENSION STUFF ############################################################ def do_check (): if 'NZBOP_SCRIPTDIR' not in os . environ : print ( \"This script can only be called from NZBGet (11.0 or later).\" ) sys . exit ( 0 ) if os . environ [ 'NZBOP_VERSION' ][ 0 : 5 ] < '11.0' : print ( \"[ERROR] NZBGet Version %s is not supported. Please update NZBGet.\" % ( str ( os . environ [ 'NZBOP_VERSION' ]))) sys . exit ( 0 ) print ( \"Script triggered from NZBGet Version %s .\" % ( str ( os . environ [ 'NZBOP_VERSION' ]))) status = 0 if 'NZBPP_TOTALSTATUS' in os . environ : if not os . environ [ 'NZBPP_TOTALSTATUS' ] == 'SUCCESS' : print ( \"[ERROR] Download failed with status %s .\" % ( os . environ [ 'NZBPP_STATUS' ])) status = 1 else : # Check par status if os . environ [ 'NZBPP_PARSTATUS' ] == '1' or os . environ [ 'NZBPP_PARSTATUS' ] == '4' : print ( \"[ERROR] Par-repair failed, setting status \\\" failed \\\" .\" ) status = 1 # Check unpack status if os . environ [ 'NZBPP_UNPACKSTATUS' ] == '1' : print ( \"[ERROR] Unpack failed, setting status \\\" failed \\\" .\" ) status = 1 if os . environ [ 'NZBPP_UNPACKSTATUS' ] == '0' and os . environ [ 'NZBPP_PARSTATUS' ] == '0' : # Unpack was skipped due to nzb-file properties or due to errors during par-check if os . environ [ 'NZBPP_HEALTH' ] < 1000 : print ( \"[ERROR] Download health is compromised and Par-check/repair disabled or no .par2 files found. \" \\ \"Setting status \\\" failed \\\" .\" ) print ( \"[ERROR] Please check your Par-check/repair settings for future downloads.\" ) status = 1 else : print ( \"[ERROR] Par-check/repair disabled or no .par2 files found, and Unpack not required. Health is \" \\ \"ok so handle as though download successful.\" ) print ( \"[WARNING] Please check your Par-check/repair settings for future downloads.\" ) # Check if destination directory exists (important for reprocessing of history items) if not os . path . isdir ( os . environ [ 'NZBPP_DIRECTORY' ]): print ( \"[ERROR] Nothing to post-process: destination directory\" , os . environ [ 'NZBPP_DIRECTORY' ], \"doesn't exist. Setting status \\\" failed \\\" .\" ) status = 1 # All checks done, now launching the script. if status == 1 : sys . exit ( NZBGET_POSTPROCESS_NONE ) def get_file_name ( path ): try : file_name = os . path . basename ( path ) extensions = re . findall ( r '\\.([^.]+)' , file_name ) ext = '.' . join ( extensions ) name = file_name . replace ( \". %s \" % ext , '' ) return name , ext except Exception : pass return None def is_file_hash ( file_name ): hash_regexp = [ r '^[a-fA-F0-9] {40} $' , r '^[a-fA-F0-9] {32} $' , r '^[a-f0-9] {128} $' , r '^[a-zA-Z0-9] {42} $' ] for hash in hash_regexp : if re . match ( hash , file_name ): return True return False def find_files ( folder , extension = None , depth = None ): file_list = [] start_count = folder . count ( os . sep ) for path , subdirs , files in os . walk ( folder , topdown = True ): for name in files : if depth and path . count ( os . sep ) - start_count >= depth : del subdirs [:] continue file = os . path . join ( path , name ) if not extension : file_list . append ( file ) else : if file . lower () . endswith ( extension . lower ()): file_list . append ( file ) return sorted ( file_list , key = lambda x : x . count ( os . path . sep ), reverse = True ) ############################################################ # MAIN ############################################################ # do checks do_check () # retrieve required variables directory = os . path . normpath ( os . environ [ 'NZBPP_DIRECTORY' ]) nzb_name = os . environ [ 'NZBPP_NZBFILENAME' ] if nzb_name is None : print ( \"[ERROR] Unable to retrieve NZBPP_NZBFILENAME\" ) sys . exit ( NZBGET_POSTPROCESS_ERROR ) nzb_name = nzb_name . replace ( '.nzb' , '' ) print (( \"[INFO] Using \\\" %s \\\" for hashed filenames\" % nzb_name )) print (( \"[INFO] Scanning \\\" %s \\\" for hashed filenames\" % directory )) # scan for files found_files = find_files ( directory ) if not found_files : print (( \"[INFO] No files were found in \\\" %s \\\" \" % directory )) sys . exit ( NZBGET_POSTPROCESS_NONE ) else : print (( \"[INFO] Found %d files to check for hashed filenames\" % len ( found_files ))) # loop files checking for file hash moved_files = 0 for found_file_path in found_files : # set variable dir_name = os . path . dirname ( found_file_path ) file_name , file_ext = get_file_name ( found_file_path ) # is this a file hash if is_file_hash ( file_name ): new_file_path = os . path . join ( dir_name , \" %s . %s \" % ( nzb_name , file_ext )) print (( \"[INFO] Moving \\\" %s \\\" to \\\" %s \\\" \" % ( found_file_path , new_file_path ))) try : shutil . move ( found_file_path , new_file_path ) moved_files += 1 except Exception : print (( \"[ERROR] Failed moving \\\" %s \\\" to \\\" %s \\\" \" % ( found_file_path , new_file_path ))) print (( \"[INFO] Finished processing \\\" %s \\\" , moved %d files\" % ( directory , moved_files ))) sys . exit ( NZBGET_POSTPROCESS_SUCCESS )","title":"HashRenamer"},{"location":"Downloaders/NZBGet/scripts/#wtfnzb-renamer","text":"Renames hashed media files to match the source NZB Title: WtFnZb-Renamer.py Author(s): WtFnZb URL: ?? NZBGET SCAN SCRIPT Extract filenames from subjects containing [PRiVATE]-[WtFnZb] This extensions extracts obfuscated filenames from .nzb files Script #!/usr/bin/env python3 ### NZBGET SCAN SCRIPT # Extract filenames from subjects containing [PRiVATE]-[WtFnZb] # # This extensions extracts obfuscated filenames from .nzb files # created by WtFnZb. # # Supported subject formats: # # - [PRiVATE]-[WtFnZb]-[filename]-[1/5] - \"\" yEnc 0 (1/1)\" # # - [PRiVATE]-[WtFnZb]-[5]-[1/filename] - \"\" yEnc # # # NOTE: Requires Python and lxml (sudo apt install python3-lxml python-lxml) # ### NZBGET SCAN SCRIPT import sys import os import re # Exit codes used by NZBGet POSTPROCESS_SUCCESS = 93 POSTPROCESS_NONE = 95 POSTPROCESS_ERROR = 94 try : from lxml import etree except ImportError : print ( u '[ERROR] Python lxml required. Please install with \"sudo apt install python-lxml\" or \"pip install lxml\".' ) sys . exit ( POSTPROCESS_ERROR ) patterns = ( re . compile ( r '^(?P.*\\[PRiVATE\\]-\\[WtFnZb\\]-)' r '\\[(?P\\d+)\\]-\\[(?P\\d+)\\/(?P.{3,}?)\\]' r '\\s+-\\s+\"\"\\s+yEnc\\s+' , re . MULTILINE | re . UNICODE ), re . compile ( r '^(?P.*\\[PRiVATE\\]-\\[WtFnZb\\]-)' r '\\[(?P