mirror of
https://github.com/fergalmoran/Readarr.git
synced 2025-12-22 09:29:59 +00:00
Cleanup Conflicts in Sonarr/Lidarr Pulls
Co-Authored-By: Robin Dadswell <19610103+RobinDadswell@users.noreply.github.com>
This commit is contained in:
@@ -96,7 +96,7 @@
|
|||||||
margin-left: 20px;
|
margin-left: 20px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.artistNavigationButtons {
|
.authorNavigationButtons {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
right: 0;
|
right: 0;
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ function OrganizeAuthorModalContent(props) {
|
|||||||
|
|
||||||
<ModalBody>
|
<ModalBody>
|
||||||
<Alert>
|
<Alert>
|
||||||
Tip: To preview a rename, select "Cancel", then select any artist name and use the
|
Tip: To preview a rename, select "Cancel", then select any author name and use the
|
||||||
<Icon
|
<Icon
|
||||||
className={styles.renameIcon}
|
className={styles.renameIcon}
|
||||||
name={icons.ORGANIZE}
|
name={icons.ORGANIZE}
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
.albumRow {
|
.bookRow {
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -475,7 +475,7 @@ class InteractiveImportModalContent extends Component {
|
|||||||
|
|
||||||
<SelectEditionModal
|
<SelectEditionModal
|
||||||
isOpen={selectModalOpen === EDITION}
|
isOpen={selectModalOpen === EDITION}
|
||||||
importIdsByBook={_.chain(items).filter((x) => x.album).groupBy((x) => x.book.id).mapValues((x) => x.map((y) => y.id)).value()}
|
importIdsByBook={_.chain(items).filter((x) => x.book).groupBy((x) => x.book.id).mapValues((x) => x.map((y) => y.id)).value()}
|
||||||
books={_.chain(items).filter((x) => x.book).keyBy((x) => x.book.id).mapValues((x) => ({ matchedEditionId: x.editionId, book: x.book })).values().value()}
|
books={_.chain(items).filter((x) => x.book).keyBy((x) => x.book.id).mapValues((x) => ({ matchedEditionId: x.editionId, book: x.book })).values().value()}
|
||||||
onModalClose={this.onSelectModalClose}
|
onModalClose={this.onSelectModalClose}
|
||||||
/>
|
/>
|
||||||
|
|||||||
@@ -389,7 +389,7 @@ class MediaManagement extends Component {
|
|||||||
type={inputTypes.UMASK}
|
type={inputTypes.UMASK}
|
||||||
name="chmodFolder"
|
name="chmodFolder"
|
||||||
helpText="Octal, applied during import/rename to media folders and files (without execute bits)"
|
helpText="Octal, applied during import/rename to media folders and files (without execute bits)"
|
||||||
helpTextWarning="This only works if the user running Lidarr is the owner of the file. It's better to ensure the download client sets the permissions properly."
|
helpTextWarning="This only works if the user running Readarr is the owner of the file. It's better to ensure the download client sets the permissions properly."
|
||||||
onChange={onInputChange}
|
onChange={onInputChange}
|
||||||
{...settings.chmodFolder}
|
{...settings.chmodFolder}
|
||||||
/>
|
/>
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ function findMatchingItems(ids, items) {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function createMatchingAuthorSelector() {
|
function createUnorderedMatchingAuthorSelector() {
|
||||||
return createSelector(
|
return createSelector(
|
||||||
(state, { authorIds }) => authorIds,
|
(state, { authorIds }) => authorIds,
|
||||||
createAllAuthorSelector(),
|
createAllAuthorSelector(),
|
||||||
@@ -17,13 +17,13 @@ function createMatchingAuthorSelector() {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
function createMatchingArtistSelector() {
|
function createMatchingAuthorSelector() {
|
||||||
return createSelector(
|
return createSelector(
|
||||||
createUnorderedMatchingArtistSelector(),
|
createUnorderedMatchingAuthorSelector(),
|
||||||
(artists) => {
|
(authors) => {
|
||||||
return artists.sort((artistA, artistB) => {
|
return authors.sort((authorA, authorB) => {
|
||||||
const sortNameA = artistA.sortName;
|
const sortNameA = authorA.sortName;
|
||||||
const sortNameB = artistB.sortName;
|
const sortNameB = authorB.sortName;
|
||||||
|
|
||||||
if (sortNameA > sortNameB) {
|
if (sortNameA > sortNameB) {
|
||||||
return 1;
|
return 1;
|
||||||
|
|||||||
@@ -220,9 +220,9 @@ export const actionHandlers = handleThunks({
|
|||||||
...bookFileIds.map((id) => {
|
...bookFileIds.map((id) => {
|
||||||
const props = {};
|
const props = {};
|
||||||
|
|
||||||
const trackFile = data.find((file) => file.id === id);
|
const bookFile = data.find((file) => file.id === id);
|
||||||
|
|
||||||
props.qualityCutoffNotMet = trackFile.qualityCutoffNotMet;
|
props.qualityCutoffNotMet = bookFile.qualityCutoffNotMet;
|
||||||
|
|
||||||
if (quality) {
|
if (quality) {
|
||||||
props.quality = quality;
|
props.quality = quality;
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import { createThunk, handleThunks } from 'Store/thunks';
|
|||||||
import createFetchHandler from './Creators/createFetchHandler';
|
import createFetchHandler from './Creators/createFetchHandler';
|
||||||
import createHandleActions from './Creators/createHandleActions';
|
import createHandleActions from './Creators/createHandleActions';
|
||||||
import createSetClientSideCollectionSortReducer from './Creators/Reducers/createSetClientSideCollectionSortReducer';
|
import createSetClientSideCollectionSortReducer from './Creators/Reducers/createSetClientSideCollectionSortReducer';
|
||||||
|
import createSetSettingValueReducer from './Creators/Reducers/createSetSettingValueReducer';
|
||||||
|
|
||||||
//
|
//
|
||||||
// Variables
|
// Variables
|
||||||
@@ -96,6 +97,7 @@ export const defaultState = {
|
|||||||
export const FETCH_SERIES = 'series/fetchSeries';
|
export const FETCH_SERIES = 'series/fetchSeries';
|
||||||
export const SET_SERIES_SORT = 'books/setSeriesSort';
|
export const SET_SERIES_SORT = 'books/setSeriesSort';
|
||||||
export const CLEAR_SERIES = 'series/clearSeries';
|
export const CLEAR_SERIES = 'series/clearSeries';
|
||||||
|
export const SET_SERIES_VALUE = 'books/setBookValue';
|
||||||
|
|
||||||
//
|
//
|
||||||
// Action Creators
|
// Action Creators
|
||||||
@@ -118,6 +120,8 @@ export const reducers = createHandleActions({
|
|||||||
|
|
||||||
[SET_SERIES_SORT]: createSetClientSideCollectionSortReducer(section),
|
[SET_SERIES_SORT]: createSetClientSideCollectionSortReducer(section),
|
||||||
|
|
||||||
|
[SET_SERIES_VALUE]: createSetSettingValueReducer(section),
|
||||||
|
|
||||||
[CLEAR_SERIES]: (state) => {
|
[CLEAR_SERIES]: (state) => {
|
||||||
return Object.assign({}, state, {
|
return Object.assign({}, state, {
|
||||||
isFetching: false,
|
isFetching: false,
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ module.exports = {
|
|||||||
// Modal
|
// Modal
|
||||||
modalBodyPadding: '30px',
|
modalBodyPadding: '30px',
|
||||||
|
|
||||||
// Artist
|
// Author
|
||||||
authorIndexColumnPadding: '10px',
|
authorIndexColumnPadding: '10px',
|
||||||
authorIndexColumnPaddingSmallScreen: '5px',
|
authorIndexColumnPaddingSmallScreen: '5px',
|
||||||
authorIndexOverviewInfoRowHeight: '21px'
|
authorIndexOverviewInfoRowHeight: '21px'
|
||||||
|
|||||||
@@ -44,8 +44,8 @@
|
|||||||
<!-- TV, Movies -->
|
<!-- TV, Movies -->
|
||||||
<xs:enumeration value="genre" />
|
<xs:enumeration value="genre" />
|
||||||
<!-- Music -->
|
<!-- Music -->
|
||||||
<xs:enumeration value="artist" />
|
<xs:enumeration value="author" />
|
||||||
<xs:enumeration value="album" />
|
<xs:enumeration value="book" />
|
||||||
<xs:enumeration value="publisher" />
|
<xs:enumeration value="publisher" />
|
||||||
<xs:enumeration value="tracks" />
|
<xs:enumeration value="tracks" />
|
||||||
<!-- Mixed -->
|
<!-- Mixed -->
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ namespace NzbDrone.Automation.Test
|
|||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void artist_page()
|
public void author_page()
|
||||||
{
|
{
|
||||||
_page.LibraryNavIcon.Click();
|
_page.LibraryNavIcon.Click();
|
||||||
_page.WaitForNoSpinner();
|
_page.WaitForNoSpinner();
|
||||||
@@ -78,7 +78,7 @@ namespace NzbDrone.Automation.Test
|
|||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void add_artist_page()
|
public void add_author_page()
|
||||||
{
|
{
|
||||||
_page.LibraryNavIcon.Click();
|
_page.LibraryNavIcon.Click();
|
||||||
_page.WaitForNoSpinner();
|
_page.WaitForNoSpinner();
|
||||||
|
|||||||
@@ -125,16 +125,16 @@ namespace NzbDrone.Common.Test.DiskTests
|
|||||||
[Test]
|
[Test]
|
||||||
public void should_be_able_to_delete_nested_empty_subdirs()
|
public void should_be_able_to_delete_nested_empty_subdirs()
|
||||||
{
|
{
|
||||||
var artistDir = Path.Combine(GetTempFilePath(), "Artist");
|
var authorDir = Path.Combine(GetTempFilePath(), "Author");
|
||||||
var albumDir = Path.Combine(artistDir, "Album");
|
var bookDir = Path.Combine(authorDir, "Book");
|
||||||
|
|
||||||
Directory.CreateDirectory(Path.Combine(albumDir));
|
Directory.CreateDirectory(Path.Combine(bookDir));
|
||||||
Directory.CreateDirectory(Path.Combine(albumDir, "Album"));
|
Directory.CreateDirectory(Path.Combine(bookDir, "Book"));
|
||||||
Directory.CreateDirectory(Path.Combine(albumDir, "Album", "CD1"));
|
Directory.CreateDirectory(Path.Combine(bookDir, "Book", "CD1"));
|
||||||
Directory.CreateDirectory(Path.Combine(albumDir, "Album", "CD2"));
|
Directory.CreateDirectory(Path.Combine(bookDir, "Book", "CD2"));
|
||||||
|
|
||||||
Subject.RemoveEmptySubfolders(artistDir);
|
Subject.RemoveEmptySubfolders(authorDir);
|
||||||
Directory.Exists(albumDir).Should().BeFalse();
|
Directory.Exists(bookDir).Should().BeFalse();
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
|
|||||||
@@ -283,13 +283,13 @@ namespace NzbDrone.Common.Test.Http
|
|||||||
{
|
{
|
||||||
var file = GetTempFilePath();
|
var file = GetTempFilePath();
|
||||||
|
|
||||||
var url = "https://lidarr.audio/img/slider/artistdetails.png";
|
var url = "https://readarr.com/img/slider/artistdetails.png";
|
||||||
|
|
||||||
Subject.DownloadFile(url, file);
|
Subject.DownloadFile(url, file);
|
||||||
|
|
||||||
var fileInfo = new FileInfo(file);
|
var fileInfo = new FileInfo(file);
|
||||||
fileInfo.Exists.Should().BeTrue();
|
fileInfo.Exists.Should().BeTrue();
|
||||||
fileInfo.Length.Should().Be(146122);
|
fileInfo.Length.Should().Be(192367);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
@@ -298,7 +298,7 @@ namespace NzbDrone.Common.Test.Http
|
|||||||
var file = GetTempFilePath();
|
var file = GetTempFilePath();
|
||||||
|
|
||||||
var request = new HttpRequestBuilder($"https://{_httpBinHost}/redirect-to")
|
var request = new HttpRequestBuilder($"https://{_httpBinHost}/redirect-to")
|
||||||
.AddQueryParam("url", $"https://lidarr.audio/img/slider/artistdetails.png")
|
.AddQueryParam("url", $"https://readarr.com/img/slider/artistdetails.png")
|
||||||
.Build();
|
.Build();
|
||||||
|
|
||||||
Subject.DownloadFile(request.Url.FullUri, file);
|
Subject.DownloadFile(request.Url.FullUri, file);
|
||||||
@@ -307,7 +307,7 @@ namespace NzbDrone.Common.Test.Http
|
|||||||
|
|
||||||
var fileInfo = new FileInfo(file);
|
var fileInfo = new FileInfo(file);
|
||||||
fileInfo.Exists.Should().BeTrue();
|
fileInfo.Exists.Should().BeTrue();
|
||||||
fileInfo.Length.Should().Be(146122);
|
fileInfo.Length.Should().Be(192367);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
|
|||||||
@@ -17,9 +17,11 @@ namespace NzbDrone.Common.Test.InstrumentationTests
|
|||||||
[TestCase(@"https://baconbits.org/feeds.php?feed=torrents_tv&user=12345&auth=2b51db35e1910123321025a12b9933d2&passkey=mySecret&authkey=2b51db35e1910123321025a12b9933d2")]
|
[TestCase(@"https://baconbits.org/feeds.php?feed=torrents_tv&user=12345&auth=2b51db35e1910123321025a12b9933d2&passkey=mySecret&authkey=2b51db35e1910123321025a12b9933d2")]
|
||||||
[TestCase(@"http://127.0.0.1:9117/dl/indexername?jackett_apikey=flwjiefewklfjacketmySecretsdfldskjfsdlk&path=we0re9f0sdfbase64sfdkfjsdlfjk&file=The+Torrent+File+Name.torrent")]
|
[TestCase(@"http://127.0.0.1:9117/dl/indexername?jackett_apikey=flwjiefewklfjacketmySecretsdfldskjfsdlk&path=we0re9f0sdfbase64sfdkfjsdlfjk&file=The+Torrent+File+Name.torrent")]
|
||||||
[TestCase(@"http://nzb.su/getnzb/2b51db35e1912ffc138825a12b9933d2.nzb&i=37292&r=2b51db35e1910123321025a12b9933d2")]
|
[TestCase(@"http://nzb.su/getnzb/2b51db35e1912ffc138825a12b9933d2.nzb&i=37292&r=2b51db35e1910123321025a12b9933d2")]
|
||||||
|
|
||||||
// NzbGet
|
// NzbGet
|
||||||
[TestCase(@"{ ""Name"" : ""ControlUsername"", ""Value"" : ""mySecret"" }, { ""Name"" : ""ControlPassword"", ""Value"" : ""mySecret"" }, ")]
|
[TestCase(@"{ ""Name"" : ""ControlUsername"", ""Value"" : ""mySecret"" }, { ""Name"" : ""ControlPassword"", ""Value"" : ""mySecret"" }, ")]
|
||||||
[TestCase(@"{ ""Name"" : ""Server1.Username"", ""Value"" : ""mySecret"" }, { ""Name"" : ""Server1.Password"", ""Value"" : ""mySecret"" }, ")]
|
[TestCase(@"{ ""Name"" : ""Server1.Username"", ""Value"" : ""mySecret"" }, { ""Name"" : ""Server1.Password"", ""Value"" : ""mySecret"" }, ")]
|
||||||
|
|
||||||
// Sabnzbd
|
// Sabnzbd
|
||||||
[TestCase(@"http://127.0.0.1:1234/api/call?vv=1&apikey=mySecret")]
|
[TestCase(@"http://127.0.0.1:1234/api/call?vv=1&apikey=mySecret")]
|
||||||
[TestCase(@"http://127.0.0.1:1234/api/call?vv=1&ma_username=mySecret&ma_password=mySecret")]
|
[TestCase(@"http://127.0.0.1:1234/api/call?vv=1&ma_username=mySecret&ma_password=mySecret")]
|
||||||
@@ -30,6 +32,7 @@ namespace NzbDrone.Common.Test.InstrumentationTests
|
|||||||
[TestCase(@"""misc"":{""username"":""mySecret"",""api_key"":""mySecret"",""password"":""mySecret"",""nzb_key"":""mySecret""}")]
|
[TestCase(@"""misc"":{""username"":""mySecret"",""api_key"":""mySecret"",""password"":""mySecret"",""nzb_key"":""mySecret""}")]
|
||||||
[TestCase(@"""servers"":[{""username"":""mySecret"",""password"":""mySecret""}]")]
|
[TestCase(@"""servers"":[{""username"":""mySecret"",""password"":""mySecret""}]")]
|
||||||
[TestCase(@"""misc"":{""email_account"":""mySecret"",""email_to"":[],""email_from"":"""",""email_pwd"":""mySecret""}")]
|
[TestCase(@"""misc"":{""email_account"":""mySecret"",""email_to"":[],""email_from"":"""",""email_pwd"":""mySecret""}")]
|
||||||
|
|
||||||
// uTorrent
|
// uTorrent
|
||||||
[TestCase(@"http://localhost:9091/gui/?token=wThmph5l0ZXfH-a6WOA4lqiLvyjCP0FpMrMeXmySecret_VXBO11HoKL751MAAAAA&list=1")]
|
[TestCase(@"http://localhost:9091/gui/?token=wThmph5l0ZXfH-a6WOA4lqiLvyjCP0FpMrMeXmySecret_VXBO11HoKL751MAAAAA&list=1")]
|
||||||
[TestCase(@",[""boss_key"",0,""mySecret"",{""access"":""Y""}],[""boss_key_salt"",0,""mySecret"",{""access"":""W""}]")]
|
[TestCase(@",[""boss_key"",0,""mySecret"",{""access"":""Y""}],[""boss_key_salt"",0,""mySecret"",{""access"":""W""}]")]
|
||||||
@@ -37,18 +40,23 @@ namespace NzbDrone.Common.Test.InstrumentationTests
|
|||||||
[TestCase(@",[""webui.uconnect_username"",2,""mySecret"",{""access"":""Y""}],[""webui.uconnect_password"",2,""mySecret"",{""access"":""Y""}]")]
|
[TestCase(@",[""webui.uconnect_username"",2,""mySecret"",{""access"":""Y""}],[""webui.uconnect_password"",2,""mySecret"",{""access"":""Y""}]")]
|
||||||
[TestCase(@",[""proxy.proxy"",2,""mySecret"",{""access"":""Y""}]")]
|
[TestCase(@",[""proxy.proxy"",2,""mySecret"",{""access"":""Y""}]")]
|
||||||
[TestCase(@",[""proxy.username"",2,""mySecret"",{""access"":""Y""}],[""proxy.password"",2,""mySecret"",{""access"":""Y""}]")]
|
[TestCase(@",[""proxy.username"",2,""mySecret"",{""access"":""Y""}],[""proxy.password"",2,""mySecret"",{""access"":""Y""}]")]
|
||||||
|
|
||||||
// Deluge
|
// Deluge
|
||||||
[TestCase(@",{""download_location"": ""C:\Users\\mySecret mySecret\\Downloads""}")]
|
[TestCase(@",{""download_location"": ""C:\Users\\mySecret mySecret\\Downloads""}")]
|
||||||
[TestCase(@",{""download_location"": ""/home/mySecret/Downloads""}")]
|
[TestCase(@",{""download_location"": ""/home/mySecret/Downloads""}")]
|
||||||
[TestCase(@"auth.login(""mySecret"")")]
|
[TestCase(@"auth.login(""mySecret"")")]
|
||||||
|
|
||||||
// Download Station
|
// Download Station
|
||||||
[TestCase(@"webapi/entry.cgi?api=(removed)&version=2&method=login&account=01233210&passwd=mySecret&format=sid&session=DownloadStation")]
|
[TestCase(@"webapi/entry.cgi?api=(removed)&version=2&method=login&account=01233210&passwd=mySecret&format=sid&session=DownloadStation")]
|
||||||
|
|
||||||
// BroadcastheNet
|
// BroadcastheNet
|
||||||
[TestCase(@"method: ""getTorrents"", ""params"": [ ""mySecret"",")]
|
[TestCase(@"method: ""getTorrents"", ""params"": [ ""mySecret"",")]
|
||||||
[TestCase(@"getTorrents(""mySecret"", [asdfasdf], 100, 0)")]
|
[TestCase(@"getTorrents(""mySecret"", [asdfasdf], 100, 0)")]
|
||||||
[TestCase(@"""DownloadURL"":""https:\/\/broadcasthe.net\/torrents.php?action=download&id=123&authkey=mySecret&torrent_pass=mySecret""")]
|
[TestCase(@"""DownloadURL"":""https:\/\/broadcasthe.net\/torrents.php?action=download&id=123&authkey=mySecret&torrent_pass=mySecret""")]
|
||||||
|
|
||||||
// Spotify Refresh
|
// Spotify Refresh
|
||||||
[TestCase(@"https://auth.servarr.com/renew?refresh_token=mySecret")]
|
[TestCase(@"https://auth.servarr.com/renew?refresh_token=mySecret")]
|
||||||
|
|
||||||
// Plex
|
// Plex
|
||||||
[TestCase(@" http://localhost:32400/library/metadata/12345/refresh?X-Plex-Client-Identifier=1234530f-422f-4aac-b6b3-01233210aaaa&X-Plex-Product=Sonarr&X-Plex-Platform=Windows&X-Plex-Platform-Version=7&X-Plex-Device-Name=Sonarr&X-Plex-Version=3.0.3.833&X-Plex-Token=mySecret")]
|
[TestCase(@" http://localhost:32400/library/metadata/12345/refresh?X-Plex-Client-Identifier=1234530f-422f-4aac-b6b3-01233210aaaa&X-Plex-Product=Sonarr&X-Plex-Platform=Windows&X-Plex-Platform-Version=7&X-Plex-Device-Name=Sonarr&X-Plex-Version=3.0.3.833&X-Plex-Token=mySecret")]
|
||||||
public void should_clean_message(string message)
|
public void should_clean_message(string message)
|
||||||
|
|||||||
@@ -292,28 +292,28 @@ namespace NzbDrone.Common.Test
|
|||||||
public void GetAncestorFolders_should_return_all_ancestors_in_path_Windows()
|
public void GetAncestorFolders_should_return_all_ancestors_in_path_Windows()
|
||||||
{
|
{
|
||||||
WindowsOnly();
|
WindowsOnly();
|
||||||
var path = @"C:\Test\Music\Artist Title";
|
var path = @"C:\Test\Music\Author Title";
|
||||||
var result = path.GetAncestorFolders();
|
var result = path.GetAncestorFolders();
|
||||||
|
|
||||||
result.Count.Should().Be(4);
|
result.Count.Should().Be(4);
|
||||||
result[0].Should().Be(@"C:\");
|
result[0].Should().Be(@"C:\");
|
||||||
result[1].Should().Be(@"Test");
|
result[1].Should().Be(@"Test");
|
||||||
result[2].Should().Be(@"Music");
|
result[2].Should().Be(@"Music");
|
||||||
result[3].Should().Be(@"Artist Title");
|
result[3].Should().Be(@"Author Title");
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void GetAncestorFolders_should_return_all_ancestors_in_path_Linux()
|
public void GetAncestorFolders_should_return_all_ancestors_in_path_Linux()
|
||||||
{
|
{
|
||||||
PosixOnly();
|
PosixOnly();
|
||||||
var path = @"/Test/Music/Artist Title";
|
var path = @"/Test/Music/Author Title";
|
||||||
var result = path.GetAncestorFolders();
|
var result = path.GetAncestorFolders();
|
||||||
|
|
||||||
result.Count.Should().Be(4);
|
result.Count.Should().Be(4);
|
||||||
result[0].Should().Be(@"/");
|
result[0].Should().Be(@"/");
|
||||||
result[1].Should().Be(@"Test");
|
result[1].Should().Be(@"Test");
|
||||||
result[2].Should().Be(@"Music");
|
result[2].Should().Be(@"Music");
|
||||||
result[3].Should().Be(@"Artist Title");
|
result[3].Should().Be(@"Author Title");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,3 @@
|
|||||||
using System;
|
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Net;
|
using System.Net;
|
||||||
using System.Text.RegularExpressions;
|
using System.Text.RegularExpressions;
|
||||||
|
|||||||
@@ -9,38 +9,38 @@ using NzbDrone.Core.MediaFiles;
|
|||||||
using NzbDrone.Core.Qualities;
|
using NzbDrone.Core.Qualities;
|
||||||
using NzbDrone.Core.Test.Framework;
|
using NzbDrone.Core.Test.Framework;
|
||||||
|
|
||||||
namespace NzbDrone.Core.Test.ArtistStatsTests
|
namespace NzbDrone.Core.Test.AuthorStatsTests
|
||||||
{
|
{
|
||||||
[TestFixture]
|
[TestFixture]
|
||||||
public class ArtistStatisticsFixture : DbTest<AuthorStatisticsRepository, Author>
|
public class AuthorStatisticsFixture : DbTest<AuthorStatisticsRepository, Author>
|
||||||
{
|
{
|
||||||
private Author _artist;
|
private Author _author;
|
||||||
private Book _album;
|
private Book _book;
|
||||||
private Edition _edition;
|
private Edition _edition;
|
||||||
private BookFile _trackFile;
|
private BookFile _trackFile;
|
||||||
|
|
||||||
[SetUp]
|
[SetUp]
|
||||||
public void Setup()
|
public void Setup()
|
||||||
{
|
{
|
||||||
_artist = Builder<Author>.CreateNew()
|
_author = Builder<Author>.CreateNew()
|
||||||
.With(a => a.AuthorMetadataId = 10)
|
.With(a => a.AuthorMetadataId = 10)
|
||||||
.BuildNew();
|
.BuildNew();
|
||||||
Db.Insert(_artist);
|
Db.Insert(_author);
|
||||||
|
|
||||||
_album = Builder<Book>.CreateNew()
|
_book = Builder<Book>.CreateNew()
|
||||||
.With(e => e.ReleaseDate = DateTime.Today.AddDays(-5))
|
.With(e => e.ReleaseDate = DateTime.Today.AddDays(-5))
|
||||||
.With(e => e.AuthorMetadataId = 10)
|
.With(e => e.AuthorMetadataId = 10)
|
||||||
.BuildNew();
|
.BuildNew();
|
||||||
Db.Insert(_album);
|
Db.Insert(_book);
|
||||||
|
|
||||||
_edition = Builder<Edition>.CreateNew()
|
_edition = Builder<Edition>.CreateNew()
|
||||||
.With(e => e.BookId = _album.Id)
|
.With(e => e.BookId = _book.Id)
|
||||||
.With(e => e.Monitored = true)
|
.With(e => e.Monitored = true)
|
||||||
.BuildNew();
|
.BuildNew();
|
||||||
Db.Insert(_edition);
|
Db.Insert(_edition);
|
||||||
|
|
||||||
_trackFile = Builder<BookFile>.CreateNew()
|
_trackFile = Builder<BookFile>.CreateNew()
|
||||||
.With(e => e.Author = _artist)
|
.With(e => e.Author = _author)
|
||||||
.With(e => e.Edition = _edition)
|
.With(e => e.Edition = _edition)
|
||||||
.With(e => e.EditionId == _edition.Id)
|
.With(e => e.EditionId == _edition.Id)
|
||||||
.With(e => e.Quality = new QualityModel(Quality.MP3_320))
|
.With(e => e.Quality = new QualityModel(Quality.MP3_320))
|
||||||
@@ -53,7 +53,7 @@ namespace NzbDrone.Core.Test.ArtistStatsTests
|
|||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void should_get_stats_for_artist()
|
public void should_get_stats_for_author()
|
||||||
{
|
{
|
||||||
var stats = Subject.AuthorStatistics();
|
var stats = Subject.AuthorStatistics();
|
||||||
|
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ namespace NzbDrone.Core.Test.Blacklisting
|
|||||||
AuthorId = 12345,
|
AuthorId = 12345,
|
||||||
BookIds = new List<int> { 1 },
|
BookIds = new List<int> { 1 },
|
||||||
Quality = new QualityModel(Quality.FLAC),
|
Quality = new QualityModel(Quality.FLAC),
|
||||||
SourceTitle = "artist.name.album.title",
|
SourceTitle = "author.name.book.title",
|
||||||
Date = DateTime.UtcNow
|
Date = DateTime.UtcNow
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
@@ -35,7 +35,7 @@ namespace NzbDrone.Core.Test.Blacklisting
|
|||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void should_should_have_album_ids()
|
public void should_should_have_book_ids()
|
||||||
{
|
{
|
||||||
Subject.Insert(_blacklist);
|
Subject.Insert(_blacklist);
|
||||||
|
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ namespace NzbDrone.Core.Test.Blacklisting
|
|||||||
AuthorId = 12345,
|
AuthorId = 12345,
|
||||||
BookIds = new List<int> { 1 },
|
BookIds = new List<int> { 1 },
|
||||||
Quality = new QualityModel(Quality.MP3_320),
|
Quality = new QualityModel(Quality.MP3_320),
|
||||||
SourceTitle = "artist.name.album.title",
|
SourceTitle = "author.name.book.title",
|
||||||
DownloadClient = "SabnzbdClient",
|
DownloadClient = "SabnzbdClient",
|
||||||
DownloadId = "Sabnzbd_nzo_2dfh73k"
|
DownloadId = "Sabnzbd_nzo_2dfh73k"
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -15,13 +15,13 @@ namespace NzbDrone.Core.Test.Datastore
|
|||||||
[Test]
|
[Test]
|
||||||
public void one_to_one()
|
public void one_to_one()
|
||||||
{
|
{
|
||||||
var album = Builder<Book>.CreateNew()
|
var book = Builder<Book>.CreateNew()
|
||||||
.With(c => c.Id = 0)
|
.With(c => c.Id = 0)
|
||||||
.With(x => x.ReleaseDate = DateTime.UtcNow)
|
.With(x => x.ReleaseDate = DateTime.UtcNow)
|
||||||
.With(x => x.LastInfoSync = DateTime.UtcNow)
|
.With(x => x.LastInfoSync = DateTime.UtcNow)
|
||||||
.With(x => x.Added = DateTime.UtcNow)
|
.With(x => x.Added = DateTime.UtcNow)
|
||||||
.BuildNew();
|
.BuildNew();
|
||||||
Db.Insert(album);
|
Db.Insert(book);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
|
|||||||
@@ -34,31 +34,31 @@ namespace NzbDrone.Core.Test.Datastore
|
|||||||
.Build();
|
.Build();
|
||||||
Db.Insert(metadata);
|
Db.Insert(metadata);
|
||||||
|
|
||||||
var artist = Builder<Author>.CreateListOfSize(1)
|
var author = Builder<Author>.CreateListOfSize(1)
|
||||||
.All()
|
.All()
|
||||||
.With(v => v.Id = 0)
|
.With(v => v.Id = 0)
|
||||||
.With(v => v.QualityProfileId = profile.Id)
|
.With(v => v.QualityProfileId = profile.Id)
|
||||||
.With(v => v.AuthorMetadataId = metadata.Id)
|
.With(v => v.AuthorMetadataId = metadata.Id)
|
||||||
.BuildListOfNew();
|
.BuildListOfNew();
|
||||||
|
|
||||||
Db.InsertMany(artist);
|
Db.InsertMany(author);
|
||||||
|
|
||||||
var albums = Builder<Book>.CreateListOfSize(3)
|
var books = Builder<Book>.CreateListOfSize(3)
|
||||||
.All()
|
.All()
|
||||||
.With(v => v.Id = 0)
|
.With(v => v.Id = 0)
|
||||||
.With(v => v.AuthorMetadataId = metadata.Id)
|
.With(v => v.AuthorMetadataId = metadata.Id)
|
||||||
.BuildListOfNew();
|
.BuildListOfNew();
|
||||||
|
|
||||||
Db.InsertMany(albums);
|
Db.InsertMany(books);
|
||||||
|
|
||||||
var editions = new List<Edition>();
|
var editions = new List<Edition>();
|
||||||
foreach (var album in albums)
|
foreach (var book in books)
|
||||||
{
|
{
|
||||||
editions.Add(
|
editions.Add(
|
||||||
Builder<Edition>.CreateNew()
|
Builder<Edition>.CreateNew()
|
||||||
.With(v => v.Id = 0)
|
.With(v => v.Id = 0)
|
||||||
.With(v => v.BookId = album.Id)
|
.With(v => v.BookId = book.Id)
|
||||||
.With(v => v.ForeignEditionId = "test" + album.Id)
|
.With(v => v.ForeignEditionId = "test" + book.Id)
|
||||||
.Build());
|
.Build());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -75,7 +75,7 @@ namespace NzbDrone.Core.Test.Datastore
|
|||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void should_lazy_load_artist_for_trackfile()
|
public void should_lazy_load_author_for_trackfile()
|
||||||
{
|
{
|
||||||
var db = Mocker.Resolve<IDatabase>();
|
var db = Mocker.Resolve<IDatabase>();
|
||||||
var tracks = db.Query<BookFile>(new SqlBuilder()).ToList();
|
var tracks = db.Query<BookFile>(new SqlBuilder()).ToList();
|
||||||
@@ -112,7 +112,7 @@ namespace NzbDrone.Core.Test.Datastore
|
|||||||
new SqlBuilder()
|
new SqlBuilder()
|
||||||
.Join<BookFile, Edition>((t, a) => t.EditionId == a.Id)
|
.Join<BookFile, Edition>((t, a) => t.EditionId == a.Id)
|
||||||
.Join<Edition, Book>((e, b) => e.BookId == b.Id)
|
.Join<Edition, Book>((e, b) => e.BookId == b.Id)
|
||||||
.Join<Book, Author>((album, artist) => album.AuthorMetadataId == artist.AuthorMetadataId)
|
.Join<Book, Author>((book, author) => book.AuthorMetadataId == author.AuthorMetadataId)
|
||||||
.Join<Author, AuthorMetadata>((a, m) => a.AuthorMetadataId == m.Id));
|
.Join<Author, AuthorMetadata>((a, m) => a.AuthorMetadataId == m.Id));
|
||||||
|
|
||||||
Assert.IsNotEmpty(files);
|
Assert.IsNotEmpty(files);
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ namespace NzbDrone.Core.Test.Datastore
|
|||||||
|
|
||||||
public class TypeWithNoMappableProperties
|
public class TypeWithNoMappableProperties
|
||||||
{
|
{
|
||||||
public Author Artist { get; set; }
|
public Author Author { get; set; }
|
||||||
|
|
||||||
public int ReadOnly { get; private set; }
|
public int ReadOnly { get; private set; }
|
||||||
public int WriteOnly { private get; set; }
|
public int WriteOnly { private get; set; }
|
||||||
|
|||||||
@@ -54,12 +54,12 @@ namespace NzbDrone.Core.Test.Datastore
|
|||||||
[Test]
|
[Test]
|
||||||
public void where_equal_property()
|
public void where_equal_property()
|
||||||
{
|
{
|
||||||
var artist = new Author { Id = 10 };
|
var author = new Author { Id = 10 };
|
||||||
_subject = Where(x => x.Id == artist.Id);
|
_subject = Where(x => x.Id == author.Id);
|
||||||
|
|
||||||
_subject.Parameters.ParameterNames.Should().HaveCount(1);
|
_subject.Parameters.ParameterNames.Should().HaveCount(1);
|
||||||
_subject.ToString().Should().Be($"(\"Authors\".\"Id\" = @Clause1_P1)");
|
_subject.ToString().Should().Be($"(\"Authors\".\"Id\" = @Clause1_P1)");
|
||||||
_subject.Parameters.Get<int>("Clause1_P1").Should().Be(artist.Id);
|
_subject.Parameters.Get<int>("Clause1_P1").Should().Be(author.Id);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
@@ -108,8 +108,8 @@ namespace NzbDrone.Core.Test.Datastore
|
|||||||
[Test]
|
[Test]
|
||||||
public void where_equal_null_property()
|
public void where_equal_null_property()
|
||||||
{
|
{
|
||||||
var artist = new Author { CleanName = null };
|
var author = new Author { CleanName = null };
|
||||||
_subject = Where(x => x.CleanName == artist.CleanName);
|
_subject = Where(x => x.CleanName == author.CleanName);
|
||||||
|
|
||||||
_subject.ToString().Should().Be($"(\"Authors\".\"CleanName\" IS NULL)");
|
_subject.ToString().Should().Be($"(\"Authors\".\"CleanName\" IS NULL)");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,9 +20,9 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
|
|||||||
public class AlreadyImportedSpecificationFixture : CoreTest<AlreadyImportedSpecification>
|
public class AlreadyImportedSpecificationFixture : CoreTest<AlreadyImportedSpecification>
|
||||||
{
|
{
|
||||||
private const int FIRST_ALBUM_ID = 1;
|
private const int FIRST_ALBUM_ID = 1;
|
||||||
private const string TITLE = "Some.Artist-Some.Album-2018-320kbps-CD-Readarr";
|
private const string TITLE = "Some.Author-Some.Book-2018-320kbps-CD-Readarr";
|
||||||
|
|
||||||
private Author _artist;
|
private Author _author;
|
||||||
private QualityModel _mp3;
|
private QualityModel _mp3;
|
||||||
private QualityModel _flac;
|
private QualityModel _flac;
|
||||||
private RemoteBook _remoteBook;
|
private RemoteBook _remoteBook;
|
||||||
@@ -32,16 +32,16 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
|
|||||||
[SetUp]
|
[SetUp]
|
||||||
public void Setup()
|
public void Setup()
|
||||||
{
|
{
|
||||||
var singleAlbumList = new List<Book>
|
var singleBookList = new List<Book>
|
||||||
{
|
{
|
||||||
new Book
|
new Book
|
||||||
{
|
{
|
||||||
Id = FIRST_ALBUM_ID,
|
Id = FIRST_ALBUM_ID,
|
||||||
Title = "Some Album"
|
Title = "Some Book"
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
_artist = Builder<Author>.CreateNew()
|
_author = Builder<Author>.CreateNew()
|
||||||
.Build();
|
.Build();
|
||||||
|
|
||||||
_firstFile = new BookFile { Quality = new QualityModel(Quality.FLAC, new Revision(version: 2)), DateAdded = DateTime.Now };
|
_firstFile = new BookFile { Quality = new QualityModel(Quality.FLAC, new Revision(version: 2)), DateAdded = DateTime.Now };
|
||||||
@@ -51,9 +51,9 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
|
|||||||
|
|
||||||
_remoteBook = new RemoteBook
|
_remoteBook = new RemoteBook
|
||||||
{
|
{
|
||||||
Author = _artist,
|
Author = _author,
|
||||||
ParsedBookInfo = new ParsedBookInfo { Quality = _mp3 },
|
ParsedBookInfo = new ParsedBookInfo { Quality = _mp3 },
|
||||||
Books = singleAlbumList,
|
Books = singleBookList,
|
||||||
Release = Builder<ReleaseInfo>.CreateNew()
|
Release = Builder<ReleaseInfo>.CreateNew()
|
||||||
.Build()
|
.Build()
|
||||||
};
|
};
|
||||||
@@ -101,7 +101,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
|
|||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void should_be_accepted_if_album_does_not_have_a_file()
|
public void should_be_accepted_if_book_does_not_have_a_file()
|
||||||
{
|
{
|
||||||
Mocker.GetMock<IMediaFileService>()
|
Mocker.GetMock<IMediaFileService>()
|
||||||
.Setup(c => c.GetFilesByBook(It.IsAny<int>()))
|
.Setup(c => c.GetFilesByBook(It.IsAny<int>()))
|
||||||
@@ -111,13 +111,13 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
|
|||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void should_be_accepted_if_album_does_not_have_grabbed_event()
|
public void should_be_accepted_if_book_does_not_have_grabbed_event()
|
||||||
{
|
{
|
||||||
Subject.IsSatisfiedBy(_remoteBook, null).Accepted.Should().BeTrue();
|
Subject.IsSatisfiedBy(_remoteBook, null).Accepted.Should().BeTrue();
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void should_be_accepted_if_album_does_not_have_imported_event()
|
public void should_be_accepted_if_book_does_not_have_imported_event()
|
||||||
{
|
{
|
||||||
GivenHistoryItem(Guid.NewGuid().ToString().ToUpper(), TITLE, _mp3, HistoryEventType.Grabbed);
|
GivenHistoryItem(Guid.NewGuid().ToString().ToUpper(), TITLE, _mp3, HistoryEventType.Grabbed);
|
||||||
|
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
|
|||||||
private static readonly int NoPreferredWordScore = 0;
|
private static readonly int NoPreferredWordScore = 0;
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void should_return_true_if_current_album_is_less_than_cutoff()
|
public void should_return_true_if_current_book_is_less_than_cutoff()
|
||||||
{
|
{
|
||||||
Subject.CutoffNotMet(
|
Subject.CutoffNotMet(
|
||||||
new QualityProfile
|
new QualityProfile
|
||||||
@@ -27,7 +27,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
|
|||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void should_return_false_if_current_album_is_equal_to_cutoff()
|
public void should_return_false_if_current_book_is_equal_to_cutoff()
|
||||||
{
|
{
|
||||||
Subject.CutoffNotMet(
|
Subject.CutoffNotMet(
|
||||||
new QualityProfile
|
new QualityProfile
|
||||||
@@ -40,7 +40,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
|
|||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void should_return_false_if_current_album_is_greater_than_cutoff()
|
public void should_return_false_if_current_book_is_greater_than_cutoff()
|
||||||
{
|
{
|
||||||
Subject.CutoffNotMet(
|
Subject.CutoffNotMet(
|
||||||
new QualityProfile
|
new QualityProfile
|
||||||
@@ -53,7 +53,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
|
|||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void should_return_true_when_new_album_is_proper_but_existing_is_not()
|
public void should_return_true_when_new_book_is_proper_but_existing_is_not()
|
||||||
{
|
{
|
||||||
Subject.CutoffNotMet(
|
Subject.CutoffNotMet(
|
||||||
new QualityProfile
|
new QualityProfile
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
|
|||||||
[SetUp]
|
[SetUp]
|
||||||
public void Setup()
|
public void Setup()
|
||||||
{
|
{
|
||||||
var artist = Builder<Author>.CreateNew().With(s => s.Id = 1234).Build();
|
var author = Builder<Author>.CreateNew().With(s => s.Id = 1234).Build();
|
||||||
_remoteBook = new RemoteBook
|
_remoteBook = new RemoteBook
|
||||||
{
|
{
|
||||||
ParsedBookInfo = new ParsedBookInfo
|
ParsedBookInfo = new ParsedBookInfo
|
||||||
@@ -30,12 +30,12 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
|
|||||||
Books = Builder<Book>.CreateListOfSize(3)
|
Books = Builder<Book>.CreateListOfSize(3)
|
||||||
.All()
|
.All()
|
||||||
.With(e => e.ReleaseDate = DateTime.UtcNow.AddDays(-8))
|
.With(e => e.ReleaseDate = DateTime.UtcNow.AddDays(-8))
|
||||||
.With(s => s.AuthorId = artist.Id)
|
.With(s => s.AuthorId = author.Id)
|
||||||
.BuildList(),
|
.BuildList(),
|
||||||
Author = artist,
|
Author = author,
|
||||||
Release = new ReleaseInfo
|
Release = new ReleaseInfo
|
||||||
{
|
{
|
||||||
Title = "Artist.Discography.1978.2005.FLAC-RlsGrp"
|
Title = "Author.Discography.1978.2005.FLAC-RlsGrp"
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -52,20 +52,20 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
|
|||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void should_return_true_if_all_albums_have_released()
|
public void should_return_true_if_all_books_have_released()
|
||||||
{
|
{
|
||||||
Subject.IsSatisfiedBy(_remoteBook, null).Accepted.Should().BeTrue();
|
Subject.IsSatisfiedBy(_remoteBook, null).Accepted.Should().BeTrue();
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void should_return_false_if_one_album_has_not_released()
|
public void should_return_false_if_one_book_has_not_released()
|
||||||
{
|
{
|
||||||
_remoteBook.Books.Last().ReleaseDate = DateTime.UtcNow.AddDays(+2);
|
_remoteBook.Books.Last().ReleaseDate = DateTime.UtcNow.AddDays(+2);
|
||||||
Subject.IsSatisfiedBy(_remoteBook, null).Accepted.Should().BeFalse();
|
Subject.IsSatisfiedBy(_remoteBook, null).Accepted.Should().BeFalse();
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void should_return_false_if_an_album_does_not_have_an_release_date()
|
public void should_return_false_if_an_book_does_not_have_an_release_date()
|
||||||
{
|
{
|
||||||
_remoteBook.Books.Last().ReleaseDate = null;
|
_remoteBook.Books.Last().ReleaseDate = null;
|
||||||
Subject.IsSatisfiedBy(_remoteBook, null).Accepted.Should().BeFalse();
|
Subject.IsSatisfiedBy(_remoteBook, null).Accepted.Should().BeFalse();
|
||||||
|
|||||||
@@ -147,7 +147,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
|
|||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void should_not_attempt_to_map_album_if_not_parsable()
|
public void should_not_attempt_to_map_book_if_not_parsable()
|
||||||
{
|
{
|
||||||
GivenSpecifications(_pass1, _pass2, _pass3);
|
GivenSpecifications(_pass1, _pass2, _pass3);
|
||||||
_reports[0].Title = "Not parsable";
|
_reports[0].Title = "Not parsable";
|
||||||
@@ -159,11 +159,10 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
|
|||||||
_pass1.Verify(c => c.IsSatisfiedBy(It.IsAny<RemoteBook>(), null), Times.Never());
|
_pass1.Verify(c => c.IsSatisfiedBy(It.IsAny<RemoteBook>(), null), Times.Never());
|
||||||
_pass2.Verify(c => c.IsSatisfiedBy(It.IsAny<RemoteBook>(), null), Times.Never());
|
_pass2.Verify(c => c.IsSatisfiedBy(It.IsAny<RemoteBook>(), null), Times.Never());
|
||||||
_pass3.Verify(c => c.IsSatisfiedBy(It.IsAny<RemoteBook>(), null), Times.Never());
|
_pass3.Verify(c => c.IsSatisfiedBy(It.IsAny<RemoteBook>(), null), Times.Never());
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void should_not_attempt_to_map_album_if_artist_title_is_blank()
|
public void should_not_attempt_to_map_book_if_author_title_is_blank()
|
||||||
{
|
{
|
||||||
GivenSpecifications(_pass1, _pass2, _pass3);
|
GivenSpecifications(_pass1, _pass2, _pass3);
|
||||||
_reports[0].Title = "2013 - Night Visions";
|
_reports[0].Title = "2013 - Night Visions";
|
||||||
@@ -185,20 +184,20 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
|
|||||||
GivenSpecifications(_pass1, _pass2, _pass3);
|
GivenSpecifications(_pass1, _pass2, _pass3);
|
||||||
_reports[0].Title = "1937 - Snow White and the Seven Dwarves";
|
_reports[0].Title = "1937 - Snow White and the Seven Dwarves";
|
||||||
|
|
||||||
var artist = new Artist { Name = "Some Artist" };
|
var author = new Author { Name = "Some Author" };
|
||||||
var albums = new List<Album> { new Album { Title = "Some Album" } };
|
var books = new List<Book> { new Book { Title = "Some Book" } };
|
||||||
|
|
||||||
Subject.GetSearchDecision(_reports, new AlbumSearchCriteria { Artist = artist, Albums = albums }).ToList();
|
Subject.GetSearchDecision(_reports, new BookSearchCriteria { Author = author, Books = books }).ToList();
|
||||||
|
|
||||||
Mocker.GetMock<IParsingService>().Verify(c => c.Map(It.IsAny<ParsedAlbumInfo>(), It.IsAny<SearchCriteriaBase>()), Times.Never());
|
Mocker.GetMock<IParsingService>().Verify(c => c.Map(It.IsAny<ParsedBookInfo>(), It.IsAny<SearchCriteriaBase>()), Times.Never());
|
||||||
|
|
||||||
_pass1.Verify(c => c.IsSatisfiedBy(It.IsAny<RemoteAlbum>(), null), Times.Never());
|
_pass1.Verify(c => c.IsSatisfiedBy(It.IsAny<RemoteBook>(), null), Times.Never());
|
||||||
_pass2.Verify(c => c.IsSatisfiedBy(It.IsAny<RemoteAlbum>(), null), Times.Never());
|
_pass2.Verify(c => c.IsSatisfiedBy(It.IsAny<RemoteBook>(), null), Times.Never());
|
||||||
_pass3.Verify(c => c.IsSatisfiedBy(It.IsAny<RemoteAlbum>(), null), Times.Never());
|
_pass3.Verify(c => c.IsSatisfiedBy(It.IsAny<RemoteBook>(), null), Times.Never());
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void should_not_attempt_to_make_decision_if_artist_is_unknown()
|
public void should_not_attempt_to_make_decision_if_author_is_unknown()
|
||||||
{
|
{
|
||||||
GivenSpecifications(_pass1, _pass2, _pass3);
|
GivenSpecifications(_pass1, _pass2, _pass3);
|
||||||
|
|
||||||
@@ -234,7 +233,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
|
|||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void should_return_unknown_artist_rejection_if_artist_is_unknown()
|
public void should_return_unknown_author_rejection_if_author_is_unknown()
|
||||||
{
|
{
|
||||||
GivenSpecifications(_pass1, _pass2, _pass3);
|
GivenSpecifications(_pass1, _pass2, _pass3);
|
||||||
|
|
||||||
@@ -246,22 +245,22 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
|
|||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void should_only_include_reports_for_requested_albums()
|
public void should_only_include_reports_for_requested_books()
|
||||||
{
|
{
|
||||||
var artist = Builder<Author>.CreateNew().Build();
|
var author = Builder<Author>.CreateNew().Build();
|
||||||
|
|
||||||
var albums = Builder<Book>.CreateListOfSize(2)
|
var books = Builder<Book>.CreateListOfSize(2)
|
||||||
.All()
|
.All()
|
||||||
.With(v => v.AuthorId, artist.Id)
|
.With(v => v.AuthorId, author.Id)
|
||||||
.With(v => v.Author, new LazyLoaded<Author>(artist))
|
.With(v => v.Author, new LazyLoaded<Author>(author))
|
||||||
.BuildList();
|
.BuildList();
|
||||||
|
|
||||||
var criteria = new AuthorSearchCriteria { Books = albums.Take(1).ToList() };
|
var criteria = new AuthorSearchCriteria { Books = books.Take(1).ToList() };
|
||||||
|
|
||||||
var reports = albums.Select(v =>
|
var reports = books.Select(v =>
|
||||||
new ReleaseInfo()
|
new ReleaseInfo()
|
||||||
{
|
{
|
||||||
Title = string.Format("{0}-{1}[FLAC][2017][DRONE]", artist.Name, v.Title)
|
Title = string.Format("{0}-{1}[FLAC][2017][DRONE]", author.Name, v.Title)
|
||||||
}).ToList();
|
}).ToList();
|
||||||
|
|
||||||
Mocker.GetMock<IParsingService>()
|
Mocker.GetMock<IParsingService>()
|
||||||
@@ -271,8 +270,8 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
|
|||||||
{
|
{
|
||||||
DownloadAllowed = true,
|
DownloadAllowed = true,
|
||||||
ParsedBookInfo = p,
|
ParsedBookInfo = p,
|
||||||
Author = artist,
|
Author = author,
|
||||||
Books = albums.Where(v => v.Title == p.BookTitle).ToList()
|
Books = books.Where(v => v.Title == p.BookTitle).ToList()
|
||||||
});
|
});
|
||||||
|
|
||||||
Mocker.SetConstant<IEnumerable<IDecisionEngineSpecification>>(new List<IDecisionEngineSpecification>
|
Mocker.SetConstant<IEnumerable<IDecisionEngineSpecification>>(new List<IDecisionEngineSpecification>
|
||||||
@@ -288,7 +287,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
|
|||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void should_not_allow_download_if_artist_is_unknown()
|
public void should_not_allow_download_if_author_is_unknown()
|
||||||
{
|
{
|
||||||
GivenSpecifications(_pass1, _pass2, _pass3);
|
GivenSpecifications(_pass1, _pass2, _pass3);
|
||||||
|
|
||||||
@@ -302,7 +301,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
|
|||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void should_not_allow_download_if_no_albums_found()
|
public void should_not_allow_download_if_no_books_found()
|
||||||
{
|
{
|
||||||
GivenSpecifications(_pass1, _pass2, _pass3);
|
GivenSpecifications(_pass1, _pass2, _pass3);
|
||||||
|
|
||||||
|
|||||||
@@ -17,27 +17,27 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
|
|||||||
[TestFixture]
|
[TestFixture]
|
||||||
public class EarlyReleaseSpecificationFixture : TestBase<EarlyReleaseSpecification>
|
public class EarlyReleaseSpecificationFixture : TestBase<EarlyReleaseSpecification>
|
||||||
{
|
{
|
||||||
private Author _artist;
|
private Author _author;
|
||||||
private Book _album1;
|
private Book _book1;
|
||||||
private Book _album2;
|
private Book _book2;
|
||||||
private RemoteBook _remoteBook;
|
private RemoteBook _remoteBook;
|
||||||
private IndexerDefinition _indexerDefinition;
|
private IndexerDefinition _indexerDefinition;
|
||||||
|
|
||||||
[SetUp]
|
[SetUp]
|
||||||
public void Setup()
|
public void Setup()
|
||||||
{
|
{
|
||||||
_artist = Builder<Author>.CreateNew().With(s => s.Id = 1).Build();
|
_author = Builder<Author>.CreateNew().With(s => s.Id = 1).Build();
|
||||||
_album1 = Builder<Book>.CreateNew().With(s => s.ReleaseDate = DateTime.Today).Build();
|
_book1 = Builder<Book>.CreateNew().With(s => s.ReleaseDate = DateTime.Today).Build();
|
||||||
_album2 = Builder<Book>.CreateNew().With(s => s.ReleaseDate = DateTime.Today).Build();
|
_book2 = Builder<Book>.CreateNew().With(s => s.ReleaseDate = DateTime.Today).Build();
|
||||||
|
|
||||||
_remoteBook = new RemoteBook
|
_remoteBook = new RemoteBook
|
||||||
{
|
{
|
||||||
Author = _artist,
|
Author = _author,
|
||||||
Books = new List<Book> { _album1 },
|
Books = new List<Book> { _book1 },
|
||||||
Release = new TorrentInfo
|
Release = new TorrentInfo
|
||||||
{
|
{
|
||||||
IndexerId = 1,
|
IndexerId = 1,
|
||||||
Title = "Artist - Album [FLAC-RlsGrp]",
|
Title = "Author - Book [FLAC-RlsGrp]",
|
||||||
PublishDate = DateTime.Today
|
PublishDate = DateTime.Today
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -66,9 +66,9 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
|
|||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void should_return_true_if_release_contains_multiple_albums()
|
public void should_return_true_if_release_contains_multiple_books()
|
||||||
{
|
{
|
||||||
_remoteBook.Books.Add(_album2);
|
_remoteBook.Books.Add(_book2);
|
||||||
|
|
||||||
Subject.IsSatisfiedBy(_remoteBook, null).Accepted.Should().BeTrue();
|
Subject.IsSatisfiedBy(_remoteBook, null).Accepted.Should().BeTrue();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
|
|||||||
private RemoteBook _parseResultSingle;
|
private RemoteBook _parseResultSingle;
|
||||||
private QualityModel _upgradableQuality;
|
private QualityModel _upgradableQuality;
|
||||||
private QualityModel _notupgradableQuality;
|
private QualityModel _notupgradableQuality;
|
||||||
private Author _fakeArtist;
|
private Author _fakeAuthor;
|
||||||
|
|
||||||
[SetUp]
|
[SetUp]
|
||||||
public void Setup()
|
public void Setup()
|
||||||
@@ -37,15 +37,15 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
|
|||||||
Mocker.Resolve<UpgradableSpecification>();
|
Mocker.Resolve<UpgradableSpecification>();
|
||||||
_upgradeHistory = Mocker.Resolve<HistorySpecification>();
|
_upgradeHistory = Mocker.Resolve<HistorySpecification>();
|
||||||
|
|
||||||
var singleAlbumList = new List<Book> { new Book { Id = FIRST_ALBUM_ID } };
|
var singleBookList = new List<Book> { new Book { Id = FIRST_ALBUM_ID } };
|
||||||
var doubleAlbumList = new List<Book>
|
var doubleBookList = new List<Book>
|
||||||
{
|
{
|
||||||
new Book { Id = FIRST_ALBUM_ID },
|
new Book { Id = FIRST_ALBUM_ID },
|
||||||
new Book { Id = SECOND_ALBUM_ID },
|
new Book { Id = SECOND_ALBUM_ID },
|
||||||
new Book { Id = 3 }
|
new Book { Id = 3 }
|
||||||
};
|
};
|
||||||
|
|
||||||
_fakeArtist = Builder<Author>.CreateNew()
|
_fakeAuthor = Builder<Author>.CreateNew()
|
||||||
.With(c => c.QualityProfile = new QualityProfile
|
.With(c => c.QualityProfile = new QualityProfile
|
||||||
{
|
{
|
||||||
UpgradeAllowed = true,
|
UpgradeAllowed = true,
|
||||||
@@ -56,16 +56,16 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
|
|||||||
|
|
||||||
_parseResultMulti = new RemoteBook
|
_parseResultMulti = new RemoteBook
|
||||||
{
|
{
|
||||||
Author = _fakeArtist,
|
Author = _fakeAuthor,
|
||||||
ParsedBookInfo = new ParsedBookInfo { Quality = new QualityModel(Quality.MP3_320, new Revision(version: 2)) },
|
ParsedBookInfo = new ParsedBookInfo { Quality = new QualityModel(Quality.MP3_320, new Revision(version: 2)) },
|
||||||
Books = doubleAlbumList
|
Books = doubleBookList
|
||||||
};
|
};
|
||||||
|
|
||||||
_parseResultSingle = new RemoteBook
|
_parseResultSingle = new RemoteBook
|
||||||
{
|
{
|
||||||
Author = _fakeArtist,
|
Author = _fakeAuthor,
|
||||||
ParsedBookInfo = new ParsedBookInfo { Quality = new QualityModel(Quality.MP3_320, new Revision(version: 2)) },
|
ParsedBookInfo = new ParsedBookInfo { Quality = new QualityModel(Quality.MP3_320, new Revision(version: 2)) },
|
||||||
Books = singleAlbumList
|
Books = singleBookList
|
||||||
};
|
};
|
||||||
|
|
||||||
_upgradableQuality = new QualityModel(Quality.MP3_320, new Revision(version: 1));
|
_upgradableQuality = new QualityModel(Quality.MP3_320, new Revision(version: 1));
|
||||||
@@ -76,7 +76,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
|
|||||||
.Returns(true);
|
.Returns(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void GivenMostRecentForAlbum(int bookId, string downloadId, QualityModel quality, DateTime date, HistoryEventType eventType)
|
private void GivenMostRecentForBook(int bookId, string downloadId, QualityModel quality, DateTime date, HistoryEventType eventType)
|
||||||
{
|
{
|
||||||
Mocker.GetMock<IHistoryService>().Setup(s => s.MostRecentForBook(bookId))
|
Mocker.GetMock<IHistoryService>().Setup(s => s.MostRecentForBook(bookId))
|
||||||
.Returns(new History.History { DownloadId = downloadId, Quality = quality, Date = date, EventType = eventType });
|
.Returns(new History.History { DownloadId = downloadId, Quality = quality, Date = date, EventType = eventType });
|
||||||
@@ -105,7 +105,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
|
|||||||
[Test]
|
[Test]
|
||||||
public void should_return_true_if_latest_history_item_is_not_grabbed()
|
public void should_return_true_if_latest_history_item_is_not_grabbed()
|
||||||
{
|
{
|
||||||
GivenMostRecentForAlbum(FIRST_ALBUM_ID, string.Empty, _notupgradableQuality, DateTime.UtcNow, HistoryEventType.DownloadFailed);
|
GivenMostRecentForBook(FIRST_ALBUM_ID, string.Empty, _notupgradableQuality, DateTime.UtcNow, HistoryEventType.DownloadFailed);
|
||||||
_upgradeHistory.IsSatisfiedBy(_parseResultMulti, null).Accepted.Should().BeTrue();
|
_upgradeHistory.IsSatisfiedBy(_parseResultMulti, null).Accepted.Should().BeTrue();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -118,57 +118,57 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
|
|||||||
[Test]
|
[Test]
|
||||||
public void should_return_true_if_latest_history_item_is_older_than_twelve_hours()
|
public void should_return_true_if_latest_history_item_is_older_than_twelve_hours()
|
||||||
{
|
{
|
||||||
GivenMostRecentForAlbum(FIRST_ALBUM_ID, string.Empty, _notupgradableQuality, DateTime.UtcNow.AddHours(-12).AddMilliseconds(-1), HistoryEventType.Grabbed);
|
GivenMostRecentForBook(FIRST_ALBUM_ID, string.Empty, _notupgradableQuality, DateTime.UtcNow.AddHours(-12).AddMilliseconds(-1), HistoryEventType.Grabbed);
|
||||||
_upgradeHistory.IsSatisfiedBy(_parseResultMulti, null).Accepted.Should().BeTrue();
|
_upgradeHistory.IsSatisfiedBy(_parseResultMulti, null).Accepted.Should().BeTrue();
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void should_be_upgradable_if_only_album_is_upgradable()
|
public void should_be_upgradable_if_only_book_is_upgradable()
|
||||||
{
|
{
|
||||||
GivenMostRecentForAlbum(FIRST_ALBUM_ID, string.Empty, _upgradableQuality, DateTime.UtcNow, HistoryEventType.Grabbed);
|
GivenMostRecentForBook(FIRST_ALBUM_ID, string.Empty, _upgradableQuality, DateTime.UtcNow, HistoryEventType.Grabbed);
|
||||||
_upgradeHistory.IsSatisfiedBy(_parseResultSingle, null).Accepted.Should().BeTrue();
|
_upgradeHistory.IsSatisfiedBy(_parseResultSingle, null).Accepted.Should().BeTrue();
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void should_be_upgradable_if_both_albums_are_upgradable()
|
public void should_be_upgradable_if_both_books_are_upgradable()
|
||||||
{
|
{
|
||||||
GivenMostRecentForAlbum(FIRST_ALBUM_ID, string.Empty, _upgradableQuality, DateTime.UtcNow, HistoryEventType.Grabbed);
|
GivenMostRecentForBook(FIRST_ALBUM_ID, string.Empty, _upgradableQuality, DateTime.UtcNow, HistoryEventType.Grabbed);
|
||||||
GivenMostRecentForAlbum(SECOND_ALBUM_ID, string.Empty, _upgradableQuality, DateTime.UtcNow, HistoryEventType.Grabbed);
|
GivenMostRecentForBook(SECOND_ALBUM_ID, string.Empty, _upgradableQuality, DateTime.UtcNow, HistoryEventType.Grabbed);
|
||||||
_upgradeHistory.IsSatisfiedBy(_parseResultMulti, null).Accepted.Should().BeTrue();
|
_upgradeHistory.IsSatisfiedBy(_parseResultMulti, null).Accepted.Should().BeTrue();
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void should_not_be_upgradable_if_both_albums_are_not_upgradable()
|
public void should_not_be_upgradable_if_both_books_are_not_upgradable()
|
||||||
{
|
{
|
||||||
GivenMostRecentForAlbum(FIRST_ALBUM_ID, string.Empty, _notupgradableQuality, DateTime.UtcNow, HistoryEventType.Grabbed);
|
GivenMostRecentForBook(FIRST_ALBUM_ID, string.Empty, _notupgradableQuality, DateTime.UtcNow, HistoryEventType.Grabbed);
|
||||||
GivenMostRecentForAlbum(SECOND_ALBUM_ID, string.Empty, _notupgradableQuality, DateTime.UtcNow, HistoryEventType.Grabbed);
|
GivenMostRecentForBook(SECOND_ALBUM_ID, string.Empty, _notupgradableQuality, DateTime.UtcNow, HistoryEventType.Grabbed);
|
||||||
_upgradeHistory.IsSatisfiedBy(_parseResultMulti, null).Accepted.Should().BeFalse();
|
_upgradeHistory.IsSatisfiedBy(_parseResultMulti, null).Accepted.Should().BeFalse();
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void should_be_not_upgradable_if_only_first_albums_is_upgradable()
|
public void should_be_not_upgradable_if_only_first_books_is_upgradable()
|
||||||
{
|
{
|
||||||
GivenMostRecentForAlbum(FIRST_ALBUM_ID, string.Empty, _upgradableQuality, DateTime.UtcNow, HistoryEventType.Grabbed);
|
GivenMostRecentForBook(FIRST_ALBUM_ID, string.Empty, _upgradableQuality, DateTime.UtcNow, HistoryEventType.Grabbed);
|
||||||
GivenMostRecentForAlbum(FIRST_ALBUM_ID, string.Empty, _notupgradableQuality, DateTime.UtcNow, HistoryEventType.Grabbed);
|
GivenMostRecentForBook(FIRST_ALBUM_ID, string.Empty, _notupgradableQuality, DateTime.UtcNow, HistoryEventType.Grabbed);
|
||||||
_upgradeHistory.IsSatisfiedBy(_parseResultMulti, null).Accepted.Should().BeFalse();
|
_upgradeHistory.IsSatisfiedBy(_parseResultMulti, null).Accepted.Should().BeFalse();
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void should_be_not_upgradable_if_only_second_albums_is_upgradable()
|
public void should_be_not_upgradable_if_only_second_books_is_upgradable()
|
||||||
{
|
{
|
||||||
GivenMostRecentForAlbum(FIRST_ALBUM_ID, string.Empty, _notupgradableQuality, DateTime.UtcNow, HistoryEventType.Grabbed);
|
GivenMostRecentForBook(FIRST_ALBUM_ID, string.Empty, _notupgradableQuality, DateTime.UtcNow, HistoryEventType.Grabbed);
|
||||||
GivenMostRecentForAlbum(SECOND_ALBUM_ID, string.Empty, _upgradableQuality, DateTime.UtcNow, HistoryEventType.Grabbed);
|
GivenMostRecentForBook(SECOND_ALBUM_ID, string.Empty, _upgradableQuality, DateTime.UtcNow, HistoryEventType.Grabbed);
|
||||||
_upgradeHistory.IsSatisfiedBy(_parseResultMulti, null).Accepted.Should().BeFalse();
|
_upgradeHistory.IsSatisfiedBy(_parseResultMulti, null).Accepted.Should().BeFalse();
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void should_not_be_upgradable_if_album_is_of_same_quality_as_existing()
|
public void should_not_be_upgradable_if_book_is_of_same_quality_as_existing()
|
||||||
{
|
{
|
||||||
_fakeArtist.QualityProfile = new QualityProfile { Cutoff = Quality.MP3_320.Id, Items = Qualities.QualityFixture.GetDefaultQualities() };
|
_fakeAuthor.QualityProfile = new QualityProfile { Cutoff = Quality.MP3_320.Id, Items = Qualities.QualityFixture.GetDefaultQualities() };
|
||||||
_parseResultSingle.ParsedBookInfo.Quality = new QualityModel(Quality.MP3_320, new Revision(version: 1));
|
_parseResultSingle.ParsedBookInfo.Quality = new QualityModel(Quality.MP3_320, new Revision(version: 1));
|
||||||
_upgradableQuality = new QualityModel(Quality.MP3_320, new Revision(version: 1));
|
_upgradableQuality = new QualityModel(Quality.MP3_320, new Revision(version: 1));
|
||||||
|
|
||||||
GivenMostRecentForAlbum(FIRST_ALBUM_ID, string.Empty, _upgradableQuality, DateTime.UtcNow, HistoryEventType.Grabbed);
|
GivenMostRecentForBook(FIRST_ALBUM_ID, string.Empty, _upgradableQuality, DateTime.UtcNow, HistoryEventType.Grabbed);
|
||||||
|
|
||||||
_upgradeHistory.IsSatisfiedBy(_parseResultSingle, null).Accepted.Should().BeFalse();
|
_upgradeHistory.IsSatisfiedBy(_parseResultSingle, null).Accepted.Should().BeFalse();
|
||||||
}
|
}
|
||||||
@@ -176,11 +176,11 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
|
|||||||
[Test]
|
[Test]
|
||||||
public void should_not_be_upgradable_if_cutoff_already_met()
|
public void should_not_be_upgradable_if_cutoff_already_met()
|
||||||
{
|
{
|
||||||
_fakeArtist.QualityProfile = new QualityProfile { Cutoff = Quality.MP3_320.Id, Items = Qualities.QualityFixture.GetDefaultQualities() };
|
_fakeAuthor.QualityProfile = new QualityProfile { Cutoff = Quality.MP3_320.Id, Items = Qualities.QualityFixture.GetDefaultQualities() };
|
||||||
_parseResultSingle.ParsedBookInfo.Quality = new QualityModel(Quality.MP3_320, new Revision(version: 1));
|
_parseResultSingle.ParsedBookInfo.Quality = new QualityModel(Quality.MP3_320, new Revision(version: 1));
|
||||||
_upgradableQuality = new QualityModel(Quality.MP3_320, new Revision(version: 1));
|
_upgradableQuality = new QualityModel(Quality.MP3_320, new Revision(version: 1));
|
||||||
|
|
||||||
GivenMostRecentForAlbum(FIRST_ALBUM_ID, string.Empty, _upgradableQuality, DateTime.UtcNow, HistoryEventType.Grabbed);
|
GivenMostRecentForBook(FIRST_ALBUM_ID, string.Empty, _upgradableQuality, DateTime.UtcNow, HistoryEventType.Grabbed);
|
||||||
|
|
||||||
_upgradeHistory.IsSatisfiedBy(_parseResultSingle, null).Accepted.Should().BeFalse();
|
_upgradeHistory.IsSatisfiedBy(_parseResultSingle, null).Accepted.Should().BeFalse();
|
||||||
}
|
}
|
||||||
@@ -188,7 +188,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
|
|||||||
[Test]
|
[Test]
|
||||||
public void should_return_false_if_latest_history_item_is_only_one_hour_old()
|
public void should_return_false_if_latest_history_item_is_only_one_hour_old()
|
||||||
{
|
{
|
||||||
GivenMostRecentForAlbum(FIRST_ALBUM_ID, string.Empty, _notupgradableQuality, DateTime.UtcNow.AddHours(-1), HistoryEventType.Grabbed);
|
GivenMostRecentForBook(FIRST_ALBUM_ID, string.Empty, _notupgradableQuality, DateTime.UtcNow.AddHours(-1), HistoryEventType.Grabbed);
|
||||||
_upgradeHistory.IsSatisfiedBy(_parseResultMulti, null).Accepted.Should().BeFalse();
|
_upgradeHistory.IsSatisfiedBy(_parseResultMulti, null).Accepted.Should().BeFalse();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -196,7 +196,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
|
|||||||
public void should_return_false_if_latest_history_has_a_download_id_and_cdh_is_disabled()
|
public void should_return_false_if_latest_history_has_a_download_id_and_cdh_is_disabled()
|
||||||
{
|
{
|
||||||
GivenCdhDisabled();
|
GivenCdhDisabled();
|
||||||
GivenMostRecentForAlbum(FIRST_ALBUM_ID, "test", _upgradableQuality, DateTime.UtcNow.AddDays(-100), HistoryEventType.Grabbed);
|
GivenMostRecentForBook(FIRST_ALBUM_ID, "test", _upgradableQuality, DateTime.UtcNow.AddDays(-100), HistoryEventType.Grabbed);
|
||||||
_upgradeHistory.IsSatisfiedBy(_parseResultMulti, null).Accepted.Should().BeTrue();
|
_upgradeHistory.IsSatisfiedBy(_parseResultMulti, null).Accepted.Should().BeTrue();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -204,20 +204,20 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
|
|||||||
public void should_return_false_if_cutoff_already_met_and_cdh_is_disabled()
|
public void should_return_false_if_cutoff_already_met_and_cdh_is_disabled()
|
||||||
{
|
{
|
||||||
GivenCdhDisabled();
|
GivenCdhDisabled();
|
||||||
_fakeArtist.QualityProfile = new QualityProfile { Cutoff = Quality.MP3_320.Id, Items = Qualities.QualityFixture.GetDefaultQualities() };
|
_fakeAuthor.QualityProfile = new QualityProfile { Cutoff = Quality.MP3_320.Id, Items = Qualities.QualityFixture.GetDefaultQualities() };
|
||||||
_parseResultSingle.ParsedBookInfo.Quality = new QualityModel(Quality.MP3_320, new Revision(version: 1));
|
_parseResultSingle.ParsedBookInfo.Quality = new QualityModel(Quality.MP3_320, new Revision(version: 1));
|
||||||
_upgradableQuality = new QualityModel(Quality.MP3_320, new Revision(version: 1));
|
_upgradableQuality = new QualityModel(Quality.MP3_320, new Revision(version: 1));
|
||||||
|
|
||||||
GivenMostRecentForAlbum(FIRST_ALBUM_ID, "test", _upgradableQuality, DateTime.UtcNow.AddDays(-100), HistoryEventType.Grabbed);
|
GivenMostRecentForBook(FIRST_ALBUM_ID, "test", _upgradableQuality, DateTime.UtcNow.AddDays(-100), HistoryEventType.Grabbed);
|
||||||
|
|
||||||
_upgradeHistory.IsSatisfiedBy(_parseResultSingle, null).Accepted.Should().BeFalse();
|
_upgradeHistory.IsSatisfiedBy(_parseResultSingle, null).Accepted.Should().BeFalse();
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void should_return_false_if_only_album_is_not_upgradable_and_cdh_is_disabled()
|
public void should_return_false_if_only_book_is_not_upgradable_and_cdh_is_disabled()
|
||||||
{
|
{
|
||||||
GivenCdhDisabled();
|
GivenCdhDisabled();
|
||||||
GivenMostRecentForAlbum(FIRST_ALBUM_ID, "test", _notupgradableQuality, DateTime.UtcNow.AddDays(-100), HistoryEventType.Grabbed);
|
GivenMostRecentForBook(FIRST_ALBUM_ID, "test", _notupgradableQuality, DateTime.UtcNow.AddDays(-100), HistoryEventType.Grabbed);
|
||||||
_upgradeHistory.IsSatisfiedBy(_parseResultSingle, null).Accepted.Should().BeFalse();
|
_upgradeHistory.IsSatisfiedBy(_parseResultSingle, null).Accepted.Should().BeFalse();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,128 +12,128 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
|
|||||||
{
|
{
|
||||||
[TestFixture]
|
[TestFixture]
|
||||||
|
|
||||||
public class MonitoredAlbumSpecificationFixture : CoreTest<MonitoredBookSpecification>
|
public class MonitoredBookSpecificationFixture : CoreTest<MonitoredBookSpecification>
|
||||||
{
|
{
|
||||||
private MonitoredBookSpecification _monitoredAlbumSpecification;
|
private MonitoredBookSpecification _monitoredBookSpecification;
|
||||||
|
|
||||||
private RemoteBook _parseResultMulti;
|
private RemoteBook _parseResultMulti;
|
||||||
private RemoteBook _parseResultSingle;
|
private RemoteBook _parseResultSingle;
|
||||||
private Author _fakeArtist;
|
private Author _fakeAuthor;
|
||||||
private Book _firstAlbum;
|
private Book _firstBook;
|
||||||
private Book _secondAlbum;
|
private Book _secondBook;
|
||||||
|
|
||||||
[SetUp]
|
[SetUp]
|
||||||
public void Setup()
|
public void Setup()
|
||||||
{
|
{
|
||||||
_monitoredAlbumSpecification = Mocker.Resolve<MonitoredBookSpecification>();
|
_monitoredBookSpecification = Mocker.Resolve<MonitoredBookSpecification>();
|
||||||
|
|
||||||
_fakeArtist = Builder<Author>.CreateNew()
|
_fakeAuthor = Builder<Author>.CreateNew()
|
||||||
.With(c => c.Monitored = true)
|
.With(c => c.Monitored = true)
|
||||||
.Build();
|
.Build();
|
||||||
|
|
||||||
_firstAlbum = new Book { Monitored = true };
|
_firstBook = new Book { Monitored = true };
|
||||||
_secondAlbum = new Book { Monitored = true };
|
_secondBook = new Book { Monitored = true };
|
||||||
|
|
||||||
var singleAlbumList = new List<Book> { _firstAlbum };
|
var singleBookList = new List<Book> { _firstBook };
|
||||||
var doubleAlbumList = new List<Book> { _firstAlbum, _secondAlbum };
|
var doubleBookList = new List<Book> { _firstBook, _secondBook };
|
||||||
|
|
||||||
_parseResultMulti = new RemoteBook
|
_parseResultMulti = new RemoteBook
|
||||||
{
|
{
|
||||||
Author = _fakeArtist,
|
Author = _fakeAuthor,
|
||||||
Books = doubleAlbumList
|
Books = doubleBookList
|
||||||
};
|
};
|
||||||
|
|
||||||
_parseResultSingle = new RemoteBook
|
_parseResultSingle = new RemoteBook
|
||||||
{
|
{
|
||||||
Author = _fakeArtist,
|
Author = _fakeAuthor,
|
||||||
Books = singleAlbumList
|
Books = singleBookList
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
private void WithFirstAlbumUnmonitored()
|
private void WithFirstBookUnmonitored()
|
||||||
{
|
{
|
||||||
_firstAlbum.Monitored = false;
|
_firstBook.Monitored = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void WithSecondAlbumUnmonitored()
|
private void WithSecondBookUnmonitored()
|
||||||
{
|
{
|
||||||
_secondAlbum.Monitored = false;
|
_secondBook.Monitored = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void setup_should_return_monitored_album_should_return_true()
|
public void setup_should_return_monitored_book_should_return_true()
|
||||||
{
|
{
|
||||||
_monitoredAlbumSpecification.IsSatisfiedBy(_parseResultSingle, null).Accepted.Should().BeTrue();
|
_monitoredBookSpecification.IsSatisfiedBy(_parseResultSingle, null).Accepted.Should().BeTrue();
|
||||||
_monitoredAlbumSpecification.IsSatisfiedBy(_parseResultMulti, null).Accepted.Should().BeTrue();
|
_monitoredBookSpecification.IsSatisfiedBy(_parseResultMulti, null).Accepted.Should().BeTrue();
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void not_monitored_artist_should_be_skipped()
|
public void not_monitored_author_should_be_skipped()
|
||||||
{
|
{
|
||||||
_fakeArtist.Monitored = false;
|
_fakeAuthor.Monitored = false;
|
||||||
_monitoredAlbumSpecification.IsSatisfiedBy(_parseResultMulti, null).Accepted.Should().BeFalse();
|
_monitoredBookSpecification.IsSatisfiedBy(_parseResultMulti, null).Accepted.Should().BeFalse();
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void only_album_not_monitored_should_return_false()
|
public void only_book_not_monitored_should_return_false()
|
||||||
{
|
{
|
||||||
WithFirstAlbumUnmonitored();
|
WithFirstBookUnmonitored();
|
||||||
_monitoredAlbumSpecification.IsSatisfiedBy(_parseResultSingle, null).Accepted.Should().BeFalse();
|
_monitoredBookSpecification.IsSatisfiedBy(_parseResultSingle, null).Accepted.Should().BeFalse();
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void both_albums_not_monitored_should_return_false()
|
public void both_books_not_monitored_should_return_false()
|
||||||
{
|
{
|
||||||
WithFirstAlbumUnmonitored();
|
WithFirstBookUnmonitored();
|
||||||
WithSecondAlbumUnmonitored();
|
WithSecondBookUnmonitored();
|
||||||
_monitoredAlbumSpecification.IsSatisfiedBy(_parseResultMulti, null).Accepted.Should().BeFalse();
|
_monitoredBookSpecification.IsSatisfiedBy(_parseResultMulti, null).Accepted.Should().BeFalse();
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void only_first_album_not_monitored_should_return_false()
|
public void only_first_book_not_monitored_should_return_false()
|
||||||
{
|
{
|
||||||
WithFirstAlbumUnmonitored();
|
WithFirstBookUnmonitored();
|
||||||
_monitoredAlbumSpecification.IsSatisfiedBy(_parseResultMulti, null).Accepted.Should().BeFalse();
|
_monitoredBookSpecification.IsSatisfiedBy(_parseResultMulti, null).Accepted.Should().BeFalse();
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void only_second_album_not_monitored_should_return_false()
|
public void only_second_book_not_monitored_should_return_false()
|
||||||
{
|
{
|
||||||
WithSecondAlbumUnmonitored();
|
WithSecondBookUnmonitored();
|
||||||
_monitoredAlbumSpecification.IsSatisfiedBy(_parseResultMulti, null).Accepted.Should().BeFalse();
|
_monitoredBookSpecification.IsSatisfiedBy(_parseResultMulti, null).Accepted.Should().BeFalse();
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void should_return_true_for_single_album_search()
|
public void should_return_true_for_single_book_search()
|
||||||
{
|
{
|
||||||
_fakeArtist.Monitored = false;
|
_fakeAuthor.Monitored = false;
|
||||||
_monitoredAlbumSpecification.IsSatisfiedBy(_parseResultSingle, new BookSearchCriteria()).Accepted.Should().BeTrue();
|
_monitoredBookSpecification.IsSatisfiedBy(_parseResultSingle, new BookSearchCriteria()).Accepted.Should().BeTrue();
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void should_return_true_if_album_is_not_monitored_and_monitoredEpisodesOnly_flag_is_false()
|
public void should_return_true_if_book_is_not_monitored_and_monitoredEpisodesOnly_flag_is_false()
|
||||||
{
|
{
|
||||||
WithFirstAlbumUnmonitored();
|
WithFirstBookUnmonitored();
|
||||||
_monitoredAlbumSpecification.IsSatisfiedBy(_parseResultSingle, new BookSearchCriteria { MonitoredBooksOnly = false }).Accepted.Should().BeTrue();
|
_monitoredBookSpecification.IsSatisfiedBy(_parseResultSingle, new BookSearchCriteria { MonitoredBooksOnly = false }).Accepted.Should().BeTrue();
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void should_return_false_if_album_is_not_monitored_and_monitoredEpisodesOnly_flag_is_true()
|
public void should_return_false_if_book_is_not_monitored_and_monitoredEpisodesOnly_flag_is_true()
|
||||||
{
|
{
|
||||||
WithFirstAlbumUnmonitored();
|
WithFirstBookUnmonitored();
|
||||||
_monitoredAlbumSpecification.IsSatisfiedBy(_parseResultSingle, new BookSearchCriteria { MonitoredBooksOnly = true }).Accepted.Should().BeFalse();
|
_monitoredBookSpecification.IsSatisfiedBy(_parseResultSingle, new BookSearchCriteria { MonitoredBooksOnly = true }).Accepted.Should().BeFalse();
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void should_return_false_if_all_albums_are_not_monitored_for_discography_pack_release()
|
public void should_return_false_if_all_books_are_not_monitored_for_discography_pack_release()
|
||||||
{
|
{
|
||||||
WithSecondAlbumUnmonitored();
|
WithSecondBookUnmonitored();
|
||||||
_parseResultMulti.ParsedBookInfo = new ParsedBookInfo()
|
_parseResultMulti.ParsedBookInfo = new ParsedBookInfo()
|
||||||
{
|
{
|
||||||
Discography = true
|
Discography = true
|
||||||
};
|
};
|
||||||
|
|
||||||
_monitoredAlbumSpecification.IsSatisfiedBy(_parseResultMulti, null).Accepted.Should().BeFalse();
|
_monitoredBookSpecification.IsSatisfiedBy(_parseResultMulti, null).Accepted.Should().BeFalse();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -27,21 +27,21 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
|
|||||||
GivenPreferredDownloadProtocol(DownloadProtocol.Usenet);
|
GivenPreferredDownloadProtocol(DownloadProtocol.Usenet);
|
||||||
}
|
}
|
||||||
|
|
||||||
private Book GivenAlbum(int id)
|
private Book GivenBook(int id)
|
||||||
{
|
{
|
||||||
return Builder<Book>.CreateNew()
|
return Builder<Book>.CreateNew()
|
||||||
.With(e => e.Id = id)
|
.With(e => e.Id = id)
|
||||||
.Build();
|
.Build();
|
||||||
}
|
}
|
||||||
|
|
||||||
private RemoteBook GivenRemoteAlbum(List<Book> albums, QualityModel quality, int age = 0, long size = 0, DownloadProtocol downloadProtocol = DownloadProtocol.Usenet, int indexerPriority = 25)
|
private RemoteBook GivenRemoteBook(List<Book> books, QualityModel quality, int age = 0, long size = 0, DownloadProtocol downloadProtocol = DownloadProtocol.Usenet, int indexerPriority = 25)
|
||||||
{
|
{
|
||||||
var remoteBook = new RemoteBook();
|
var remoteBook = new RemoteBook();
|
||||||
remoteBook.ParsedBookInfo = new ParsedBookInfo();
|
remoteBook.ParsedBookInfo = new ParsedBookInfo();
|
||||||
remoteBook.ParsedBookInfo.Quality = quality;
|
remoteBook.ParsedBookInfo.Quality = quality;
|
||||||
|
|
||||||
remoteBook.Books = new List<Book>();
|
remoteBook.Books = new List<Book>();
|
||||||
remoteBook.Books.AddRange(albums);
|
remoteBook.Books.AddRange(books);
|
||||||
|
|
||||||
remoteBook.Release = new ReleaseInfo();
|
remoteBook.Release = new ReleaseInfo();
|
||||||
remoteBook.Release.PublishDate = DateTime.Now.AddDays(-age);
|
remoteBook.Release.PublishDate = DateTime.Now.AddDays(-age);
|
||||||
@@ -73,22 +73,22 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
|
|||||||
[Test]
|
[Test]
|
||||||
public void should_put_reals_before_non_reals()
|
public void should_put_reals_before_non_reals()
|
||||||
{
|
{
|
||||||
var remoteAlbum1 = GivenRemoteAlbum(new List<Album> { GivenAlbum(1) }, new QualityModel(Quality.MP3_256, new Revision(version: 1, real: 0)));
|
var remoteBook1 = GivenRemoteBook(new List<Book> { GivenBook(1) }, new QualityModel(Quality.MP3_320, new Revision(version: 1, real: 0)));
|
||||||
var remoteAlbum2 = GivenRemoteAlbum(new List<Album> { GivenAlbum(1) }, new QualityModel(Quality.MP3_256, new Revision(version: 1, real: 1)));
|
var remoteBook2 = GivenRemoteBook(new List<Book> { GivenBook(1) }, new QualityModel(Quality.MP3_320, new Revision(version: 1, real: 1)));
|
||||||
|
|
||||||
var decisions = new List<DownloadDecision>();
|
var decisions = new List<DownloadDecision>();
|
||||||
decisions.Add(new DownloadDecision(remoteAlbum1));
|
decisions.Add(new DownloadDecision(remoteBook1));
|
||||||
decisions.Add(new DownloadDecision(remoteAlbum2));
|
decisions.Add(new DownloadDecision(remoteBook2));
|
||||||
|
|
||||||
var qualifiedReports = Subject.PrioritizeDecisions(decisions);
|
var qualifiedReports = Subject.PrioritizeDecisions(decisions);
|
||||||
qualifiedReports.First().RemoteAlbum.ParsedAlbumInfo.Quality.Revision.Real.Should().Be(1);
|
qualifiedReports.First().RemoteBook.ParsedBookInfo.Quality.Revision.Real.Should().Be(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void should_put_propers_before_non_propers()
|
public void should_put_propers_before_non_propers()
|
||||||
{
|
{
|
||||||
var remoteBook1 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.MP3_320, new Revision(version: 1)));
|
var remoteBook1 = GivenRemoteBook(new List<Book> { GivenBook(1) }, new QualityModel(Quality.MP3_320, new Revision(version: 1)));
|
||||||
var remoteBook2 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.MP3_320, new Revision(version: 2)));
|
var remoteBook2 = GivenRemoteBook(new List<Book> { GivenBook(1) }, new QualityModel(Quality.MP3_320, new Revision(version: 2)));
|
||||||
|
|
||||||
var decisions = new List<DownloadDecision>();
|
var decisions = new List<DownloadDecision>();
|
||||||
decisions.Add(new DownloadDecision(remoteBook1));
|
decisions.Add(new DownloadDecision(remoteBook1));
|
||||||
@@ -101,8 +101,8 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
|
|||||||
[Test]
|
[Test]
|
||||||
public void should_put_higher_quality_before_lower()
|
public void should_put_higher_quality_before_lower()
|
||||||
{
|
{
|
||||||
var remoteBook1 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.MP3_320));
|
var remoteBook1 = GivenRemoteBook(new List<Book> { GivenBook(1) }, new QualityModel(Quality.MP3_320));
|
||||||
var remoteBook2 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.MP3_320));
|
var remoteBook2 = GivenRemoteBook(new List<Book> { GivenBook(1) }, new QualityModel(Quality.MP3_320));
|
||||||
|
|
||||||
var decisions = new List<DownloadDecision>();
|
var decisions = new List<DownloadDecision>();
|
||||||
decisions.Add(new DownloadDecision(remoteBook1));
|
decisions.Add(new DownloadDecision(remoteBook1));
|
||||||
@@ -115,10 +115,10 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
|
|||||||
[Test]
|
[Test]
|
||||||
public void should_order_by_age_then_largest_rounded_to_200mb()
|
public void should_order_by_age_then_largest_rounded_to_200mb()
|
||||||
{
|
{
|
||||||
var remoteBookSd = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.MP3_320), size: 100.Megabytes(), age: 1);
|
var remoteBookSd = GivenRemoteBook(new List<Book> { GivenBook(1) }, new QualityModel(Quality.MP3_320), size: 100.Megabytes(), age: 1);
|
||||||
var remoteBookHdSmallOld = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.MP3_320), size: 1200.Megabytes(), age: 1000);
|
var remoteBookHdSmallOld = GivenRemoteBook(new List<Book> { GivenBook(1) }, new QualityModel(Quality.MP3_320), size: 1200.Megabytes(), age: 1000);
|
||||||
var remoteBookSmallYoung = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.MP3_320), size: 1250.Megabytes(), age: 10);
|
var remoteBookSmallYoung = GivenRemoteBook(new List<Book> { GivenBook(1) }, new QualityModel(Quality.MP3_320), size: 1250.Megabytes(), age: 10);
|
||||||
var remoteBookHdLargeYoung = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.MP3_320), size: 3000.Megabytes(), age: 1);
|
var remoteBookHdLargeYoung = GivenRemoteBook(new List<Book> { GivenBook(1) }, new QualityModel(Quality.MP3_320), size: 3000.Megabytes(), age: 1);
|
||||||
|
|
||||||
var decisions = new List<DownloadDecision>();
|
var decisions = new List<DownloadDecision>();
|
||||||
decisions.Add(new DownloadDecision(remoteBookSd));
|
decisions.Add(new DownloadDecision(remoteBookSd));
|
||||||
@@ -133,8 +133,8 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
|
|||||||
[Test]
|
[Test]
|
||||||
public void should_order_by_youngest()
|
public void should_order_by_youngest()
|
||||||
{
|
{
|
||||||
var remoteBook1 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.MP3_320), age: 10);
|
var remoteBook1 = GivenRemoteBook(new List<Book> { GivenBook(1) }, new QualityModel(Quality.MP3_320), age: 10);
|
||||||
var remoteBook2 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.MP3_320), age: 5);
|
var remoteBook2 = GivenRemoteBook(new List<Book> { GivenBook(1) }, new QualityModel(Quality.MP3_320), age: 5);
|
||||||
|
|
||||||
var decisions = new List<DownloadDecision>();
|
var decisions = new List<DownloadDecision>();
|
||||||
decisions.Add(new DownloadDecision(remoteBook1));
|
decisions.Add(new DownloadDecision(remoteBook1));
|
||||||
@@ -145,10 +145,10 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
|
|||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void should_not_throw_if_no_albums_are_found()
|
public void should_not_throw_if_no_books_are_found()
|
||||||
{
|
{
|
||||||
var remoteBook1 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.MP3_320), size: 500.Megabytes());
|
var remoteBook1 = GivenRemoteBook(new List<Book> { GivenBook(1) }, new QualityModel(Quality.MP3_320), size: 500.Megabytes());
|
||||||
var remoteBook2 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.MP3_320), size: 500.Megabytes());
|
var remoteBook2 = GivenRemoteBook(new List<Book> { GivenBook(1) }, new QualityModel(Quality.MP3_320), size: 500.Megabytes());
|
||||||
|
|
||||||
remoteBook1.Books = new List<Book>();
|
remoteBook1.Books = new List<Book>();
|
||||||
|
|
||||||
@@ -164,8 +164,8 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
|
|||||||
{
|
{
|
||||||
GivenPreferredDownloadProtocol(DownloadProtocol.Usenet);
|
GivenPreferredDownloadProtocol(DownloadProtocol.Usenet);
|
||||||
|
|
||||||
var remoteBook1 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.MP3_320), downloadProtocol: DownloadProtocol.Torrent);
|
var remoteBook1 = GivenRemoteBook(new List<Book> { GivenBook(1) }, new QualityModel(Quality.MP3_320), downloadProtocol: DownloadProtocol.Torrent);
|
||||||
var remoteBook2 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.MP3_320), downloadProtocol: DownloadProtocol.Usenet);
|
var remoteBook2 = GivenRemoteBook(new List<Book> { GivenBook(1) }, new QualityModel(Quality.MP3_320), downloadProtocol: DownloadProtocol.Usenet);
|
||||||
|
|
||||||
var decisions = new List<DownloadDecision>();
|
var decisions = new List<DownloadDecision>();
|
||||||
decisions.Add(new DownloadDecision(remoteBook1));
|
decisions.Add(new DownloadDecision(remoteBook1));
|
||||||
@@ -180,8 +180,8 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
|
|||||||
{
|
{
|
||||||
GivenPreferredDownloadProtocol(DownloadProtocol.Torrent);
|
GivenPreferredDownloadProtocol(DownloadProtocol.Torrent);
|
||||||
|
|
||||||
var remoteBook1 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.MP3_320), downloadProtocol: DownloadProtocol.Torrent);
|
var remoteBook1 = GivenRemoteBook(new List<Book> { GivenBook(1) }, new QualityModel(Quality.MP3_320), downloadProtocol: DownloadProtocol.Torrent);
|
||||||
var remoteBook2 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.MP3_320), downloadProtocol: DownloadProtocol.Usenet);
|
var remoteBook2 = GivenRemoteBook(new List<Book> { GivenBook(1) }, new QualityModel(Quality.MP3_320), downloadProtocol: DownloadProtocol.Usenet);
|
||||||
|
|
||||||
var decisions = new List<DownloadDecision>();
|
var decisions = new List<DownloadDecision>();
|
||||||
decisions.Add(new DownloadDecision(remoteBook1));
|
decisions.Add(new DownloadDecision(remoteBook1));
|
||||||
@@ -192,10 +192,10 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
|
|||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void should_prefer_discography_pack_above_single_album()
|
public void should_prefer_discography_pack_above_single_book()
|
||||||
{
|
{
|
||||||
var remoteBook1 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1), GivenAlbum(2) }, new QualityModel(Quality.FLAC));
|
var remoteBook1 = GivenRemoteBook(new List<Book> { GivenBook(1), GivenBook(2) }, new QualityModel(Quality.FLAC));
|
||||||
var remoteBook2 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.FLAC));
|
var remoteBook2 = GivenRemoteBook(new List<Book> { GivenBook(1) }, new QualityModel(Quality.FLAC));
|
||||||
|
|
||||||
remoteBook1.ParsedBookInfo.Discography = true;
|
remoteBook1.ParsedBookInfo.Discography = true;
|
||||||
|
|
||||||
@@ -210,8 +210,8 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
|
|||||||
[Test]
|
[Test]
|
||||||
public void should_prefer_quality_over_discography_pack()
|
public void should_prefer_quality_over_discography_pack()
|
||||||
{
|
{
|
||||||
var remoteBook1 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1), GivenAlbum(2) }, new QualityModel(Quality.MP3_320));
|
var remoteBook1 = GivenRemoteBook(new List<Book> { GivenBook(1), GivenBook(2) }, new QualityModel(Quality.MP3_320));
|
||||||
var remoteBook2 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.FLAC));
|
var remoteBook2 = GivenRemoteBook(new List<Book> { GivenBook(1) }, new QualityModel(Quality.FLAC));
|
||||||
|
|
||||||
remoteBook1.ParsedBookInfo.Discography = true;
|
remoteBook1.ParsedBookInfo.Discography = true;
|
||||||
|
|
||||||
@@ -224,10 +224,10 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
|
|||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void should_prefer_single_album_over_multi_album()
|
public void should_prefer_single_book_over_multi_book()
|
||||||
{
|
{
|
||||||
var remoteBook1 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1), GivenAlbum(2) }, new QualityModel(Quality.MP3_320));
|
var remoteBook1 = GivenRemoteBook(new List<Book> { GivenBook(1), GivenBook(2) }, new QualityModel(Quality.MP3_320));
|
||||||
var remoteBook2 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.MP3_320));
|
var remoteBook2 = GivenRemoteBook(new List<Book> { GivenBook(1) }, new QualityModel(Quality.MP3_320));
|
||||||
|
|
||||||
var decisions = new List<DownloadDecision>();
|
var decisions = new List<DownloadDecision>();
|
||||||
decisions.Add(new DownloadDecision(remoteBook1));
|
decisions.Add(new DownloadDecision(remoteBook1));
|
||||||
@@ -240,8 +240,8 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
|
|||||||
[Test]
|
[Test]
|
||||||
public void should_prefer_releases_with_more_seeders()
|
public void should_prefer_releases_with_more_seeders()
|
||||||
{
|
{
|
||||||
var remoteBook1 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.MP3_320));
|
var remoteBook1 = GivenRemoteBook(new List<Book> { GivenBook(1) }, new QualityModel(Quality.MP3_320));
|
||||||
var remoteBook2 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.MP3_320));
|
var remoteBook2 = GivenRemoteBook(new List<Book> { GivenBook(1) }, new QualityModel(Quality.MP3_320));
|
||||||
|
|
||||||
var torrentInfo1 = new TorrentInfo();
|
var torrentInfo1 = new TorrentInfo();
|
||||||
torrentInfo1.PublishDate = DateTime.Now;
|
torrentInfo1.PublishDate = DateTime.Now;
|
||||||
@@ -266,8 +266,8 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
|
|||||||
[Test]
|
[Test]
|
||||||
public void should_prefer_releases_with_more_peers_given_equal_number_of_seeds()
|
public void should_prefer_releases_with_more_peers_given_equal_number_of_seeds()
|
||||||
{
|
{
|
||||||
var remoteBook1 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.MP3_320));
|
var remoteBook1 = GivenRemoteBook(new List<Book> { GivenBook(1) }, new QualityModel(Quality.MP3_320));
|
||||||
var remoteBook2 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.MP3_320));
|
var remoteBook2 = GivenRemoteBook(new List<Book> { GivenBook(1) }, new QualityModel(Quality.MP3_320));
|
||||||
|
|
||||||
var torrentInfo1 = new TorrentInfo();
|
var torrentInfo1 = new TorrentInfo();
|
||||||
torrentInfo1.PublishDate = DateTime.Now;
|
torrentInfo1.PublishDate = DateTime.Now;
|
||||||
@@ -293,8 +293,8 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
|
|||||||
[Test]
|
[Test]
|
||||||
public void should_prefer_releases_with_more_peers_no_seeds()
|
public void should_prefer_releases_with_more_peers_no_seeds()
|
||||||
{
|
{
|
||||||
var remoteBook1 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.MP3_320));
|
var remoteBook1 = GivenRemoteBook(new List<Book> { GivenBook(1) }, new QualityModel(Quality.MP3_320));
|
||||||
var remoteBook2 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.MP3_320));
|
var remoteBook2 = GivenRemoteBook(new List<Book> { GivenBook(1) }, new QualityModel(Quality.MP3_320));
|
||||||
|
|
||||||
var torrentInfo1 = new TorrentInfo();
|
var torrentInfo1 = new TorrentInfo();
|
||||||
torrentInfo1.PublishDate = DateTime.Now;
|
torrentInfo1.PublishDate = DateTime.Now;
|
||||||
@@ -321,8 +321,8 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
|
|||||||
[Test]
|
[Test]
|
||||||
public void should_prefer_first_release_if_peers_and_size_are_too_similar()
|
public void should_prefer_first_release_if_peers_and_size_are_too_similar()
|
||||||
{
|
{
|
||||||
var remoteBook1 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.MP3_320));
|
var remoteBook1 = GivenRemoteBook(new List<Book> { GivenBook(1) }, new QualityModel(Quality.MP3_320));
|
||||||
var remoteBook2 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.MP3_320));
|
var remoteBook2 = GivenRemoteBook(new List<Book> { GivenBook(1) }, new QualityModel(Quality.MP3_320));
|
||||||
|
|
||||||
var torrentInfo1 = new TorrentInfo();
|
var torrentInfo1 = new TorrentInfo();
|
||||||
torrentInfo1.PublishDate = DateTime.Now;
|
torrentInfo1.PublishDate = DateTime.Now;
|
||||||
@@ -350,8 +350,8 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
|
|||||||
[Test]
|
[Test]
|
||||||
public void should_prefer_first_release_if_age_and_size_are_too_similar()
|
public void should_prefer_first_release_if_age_and_size_are_too_similar()
|
||||||
{
|
{
|
||||||
var remoteBook1 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.MP3_320));
|
var remoteBook1 = GivenRemoteBook(new List<Book> { GivenBook(1) }, new QualityModel(Quality.MP3_320));
|
||||||
var remoteBook2 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.MP3_320));
|
var remoteBook2 = GivenRemoteBook(new List<Book> { GivenBook(1) }, new QualityModel(Quality.MP3_320));
|
||||||
|
|
||||||
remoteBook1.Release.PublishDate = DateTime.UtcNow.AddDays(-100);
|
remoteBook1.Release.PublishDate = DateTime.UtcNow.AddDays(-100);
|
||||||
remoteBook1.Release.Size = 200.Megabytes();
|
remoteBook1.Release.Size = 200.Megabytes();
|
||||||
@@ -370,8 +370,8 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
|
|||||||
[Test]
|
[Test]
|
||||||
public void should_prefer_quality_over_the_number_of_peers()
|
public void should_prefer_quality_over_the_number_of_peers()
|
||||||
{
|
{
|
||||||
var remoteBook1 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.MP3_320));
|
var remoteBook1 = GivenRemoteBook(new List<Book> { GivenBook(1) }, new QualityModel(Quality.MP3_320));
|
||||||
var remoteBook2 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.AZW3));
|
var remoteBook2 = GivenRemoteBook(new List<Book> { GivenBook(1) }, new QualityModel(Quality.AZW3));
|
||||||
|
|
||||||
var torrentInfo1 = new TorrentInfo();
|
var torrentInfo1 = new TorrentInfo();
|
||||||
torrentInfo1.PublishDate = DateTime.Now;
|
torrentInfo1.PublishDate = DateTime.Now;
|
||||||
@@ -399,8 +399,8 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
|
|||||||
[Test]
|
[Test]
|
||||||
public void should_put_higher_quality_before_lower_always()
|
public void should_put_higher_quality_before_lower_always()
|
||||||
{
|
{
|
||||||
var remoteBook1 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.MP3_320));
|
var remoteBook1 = GivenRemoteBook(new List<Book> { GivenBook(1) }, new QualityModel(Quality.MP3_320));
|
||||||
var remoteBook2 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.MP3_320));
|
var remoteBook2 = GivenRemoteBook(new List<Book> { GivenBook(1) }, new QualityModel(Quality.MP3_320));
|
||||||
|
|
||||||
var decisions = new List<DownloadDecision>();
|
var decisions = new List<DownloadDecision>();
|
||||||
decisions.Add(new DownloadDecision(remoteBook1));
|
decisions.Add(new DownloadDecision(remoteBook1));
|
||||||
@@ -413,8 +413,8 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
|
|||||||
[Test]
|
[Test]
|
||||||
public void should_prefer_higher_score_over_lower_score()
|
public void should_prefer_higher_score_over_lower_score()
|
||||||
{
|
{
|
||||||
var remoteBook1 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.FLAC));
|
var remoteBook1 = GivenRemoteBook(new List<Book> { GivenBook(1) }, new QualityModel(Quality.FLAC));
|
||||||
var remoteBook2 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.FLAC));
|
var remoteBook2 = GivenRemoteBook(new List<Book> { GivenBook(1) }, new QualityModel(Quality.FLAC));
|
||||||
|
|
||||||
remoteBook1.PreferredWordScore = 10;
|
remoteBook1.PreferredWordScore = 10;
|
||||||
remoteBook2.PreferredWordScore = 0;
|
remoteBook2.PreferredWordScore = 0;
|
||||||
@@ -434,8 +434,8 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
|
|||||||
.Setup(s => s.DownloadPropersAndRepacks)
|
.Setup(s => s.DownloadPropersAndRepacks)
|
||||||
.Returns(ProperDownloadTypes.PreferAndUpgrade);
|
.Returns(ProperDownloadTypes.PreferAndUpgrade);
|
||||||
|
|
||||||
var remoteBook1 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.FLAC, new Revision(1)));
|
var remoteBook1 = GivenRemoteBook(new List<Book> { GivenBook(1) }, new QualityModel(Quality.FLAC, new Revision(1)));
|
||||||
var remoteBook2 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.FLAC, new Revision(2)));
|
var remoteBook2 = GivenRemoteBook(new List<Book> { GivenBook(1) }, new QualityModel(Quality.FLAC, new Revision(2)));
|
||||||
|
|
||||||
remoteBook1.PreferredWordScore = 10;
|
remoteBook1.PreferredWordScore = 10;
|
||||||
remoteBook2.PreferredWordScore = 0;
|
remoteBook2.PreferredWordScore = 0;
|
||||||
@@ -455,8 +455,8 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
|
|||||||
.Setup(s => s.DownloadPropersAndRepacks)
|
.Setup(s => s.DownloadPropersAndRepacks)
|
||||||
.Returns(ProperDownloadTypes.DoNotUpgrade);
|
.Returns(ProperDownloadTypes.DoNotUpgrade);
|
||||||
|
|
||||||
var remoteBook1 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.FLAC, new Revision(1)));
|
var remoteBook1 = GivenRemoteBook(new List<Book> { GivenBook(1) }, new QualityModel(Quality.FLAC, new Revision(1)));
|
||||||
var remoteBook2 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.FLAC, new Revision(2)));
|
var remoteBook2 = GivenRemoteBook(new List<Book> { GivenBook(1) }, new QualityModel(Quality.FLAC, new Revision(2)));
|
||||||
|
|
||||||
remoteBook1.PreferredWordScore = 10;
|
remoteBook1.PreferredWordScore = 10;
|
||||||
remoteBook2.PreferredWordScore = 0;
|
remoteBook2.PreferredWordScore = 0;
|
||||||
@@ -476,8 +476,8 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
|
|||||||
.Setup(s => s.DownloadPropersAndRepacks)
|
.Setup(s => s.DownloadPropersAndRepacks)
|
||||||
.Returns(ProperDownloadTypes.DoNotPrefer);
|
.Returns(ProperDownloadTypes.DoNotPrefer);
|
||||||
|
|
||||||
var remoteBook1 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.FLAC, new Revision(1)));
|
var remoteBook1 = GivenRemoteBook(new List<Book> { GivenBook(1) }, new QualityModel(Quality.FLAC, new Revision(1)));
|
||||||
var remoteBook2 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.FLAC, new Revision(2)));
|
var remoteBook2 = GivenRemoteBook(new List<Book> { GivenBook(1) }, new QualityModel(Quality.FLAC, new Revision(2)));
|
||||||
|
|
||||||
remoteBook1.PreferredWordScore = 10;
|
remoteBook1.PreferredWordScore = 10;
|
||||||
remoteBook2.PreferredWordScore = 0;
|
remoteBook2.PreferredWordScore = 0;
|
||||||
@@ -495,35 +495,35 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
|
|||||||
[Test]
|
[Test]
|
||||||
public void sort_download_decisions_based_on_indexer_priority()
|
public void sort_download_decisions_based_on_indexer_priority()
|
||||||
{
|
{
|
||||||
var remoteAlbum1 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.AZW3, new Revision(1)), indexerPriority: 25);
|
var remoteBook1 = GivenRemoteBook(new List<Book> { GivenBook(1) }, new QualityModel(Quality.AZW3, new Revision(1)), indexerPriority: 25);
|
||||||
var remoteAlbum2 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.AZW3, new Revision(1)), indexerPriority: 50);
|
var remoteBook2 = GivenRemoteBook(new List<Book> { GivenBook(1) }, new QualityModel(Quality.AZW3, new Revision(1)), indexerPriority: 50);
|
||||||
var remoteAlbum3 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.AZW3, new Revision(1)), indexerPriority: 1);
|
var remoteBook3 = GivenRemoteBook(new List<Book> { GivenBook(1) }, new QualityModel(Quality.AZW3, new Revision(1)), indexerPriority: 1);
|
||||||
|
|
||||||
var decisions = new List<DownloadDecision>();
|
var decisions = new List<DownloadDecision>();
|
||||||
decisions.AddRange(new[] { new DownloadDecision(remoteAlbum1), new DownloadDecision(remoteAlbum2), new DownloadDecision(remoteAlbum3) });
|
decisions.AddRange(new[] { new DownloadDecision(remoteBook1), new DownloadDecision(remoteBook2), new DownloadDecision(remoteBook3) });
|
||||||
|
|
||||||
var qualifiedReports = Subject.PrioritizeDecisions(decisions);
|
var qualifiedReports = Subject.PrioritizeDecisions(decisions);
|
||||||
qualifiedReports.First().RemoteBook.Should().Be(remoteAlbum3);
|
qualifiedReports.First().RemoteBook.Should().Be(remoteBook3);
|
||||||
qualifiedReports.Skip(1).First().RemoteBook.Should().Be(remoteAlbum1);
|
qualifiedReports.Skip(1).First().RemoteBook.Should().Be(remoteBook1);
|
||||||
qualifiedReports.Last().RemoteBook.Should().Be(remoteAlbum2);
|
qualifiedReports.Last().RemoteBook.Should().Be(remoteBook2);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void ensure_download_decisions_indexer_priority_is_not_perfered_over_quality()
|
public void ensure_download_decisions_indexer_priority_is_not_perfered_over_quality()
|
||||||
{
|
{
|
||||||
var remoteAlbum1 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.EPUB, new Revision(1)), indexerPriority: 25);
|
var remoteBook1 = GivenRemoteBook(new List<Book> { GivenBook(1) }, new QualityModel(Quality.EPUB, new Revision(1)), indexerPriority: 25);
|
||||||
var remoteAlbum2 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.AZW3, new Revision(1)), indexerPriority: 50);
|
var remoteBook2 = GivenRemoteBook(new List<Book> { GivenBook(1) }, new QualityModel(Quality.AZW3, new Revision(1)), indexerPriority: 50);
|
||||||
var remoteAlbum3 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.PDF, new Revision(1)), indexerPriority: 1);
|
var remoteBook3 = GivenRemoteBook(new List<Book> { GivenBook(1) }, new QualityModel(Quality.PDF, new Revision(1)), indexerPriority: 1);
|
||||||
var remoteAlbum4 = GivenRemoteAlbum(new List<Book> { GivenAlbum(1) }, new QualityModel(Quality.AZW3, new Revision(1)), indexerPriority: 25);
|
var remoteBook4 = GivenRemoteBook(new List<Book> { GivenBook(1) }, new QualityModel(Quality.AZW3, new Revision(1)), indexerPriority: 25);
|
||||||
|
|
||||||
var decisions = new List<DownloadDecision>();
|
var decisions = new List<DownloadDecision>();
|
||||||
decisions.AddRange(new[] { new DownloadDecision(remoteAlbum1), new DownloadDecision(remoteAlbum2), new DownloadDecision(remoteAlbum3), new DownloadDecision(remoteAlbum4) });
|
decisions.AddRange(new[] { new DownloadDecision(remoteBook1), new DownloadDecision(remoteBook2), new DownloadDecision(remoteBook3), new DownloadDecision(remoteBook4) });
|
||||||
|
|
||||||
var qualifiedReports = Subject.PrioritizeDecisions(decisions);
|
var qualifiedReports = Subject.PrioritizeDecisions(decisions);
|
||||||
qualifiedReports.First().RemoteBook.Should().Be(remoteAlbum4);
|
qualifiedReports.First().RemoteBook.Should().Be(remoteBook4);
|
||||||
qualifiedReports.Skip(1).First().RemoteBook.Should().Be(remoteAlbum2);
|
qualifiedReports.Skip(1).First().RemoteBook.Should().Be(remoteBook2);
|
||||||
qualifiedReports.Skip(2).First().RemoteBook.Should().Be(remoteAlbum1);
|
qualifiedReports.Skip(2).First().RemoteBook.Should().Be(remoteBook1);
|
||||||
qualifiedReports.Last().RemoteBook.Should().Be(remoteAlbum3);
|
qualifiedReports.Last().RemoteBook.Should().Be(remoteBook3);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
@@ -533,21 +533,22 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
|
|||||||
.Setup(s => s.DownloadPropersAndRepacks)
|
.Setup(s => s.DownloadPropersAndRepacks)
|
||||||
.Returns(ProperDownloadTypes.DoNotPrefer);
|
.Returns(ProperDownloadTypes.DoNotPrefer);
|
||||||
|
|
||||||
var remoteAlbum1 = GivenRemoteAlbum(new List<Album> { GivenAlbum(1) }, new QualityModel(Quality.FLAC, new Revision(1, 0)));
|
var remoteBook1 = GivenRemoteBook(new List<Book> { GivenBook(1) }, new QualityModel(Quality.FLAC, new Revision(1, 0)));
|
||||||
var remoteAlbum2 = GivenRemoteAlbum(new List<Album> { GivenAlbum(1) }, new QualityModel(Quality.FLAC, new Revision(1, 1)));
|
var remoteBook2 = GivenRemoteBook(new List<Book> { GivenBook(1) }, new QualityModel(Quality.FLAC, new Revision(1, 1)));
|
||||||
|
|
||||||
remoteAlbum1.PreferredWordScore = 10;
|
remoteBook1.PreferredWordScore = 10;
|
||||||
remoteAlbum2.PreferredWordScore = 0;
|
remoteBook2.PreferredWordScore = 0;
|
||||||
|
|
||||||
var decisions = new List<DownloadDecision>();
|
var decisions = new List<DownloadDecision>();
|
||||||
decisions.Add(new DownloadDecision(remoteAlbum1));
|
decisions.Add(new DownloadDecision(remoteBook1));
|
||||||
decisions.Add(new DownloadDecision(remoteAlbum2));
|
decisions.Add(new DownloadDecision(remoteBook2));
|
||||||
|
|
||||||
var qualifiedReports = Subject.PrioritizeDecisions(decisions);
|
var qualifiedReports = Subject.PrioritizeDecisions(decisions);
|
||||||
qualifiedReports.First().RemoteAlbum.ParsedAlbumInfo.Quality.Quality.Should().Be(Quality.FLAC);
|
|
||||||
qualifiedReports.First().RemoteAlbum.ParsedAlbumInfo.Quality.Revision.Version.Should().Be(1);
|
qualifiedReports.First().RemoteBook.ParsedBookInfo.Quality.Quality.Should().Be(Quality.FLAC);
|
||||||
qualifiedReports.First().RemoteAlbum.ParsedAlbumInfo.Quality.Revision.Real.Should().Be(0);
|
qualifiedReports.First().RemoteBook.ParsedBookInfo.Quality.Revision.Version.Should().Be(1);
|
||||||
qualifiedReports.First().RemoteAlbum.PreferredWordScore.Should().Be(10);
|
qualifiedReports.First().RemoteBook.ParsedBookInfo.Quality.Revision.Real.Should().Be(0);
|
||||||
|
qualifiedReports.First().RemoteBook.PreferredWordScore.Should().Be(10);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -32,13 +32,13 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
|
|||||||
[SetUp]
|
[SetUp]
|
||||||
public void Setup()
|
public void Setup()
|
||||||
{
|
{
|
||||||
var fakeArtist = Builder<Author>.CreateNew()
|
var fakeAuthor = Builder<Author>.CreateNew()
|
||||||
.With(c => c.QualityProfile = new QualityProfile { Cutoff = Quality.MP3_320.Id })
|
.With(c => c.QualityProfile = new QualityProfile { Cutoff = Quality.MP3_320.Id })
|
||||||
.Build();
|
.Build();
|
||||||
|
|
||||||
_remoteBook = new RemoteBook
|
_remoteBook = new RemoteBook
|
||||||
{
|
{
|
||||||
Author = fakeArtist,
|
Author = fakeAuthor,
|
||||||
ParsedBookInfo = new ParsedBookInfo { Quality = new QualityModel(Quality.MP3_320, new Revision(version: 2)) },
|
ParsedBookInfo = new ParsedBookInfo { Quality = new QualityModel(Quality.MP3_320, new Revision(version: 2)) },
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,12 +17,12 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
|
|||||||
[TestFixture]
|
[TestFixture]
|
||||||
public class QueueSpecificationFixture : CoreTest<QueueSpecification>
|
public class QueueSpecificationFixture : CoreTest<QueueSpecification>
|
||||||
{
|
{
|
||||||
private Author _artist;
|
private Author _author;
|
||||||
private Book _album;
|
private Book _book;
|
||||||
private RemoteBook _remoteBook;
|
private RemoteBook _remoteBook;
|
||||||
|
|
||||||
private Author _otherArtist;
|
private Author _otherAuthor;
|
||||||
private Book _otherAlbum;
|
private Book _otherBook;
|
||||||
|
|
||||||
private ReleaseInfo _releaseInfo;
|
private ReleaseInfo _releaseInfo;
|
||||||
|
|
||||||
@@ -31,7 +31,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
|
|||||||
{
|
{
|
||||||
Mocker.Resolve<UpgradableSpecification>();
|
Mocker.Resolve<UpgradableSpecification>();
|
||||||
|
|
||||||
_artist = Builder<Author>.CreateNew()
|
_author = Builder<Author>.CreateNew()
|
||||||
.With(e => e.QualityProfile = new QualityProfile
|
.With(e => e.QualityProfile = new QualityProfile
|
||||||
{
|
{
|
||||||
UpgradeAllowed = true,
|
UpgradeAllowed = true,
|
||||||
@@ -39,16 +39,16 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
|
|||||||
})
|
})
|
||||||
.Build();
|
.Build();
|
||||||
|
|
||||||
_album = Builder<Book>.CreateNew()
|
_book = Builder<Book>.CreateNew()
|
||||||
.With(e => e.AuthorId = _artist.Id)
|
.With(e => e.AuthorId = _author.Id)
|
||||||
.Build();
|
.Build();
|
||||||
|
|
||||||
_otherArtist = Builder<Author>.CreateNew()
|
_otherAuthor = Builder<Author>.CreateNew()
|
||||||
.With(s => s.Id = 2)
|
.With(s => s.Id = 2)
|
||||||
.Build();
|
.Build();
|
||||||
|
|
||||||
_otherAlbum = Builder<Book>.CreateNew()
|
_otherBook = Builder<Book>.CreateNew()
|
||||||
.With(e => e.AuthorId = _otherArtist.Id)
|
.With(e => e.AuthorId = _otherAuthor.Id)
|
||||||
.With(e => e.Id = 2)
|
.With(e => e.Id = 2)
|
||||||
.Build();
|
.Build();
|
||||||
|
|
||||||
@@ -56,8 +56,8 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
|
|||||||
.Build();
|
.Build();
|
||||||
|
|
||||||
_remoteBook = Builder<RemoteBook>.CreateNew()
|
_remoteBook = Builder<RemoteBook>.CreateNew()
|
||||||
.With(r => r.Author = _artist)
|
.With(r => r.Author = _author)
|
||||||
.With(r => r.Books = new List<Book> { _album })
|
.With(r => r.Books = new List<Book> { _book })
|
||||||
.With(r => r.ParsedBookInfo = new ParsedBookInfo { Quality = new QualityModel(Quality.MP3_320) })
|
.With(r => r.ParsedBookInfo = new ParsedBookInfo { Quality = new QualityModel(Quality.MP3_320) })
|
||||||
.With(r => r.PreferredWordScore = 0)
|
.With(r => r.PreferredWordScore = 0)
|
||||||
.Build();
|
.Build();
|
||||||
@@ -91,11 +91,11 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
|
|||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void should_return_true_when_artist_doesnt_match()
|
public void should_return_true_when_author_doesnt_match()
|
||||||
{
|
{
|
||||||
var remoteBook = Builder<RemoteBook>.CreateNew()
|
var remoteBook = Builder<RemoteBook>.CreateNew()
|
||||||
.With(r => r.Author = _otherArtist)
|
.With(r => r.Author = _otherAuthor)
|
||||||
.With(r => r.Books = new List<Book> { _album })
|
.With(r => r.Books = new List<Book> { _book })
|
||||||
.With(r => r.Release = _releaseInfo)
|
.With(r => r.Release = _releaseInfo)
|
||||||
.Build();
|
.Build();
|
||||||
|
|
||||||
@@ -106,11 +106,11 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
|
|||||||
[Test]
|
[Test]
|
||||||
public void should_return_false_if_everything_is_the_same()
|
public void should_return_false_if_everything_is_the_same()
|
||||||
{
|
{
|
||||||
_artist.QualityProfile.Value.Cutoff = Quality.FLAC.Id;
|
_author.QualityProfile.Value.Cutoff = Quality.FLAC.Id;
|
||||||
|
|
||||||
var remoteBook = Builder<RemoteBook>.CreateNew()
|
var remoteBook = Builder<RemoteBook>.CreateNew()
|
||||||
.With(r => r.Author = _artist)
|
.With(r => r.Author = _author)
|
||||||
.With(r => r.Books = new List<Book> { _album })
|
.With(r => r.Books = new List<Book> { _book })
|
||||||
.With(r => r.ParsedBookInfo = new ParsedBookInfo
|
.With(r => r.ParsedBookInfo = new ParsedBookInfo
|
||||||
{
|
{
|
||||||
Quality = new QualityModel(Quality.MP3_320)
|
Quality = new QualityModel(Quality.MP3_320)
|
||||||
@@ -126,11 +126,11 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
|
|||||||
[Test]
|
[Test]
|
||||||
public void should_return_true_when_quality_in_queue_is_lower()
|
public void should_return_true_when_quality_in_queue_is_lower()
|
||||||
{
|
{
|
||||||
_artist.QualityProfile.Value.Cutoff = Quality.MP3_320.Id;
|
_author.QualityProfile.Value.Cutoff = Quality.MP3_320.Id;
|
||||||
|
|
||||||
var remoteBook = Builder<RemoteBook>.CreateNew()
|
var remoteBook = Builder<RemoteBook>.CreateNew()
|
||||||
.With(r => r.Author = _artist)
|
.With(r => r.Author = _author)
|
||||||
.With(r => r.Books = new List<Book> { _album })
|
.With(r => r.Books = new List<Book> { _book })
|
||||||
.With(r => r.ParsedBookInfo = new ParsedBookInfo
|
.With(r => r.ParsedBookInfo = new ParsedBookInfo
|
||||||
{
|
{
|
||||||
Quality = new QualityModel(Quality.AZW3)
|
Quality = new QualityModel(Quality.AZW3)
|
||||||
@@ -143,11 +143,11 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
|
|||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void should_return_true_when_album_doesnt_match()
|
public void should_return_true_when_book_doesnt_match()
|
||||||
{
|
{
|
||||||
var remoteBook = Builder<RemoteBook>.CreateNew()
|
var remoteBook = Builder<RemoteBook>.CreateNew()
|
||||||
.With(r => r.Author = _artist)
|
.With(r => r.Author = _author)
|
||||||
.With(r => r.Books = new List<Book> { _otherAlbum })
|
.With(r => r.Books = new List<Book> { _otherBook })
|
||||||
.With(r => r.ParsedBookInfo = new ParsedBookInfo
|
.With(r => r.ParsedBookInfo = new ParsedBookInfo
|
||||||
{
|
{
|
||||||
Quality = new QualityModel(Quality.MP3_320)
|
Quality = new QualityModel(Quality.MP3_320)
|
||||||
@@ -165,8 +165,8 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
|
|||||||
_remoteBook.PreferredWordScore = 1;
|
_remoteBook.PreferredWordScore = 1;
|
||||||
|
|
||||||
var remoteBook = Builder<RemoteBook>.CreateNew()
|
var remoteBook = Builder<RemoteBook>.CreateNew()
|
||||||
.With(r => r.Author = _artist)
|
.With(r => r.Author = _author)
|
||||||
.With(r => r.Books = new List<Book> { _album })
|
.With(r => r.Books = new List<Book> { _book })
|
||||||
.With(r => r.ParsedBookInfo = new ParsedBookInfo
|
.With(r => r.ParsedBookInfo = new ParsedBookInfo
|
||||||
{
|
{
|
||||||
Quality = new QualityModel(Quality.MP3_320)
|
Quality = new QualityModel(Quality.MP3_320)
|
||||||
@@ -182,8 +182,8 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
|
|||||||
public void should_return_false_when_qualities_are_the_same()
|
public void should_return_false_when_qualities_are_the_same()
|
||||||
{
|
{
|
||||||
var remoteBook = Builder<RemoteBook>.CreateNew()
|
var remoteBook = Builder<RemoteBook>.CreateNew()
|
||||||
.With(r => r.Author = _artist)
|
.With(r => r.Author = _author)
|
||||||
.With(r => r.Books = new List<Book> { _album })
|
.With(r => r.Books = new List<Book> { _book })
|
||||||
.With(r => r.ParsedBookInfo = new ParsedBookInfo
|
.With(r => r.ParsedBookInfo = new ParsedBookInfo
|
||||||
{
|
{
|
||||||
Quality = new QualityModel(Quality.MP3_320)
|
Quality = new QualityModel(Quality.MP3_320)
|
||||||
@@ -198,11 +198,11 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
|
|||||||
[Test]
|
[Test]
|
||||||
public void should_return_false_when_quality_in_queue_is_better()
|
public void should_return_false_when_quality_in_queue_is_better()
|
||||||
{
|
{
|
||||||
_artist.QualityProfile.Value.Cutoff = Quality.FLAC.Id;
|
_author.QualityProfile.Value.Cutoff = Quality.FLAC.Id;
|
||||||
|
|
||||||
var remoteBook = Builder<RemoteBook>.CreateNew()
|
var remoteBook = Builder<RemoteBook>.CreateNew()
|
||||||
.With(r => r.Author = _artist)
|
.With(r => r.Author = _author)
|
||||||
.With(r => r.Books = new List<Book> { _album })
|
.With(r => r.Books = new List<Book> { _book })
|
||||||
.With(r => r.ParsedBookInfo = new ParsedBookInfo
|
.With(r => r.ParsedBookInfo = new ParsedBookInfo
|
||||||
{
|
{
|
||||||
Quality = new QualityModel(Quality.MP3_320)
|
Quality = new QualityModel(Quality.MP3_320)
|
||||||
@@ -215,11 +215,11 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
|
|||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void should_return_false_if_matching_multi_album_is_in_queue()
|
public void should_return_false_if_matching_multi_book_is_in_queue()
|
||||||
{
|
{
|
||||||
var remoteBook = Builder<RemoteBook>.CreateNew()
|
var remoteBook = Builder<RemoteBook>.CreateNew()
|
||||||
.With(r => r.Author = _artist)
|
.With(r => r.Author = _author)
|
||||||
.With(r => r.Books = new List<Book> { _album, _otherAlbum })
|
.With(r => r.Books = new List<Book> { _book, _otherBook })
|
||||||
.With(r => r.ParsedBookInfo = new ParsedBookInfo
|
.With(r => r.ParsedBookInfo = new ParsedBookInfo
|
||||||
{
|
{
|
||||||
Quality = new QualityModel(Quality.MP3_320)
|
Quality = new QualityModel(Quality.MP3_320)
|
||||||
@@ -232,11 +232,11 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
|
|||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void should_return_false_if_multi_album_has_one_album_in_queue()
|
public void should_return_false_if_multi_book_has_one_book_in_queue()
|
||||||
{
|
{
|
||||||
var remoteBook = Builder<RemoteBook>.CreateNew()
|
var remoteBook = Builder<RemoteBook>.CreateNew()
|
||||||
.With(r => r.Author = _artist)
|
.With(r => r.Author = _author)
|
||||||
.With(r => r.Books = new List<Book> { _album })
|
.With(r => r.Books = new List<Book> { _book })
|
||||||
.With(r => r.ParsedBookInfo = new ParsedBookInfo
|
.With(r => r.ParsedBookInfo = new ParsedBookInfo
|
||||||
{
|
{
|
||||||
Quality = new QualityModel(Quality.MP3_320)
|
Quality = new QualityModel(Quality.MP3_320)
|
||||||
@@ -244,18 +244,18 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
|
|||||||
.With(r => r.Release = _releaseInfo)
|
.With(r => r.Release = _releaseInfo)
|
||||||
.Build();
|
.Build();
|
||||||
|
|
||||||
_remoteBook.Books.Add(_otherAlbum);
|
_remoteBook.Books.Add(_otherBook);
|
||||||
|
|
||||||
GivenQueue(new List<RemoteBook> { remoteBook });
|
GivenQueue(new List<RemoteBook> { remoteBook });
|
||||||
Subject.IsSatisfiedBy(_remoteBook, null).Accepted.Should().BeFalse();
|
Subject.IsSatisfiedBy(_remoteBook, null).Accepted.Should().BeFalse();
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void should_return_false_if_multi_part_album_is_already_in_queue()
|
public void should_return_false_if_multi_part_book_is_already_in_queue()
|
||||||
{
|
{
|
||||||
var remoteBook = Builder<RemoteBook>.CreateNew()
|
var remoteBook = Builder<RemoteBook>.CreateNew()
|
||||||
.With(r => r.Author = _artist)
|
.With(r => r.Author = _author)
|
||||||
.With(r => r.Books = new List<Book> { _album, _otherAlbum })
|
.With(r => r.Books = new List<Book> { _book, _otherBook })
|
||||||
.With(r => r.ParsedBookInfo = new ParsedBookInfo
|
.With(r => r.ParsedBookInfo = new ParsedBookInfo
|
||||||
{
|
{
|
||||||
Quality = new QualityModel(Quality.MP3_320)
|
Quality = new QualityModel(Quality.MP3_320)
|
||||||
@@ -263,30 +263,30 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
|
|||||||
.With(r => r.Release = _releaseInfo)
|
.With(r => r.Release = _releaseInfo)
|
||||||
.Build();
|
.Build();
|
||||||
|
|
||||||
_remoteBook.Books.Add(_otherAlbum);
|
_remoteBook.Books.Add(_otherBook);
|
||||||
|
|
||||||
GivenQueue(new List<RemoteBook> { remoteBook });
|
GivenQueue(new List<RemoteBook> { remoteBook });
|
||||||
Subject.IsSatisfiedBy(_remoteBook, null).Accepted.Should().BeFalse();
|
Subject.IsSatisfiedBy(_remoteBook, null).Accepted.Should().BeFalse();
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void should_return_false_if_multi_part_album_has_two_albums_in_queue()
|
public void should_return_false_if_multi_part_book_has_two_books_in_queue()
|
||||||
{
|
{
|
||||||
var remoteBooks = Builder<RemoteBook>.CreateListOfSize(2)
|
var remoteBooks = Builder<RemoteBook>.CreateListOfSize(2)
|
||||||
.All()
|
.All()
|
||||||
.With(r => r.Author = _artist)
|
.With(r => r.Author = _author)
|
||||||
.With(r => r.ParsedBookInfo = new ParsedBookInfo
|
.With(r => r.ParsedBookInfo = new ParsedBookInfo
|
||||||
{
|
{
|
||||||
Quality = new QualityModel(Quality.MP3_320)
|
Quality = new QualityModel(Quality.MP3_320)
|
||||||
})
|
})
|
||||||
.With(r => r.Release = _releaseInfo)
|
.With(r => r.Release = _releaseInfo)
|
||||||
.TheFirst(1)
|
.TheFirst(1)
|
||||||
.With(r => r.Books = new List<Book> { _album })
|
.With(r => r.Books = new List<Book> { _book })
|
||||||
.TheNext(1)
|
.TheNext(1)
|
||||||
.With(r => r.Books = new List<Book> { _otherAlbum })
|
.With(r => r.Books = new List<Book> { _otherBook })
|
||||||
.Build();
|
.Build();
|
||||||
|
|
||||||
_remoteBook.Books.Add(_otherAlbum);
|
_remoteBook.Books.Add(_otherBook);
|
||||||
GivenQueue(remoteBooks);
|
GivenQueue(remoteBooks);
|
||||||
Subject.IsSatisfiedBy(_remoteBook, null).Accepted.Should().BeFalse();
|
Subject.IsSatisfiedBy(_remoteBook, null).Accepted.Should().BeFalse();
|
||||||
}
|
}
|
||||||
@@ -294,12 +294,12 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
|
|||||||
[Test]
|
[Test]
|
||||||
public void should_return_false_when_quality_is_better_and_upgrade_allowed_is_false_for_quality_profile()
|
public void should_return_false_when_quality_is_better_and_upgrade_allowed_is_false_for_quality_profile()
|
||||||
{
|
{
|
||||||
_artist.QualityProfile.Value.Cutoff = Quality.FLAC.Id;
|
_author.QualityProfile.Value.Cutoff = Quality.FLAC.Id;
|
||||||
_artist.QualityProfile.Value.UpgradeAllowed = false;
|
_author.QualityProfile.Value.UpgradeAllowed = false;
|
||||||
|
|
||||||
var remoteBook = Builder<RemoteBook>.CreateNew()
|
var remoteBook = Builder<RemoteBook>.CreateNew()
|
||||||
.With(r => r.Author = _artist)
|
.With(r => r.Author = _author)
|
||||||
.With(r => r.Books = new List<Book> { _album })
|
.With(r => r.Books = new List<Book> { _book })
|
||||||
.With(r => r.ParsedBookInfo = new ParsedBookInfo
|
.With(r => r.ParsedBookInfo = new ParsedBookInfo
|
||||||
{
|
{
|
||||||
Quality = new QualityModel(Quality.FLAC)
|
Quality = new QualityModel(Quality.FLAC)
|
||||||
@@ -314,11 +314,11 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
|
|||||||
[Test]
|
[Test]
|
||||||
public void should_return_true_if_everything_is_the_same_for_failed_pending()
|
public void should_return_true_if_everything_is_the_same_for_failed_pending()
|
||||||
{
|
{
|
||||||
_artist.QualityProfile.Value.Cutoff = Quality.FLAC.Id;
|
_author.QualityProfile.Value.Cutoff = Quality.FLAC.Id;
|
||||||
|
|
||||||
var remoteBook = Builder<RemoteBook>.CreateNew()
|
var remoteBook = Builder<RemoteBook>.CreateNew()
|
||||||
.With(r => r.Author = _artist)
|
.With(r => r.Author = _author)
|
||||||
.With(r => r.Books = new List<Book> { _album })
|
.With(r => r.Books = new List<Book> { _book })
|
||||||
.With(r => r.ParsedBookInfo = new ParsedBookInfo
|
.With(r => r.ParsedBookInfo = new ParsedBookInfo
|
||||||
{
|
{
|
||||||
Quality = new QualityModel(Quality.MP3_320)
|
Quality = new QualityModel(Quality.MP3_320)
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
|
|||||||
public class RepackSpecificationFixture : CoreTest<RepackSpecification>
|
public class RepackSpecificationFixture : CoreTest<RepackSpecification>
|
||||||
{
|
{
|
||||||
private ParsedBookInfo _parsedBookInfo;
|
private ParsedBookInfo _parsedBookInfo;
|
||||||
private List<Book> _albums;
|
private List<Book> _books;
|
||||||
private List<BookFile> _trackFiles;
|
private List<BookFile> _trackFiles;
|
||||||
|
|
||||||
[SetUp]
|
[SetUp]
|
||||||
@@ -31,13 +31,13 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
|
|||||||
.With(p => p.ReleaseGroup = "Readarr")
|
.With(p => p.ReleaseGroup = "Readarr")
|
||||||
.Build();
|
.Build();
|
||||||
|
|
||||||
_albums = Builder<Book>.CreateListOfSize(1)
|
_books = Builder<Book>.CreateListOfSize(1)
|
||||||
.All()
|
.All()
|
||||||
.BuildList();
|
.BuildList();
|
||||||
|
|
||||||
_trackFiles = Builder<BookFile>.CreateListOfSize(3)
|
_trackFiles = Builder<BookFile>.CreateListOfSize(3)
|
||||||
.All()
|
.All()
|
||||||
.With(t => t.EditionId = _albums.First().Id)
|
.With(t => t.EditionId = _books.First().Id)
|
||||||
.BuildList();
|
.BuildList();
|
||||||
|
|
||||||
Mocker.GetMock<IMediaFileService>()
|
Mocker.GetMock<IMediaFileService>()
|
||||||
@@ -50,7 +50,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
|
|||||||
{
|
{
|
||||||
var remoteBook = Builder<RemoteBook>.CreateNew()
|
var remoteBook = Builder<RemoteBook>.CreateNew()
|
||||||
.With(e => e.ParsedBookInfo = _parsedBookInfo)
|
.With(e => e.ParsedBookInfo = _parsedBookInfo)
|
||||||
.With(e => e.Books = _albums)
|
.With(e => e.Books = _books)
|
||||||
.Build();
|
.Build();
|
||||||
|
|
||||||
Subject.IsSatisfiedBy(remoteBook, null)
|
Subject.IsSatisfiedBy(remoteBook, null)
|
||||||
@@ -70,7 +70,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
|
|||||||
|
|
||||||
var remoteBook = Builder<RemoteBook>.CreateNew()
|
var remoteBook = Builder<RemoteBook>.CreateNew()
|
||||||
.With(e => e.ParsedBookInfo = _parsedBookInfo)
|
.With(e => e.ParsedBookInfo = _parsedBookInfo)
|
||||||
.With(e => e.Books = _albums)
|
.With(e => e.Books = _books)
|
||||||
.Build();
|
.Build();
|
||||||
|
|
||||||
Subject.IsSatisfiedBy(remoteBook, null)
|
Subject.IsSatisfiedBy(remoteBook, null)
|
||||||
@@ -97,7 +97,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
|
|||||||
|
|
||||||
var remoteBook = Builder<RemoteBook>.CreateNew()
|
var remoteBook = Builder<RemoteBook>.CreateNew()
|
||||||
.With(e => e.ParsedBookInfo = _parsedBookInfo)
|
.With(e => e.ParsedBookInfo = _parsedBookInfo)
|
||||||
.With(e => e.Books = _albums)
|
.With(e => e.Books = _books)
|
||||||
.Build();
|
.Build();
|
||||||
|
|
||||||
Subject.IsSatisfiedBy(remoteBook, null)
|
Subject.IsSatisfiedBy(remoteBook, null)
|
||||||
@@ -124,7 +124,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
|
|||||||
|
|
||||||
var remoteBook = Builder<RemoteBook>.CreateNew()
|
var remoteBook = Builder<RemoteBook>.CreateNew()
|
||||||
.With(e => e.ParsedBookInfo = _parsedBookInfo)
|
.With(e => e.ParsedBookInfo = _parsedBookInfo)
|
||||||
.With(e => e.Books = _albums)
|
.With(e => e.Books = _books)
|
||||||
.Build();
|
.Build();
|
||||||
|
|
||||||
Subject.IsSatisfiedBy(remoteBook, null)
|
Subject.IsSatisfiedBy(remoteBook, null)
|
||||||
@@ -153,7 +153,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
|
|||||||
|
|
||||||
var remoteBook = Builder<RemoteBook>.CreateNew()
|
var remoteBook = Builder<RemoteBook>.CreateNew()
|
||||||
.With(e => e.ParsedBookInfo = _parsedBookInfo)
|
.With(e => e.ParsedBookInfo = _parsedBookInfo)
|
||||||
.With(e => e.Books = _albums)
|
.With(e => e.Books = _books)
|
||||||
.Build();
|
.Build();
|
||||||
|
|
||||||
Subject.IsSatisfiedBy(remoteBook, null)
|
Subject.IsSatisfiedBy(remoteBook, null)
|
||||||
@@ -180,7 +180,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
|
|||||||
|
|
||||||
var remoteBook = Builder<RemoteBook>.CreateNew()
|
var remoteBook = Builder<RemoteBook>.CreateNew()
|
||||||
.With(e => e.ParsedBookInfo = _parsedBookInfo)
|
.With(e => e.ParsedBookInfo = _parsedBookInfo)
|
||||||
.With(e => e.Books = _albums)
|
.With(e => e.Books = _books)
|
||||||
.Build();
|
.Build();
|
||||||
|
|
||||||
Subject.IsSatisfiedBy(remoteBook, null)
|
Subject.IsSatisfiedBy(remoteBook, null)
|
||||||
@@ -207,7 +207,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
|
|||||||
|
|
||||||
var remoteBook = Builder<RemoteBook>.CreateNew()
|
var remoteBook = Builder<RemoteBook>.CreateNew()
|
||||||
.With(e => e.ParsedBookInfo = _parsedBookInfo)
|
.With(e => e.ParsedBookInfo = _parsedBookInfo)
|
||||||
.With(e => e.Books = _albums)
|
.With(e => e.Books = _books)
|
||||||
.Build();
|
.Build();
|
||||||
|
|
||||||
Subject.IsSatisfiedBy(remoteBook, null)
|
Subject.IsSatisfiedBy(remoteBook, null)
|
||||||
@@ -236,7 +236,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
|
|||||||
|
|
||||||
var remoteBook = Builder<RemoteBook>.CreateNew()
|
var remoteBook = Builder<RemoteBook>.CreateNew()
|
||||||
.With(e => e.ParsedBookInfo = _parsedBookInfo)
|
.With(e => e.ParsedBookInfo = _parsedBookInfo)
|
||||||
.With(e => e.Books = _albums)
|
.With(e => e.Books = _books)
|
||||||
.Build();
|
.Build();
|
||||||
|
|
||||||
Subject.IsSatisfiedBy(remoteBook, null)
|
Subject.IsSatisfiedBy(remoteBook, null)
|
||||||
|
|||||||
@@ -37,12 +37,12 @@ namespace NzbDrone.Core.Test.DecisionEngineTests.RssSync
|
|||||||
.With(d => d.PreferredProtocol = DownloadProtocol.Usenet)
|
.With(d => d.PreferredProtocol = DownloadProtocol.Usenet)
|
||||||
.Build();
|
.Build();
|
||||||
|
|
||||||
var artist = Builder<Author>.CreateNew()
|
var author = Builder<Author>.CreateNew()
|
||||||
.With(s => s.QualityProfile = _profile)
|
.With(s => s.QualityProfile = _profile)
|
||||||
.Build();
|
.Build();
|
||||||
|
|
||||||
_remoteBook = Builder<RemoteBook>.CreateNew()
|
_remoteBook = Builder<RemoteBook>.CreateNew()
|
||||||
.With(r => r.Author = artist)
|
.With(r => r.Author = author)
|
||||||
.Build();
|
.Build();
|
||||||
|
|
||||||
_profile.Items = new List<QualityProfileQualityItem>();
|
_profile.Items = new List<QualityProfileQualityItem>();
|
||||||
@@ -87,7 +87,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests.RssSync
|
|||||||
private void GivenUpgradeForExistingFile()
|
private void GivenUpgradeForExistingFile()
|
||||||
{
|
{
|
||||||
Mocker.GetMock<IUpgradableSpecification>()
|
Mocker.GetMock<IUpgradableSpecification>()
|
||||||
.Setup(s => s.IsUpgradable(It.IsAny<QualityProfile>(), It.IsAny<List<QualityModel>>(), It.IsAny<int>(), It.IsAny<QualityModel>(), It.IsAny<int>()))
|
.Setup(s => s.IsUpgradable(It.IsAny<QualityProfile>(), It.IsAny<QualityModel>(), It.IsAny<int>(), It.IsAny<QualityModel>(), It.IsAny<int>()))
|
||||||
.Returns(true);
|
.Returns(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -147,7 +147,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests.RssSync
|
|||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void should_be_true_when_release_is_a_proper_for_existing_album()
|
public void should_be_true_when_release_is_a_proper_for_existing_book()
|
||||||
{
|
{
|
||||||
_remoteBook.ParsedBookInfo.Quality = new QualityModel(Quality.MP3_320, new Revision(version: 2));
|
_remoteBook.ParsedBookInfo.Quality = new QualityModel(Quality.MP3_320, new Revision(version: 2));
|
||||||
_remoteBook.Release.PublishDate = DateTime.UtcNow;
|
_remoteBook.Release.PublishDate = DateTime.UtcNow;
|
||||||
@@ -165,7 +165,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests.RssSync
|
|||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void should_be_true_when_release_is_a_real_for_existing_album()
|
public void should_be_true_when_release_is_a_real_for_existing_book()
|
||||||
{
|
{
|
||||||
_remoteBook.ParsedBookInfo.Quality = new QualityModel(Quality.MP3_320, new Revision(real: 1));
|
_remoteBook.ParsedBookInfo.Quality = new QualityModel(Quality.MP3_320, new Revision(real: 1));
|
||||||
_remoteBook.Release.PublishDate = DateTime.UtcNow;
|
_remoteBook.Release.PublishDate = DateTime.UtcNow;
|
||||||
@@ -183,19 +183,12 @@ namespace NzbDrone.Core.Test.DecisionEngineTests.RssSync
|
|||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void should_be_false_when_release_is_proper_for_existing_album_of_different_quality()
|
public void should_be_false_when_release_is_proper_for_existing_book_of_different_quality()
|
||||||
{
|
{
|
||||||
<<<<<<< HEAD
|
|
||||||
_remoteBook.ParsedBookInfo.Quality = new QualityModel(Quality.AZW3, new Revision(version: 2));
|
_remoteBook.ParsedBookInfo.Quality = new QualityModel(Quality.AZW3, new Revision(version: 2));
|
||||||
_remoteBook.Release.PublishDate = DateTime.UtcNow;
|
_remoteBook.Release.PublishDate = DateTime.UtcNow;
|
||||||
|
|
||||||
GivenExistingFile(new QualityModel(Quality.PDF));
|
GivenExistingFile(new QualityModel(Quality.PDF));
|
||||||
=======
|
|
||||||
_remoteAlbum.ParsedAlbumInfo.Quality = new QualityModel(Quality.MP3_320, new Revision(version: 2));
|
|
||||||
_remoteAlbum.Release.PublishDate = DateTime.UtcNow;
|
|
||||||
|
|
||||||
GivenExistingFile(new QualityModel(Quality.MP3_256));
|
|
||||||
>>>>>>> Fixed: Delay profile being ignored for non-revision upgrades
|
|
||||||
|
|
||||||
_delayProfile.UsenetDelay = 720;
|
_delayProfile.UsenetDelay = 720;
|
||||||
|
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests.RssSync
|
|||||||
new BookFile
|
new BookFile
|
||||||
{
|
{
|
||||||
Id = 1,
|
Id = 1,
|
||||||
Path = "/My.Artist.S01E01.mp3",
|
Path = "/My.Author.S01E01.mp3",
|
||||||
Quality = new QualityModel(Quality.FLAC, new Revision(version: 1)),
|
Quality = new QualityModel(Quality.FLAC, new Revision(version: 1)),
|
||||||
DateAdded = DateTime.Now,
|
DateAdded = DateTime.Now,
|
||||||
EditionId = 1
|
EditionId = 1
|
||||||
@@ -42,36 +42,36 @@ namespace NzbDrone.Core.Test.DecisionEngineTests.RssSync
|
|||||||
new BookFile
|
new BookFile
|
||||||
{
|
{
|
||||||
Id = 2,
|
Id = 2,
|
||||||
Path = "/My.Artist.S01E02.mp3",
|
Path = "/My.Author.S01E02.mp3",
|
||||||
Quality = new QualityModel(Quality.FLAC, new Revision(version: 1)),
|
Quality = new QualityModel(Quality.FLAC, new Revision(version: 1)),
|
||||||
DateAdded = DateTime.Now,
|
DateAdded = DateTime.Now,
|
||||||
EditionId = 2
|
EditionId = 2
|
||||||
};
|
};
|
||||||
|
|
||||||
var singleAlbumList = new List<Book> { new Book { Id = 1 } };
|
var singleBookList = new List<Book> { new Book { Id = 1 } };
|
||||||
var doubleAlbumList = new List<Book>
|
var doubleBookList = new List<Book>
|
||||||
{
|
{
|
||||||
new Book { Id = 1 },
|
new Book { Id = 1 },
|
||||||
new Book { Id = 2 }
|
new Book { Id = 2 }
|
||||||
};
|
};
|
||||||
|
|
||||||
var fakeArtist = Builder<Author>.CreateNew()
|
var fakeAuthor = Builder<Author>.CreateNew()
|
||||||
.With(c => c.QualityProfile = new QualityProfile { Cutoff = Quality.FLAC.Id })
|
.With(c => c.QualityProfile = new QualityProfile { Cutoff = Quality.FLAC.Id })
|
||||||
.With(c => c.Path = @"C:\Music\My.Artist".AsOsAgnostic())
|
.With(c => c.Path = @"C:\Music\My.Author".AsOsAgnostic())
|
||||||
.Build();
|
.Build();
|
||||||
|
|
||||||
_parseResultMulti = new RemoteBook
|
_parseResultMulti = new RemoteBook
|
||||||
{
|
{
|
||||||
Author = fakeArtist,
|
Author = fakeAuthor,
|
||||||
ParsedBookInfo = new ParsedBookInfo { Quality = new QualityModel(Quality.MP3_320, new Revision(version: 2)) },
|
ParsedBookInfo = new ParsedBookInfo { Quality = new QualityModel(Quality.MP3_320, new Revision(version: 2)) },
|
||||||
Books = doubleAlbumList
|
Books = doubleBookList
|
||||||
};
|
};
|
||||||
|
|
||||||
_parseResultSingle = new RemoteBook
|
_parseResultSingle = new RemoteBook
|
||||||
{
|
{
|
||||||
Author = fakeArtist,
|
Author = fakeAuthor,
|
||||||
ParsedBookInfo = new ParsedBookInfo { Quality = new QualityModel(Quality.MP3_320, new Revision(version: 2)) },
|
ParsedBookInfo = new ParsedBookInfo { Quality = new QualityModel(Quality.MP3_320, new Revision(version: 2)) },
|
||||||
Books = singleAlbumList
|
Books = singleBookList
|
||||||
};
|
};
|
||||||
|
|
||||||
GivenUnmonitorDeletedTracks(true);
|
GivenUnmonitorDeletedTracks(true);
|
||||||
|
|||||||
@@ -34,10 +34,10 @@ namespace NzbDrone.Core.Test.DecisionEngineTests.RssSync
|
|||||||
_firstFile = new BookFile { Quality = new QualityModel(Quality.FLAC, new Revision(version: 1)), DateAdded = DateTime.Now };
|
_firstFile = new BookFile { Quality = new QualityModel(Quality.FLAC, new Revision(version: 1)), DateAdded = DateTime.Now };
|
||||||
_secondFile = new BookFile { Quality = new QualityModel(Quality.FLAC, new Revision(version: 1)), DateAdded = DateTime.Now };
|
_secondFile = new BookFile { Quality = new QualityModel(Quality.FLAC, new Revision(version: 1)), DateAdded = DateTime.Now };
|
||||||
|
|
||||||
var singleAlbumList = new List<Book> { new Book { }, new Book { } };
|
var singleBookList = new List<Book> { new Book { }, new Book { } };
|
||||||
var doubleAlbumList = new List<Book> { new Book { }, new Book { }, new Book { } };
|
var doubleBookList = new List<Book> { new Book { }, new Book { }, new Book { } };
|
||||||
|
|
||||||
var fakeArtist = Builder<Author>.CreateNew()
|
var fakeAuthor = Builder<Author>.CreateNew()
|
||||||
.With(c => c.QualityProfile = new QualityProfile { Cutoff = Quality.FLAC.Id })
|
.With(c => c.QualityProfile = new QualityProfile { Cutoff = Quality.FLAC.Id })
|
||||||
.Build();
|
.Build();
|
||||||
|
|
||||||
@@ -47,16 +47,16 @@ namespace NzbDrone.Core.Test.DecisionEngineTests.RssSync
|
|||||||
|
|
||||||
_parseResultMulti = new RemoteBook
|
_parseResultMulti = new RemoteBook
|
||||||
{
|
{
|
||||||
Author = fakeArtist,
|
Author = fakeAuthor,
|
||||||
ParsedBookInfo = new ParsedBookInfo { Quality = new QualityModel(Quality.MOBI, new Revision(version: 2)) },
|
ParsedBookInfo = new ParsedBookInfo { Quality = new QualityModel(Quality.MOBI, new Revision(version: 2)) },
|
||||||
Books = doubleAlbumList
|
Books = doubleBookList
|
||||||
};
|
};
|
||||||
|
|
||||||
_parseResultSingle = new RemoteBook
|
_parseResultSingle = new RemoteBook
|
||||||
{
|
{
|
||||||
Author = fakeArtist,
|
Author = fakeAuthor,
|
||||||
ParsedBookInfo = new ParsedBookInfo { Quality = new QualityModel(Quality.MOBI, new Revision(version: 2)) },
|
ParsedBookInfo = new ParsedBookInfo { Quality = new QualityModel(Quality.MOBI, new Revision(version: 2)) },
|
||||||
Books = singleAlbumList
|
Books = singleBookList
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -10,34 +10,34 @@ using NzbDrone.Test.Common;
|
|||||||
namespace NzbDrone.Core.Test.DecisionEngineTests.Search
|
namespace NzbDrone.Core.Test.DecisionEngineTests.Search
|
||||||
{
|
{
|
||||||
[TestFixture]
|
[TestFixture]
|
||||||
public class ArtistSpecificationFixture : TestBase<AuthorSpecification>
|
public class AuthorSpecificationFixture : TestBase<AuthorSpecification>
|
||||||
{
|
{
|
||||||
private Author _artist1;
|
private Author _author1;
|
||||||
private Author _artist2;
|
private Author _author2;
|
||||||
private RemoteBook _remoteBook = new RemoteBook();
|
private RemoteBook _remoteBook = new RemoteBook();
|
||||||
private SearchCriteriaBase _searchCriteria = new BookSearchCriteria();
|
private SearchCriteriaBase _searchCriteria = new BookSearchCriteria();
|
||||||
|
|
||||||
[SetUp]
|
[SetUp]
|
||||||
public void Setup()
|
public void Setup()
|
||||||
{
|
{
|
||||||
_artist1 = Builder<Author>.CreateNew().With(s => s.Id = 1).Build();
|
_author1 = Builder<Author>.CreateNew().With(s => s.Id = 1).Build();
|
||||||
_artist2 = Builder<Author>.CreateNew().With(s => s.Id = 2).Build();
|
_author2 = Builder<Author>.CreateNew().With(s => s.Id = 2).Build();
|
||||||
|
|
||||||
_remoteBook.Author = _artist1;
|
_remoteBook.Author = _author1;
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void should_return_false_if_artist_doesnt_match()
|
public void should_return_false_if_author_doesnt_match()
|
||||||
{
|
{
|
||||||
_searchCriteria.Author = _artist2;
|
_searchCriteria.Author = _author2;
|
||||||
|
|
||||||
Subject.IsSatisfiedBy(_remoteBook, _searchCriteria).Accepted.Should().BeFalse();
|
Subject.IsSatisfiedBy(_remoteBook, _searchCriteria).Accepted.Should().BeFalse();
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void should_return_true_when_artist_ids_match()
|
public void should_return_true_when_author_ids_match()
|
||||||
{
|
{
|
||||||
_searchCriteria.Author = _artist1;
|
_searchCriteria.Author = _author1;
|
||||||
|
|
||||||
Subject.IsSatisfiedBy(_remoteBook, _searchCriteria).Accepted.Should().BeTrue();
|
Subject.IsSatisfiedBy(_remoteBook, _searchCriteria).Accepted.Should().BeTrue();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,22 +15,22 @@ namespace NzbDrone.Core.Test.DecisionEngineTests.Search
|
|||||||
[TestFixture]
|
[TestFixture]
|
||||||
public class TorrentSeedingSpecificationFixture : TestBase<TorrentSeedingSpecification>
|
public class TorrentSeedingSpecificationFixture : TestBase<TorrentSeedingSpecification>
|
||||||
{
|
{
|
||||||
private Author _artist;
|
private Author _author;
|
||||||
private RemoteBook _remoteBook;
|
private RemoteBook _remoteBook;
|
||||||
private IndexerDefinition _indexerDefinition;
|
private IndexerDefinition _indexerDefinition;
|
||||||
|
|
||||||
[SetUp]
|
[SetUp]
|
||||||
public void Setup()
|
public void Setup()
|
||||||
{
|
{
|
||||||
_artist = Builder<Author>.CreateNew().With(s => s.Id = 1).Build();
|
_author = Builder<Author>.CreateNew().With(s => s.Id = 1).Build();
|
||||||
|
|
||||||
_remoteBook = new RemoteBook
|
_remoteBook = new RemoteBook
|
||||||
{
|
{
|
||||||
Author = _artist,
|
Author = _author,
|
||||||
Release = new TorrentInfo
|
Release = new TorrentInfo
|
||||||
{
|
{
|
||||||
IndexerId = 1,
|
IndexerId = 1,
|
||||||
Title = "Artist - Album [FLAC-RlsGrp]",
|
Title = "Author - Book [FLAC-RlsGrp]",
|
||||||
Seeders = 0
|
Seeders = 0
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -56,7 +56,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests.Search
|
|||||||
_remoteBook.Release = new ReleaseInfo
|
_remoteBook.Release = new ReleaseInfo
|
||||||
{
|
{
|
||||||
IndexerId = 1,
|
IndexerId = 1,
|
||||||
Title = "Artist - Album [FLAC-RlsGrp]"
|
Title = "Author - Book [FLAC-RlsGrp]"
|
||||||
};
|
};
|
||||||
|
|
||||||
Subject.IsSatisfiedBy(_remoteBook, null).Accepted.Should().BeTrue();
|
Subject.IsSatisfiedBy(_remoteBook, null).Accepted.Should().BeTrue();
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
|
|||||||
Items = Qualities.QualityFixture.GetDefaultQualities(),
|
Items = Qualities.QualityFixture.GetDefaultQualities(),
|
||||||
UpgradeAllowed = false
|
UpgradeAllowed = false
|
||||||
},
|
},
|
||||||
new List<QualityModel> { new QualityModel(Quality.MP3_320) },
|
new QualityModel(Quality.MP3_320),
|
||||||
new QualityModel(Quality.FLAC))
|
new QualityModel(Quality.FLAC))
|
||||||
.Should().BeFalse();
|
.Should().BeFalse();
|
||||||
}
|
}
|
||||||
@@ -36,7 +36,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
|
|||||||
Items = Qualities.QualityFixture.GetDefaultQualities(),
|
Items = Qualities.QualityFixture.GetDefaultQualities(),
|
||||||
UpgradeAllowed = true
|
UpgradeAllowed = true
|
||||||
},
|
},
|
||||||
new List<QualityModel> { new QualityModel(Quality.MP3_320) },
|
new QualityModel(Quality.MP3_320),
|
||||||
new QualityModel(Quality.FLAC))
|
new QualityModel(Quality.FLAC))
|
||||||
.Should().BeTrue();
|
.Should().BeTrue();
|
||||||
}
|
}
|
||||||
@@ -51,7 +51,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
|
|||||||
Items = Qualities.QualityFixture.GetDefaultQualities(),
|
Items = Qualities.QualityFixture.GetDefaultQualities(),
|
||||||
UpgradeAllowed = true
|
UpgradeAllowed = true
|
||||||
},
|
},
|
||||||
new List<QualityModel> { new QualityModel(Quality.MP3_320) },
|
new QualityModel(Quality.MP3_320),
|
||||||
new QualityModel(Quality.MP3_320))
|
new QualityModel(Quality.MP3_320))
|
||||||
.Should().BeTrue();
|
.Should().BeTrue();
|
||||||
}
|
}
|
||||||
@@ -66,7 +66,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
|
|||||||
Items = Qualities.QualityFixture.GetDefaultQualities(),
|
Items = Qualities.QualityFixture.GetDefaultQualities(),
|
||||||
UpgradeAllowed = false
|
UpgradeAllowed = false
|
||||||
},
|
},
|
||||||
new List<QualityModel> { new QualityModel(Quality.MP3_320) },
|
new QualityModel(Quality.MP3_320),
|
||||||
new QualityModel(Quality.MP3_320))
|
new QualityModel(Quality.MP3_320))
|
||||||
.Should().BeTrue();
|
.Should().BeTrue();
|
||||||
}
|
}
|
||||||
@@ -81,7 +81,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
|
|||||||
Items = Qualities.QualityFixture.GetDefaultQualities(),
|
Items = Qualities.QualityFixture.GetDefaultQualities(),
|
||||||
UpgradeAllowed = true
|
UpgradeAllowed = true
|
||||||
},
|
},
|
||||||
new List<QualityModel> { new QualityModel(Quality.MP3_320) },
|
new QualityModel(Quality.MP3_320),
|
||||||
new QualityModel(Quality.MP3_320))
|
new QualityModel(Quality.MP3_320))
|
||||||
.Should().BeTrue();
|
.Should().BeTrue();
|
||||||
}
|
}
|
||||||
@@ -96,7 +96,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
|
|||||||
Items = Qualities.QualityFixture.GetDefaultQualities(),
|
Items = Qualities.QualityFixture.GetDefaultQualities(),
|
||||||
UpgradeAllowed = false
|
UpgradeAllowed = false
|
||||||
},
|
},
|
||||||
new List<QualityModel> { new QualityModel(Quality.MP3_320) },
|
new QualityModel(Quality.MP3_320),
|
||||||
new QualityModel(Quality.MP3_320))
|
new QualityModel(Quality.MP3_320))
|
||||||
.Should().BeTrue();
|
.Should().BeTrue();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -32,10 +32,10 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
|
|||||||
_firstFile = new BookFile { Quality = new QualityModel(Quality.FLAC, new Revision(version: 2)), DateAdded = DateTime.Now };
|
_firstFile = new BookFile { Quality = new QualityModel(Quality.FLAC, new Revision(version: 2)), DateAdded = DateTime.Now };
|
||||||
_secondFile = new BookFile { Quality = new QualityModel(Quality.FLAC, new Revision(version: 2)), DateAdded = DateTime.Now };
|
_secondFile = new BookFile { Quality = new QualityModel(Quality.FLAC, new Revision(version: 2)), DateAdded = DateTime.Now };
|
||||||
|
|
||||||
var singleAlbumList = new List<Book> { new Book { BookFiles = new List<BookFile>() } };
|
var singleBookList = new List<Book> { new Book { BookFiles = new List<BookFile>() } };
|
||||||
var doubleAlbumList = new List<Book> { new Book { BookFiles = new List<BookFile>() }, new Book { BookFiles = new List<BookFile>() }, new Book { BookFiles = new List<BookFile>() } };
|
var doubleBookList = new List<Book> { new Book { BookFiles = new List<BookFile>() }, new Book { BookFiles = new List<BookFile>() }, new Book { BookFiles = new List<BookFile>() } };
|
||||||
|
|
||||||
var fakeArtist = Builder<Author>.CreateNew()
|
var fakeAuthor = Builder<Author>.CreateNew()
|
||||||
.With(c => c.QualityProfile = new QualityProfile
|
.With(c => c.QualityProfile = new QualityProfile
|
||||||
{
|
{
|
||||||
UpgradeAllowed = true,
|
UpgradeAllowed = true,
|
||||||
@@ -50,16 +50,16 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
|
|||||||
|
|
||||||
_parseResultMulti = new RemoteBook
|
_parseResultMulti = new RemoteBook
|
||||||
{
|
{
|
||||||
Author = fakeArtist,
|
Author = fakeAuthor,
|
||||||
ParsedBookInfo = new ParsedBookInfo { Quality = new QualityModel(Quality.MP3_320, new Revision(version: 2)) },
|
ParsedBookInfo = new ParsedBookInfo { Quality = new QualityModel(Quality.MP3_320, new Revision(version: 2)) },
|
||||||
Books = doubleAlbumList
|
Books = doubleBookList
|
||||||
};
|
};
|
||||||
|
|
||||||
_parseResultSingle = new RemoteBook
|
_parseResultSingle = new RemoteBook
|
||||||
{
|
{
|
||||||
Author = fakeArtist,
|
Author = fakeAuthor,
|
||||||
ParsedBookInfo = new ParsedBookInfo { Quality = new QualityModel(Quality.MP3_320, new Revision(version: 2)) },
|
ParsedBookInfo = new ParsedBookInfo { Quality = new QualityModel(Quality.MP3_320, new Revision(version: 2)) },
|
||||||
Books = singleAlbumList
|
Books = singleBookList
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -74,7 +74,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
|
|||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void should_return_true_if_album_has_no_existing_file()
|
public void should_return_true_if_book_has_no_existing_file()
|
||||||
{
|
{
|
||||||
_parseResultSingle.Books.First().BookFiles = new List<BookFile>();
|
_parseResultSingle.Books.First().BookFiles = new List<BookFile>();
|
||||||
|
|
||||||
@@ -95,7 +95,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
|
|||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void should_return_true_if_single_album_doesnt_exist_on_disk()
|
public void should_return_true_if_single_book_doesnt_exist_on_disk()
|
||||||
{
|
{
|
||||||
_parseResultSingle.Books = new List<Book>();
|
_parseResultSingle.Books = new List<Book>();
|
||||||
|
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
|
|||||||
|
|
||||||
Subject.IsUpgradable(
|
Subject.IsUpgradable(
|
||||||
profile,
|
profile,
|
||||||
new List<QualityModel> { new QualityModel(current, new Revision(version: currentVersion)) },
|
new QualityModel(current, new Revision(version: currentVersion)),
|
||||||
NoPreferredWordScore,
|
NoPreferredWordScore,
|
||||||
new QualityModel(newQuality, new Revision(version: newVersion)),
|
new QualityModel(newQuality, new Revision(version: newVersion)),
|
||||||
NoPreferredWordScore)
|
NoPreferredWordScore)
|
||||||
@@ -65,7 +65,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
|
|||||||
|
|
||||||
Subject.IsUpgradable(
|
Subject.IsUpgradable(
|
||||||
profile,
|
profile,
|
||||||
new List<QualityModel> { new QualityModel(Quality.MP3_320, new Revision(version: 1)) },
|
new QualityModel(Quality.MP3_320, new Revision(version: 1)),
|
||||||
NoPreferredWordScore,
|
NoPreferredWordScore,
|
||||||
new QualityModel(Quality.MP3_320, new Revision(version: 2)),
|
new QualityModel(Quality.MP3_320, new Revision(version: 2)),
|
||||||
NoPreferredWordScore)
|
NoPreferredWordScore)
|
||||||
@@ -84,7 +84,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
|
|||||||
|
|
||||||
Subject.IsUpgradable(
|
Subject.IsUpgradable(
|
||||||
profile,
|
profile,
|
||||||
new List<QualityModel> { new QualityModel(Quality.MP3_320, new Revision(version: 1)) },
|
new QualityModel(Quality.MP3_320, new Revision(version: 1)),
|
||||||
NoPreferredWordScore,
|
NoPreferredWordScore,
|
||||||
new QualityModel(Quality.MP3_320, new Revision(version: 2)),
|
new QualityModel(Quality.MP3_320, new Revision(version: 2)),
|
||||||
NoPreferredWordScore)
|
NoPreferredWordScore)
|
||||||
|
|||||||
@@ -17,15 +17,15 @@ namespace NzbDrone.Core.Test.DiskSpace
|
|||||||
public class DiskSpaceServiceFixture : CoreTest<DiskSpaceService>
|
public class DiskSpaceServiceFixture : CoreTest<DiskSpaceService>
|
||||||
{
|
{
|
||||||
private RootFolder _rootDir;
|
private RootFolder _rootDir;
|
||||||
private string _artistFolder1;
|
private string _authorFolder1;
|
||||||
private string _artistFolder2;
|
private string _authorFolder2;
|
||||||
|
|
||||||
[SetUp]
|
[SetUp]
|
||||||
public void SetUp()
|
public void SetUp()
|
||||||
{
|
{
|
||||||
_rootDir = new RootFolder { Path = @"G:\fasdlfsdf".AsOsAgnostic() };
|
_rootDir = new RootFolder { Path = @"G:\fasdlfsdf".AsOsAgnostic() };
|
||||||
_artistFolder1 = Path.Combine(_rootDir.Path, "artist1");
|
_authorFolder1 = Path.Combine(_rootDir.Path, "author1");
|
||||||
_artistFolder2 = Path.Combine(_rootDir.Path, "artist2");
|
_authorFolder2 = Path.Combine(_rootDir.Path, "author2");
|
||||||
|
|
||||||
Mocker.GetMock<IRootFolderService>()
|
Mocker.GetMock<IRootFolderService>()
|
||||||
.Setup(x => x.All())
|
.Setup(x => x.All())
|
||||||
@@ -47,14 +47,14 @@ namespace NzbDrone.Core.Test.DiskSpace
|
|||||||
.Setup(v => v.GetTotalSize(It.IsAny<string>()))
|
.Setup(v => v.GetTotalSize(It.IsAny<string>()))
|
||||||
.Returns(0);
|
.Returns(0);
|
||||||
|
|
||||||
GivenArtist();
|
GivenAuthor();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void GivenArtist(params Author[] artist)
|
private void GivenAuthor(params Author[] author)
|
||||||
{
|
{
|
||||||
Mocker.GetMock<IAuthorService>()
|
Mocker.GetMock<IAuthorService>()
|
||||||
.Setup(v => v.GetAllAuthors())
|
.Setup(v => v.GetAllAuthors())
|
||||||
.Returns(artist.ToList());
|
.Returns(author.ToList());
|
||||||
}
|
}
|
||||||
|
|
||||||
private void GivenExistingFolder(string folder)
|
private void GivenExistingFolder(string folder)
|
||||||
@@ -65,11 +65,11 @@ namespace NzbDrone.Core.Test.DiskSpace
|
|||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void should_check_diskspace_for_artist_folders()
|
public void should_check_diskspace_for_author_folders()
|
||||||
{
|
{
|
||||||
GivenArtist(new Author { Path = _artistFolder1 });
|
GivenAuthor(new Author { Path = _authorFolder1 });
|
||||||
|
|
||||||
GivenExistingFolder(_artistFolder1);
|
GivenExistingFolder(_authorFolder1);
|
||||||
|
|
||||||
var freeSpace = Subject.GetFreeSpace();
|
var freeSpace = Subject.GetFreeSpace();
|
||||||
|
|
||||||
@@ -79,10 +79,10 @@ namespace NzbDrone.Core.Test.DiskSpace
|
|||||||
[Test]
|
[Test]
|
||||||
public void should_check_diskspace_for_same_root_folder_only_once()
|
public void should_check_diskspace_for_same_root_folder_only_once()
|
||||||
{
|
{
|
||||||
GivenArtist(new Author { Path = _artistFolder1 }, new Author { Path = _artistFolder2 });
|
GivenAuthor(new Author { Path = _authorFolder1 }, new Author { Path = _authorFolder2 });
|
||||||
|
|
||||||
GivenExistingFolder(_artistFolder1);
|
GivenExistingFolder(_authorFolder1);
|
||||||
GivenExistingFolder(_artistFolder2);
|
GivenExistingFolder(_authorFolder2);
|
||||||
|
|
||||||
var freeSpace = Subject.GetFreeSpace();
|
var freeSpace = Subject.GetFreeSpace();
|
||||||
|
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ namespace NzbDrone.Core.Test.Download.CompletedDownloadServiceTests
|
|||||||
.With(h => h.Title = "Drone.S01E01.HDTV")
|
.With(h => h.Title = "Drone.S01E01.HDTV")
|
||||||
.Build();
|
.Build();
|
||||||
|
|
||||||
var remoteBook = BuildRemoteAlbum();
|
var remoteBook = BuildRemoteBook();
|
||||||
|
|
||||||
_trackedDownload = Builder<TrackedDownload>.CreateNew()
|
_trackedDownload = Builder<TrackedDownload>.CreateNew()
|
||||||
.With(c => c.State = TrackedDownloadState.Downloading)
|
.With(c => c.State = TrackedDownloadState.Downloading)
|
||||||
@@ -55,11 +55,11 @@ namespace NzbDrone.Core.Test.Download.CompletedDownloadServiceTests
|
|||||||
.Returns(new History.History());
|
.Returns(new History.History());
|
||||||
|
|
||||||
Mocker.GetMock<IParsingService>()
|
Mocker.GetMock<IParsingService>()
|
||||||
.Setup(s => s.GetArtist("Drone.S01E01.HDTV"))
|
.Setup(s => s.GetAuthor("Drone.S01E01.HDTV"))
|
||||||
.Returns(remoteBook.Author);
|
.Returns(remoteBook.Author);
|
||||||
}
|
}
|
||||||
|
|
||||||
private Book CreateAlbum(int id)
|
private Book CreateBook(int id)
|
||||||
{
|
{
|
||||||
return new Book
|
return new Book
|
||||||
{
|
{
|
||||||
@@ -67,12 +67,12 @@ namespace NzbDrone.Core.Test.Download.CompletedDownloadServiceTests
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
private RemoteBook BuildRemoteAlbum()
|
private RemoteBook BuildRemoteBook()
|
||||||
{
|
{
|
||||||
return new RemoteBook
|
return new RemoteBook
|
||||||
{
|
{
|
||||||
Author = new Author(),
|
Author = new Author(),
|
||||||
Books = new List<Book> { CreateAlbum(1) }
|
Books = new List<Book> { CreateBook(1) }
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -86,18 +86,18 @@ namespace NzbDrone.Core.Test.Download.CompletedDownloadServiceTests
|
|||||||
.Returns(new History.History() { SourceTitle = "Droned S01E01" });
|
.Returns(new History.History() { SourceTitle = "Droned S01E01" });
|
||||||
|
|
||||||
Mocker.GetMock<IParsingService>()
|
Mocker.GetMock<IParsingService>()
|
||||||
.Setup(s => s.GetArtist(It.IsAny<string>()))
|
.Setup(s => s.GetAuthor(It.IsAny<string>()))
|
||||||
.Returns((Author)null);
|
.Returns((Author)null);
|
||||||
|
|
||||||
Mocker.GetMock<IParsingService>()
|
Mocker.GetMock<IParsingService>()
|
||||||
.Setup(s => s.GetArtist("Droned S01E01"))
|
.Setup(s => s.GetAuthor("Droned S01E01"))
|
||||||
.Returns(BuildRemoteAlbum().Author);
|
.Returns(BuildRemoteBook().Author);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void GivenArtistMatch()
|
private void GivenAuthorMatch()
|
||||||
{
|
{
|
||||||
Mocker.GetMock<IParsingService>()
|
Mocker.GetMock<IParsingService>()
|
||||||
.Setup(s => s.GetArtist(It.IsAny<string>()))
|
.Setup(s => s.GetAuthor(It.IsAny<string>()))
|
||||||
.Returns(_trackedDownload.RemoteBook.Author);
|
.Returns(_trackedDownload.RemoteBook.Author);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -167,11 +167,11 @@ namespace NzbDrone.Core.Test.Download.CompletedDownloadServiceTests
|
|||||||
[Test]
|
[Test]
|
||||||
public void should_mark_as_imported_if_all_tracks_were_imported_but_extra_files_were_not()
|
public void should_mark_as_imported_if_all_tracks_were_imported_but_extra_files_were_not()
|
||||||
{
|
{
|
||||||
GivenArtistMatch();
|
GivenAuthorMatch();
|
||||||
|
|
||||||
_trackedDownload.RemoteBook.Books = new List<Book>
|
_trackedDownload.RemoteBook.Books = new List<Book>
|
||||||
{
|
{
|
||||||
CreateAlbum(1)
|
CreateBook(1)
|
||||||
};
|
};
|
||||||
|
|
||||||
Mocker.GetMock<IDownloadedBooksImportService>()
|
Mocker.GetMock<IDownloadedBooksImportService>()
|
||||||
@@ -192,9 +192,9 @@ namespace NzbDrone.Core.Test.Download.CompletedDownloadServiceTests
|
|||||||
{
|
{
|
||||||
_trackedDownload.RemoteBook.Books = new List<Book>
|
_trackedDownload.RemoteBook.Books = new List<Book>
|
||||||
{
|
{
|
||||||
CreateAlbum(1),
|
CreateBook(1),
|
||||||
CreateAlbum(1),
|
CreateBook(1),
|
||||||
CreateAlbum(1)
|
CreateBook(1)
|
||||||
};
|
};
|
||||||
|
|
||||||
Mocker.GetMock<IDownloadedBooksImportService>()
|
Mocker.GetMock<IDownloadedBooksImportService>()
|
||||||
@@ -227,9 +227,9 @@ namespace NzbDrone.Core.Test.Download.CompletedDownloadServiceTests
|
|||||||
[Test]
|
[Test]
|
||||||
public void should_not_mark_as_imported_if_some_of_episodes_were_not_imported_including_history()
|
public void should_not_mark_as_imported_if_some_of_episodes_were_not_imported_including_history()
|
||||||
{
|
{
|
||||||
var albums = Builder<Book>.CreateListOfSize(3).BuildList();
|
var books = Builder<Book>.CreateListOfSize(3).BuildList();
|
||||||
|
|
||||||
_trackedDownload.RemoteBook.Books = albums;
|
_trackedDownload.RemoteBook.Books = books;
|
||||||
|
|
||||||
Mocker.GetMock<IDownloadedBooksImportService>()
|
Mocker.GetMock<IDownloadedBooksImportService>()
|
||||||
.Setup(v => v.ProcessPath(It.IsAny<string>(), It.IsAny<ImportMode>(), It.IsAny<Author>(), It.IsAny<DownloadClientItem>()))
|
.Setup(v => v.ProcessPath(It.IsAny<string>(), It.IsAny<ImportMode>(), It.IsAny<Author>(), It.IsAny<DownloadClientItem>()))
|
||||||
@@ -261,7 +261,7 @@ namespace NzbDrone.Core.Test.Download.CompletedDownloadServiceTests
|
|||||||
{
|
{
|
||||||
_trackedDownload.RemoteBook.Books = new List<Book>
|
_trackedDownload.RemoteBook.Books = new List<Book>
|
||||||
{
|
{
|
||||||
CreateAlbum(1)
|
CreateBook(1)
|
||||||
};
|
};
|
||||||
|
|
||||||
Mocker.GetMock<IDownloadedBooksImportService>()
|
Mocker.GetMock<IDownloadedBooksImportService>()
|
||||||
@@ -285,9 +285,9 @@ namespace NzbDrone.Core.Test.Download.CompletedDownloadServiceTests
|
|||||||
[Test]
|
[Test]
|
||||||
public void should_mark_as_imported_if_all_episodes_were_imported_including_history()
|
public void should_mark_as_imported_if_all_episodes_were_imported_including_history()
|
||||||
{
|
{
|
||||||
var albums = Builder<Book>.CreateListOfSize(2).BuildList();
|
var books = Builder<Book>.CreateListOfSize(2).BuildList();
|
||||||
|
|
||||||
_trackedDownload.RemoteBook.Books = albums;
|
_trackedDownload.RemoteBook.Books = books;
|
||||||
|
|
||||||
Mocker.GetMock<IDownloadedBooksImportService>()
|
Mocker.GetMock<IDownloadedBooksImportService>()
|
||||||
.Setup(v => v.ProcessPath(It.IsAny<string>(), It.IsAny<ImportMode>(), It.IsAny<Author>(), It.IsAny<DownloadClientItem>()))
|
.Setup(v => v.ProcessPath(It.IsAny<string>(), It.IsAny<ImportMode>(), It.IsAny<Author>(), It.IsAny<DownloadClientItem>()))
|
||||||
@@ -295,11 +295,11 @@ namespace NzbDrone.Core.Test.Download.CompletedDownloadServiceTests
|
|||||||
{
|
{
|
||||||
new ImportResult(
|
new ImportResult(
|
||||||
new ImportDecision<LocalBook>(
|
new ImportDecision<LocalBook>(
|
||||||
new LocalBook { Path = @"C:\TestPath\Droned.S01E01.mkv", Book = albums[0] })),
|
new LocalBook { Path = @"C:\TestPath\Droned.S01E01.mkv", Book = books[0] })),
|
||||||
|
|
||||||
new ImportResult(
|
new ImportResult(
|
||||||
new ImportDecision<LocalBook>(
|
new ImportDecision<LocalBook>(
|
||||||
new LocalBook { Path = @"C:\TestPath\Droned.S01E02.mkv", Book = albums[1] }), "Test Failure")
|
new LocalBook { Path = @"C:\TestPath\Droned.S01E02.mkv", Book = books[1] }), "Test Failure")
|
||||||
});
|
});
|
||||||
|
|
||||||
var history = Builder<History.History>.CreateListOfSize(2)
|
var history = Builder<History.History>.CreateListOfSize(2)
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ namespace NzbDrone.Core.Test.Download.CompletedDownloadServiceTests
|
|||||||
.With(h => h.Title = "Drone.S01E01.HDTV")
|
.With(h => h.Title = "Drone.S01E01.HDTV")
|
||||||
.Build();
|
.Build();
|
||||||
|
|
||||||
var remoteBook = BuildRemoteAlbum();
|
var remoteBook = BuildRemoteBook();
|
||||||
|
|
||||||
_trackedDownload = Builder<TrackedDownload>.CreateNew()
|
_trackedDownload = Builder<TrackedDownload>.CreateNew()
|
||||||
.With(c => c.State = TrackedDownloadState.Downloading)
|
.With(c => c.State = TrackedDownloadState.Downloading)
|
||||||
@@ -54,11 +54,11 @@ namespace NzbDrone.Core.Test.Download.CompletedDownloadServiceTests
|
|||||||
.Returns(new History.History());
|
.Returns(new History.History());
|
||||||
|
|
||||||
Mocker.GetMock<IParsingService>()
|
Mocker.GetMock<IParsingService>()
|
||||||
.Setup(s => s.GetArtist("Drone.S01E01.HDTV"))
|
.Setup(s => s.GetAuthor("Drone.S01E01.HDTV"))
|
||||||
.Returns(remoteBook.Author);
|
.Returns(remoteBook.Author);
|
||||||
}
|
}
|
||||||
|
|
||||||
private RemoteBook BuildRemoteAlbum()
|
private RemoteBook BuildRemoteBook()
|
||||||
{
|
{
|
||||||
return new RemoteBook
|
return new RemoteBook
|
||||||
{
|
{
|
||||||
@@ -74,10 +74,10 @@ namespace NzbDrone.Core.Test.Download.CompletedDownloadServiceTests
|
|||||||
.Returns((History.History)null);
|
.Returns((History.History)null);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void GivenArtistMatch()
|
private void GivenAuthorMatch()
|
||||||
{
|
{
|
||||||
Mocker.GetMock<IParsingService>()
|
Mocker.GetMock<IParsingService>()
|
||||||
.Setup(s => s.GetArtist(It.IsAny<string>()))
|
.Setup(s => s.GetAuthor(It.IsAny<string>()))
|
||||||
.Returns(_trackedDownload.RemoteBook.Author);
|
.Returns(_trackedDownload.RemoteBook.Author);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -90,12 +90,12 @@ namespace NzbDrone.Core.Test.Download.CompletedDownloadServiceTests
|
|||||||
.Returns(new History.History() { SourceTitle = "Droned S01E01" });
|
.Returns(new History.History() { SourceTitle = "Droned S01E01" });
|
||||||
|
|
||||||
Mocker.GetMock<IParsingService>()
|
Mocker.GetMock<IParsingService>()
|
||||||
.Setup(s => s.GetArtist(It.IsAny<string>()))
|
.Setup(s => s.GetAuthor(It.IsAny<string>()))
|
||||||
.Returns((Author)null);
|
.Returns((Author)null);
|
||||||
|
|
||||||
Mocker.GetMock<IParsingService>()
|
Mocker.GetMock<IParsingService>()
|
||||||
.Setup(s => s.GetArtist("Droned S01E01"))
|
.Setup(s => s.GetAuthor("Droned S01E01"))
|
||||||
.Returns(BuildRemoteAlbum().Author);
|
.Returns(BuildRemoteBook().Author);
|
||||||
}
|
}
|
||||||
|
|
||||||
[TestCase(DownloadItemStatus.Downloading)]
|
[TestCase(DownloadItemStatus.Downloading)]
|
||||||
@@ -128,7 +128,7 @@ namespace NzbDrone.Core.Test.Download.CompletedDownloadServiceTests
|
|||||||
{
|
{
|
||||||
_trackedDownload.DownloadItem.Category = "tv";
|
_trackedDownload.DownloadItem.Category = "tv";
|
||||||
GivenNoGrabbedHistory();
|
GivenNoGrabbedHistory();
|
||||||
GivenArtistMatch();
|
GivenAuthorMatch();
|
||||||
|
|
||||||
Subject.Check(_trackedDownload);
|
Subject.Check(_trackedDownload);
|
||||||
|
|
||||||
@@ -164,7 +164,7 @@ namespace NzbDrone.Core.Test.Download.CompletedDownloadServiceTests
|
|||||||
{
|
{
|
||||||
_trackedDownload.RemoteBook.Author = null;
|
_trackedDownload.RemoteBook.Author = null;
|
||||||
Mocker.GetMock<IParsingService>()
|
Mocker.GetMock<IParsingService>()
|
||||||
.Setup(s => s.GetArtist("Drone.S01E01.HDTV"))
|
.Setup(s => s.GetAuthor("Drone.S01E01.HDTV"))
|
||||||
.Returns((Author)null);
|
.Returns((Author)null);
|
||||||
|
|
||||||
Subject.Check(_trackedDownload);
|
Subject.Check(_trackedDownload);
|
||||||
|
|||||||
@@ -30,21 +30,21 @@ namespace NzbDrone.Core.Test.Download.DownloadApprovedReportsTests
|
|||||||
.Returns<List<DownloadDecision>>(v => v);
|
.Returns<List<DownloadDecision>>(v => v);
|
||||||
}
|
}
|
||||||
|
|
||||||
private Book GetAlbum(int id)
|
private Book GetBook(int id)
|
||||||
{
|
{
|
||||||
return Builder<Book>.CreateNew()
|
return Builder<Book>.CreateNew()
|
||||||
.With(e => e.Id = id)
|
.With(e => e.Id = id)
|
||||||
.Build();
|
.Build();
|
||||||
}
|
}
|
||||||
|
|
||||||
private RemoteBook GetRemoteAlbum(List<Book> albums, QualityModel quality, DownloadProtocol downloadProtocol = DownloadProtocol.Usenet)
|
private RemoteBook GetRemoteBook(List<Book> books, QualityModel quality, DownloadProtocol downloadProtocol = DownloadProtocol.Usenet)
|
||||||
{
|
{
|
||||||
var remoteBook = new RemoteBook();
|
var remoteBook = new RemoteBook();
|
||||||
remoteBook.ParsedBookInfo = new ParsedBookInfo();
|
remoteBook.ParsedBookInfo = new ParsedBookInfo();
|
||||||
remoteBook.ParsedBookInfo.Quality = quality;
|
remoteBook.ParsedBookInfo.Quality = quality;
|
||||||
|
|
||||||
remoteBook.Books = new List<Book>();
|
remoteBook.Books = new List<Book>();
|
||||||
remoteBook.Books.AddRange(albums);
|
remoteBook.Books.AddRange(books);
|
||||||
|
|
||||||
remoteBook.Release = new ReleaseInfo();
|
remoteBook.Release = new ReleaseInfo();
|
||||||
remoteBook.Release.DownloadProtocol = downloadProtocol;
|
remoteBook.Release.DownloadProtocol = downloadProtocol;
|
||||||
@@ -58,10 +58,10 @@ namespace NzbDrone.Core.Test.Download.DownloadApprovedReportsTests
|
|||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void should_download_report_if_album_was_not_already_downloaded()
|
public void should_download_report_if_book_was_not_already_downloaded()
|
||||||
{
|
{
|
||||||
var albums = new List<Book> { GetAlbum(1) };
|
var books = new List<Book> { GetBook(1) };
|
||||||
var remoteBook = GetRemoteAlbum(albums, new QualityModel(Quality.MP3_320));
|
var remoteBook = GetRemoteBook(books, new QualityModel(Quality.MP3_320));
|
||||||
|
|
||||||
var decisions = new List<DownloadDecision>();
|
var decisions = new List<DownloadDecision>();
|
||||||
decisions.Add(new DownloadDecision(remoteBook));
|
decisions.Add(new DownloadDecision(remoteBook));
|
||||||
@@ -71,10 +71,10 @@ namespace NzbDrone.Core.Test.Download.DownloadApprovedReportsTests
|
|||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void should_only_download_album_once()
|
public void should_only_download_book_once()
|
||||||
{
|
{
|
||||||
var albums = new List<Book> { GetAlbum(1) };
|
var books = new List<Book> { GetBook(1) };
|
||||||
var remoteBook = GetRemoteAlbum(albums, new QualityModel(Quality.MP3_320));
|
var remoteBook = GetRemoteBook(books, new QualityModel(Quality.MP3_320));
|
||||||
|
|
||||||
var decisions = new List<DownloadDecision>();
|
var decisions = new List<DownloadDecision>();
|
||||||
decisions.Add(new DownloadDecision(remoteBook));
|
decisions.Add(new DownloadDecision(remoteBook));
|
||||||
@@ -85,14 +85,14 @@ namespace NzbDrone.Core.Test.Download.DownloadApprovedReportsTests
|
|||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void should_not_download_if_any_album_was_already_downloaded()
|
public void should_not_download_if_any_book_was_already_downloaded()
|
||||||
{
|
{
|
||||||
var remoteBook1 = GetRemoteAlbum(
|
var remoteBook1 = GetRemoteBook(
|
||||||
new List<Book> { GetAlbum(1) },
|
new List<Book> { GetBook(1) },
|
||||||
new QualityModel(Quality.MP3_320));
|
new QualityModel(Quality.MP3_320));
|
||||||
|
|
||||||
var remoteBook2 = GetRemoteAlbum(
|
var remoteBook2 = GetRemoteBook(
|
||||||
new List<Book> { GetAlbum(1), GetAlbum(2) },
|
new List<Book> { GetBook(1), GetBook(2) },
|
||||||
new QualityModel(Quality.MP3_320));
|
new QualityModel(Quality.MP3_320));
|
||||||
|
|
||||||
var decisions = new List<DownloadDecision>();
|
var decisions = new List<DownloadDecision>();
|
||||||
@@ -106,8 +106,8 @@ namespace NzbDrone.Core.Test.Download.DownloadApprovedReportsTests
|
|||||||
[Test]
|
[Test]
|
||||||
public void should_return_downloaded_reports()
|
public void should_return_downloaded_reports()
|
||||||
{
|
{
|
||||||
var albums = new List<Book> { GetAlbum(1) };
|
var books = new List<Book> { GetBook(1) };
|
||||||
var remoteBook = GetRemoteAlbum(albums, new QualityModel(Quality.MP3_320));
|
var remoteBook = GetRemoteBook(books, new QualityModel(Quality.MP3_320));
|
||||||
|
|
||||||
var decisions = new List<DownloadDecision>();
|
var decisions = new List<DownloadDecision>();
|
||||||
decisions.Add(new DownloadDecision(remoteBook));
|
decisions.Add(new DownloadDecision(remoteBook));
|
||||||
@@ -118,12 +118,12 @@ namespace NzbDrone.Core.Test.Download.DownloadApprovedReportsTests
|
|||||||
[Test]
|
[Test]
|
||||||
public void should_return_all_downloaded_reports()
|
public void should_return_all_downloaded_reports()
|
||||||
{
|
{
|
||||||
var remoteBook1 = GetRemoteAlbum(
|
var remoteBook1 = GetRemoteBook(
|
||||||
new List<Book> { GetAlbum(1) },
|
new List<Book> { GetBook(1) },
|
||||||
new QualityModel(Quality.MP3_320));
|
new QualityModel(Quality.MP3_320));
|
||||||
|
|
||||||
var remoteBook2 = GetRemoteAlbum(
|
var remoteBook2 = GetRemoteBook(
|
||||||
new List<Book> { GetAlbum(2) },
|
new List<Book> { GetBook(2) },
|
||||||
new QualityModel(Quality.MP3_320));
|
new QualityModel(Quality.MP3_320));
|
||||||
|
|
||||||
var decisions = new List<DownloadDecision>();
|
var decisions = new List<DownloadDecision>();
|
||||||
@@ -136,16 +136,16 @@ namespace NzbDrone.Core.Test.Download.DownloadApprovedReportsTests
|
|||||||
[Test]
|
[Test]
|
||||||
public void should_only_return_downloaded_reports()
|
public void should_only_return_downloaded_reports()
|
||||||
{
|
{
|
||||||
var remoteBook1 = GetRemoteAlbum(
|
var remoteBook1 = GetRemoteBook(
|
||||||
new List<Book> { GetAlbum(1) },
|
new List<Book> { GetBook(1) },
|
||||||
new QualityModel(Quality.MP3_320));
|
new QualityModel(Quality.MP3_320));
|
||||||
|
|
||||||
var remoteBook2 = GetRemoteAlbum(
|
var remoteBook2 = GetRemoteBook(
|
||||||
new List<Book> { GetAlbum(2) },
|
new List<Book> { GetBook(2) },
|
||||||
new QualityModel(Quality.MP3_320));
|
new QualityModel(Quality.MP3_320));
|
||||||
|
|
||||||
var remoteBook3 = GetRemoteAlbum(
|
var remoteBook3 = GetRemoteBook(
|
||||||
new List<Book> { GetAlbum(2) },
|
new List<Book> { GetBook(2) },
|
||||||
new QualityModel(Quality.MP3_320));
|
new QualityModel(Quality.MP3_320));
|
||||||
|
|
||||||
var decisions = new List<DownloadDecision>();
|
var decisions = new List<DownloadDecision>();
|
||||||
@@ -159,8 +159,8 @@ namespace NzbDrone.Core.Test.Download.DownloadApprovedReportsTests
|
|||||||
[Test]
|
[Test]
|
||||||
public void should_not_add_to_downloaded_list_when_download_fails()
|
public void should_not_add_to_downloaded_list_when_download_fails()
|
||||||
{
|
{
|
||||||
var albums = new List<Book> { GetAlbum(1) };
|
var books = new List<Book> { GetBook(1) };
|
||||||
var remoteBook = GetRemoteAlbum(albums, new QualityModel(Quality.MP3_320));
|
var remoteBook = GetRemoteBook(books, new QualityModel(Quality.MP3_320));
|
||||||
|
|
||||||
var decisions = new List<DownloadDecision>();
|
var decisions = new List<DownloadDecision>();
|
||||||
decisions.Add(new DownloadDecision(remoteBook));
|
decisions.Add(new DownloadDecision(remoteBook));
|
||||||
@@ -183,8 +183,8 @@ namespace NzbDrone.Core.Test.Download.DownloadApprovedReportsTests
|
|||||||
[Test]
|
[Test]
|
||||||
public void should_not_grab_if_pending()
|
public void should_not_grab_if_pending()
|
||||||
{
|
{
|
||||||
var albums = new List<Book> { GetAlbum(1) };
|
var books = new List<Book> { GetBook(1) };
|
||||||
var remoteBook = GetRemoteAlbum(albums, new QualityModel(Quality.MP3_320));
|
var remoteBook = GetRemoteBook(books, new QualityModel(Quality.MP3_320));
|
||||||
|
|
||||||
var decisions = new List<DownloadDecision>();
|
var decisions = new List<DownloadDecision>();
|
||||||
decisions.Add(new DownloadDecision(remoteBook, new Rejection("Failure!", RejectionType.Temporary)));
|
decisions.Add(new DownloadDecision(remoteBook, new Rejection("Failure!", RejectionType.Temporary)));
|
||||||
@@ -194,10 +194,10 @@ namespace NzbDrone.Core.Test.Download.DownloadApprovedReportsTests
|
|||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void should_not_add_to_pending_if_album_was_grabbed()
|
public void should_not_add_to_pending_if_book_was_grabbed()
|
||||||
{
|
{
|
||||||
var albums = new List<Book> { GetAlbum(1) };
|
var books = new List<Book> { GetBook(1) };
|
||||||
var remoteBook = GetRemoteAlbum(albums, new QualityModel(Quality.MP3_320));
|
var remoteBook = GetRemoteBook(books, new QualityModel(Quality.MP3_320));
|
||||||
|
|
||||||
var decisions = new List<DownloadDecision>();
|
var decisions = new List<DownloadDecision>();
|
||||||
decisions.Add(new DownloadDecision(remoteBook));
|
decisions.Add(new DownloadDecision(remoteBook));
|
||||||
@@ -210,8 +210,8 @@ namespace NzbDrone.Core.Test.Download.DownloadApprovedReportsTests
|
|||||||
[Test]
|
[Test]
|
||||||
public void should_add_to_pending_even_if_already_added_to_pending()
|
public void should_add_to_pending_even_if_already_added_to_pending()
|
||||||
{
|
{
|
||||||
var albums = new List<Book> { GetAlbum(1) };
|
var books = new List<Book> { GetBook(1) };
|
||||||
var remoteBook = GetRemoteAlbum(albums, new QualityModel(Quality.MP3_320));
|
var remoteBook = GetRemoteBook(books, new QualityModel(Quality.MP3_320));
|
||||||
|
|
||||||
var decisions = new List<DownloadDecision>();
|
var decisions = new List<DownloadDecision>();
|
||||||
decisions.Add(new DownloadDecision(remoteBook, new Rejection("Failure!", RejectionType.Temporary)));
|
decisions.Add(new DownloadDecision(remoteBook, new Rejection("Failure!", RejectionType.Temporary)));
|
||||||
@@ -224,8 +224,8 @@ namespace NzbDrone.Core.Test.Download.DownloadApprovedReportsTests
|
|||||||
[Test]
|
[Test]
|
||||||
public void should_add_to_failed_if_already_failed_for_that_protocol()
|
public void should_add_to_failed_if_already_failed_for_that_protocol()
|
||||||
{
|
{
|
||||||
var albums = new List<Book> { GetAlbum(1) };
|
var books = new List<Book> { GetBook(1) };
|
||||||
var remoteBook = GetRemoteAlbum(albums, new QualityModel(Quality.MP3_320));
|
var remoteBook = GetRemoteBook(books, new QualityModel(Quality.MP3_320));
|
||||||
|
|
||||||
var decisions = new List<DownloadDecision>();
|
var decisions = new List<DownloadDecision>();
|
||||||
decisions.Add(new DownloadDecision(remoteBook));
|
decisions.Add(new DownloadDecision(remoteBook));
|
||||||
@@ -241,9 +241,9 @@ namespace NzbDrone.Core.Test.Download.DownloadApprovedReportsTests
|
|||||||
[Test]
|
[Test]
|
||||||
public void should_not_add_to_failed_if_failed_for_a_different_protocol()
|
public void should_not_add_to_failed_if_failed_for_a_different_protocol()
|
||||||
{
|
{
|
||||||
var albums = new List<Book> { GetAlbum(1) };
|
var books = new List<Book> { GetBook(1) };
|
||||||
var remoteBook = GetRemoteAlbum(albums, new QualityModel(Quality.MP3_320), DownloadProtocol.Usenet);
|
var remoteBook = GetRemoteBook(books, new QualityModel(Quality.MP3_320), DownloadProtocol.Usenet);
|
||||||
var remoteBook2 = GetRemoteAlbum(albums, new QualityModel(Quality.MP3_320), DownloadProtocol.Torrent);
|
var remoteBook2 = GetRemoteBook(books, new QualityModel(Quality.MP3_320), DownloadProtocol.Torrent);
|
||||||
|
|
||||||
var decisions = new List<DownloadDecision>();
|
var decisions = new List<DownloadDecision>();
|
||||||
decisions.Add(new DownloadDecision(remoteBook));
|
decisions.Add(new DownloadDecision(remoteBook));
|
||||||
@@ -260,8 +260,8 @@ namespace NzbDrone.Core.Test.Download.DownloadApprovedReportsTests
|
|||||||
[Test]
|
[Test]
|
||||||
public void should_add_to_rejected_if_release_unavailable_on_indexer()
|
public void should_add_to_rejected_if_release_unavailable_on_indexer()
|
||||||
{
|
{
|
||||||
var albums = new List<Book> { GetAlbum(1) };
|
var books = new List<Book> { GetBook(1) };
|
||||||
var remoteBook = GetRemoteAlbum(albums, new QualityModel(Quality.MP3_320));
|
var remoteBook = GetRemoteBook(books, new QualityModel(Quality.MP3_320));
|
||||||
|
|
||||||
var decisions = new List<DownloadDecision>();
|
var decisions = new List<DownloadDecision>();
|
||||||
decisions.Add(new DownloadDecision(remoteBook));
|
decisions.Add(new DownloadDecision(remoteBook));
|
||||||
|
|||||||
@@ -87,15 +87,15 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.Blackhole
|
|||||||
_magnetFilePath = Path.ChangeExtension(_filePath, extension);
|
_magnetFilePath = Path.ChangeExtension(_filePath, extension);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override RemoteBook CreateRemoteAlbum()
|
protected override RemoteBook CreateRemoteBook()
|
||||||
{
|
{
|
||||||
var remoteBook = base.CreateRemoteAlbum();
|
var remoteBook = base.CreateRemoteBook();
|
||||||
var torrentInfo = new TorrentInfo();
|
var torrentInfo = new TorrentInfo();
|
||||||
|
|
||||||
torrentInfo.Title = remoteBook.Release.Title;
|
torrentInfo.Title = remoteBook.Release.Title;
|
||||||
torrentInfo.DownloadUrl = remoteBook.Release.DownloadUrl;
|
torrentInfo.DownloadUrl = remoteBook.Release.DownloadUrl;
|
||||||
torrentInfo.DownloadProtocol = remoteBook.Release.DownloadProtocol;
|
torrentInfo.DownloadProtocol = remoteBook.Release.DownloadProtocol;
|
||||||
torrentInfo.MagnetUrl = "magnet:?xt=urn:btih:755248817d32b00cc853e633ecdc48e4c21bff15&dn=Artist.Album.FLAC.loseless-DEFiNE%5Brartv%5D&tr=http%3A%2F%2Ftracker.trackerfix.com%3A80%2Fannounce&tr=udp%3A%2F%2F9.rarbg.me%3A2710&tr=udp%3A%2F%2F9.rarbg.to%3A2710";
|
torrentInfo.MagnetUrl = "magnet:?xt=urn:btih:755248817d32b00cc853e633ecdc48e4c21bff15&dn=Author.Book.FLAC.loseless-DEFiNE%5Brartv%5D&tr=http%3A%2F%2Ftracker.trackerfix.com%3A80%2Fannounce&tr=udp%3A%2F%2F9.rarbg.me%3A2710&tr=udp%3A%2F%2F9.rarbg.to%3A2710";
|
||||||
|
|
||||||
remoteBook.Release = torrentInfo;
|
remoteBook.Release = torrentInfo;
|
||||||
|
|
||||||
@@ -141,7 +141,7 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.Blackhole
|
|||||||
[Test]
|
[Test]
|
||||||
public void Download_should_download_file_if_it_doesnt_exist()
|
public void Download_should_download_file_if_it_doesnt_exist()
|
||||||
{
|
{
|
||||||
var remoteBook = CreateRemoteAlbum();
|
var remoteBook = CreateRemoteBook();
|
||||||
|
|
||||||
Subject.Download(remoteBook);
|
Subject.Download(remoteBook);
|
||||||
|
|
||||||
@@ -155,7 +155,7 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.Blackhole
|
|||||||
{
|
{
|
||||||
GivenMagnetFilePath();
|
GivenMagnetFilePath();
|
||||||
Subject.Definition.Settings.As<TorrentBlackholeSettings>().SaveMagnetFiles = true;
|
Subject.Definition.Settings.As<TorrentBlackholeSettings>().SaveMagnetFiles = true;
|
||||||
var remoteBook = CreateRemoteAlbum();
|
var remoteBook = CreateRemoteBook();
|
||||||
remoteBook.Release.DownloadUrl = null;
|
remoteBook.Release.DownloadUrl = null;
|
||||||
Subject.Download(remoteBook);
|
Subject.Download(remoteBook);
|
||||||
Mocker.GetMock<IHttpClient>().Verify(c => c.Get(It.Is<HttpRequest>(v => v.Url.FullUri == _downloadUrl)), Times.Never());
|
Mocker.GetMock<IHttpClient>().Verify(c => c.Get(It.Is<HttpRequest>(v => v.Url.FullUri == _downloadUrl)), Times.Never());
|
||||||
@@ -173,7 +173,7 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.Blackhole
|
|||||||
Subject.Definition.Settings.As<TorrentBlackholeSettings>().SaveMagnetFiles = true;
|
Subject.Definition.Settings.As<TorrentBlackholeSettings>().SaveMagnetFiles = true;
|
||||||
Subject.Definition.Settings.As<TorrentBlackholeSettings>().MagnetFileExtension = magnetFileExtension;
|
Subject.Definition.Settings.As<TorrentBlackholeSettings>().MagnetFileExtension = magnetFileExtension;
|
||||||
|
|
||||||
var remoteBook = CreateRemoteAlbum();
|
var remoteBook = CreateRemoteBook();
|
||||||
remoteBook.Release.DownloadUrl = null;
|
remoteBook.Release.DownloadUrl = null;
|
||||||
|
|
||||||
Subject.Download(remoteBook);
|
Subject.Download(remoteBook);
|
||||||
@@ -188,7 +188,7 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.Blackhole
|
|||||||
public void Download_should_not_save_magnet_if_disabled()
|
public void Download_should_not_save_magnet_if_disabled()
|
||||||
{
|
{
|
||||||
GivenMagnetFilePath();
|
GivenMagnetFilePath();
|
||||||
var remoteBook = CreateRemoteAlbum();
|
var remoteBook = CreateRemoteBook();
|
||||||
remoteBook.Release.DownloadUrl = null;
|
remoteBook.Release.DownloadUrl = null;
|
||||||
|
|
||||||
Assert.Throws<ReleaseDownloadException>(() => Subject.Download(remoteBook));
|
Assert.Throws<ReleaseDownloadException>(() => Subject.Download(remoteBook));
|
||||||
@@ -204,7 +204,7 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.Blackhole
|
|||||||
{
|
{
|
||||||
Subject.Definition.Settings.As<TorrentBlackholeSettings>().SaveMagnetFiles = true;
|
Subject.Definition.Settings.As<TorrentBlackholeSettings>().SaveMagnetFiles = true;
|
||||||
|
|
||||||
var remoteBook = CreateRemoteAlbum();
|
var remoteBook = CreateRemoteBook();
|
||||||
|
|
||||||
Subject.Download(remoteBook);
|
Subject.Download(remoteBook);
|
||||||
|
|
||||||
@@ -220,7 +220,7 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.Blackhole
|
|||||||
var illegalTitle = "Radiohead - Scotch Mist [2008/FLAC/Lossless]";
|
var illegalTitle = "Radiohead - Scotch Mist [2008/FLAC/Lossless]";
|
||||||
var expectedFilename = Path.Combine(_blackholeFolder, "Radiohead - Scotch Mist [2008+FLAC+Lossless]" + Path.GetExtension(_filePath));
|
var expectedFilename = Path.Combine(_blackholeFolder, "Radiohead - Scotch Mist [2008+FLAC+Lossless]" + Path.GetExtension(_filePath));
|
||||||
|
|
||||||
var remoteBook = CreateRemoteAlbum();
|
var remoteBook = CreateRemoteBook();
|
||||||
remoteBook.Release.Title = illegalTitle;
|
remoteBook.Release.Title = illegalTitle;
|
||||||
|
|
||||||
Subject.Download(remoteBook);
|
Subject.Download(remoteBook);
|
||||||
@@ -233,7 +233,7 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.Blackhole
|
|||||||
[Test]
|
[Test]
|
||||||
public void Download_should_throw_if_magnet_and_torrent_url_does_not_exist()
|
public void Download_should_throw_if_magnet_and_torrent_url_does_not_exist()
|
||||||
{
|
{
|
||||||
var remoteBook = CreateRemoteAlbum();
|
var remoteBook = CreateRemoteBook();
|
||||||
remoteBook.Release.DownloadUrl = null;
|
remoteBook.Release.DownloadUrl = null;
|
||||||
|
|
||||||
Assert.Throws<ReleaseDownloadException>(() => Subject.Download(remoteBook));
|
Assert.Throws<ReleaseDownloadException>(() => Subject.Download(remoteBook));
|
||||||
@@ -308,7 +308,7 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.Blackhole
|
|||||||
[Test]
|
[Test]
|
||||||
public void should_return_null_hash()
|
public void should_return_null_hash()
|
||||||
{
|
{
|
||||||
var remoteBook = CreateRemoteAlbum();
|
var remoteBook = CreateRemoteBook();
|
||||||
|
|
||||||
Subject.Download(remoteBook).Should().BeNull();
|
Subject.Download(remoteBook).Should().BeNull();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -113,7 +113,7 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.Blackhole
|
|||||||
[Test]
|
[Test]
|
||||||
public void Download_should_download_file_if_it_doesnt_exist()
|
public void Download_should_download_file_if_it_doesnt_exist()
|
||||||
{
|
{
|
||||||
var remoteBook = CreateRemoteAlbum();
|
var remoteBook = CreateRemoteBook();
|
||||||
|
|
||||||
Subject.Download(remoteBook);
|
Subject.Download(remoteBook);
|
||||||
|
|
||||||
@@ -128,7 +128,7 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.Blackhole
|
|||||||
var illegalTitle = "Radiohead - Scotch Mist [2008/FLAC/Lossless]";
|
var illegalTitle = "Radiohead - Scotch Mist [2008/FLAC/Lossless]";
|
||||||
var expectedFilename = Path.Combine(_blackholeFolder, "Radiohead - Scotch Mist [2008+FLAC+Lossless]" + Path.GetExtension(_filePath));
|
var expectedFilename = Path.Combine(_blackholeFolder, "Radiohead - Scotch Mist [2008+FLAC+Lossless]" + Path.GetExtension(_filePath));
|
||||||
|
|
||||||
var remoteBook = CreateRemoteAlbum();
|
var remoteBook = CreateRemoteBook();
|
||||||
remoteBook.Release.Title = illegalTitle;
|
remoteBook.Release.Title = illegalTitle;
|
||||||
|
|
||||||
Subject.Download(remoteBook);
|
Subject.Download(remoteBook);
|
||||||
|
|||||||
@@ -204,7 +204,7 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.DelugeTests
|
|||||||
{
|
{
|
||||||
GivenSuccessfulDownload();
|
GivenSuccessfulDownload();
|
||||||
|
|
||||||
var remoteBook = CreateRemoteAlbum();
|
var remoteBook = CreateRemoteBook();
|
||||||
|
|
||||||
var id = Subject.Download(remoteBook);
|
var id = Subject.Download(remoteBook);
|
||||||
|
|
||||||
@@ -216,7 +216,7 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.DelugeTests
|
|||||||
{
|
{
|
||||||
GivenSuccessfulDownload();
|
GivenSuccessfulDownload();
|
||||||
|
|
||||||
var remoteBook = CreateRemoteAlbum();
|
var remoteBook = CreateRemoteBook();
|
||||||
remoteBook.Release.DownloadUrl = magnetUrl;
|
remoteBook.Release.DownloadUrl = magnetUrl;
|
||||||
|
|
||||||
var id = Subject.Download(remoteBook);
|
var id = Subject.Download(remoteBook);
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests
|
|||||||
|
|
||||||
Mocker.GetMock<IParsingService>()
|
Mocker.GetMock<IParsingService>()
|
||||||
.Setup(s => s.Map(It.IsAny<ParsedBookInfo>(), null))
|
.Setup(s => s.Map(It.IsAny<ParsedBookInfo>(), null))
|
||||||
.Returns(() => CreateRemoteAlbum());
|
.Returns(() => CreateRemoteBook());
|
||||||
|
|
||||||
Mocker.GetMock<IHttpClient>()
|
Mocker.GetMock<IHttpClient>()
|
||||||
.Setup(s => s.Get(It.IsAny<HttpRequest>()))
|
.Setup(s => s.Get(It.IsAny<HttpRequest>()))
|
||||||
@@ -41,7 +41,7 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests
|
|||||||
.Returns<string, OsPath>((h, r) => r);
|
.Returns<string, OsPath>((h, r) => r);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected virtual RemoteBook CreateRemoteAlbum()
|
protected virtual RemoteBook CreateRemoteBook()
|
||||||
{
|
{
|
||||||
var remoteBook = new RemoteBook();
|
var remoteBook = new RemoteBook();
|
||||||
remoteBook.Release = new ReleaseInfo();
|
remoteBook.Release = new ReleaseInfo();
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.DownloadStationTests
|
|||||||
|
|
||||||
protected string _serialNumber = "SERIALNUMBER";
|
protected string _serialNumber = "SERIALNUMBER";
|
||||||
protected string _category = "readarr";
|
protected string _category = "readarr";
|
||||||
protected string _musicDirectory = @"music/Artist";
|
protected string _musicDirectory = @"music/Author";
|
||||||
protected string _defaultDestination = "somepath";
|
protected string _defaultDestination = "somepath";
|
||||||
protected OsPath _physicalPath = new OsPath("/mnt/sdb1/mydata");
|
protected OsPath _physicalPath = new OsPath("/mnt/sdb1/mydata");
|
||||||
|
|
||||||
@@ -360,13 +360,13 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.DownloadStationTests
|
|||||||
.Callback(PrepareClientToReturnQueuedItem);
|
.Callback(PrepareClientToReturnQueuedItem);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override RemoteBook CreateRemoteAlbum()
|
protected override RemoteBook CreateRemoteBook()
|
||||||
{
|
{
|
||||||
var album = base.CreateRemoteAlbum();
|
var book = base.CreateRemoteBook();
|
||||||
|
|
||||||
album.Release.DownloadUrl = DownloadURL;
|
book.Release.DownloadUrl = DownloadURL;
|
||||||
|
|
||||||
return album;
|
return book;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected int GivenAllKindOfTasks()
|
protected int GivenAllKindOfTasks()
|
||||||
@@ -387,7 +387,7 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.DownloadStationTests
|
|||||||
GivenTvDirectory();
|
GivenTvDirectory();
|
||||||
GivenSuccessfulDownload();
|
GivenSuccessfulDownload();
|
||||||
|
|
||||||
var remoteBook = CreateRemoteAlbum();
|
var remoteBook = CreateRemoteBook();
|
||||||
|
|
||||||
var id = Subject.Download(remoteBook);
|
var id = Subject.Download(remoteBook);
|
||||||
|
|
||||||
@@ -404,7 +404,7 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.DownloadStationTests
|
|||||||
GivenMusicCategory();
|
GivenMusicCategory();
|
||||||
GivenSuccessfulDownload();
|
GivenSuccessfulDownload();
|
||||||
|
|
||||||
var remoteBook = CreateRemoteAlbum();
|
var remoteBook = CreateRemoteBook();
|
||||||
|
|
||||||
var id = Subject.Download(remoteBook);
|
var id = Subject.Download(remoteBook);
|
||||||
|
|
||||||
@@ -420,7 +420,7 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.DownloadStationTests
|
|||||||
GivenSerialNumber();
|
GivenSerialNumber();
|
||||||
GivenSuccessfulDownload();
|
GivenSuccessfulDownload();
|
||||||
|
|
||||||
var remoteBook = CreateRemoteAlbum();
|
var remoteBook = CreateRemoteBook();
|
||||||
|
|
||||||
var id = Subject.Download(remoteBook);
|
var id = Subject.Download(remoteBook);
|
||||||
|
|
||||||
@@ -495,7 +495,7 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.DownloadStationTests
|
|||||||
[Test]
|
[Test]
|
||||||
public void Download_should_throw_and_not_add_task_if_cannot_get_serial_number()
|
public void Download_should_throw_and_not_add_task_if_cannot_get_serial_number()
|
||||||
{
|
{
|
||||||
var remoteBook = CreateRemoteAlbum();
|
var remoteBook = CreateRemoteBook();
|
||||||
|
|
||||||
Mocker.GetMock<ISerialNumberProvider>()
|
Mocker.GetMock<ISerialNumberProvider>()
|
||||||
.Setup(s => s.GetSerialNumber(_settings))
|
.Setup(s => s.GetSerialNumber(_settings))
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.DownloadStationTests
|
|||||||
|
|
||||||
protected string _serialNumber = "SERIALNUMBER";
|
protected string _serialNumber = "SERIALNUMBER";
|
||||||
protected string _category = "readarr";
|
protected string _category = "readarr";
|
||||||
protected string _musicDirectory = @"music/Artist";
|
protected string _musicDirectory = @"music/Author";
|
||||||
protected string _defaultDestination = "somepath";
|
protected string _defaultDestination = "somepath";
|
||||||
protected OsPath _physicalPath = new OsPath("/mnt/sdb1/mydata");
|
protected OsPath _physicalPath = new OsPath("/mnt/sdb1/mydata");
|
||||||
|
|
||||||
@@ -40,7 +40,7 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.DownloadStationTests
|
|||||||
[SetUp]
|
[SetUp]
|
||||||
public void Setup()
|
public void Setup()
|
||||||
{
|
{
|
||||||
_remoteBook = CreateRemoteAlbum();
|
_remoteBook = CreateRemoteBook();
|
||||||
|
|
||||||
_settings = new DownloadStationSettings()
|
_settings = new DownloadStationSettings()
|
||||||
{
|
{
|
||||||
@@ -264,7 +264,7 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.DownloadStationTests
|
|||||||
GivenTvDirectory();
|
GivenTvDirectory();
|
||||||
GivenSuccessfulDownload();
|
GivenSuccessfulDownload();
|
||||||
|
|
||||||
var remoteBook = CreateRemoteAlbum();
|
var remoteBook = CreateRemoteBook();
|
||||||
|
|
||||||
var id = Subject.Download(remoteBook);
|
var id = Subject.Download(remoteBook);
|
||||||
|
|
||||||
@@ -281,7 +281,7 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.DownloadStationTests
|
|||||||
GivenMusicCategory();
|
GivenMusicCategory();
|
||||||
GivenSuccessfulDownload();
|
GivenSuccessfulDownload();
|
||||||
|
|
||||||
var remoteBook = CreateRemoteAlbum();
|
var remoteBook = CreateRemoteBook();
|
||||||
|
|
||||||
var id = Subject.Download(remoteBook);
|
var id = Subject.Download(remoteBook);
|
||||||
|
|
||||||
@@ -297,7 +297,7 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.DownloadStationTests
|
|||||||
GivenSerialNumber();
|
GivenSerialNumber();
|
||||||
GivenSuccessfulDownload();
|
GivenSuccessfulDownload();
|
||||||
|
|
||||||
var remoteBook = CreateRemoteAlbum();
|
var remoteBook = CreateRemoteBook();
|
||||||
|
|
||||||
var id = Subject.Download(remoteBook);
|
var id = Subject.Download(remoteBook);
|
||||||
|
|
||||||
@@ -372,7 +372,7 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.DownloadStationTests
|
|||||||
[Test]
|
[Test]
|
||||||
public void Download_should_throw_and_not_add_task_if_cannot_get_serial_number()
|
public void Download_should_throw_and_not_add_task_if_cannot_get_serial_number()
|
||||||
{
|
{
|
||||||
var remoteBook = CreateRemoteAlbum();
|
var remoteBook = CreateRemoteBook();
|
||||||
|
|
||||||
Mocker.GetMock<ISerialNumberProvider>()
|
Mocker.GetMock<ISerialNumberProvider>()
|
||||||
.Setup(s => s.GetSerialNumber(_settings))
|
.Setup(s => s.GetSerialNumber(_settings))
|
||||||
|
|||||||
@@ -200,7 +200,7 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.HadoukenTests
|
|||||||
{
|
{
|
||||||
GivenSuccessfulDownload();
|
GivenSuccessfulDownload();
|
||||||
|
|
||||||
var remoteBook = CreateRemoteAlbum();
|
var remoteBook = CreateRemoteBook();
|
||||||
|
|
||||||
var id = Subject.Download(remoteBook);
|
var id = Subject.Download(remoteBook);
|
||||||
|
|
||||||
@@ -279,7 +279,7 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.HadoukenTests
|
|||||||
[Test]
|
[Test]
|
||||||
public void Download_from_magnet_link_should_return_hash_uppercase()
|
public void Download_from_magnet_link_should_return_hash_uppercase()
|
||||||
{
|
{
|
||||||
var remoteBook = CreateRemoteAlbum();
|
var remoteBook = CreateRemoteBook();
|
||||||
|
|
||||||
remoteBook.Release.DownloadUrl = "magnet:?xt=urn:btih:a45129e59d8750f9da982f53552b1e4f0457ee9f";
|
remoteBook.Release.DownloadUrl = "magnet:?xt=urn:btih:a45129e59d8750f9da982f53552b1e4f0457ee9f";
|
||||||
|
|
||||||
@@ -294,7 +294,7 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.HadoukenTests
|
|||||||
[Test]
|
[Test]
|
||||||
public void Download_from_torrent_file_should_return_hash_uppercase()
|
public void Download_from_torrent_file_should_return_hash_uppercase()
|
||||||
{
|
{
|
||||||
var remoteBook = CreateRemoteAlbum();
|
var remoteBook = CreateRemoteBook();
|
||||||
|
|
||||||
Mocker.GetMock<IHadoukenProxy>()
|
Mocker.GetMock<IHadoukenProxy>()
|
||||||
.Setup(v => v.AddTorrentFile(It.IsAny<HadoukenSettings>(), It.IsAny<byte[]>()))
|
.Setup(v => v.AddTorrentFile(It.IsAny<HadoukenSettings>(), It.IsAny<byte[]>()))
|
||||||
|
|||||||
@@ -204,7 +204,7 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.NzbVortexTests
|
|||||||
{
|
{
|
||||||
GivenSuccessfulDownload();
|
GivenSuccessfulDownload();
|
||||||
|
|
||||||
var remoteBook = CreateRemoteAlbum();
|
var remoteBook = CreateRemoteBook();
|
||||||
|
|
||||||
var id = Subject.Download(remoteBook);
|
var id = Subject.Download(remoteBook);
|
||||||
|
|
||||||
@@ -216,7 +216,7 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.NzbVortexTests
|
|||||||
{
|
{
|
||||||
GivenFailedDownload();
|
GivenFailedDownload();
|
||||||
|
|
||||||
var remoteBook = CreateRemoteAlbum();
|
var remoteBook = CreateRemoteBook();
|
||||||
|
|
||||||
Assert.Throws<DownloadClientException>(() => Subject.Download(remoteBook));
|
Assert.Throws<DownloadClientException>(() => Subject.Download(remoteBook));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -335,7 +335,7 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.NzbgetTests
|
|||||||
{
|
{
|
||||||
GivenSuccessfulDownload();
|
GivenSuccessfulDownload();
|
||||||
|
|
||||||
var remoteBook = CreateRemoteAlbum();
|
var remoteBook = CreateRemoteBook();
|
||||||
|
|
||||||
var id = Subject.Download(remoteBook);
|
var id = Subject.Download(remoteBook);
|
||||||
|
|
||||||
@@ -347,7 +347,7 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.NzbgetTests
|
|||||||
{
|
{
|
||||||
GivenFailedDownload();
|
GivenFailedDownload();
|
||||||
|
|
||||||
var remoteBook = CreateRemoteAlbum();
|
var remoteBook = CreateRemoteBook();
|
||||||
|
|
||||||
Assert.Throws<DownloadClientRejectedReleaseException>(() => Subject.Download(remoteBook));
|
Assert.Throws<DownloadClientRejectedReleaseException>(() => Subject.Download(remoteBook));
|
||||||
}
|
}
|
||||||
@@ -452,7 +452,7 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.NzbgetTests
|
|||||||
[Test]
|
[Test]
|
||||||
public void should_use_final_dir_when_set_instead_of_dest_dir()
|
public void should_use_final_dir_when_set_instead_of_dest_dir()
|
||||||
{
|
{
|
||||||
_completed.FinalDir = "/remote/mount/music2/Some.Artist-Some.Album.FLAC.2018-DRONE";
|
_completed.FinalDir = "/remote/mount/music2/Some.Author-Some.Book.FLAC.2018-DRONE";
|
||||||
|
|
||||||
GivenQueue(null);
|
GivenQueue(null);
|
||||||
GivenHistory(_completed);
|
GivenHistory(_completed);
|
||||||
|
|||||||
@@ -422,7 +422,7 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.QBittorrentTests
|
|||||||
{
|
{
|
||||||
GivenSuccessfulDownload();
|
GivenSuccessfulDownload();
|
||||||
|
|
||||||
var remoteBook = CreateRemoteAlbum();
|
var remoteBook = CreateRemoteBook();
|
||||||
|
|
||||||
var id = Subject.Download(remoteBook);
|
var id = Subject.Download(remoteBook);
|
||||||
|
|
||||||
@@ -434,7 +434,7 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.QBittorrentTests
|
|||||||
{
|
{
|
||||||
GivenSuccessfulDownload();
|
GivenSuccessfulDownload();
|
||||||
|
|
||||||
var remoteBook = CreateRemoteAlbum();
|
var remoteBook = CreateRemoteBook();
|
||||||
remoteBook.Release.DownloadUrl = magnetUrl;
|
remoteBook.Release.DownloadUrl = magnetUrl;
|
||||||
|
|
||||||
var id = Subject.Download(remoteBook);
|
var id = Subject.Download(remoteBook);
|
||||||
@@ -449,7 +449,7 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.QBittorrentTests
|
|||||||
.Setup(s => s.GetConfig(It.IsAny<QBittorrentSettings>()))
|
.Setup(s => s.GetConfig(It.IsAny<QBittorrentSettings>()))
|
||||||
.Returns(new QBittorrentPreferences() { DhtEnabled = false });
|
.Returns(new QBittorrentPreferences() { DhtEnabled = false });
|
||||||
|
|
||||||
var remoteBook = CreateRemoteAlbum();
|
var remoteBook = CreateRemoteBook();
|
||||||
remoteBook.Release.DownloadUrl = "magnet:?xt=urn:btih:ZPBPA2P6ROZPKRHK44D5OW6NHXU5Z6KR";
|
remoteBook.Release.DownloadUrl = "magnet:?xt=urn:btih:ZPBPA2P6ROZPKRHK44D5OW6NHXU5Z6KR";
|
||||||
|
|
||||||
Assert.Throws<ReleaseDownloadException>(() => Subject.Download(remoteBook));
|
Assert.Throws<ReleaseDownloadException>(() => Subject.Download(remoteBook));
|
||||||
@@ -462,7 +462,7 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.QBittorrentTests
|
|||||||
.Setup(s => s.GetConfig(It.IsAny<QBittorrentSettings>()))
|
.Setup(s => s.GetConfig(It.IsAny<QBittorrentSettings>()))
|
||||||
.Returns(new QBittorrentPreferences { DhtEnabled = false });
|
.Returns(new QBittorrentPreferences { DhtEnabled = false });
|
||||||
|
|
||||||
var remoteBook = CreateRemoteAlbum();
|
var remoteBook = CreateRemoteBook();
|
||||||
remoteBook.Release.DownloadUrl = "magnet:?xt=urn:btih:ZPBPA2P6ROZPKRHK44D5OW6NHXU5Z6KR&tr=udp://abc";
|
remoteBook.Release.DownloadUrl = "magnet:?xt=urn:btih:ZPBPA2P6ROZPKRHK44D5OW6NHXU5Z6KR&tr=udp://abc";
|
||||||
|
|
||||||
Assert.DoesNotThrow(() => Subject.Download(remoteBook));
|
Assert.DoesNotThrow(() => Subject.Download(remoteBook));
|
||||||
@@ -477,7 +477,7 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.QBittorrentTests
|
|||||||
GivenHighPriority();
|
GivenHighPriority();
|
||||||
GivenSuccessfulDownload();
|
GivenSuccessfulDownload();
|
||||||
|
|
||||||
var remoteBook = CreateRemoteAlbum();
|
var remoteBook = CreateRemoteBook();
|
||||||
|
|
||||||
var id = Subject.Download(remoteBook);
|
var id = Subject.Download(remoteBook);
|
||||||
|
|
||||||
@@ -495,7 +495,7 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.QBittorrentTests
|
|||||||
.Setup(v => v.MoveTorrentToTopInQueue(It.IsAny<string>(), It.IsAny<QBittorrentSettings>()))
|
.Setup(v => v.MoveTorrentToTopInQueue(It.IsAny<string>(), It.IsAny<QBittorrentSettings>()))
|
||||||
.Throws(new HttpException(new HttpResponse(new HttpRequest("http://me.local/"), new HttpHeader(), new byte[0], System.Net.HttpStatusCode.Forbidden)));
|
.Throws(new HttpException(new HttpResponse(new HttpRequest("http://me.local/"), new HttpHeader(), new byte[0], System.Net.HttpStatusCode.Forbidden)));
|
||||||
|
|
||||||
var remoteBook = CreateRemoteAlbum();
|
var remoteBook = CreateRemoteBook();
|
||||||
|
|
||||||
var id = Subject.Download(remoteBook);
|
var id = Subject.Download(remoteBook);
|
||||||
|
|
||||||
@@ -529,7 +529,7 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.QBittorrentTests
|
|||||||
GivenRedirectToMagnet();
|
GivenRedirectToMagnet();
|
||||||
GivenSuccessfulDownload();
|
GivenSuccessfulDownload();
|
||||||
|
|
||||||
var remoteBook = CreateRemoteAlbum();
|
var remoteBook = CreateRemoteBook();
|
||||||
|
|
||||||
var id = Subject.Download(remoteBook);
|
var id = Subject.Download(remoteBook);
|
||||||
|
|
||||||
@@ -542,7 +542,7 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.QBittorrentTests
|
|||||||
GivenRedirectToTorrent();
|
GivenRedirectToTorrent();
|
||||||
GivenSuccessfulDownload();
|
GivenSuccessfulDownload();
|
||||||
|
|
||||||
var remoteBook = CreateRemoteAlbum();
|
var remoteBook = CreateRemoteBook();
|
||||||
|
|
||||||
var id = Subject.Download(remoteBook);
|
var id = Subject.Download(remoteBook);
|
||||||
|
|
||||||
|
|||||||
@@ -115,7 +115,7 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.RTorrentTests
|
|||||||
{
|
{
|
||||||
GivenSuccessfulDownload();
|
GivenSuccessfulDownload();
|
||||||
|
|
||||||
var remoteBook = CreateRemoteAlbum();
|
var remoteBook = CreateRemoteBook();
|
||||||
|
|
||||||
var id = Subject.Download(remoteBook);
|
var id = Subject.Download(remoteBook);
|
||||||
|
|
||||||
|
|||||||
@@ -298,7 +298,7 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.SabnzbdTests
|
|||||||
{
|
{
|
||||||
GivenSuccessfulDownload();
|
GivenSuccessfulDownload();
|
||||||
|
|
||||||
var remoteBook = CreateRemoteAlbum();
|
var remoteBook = CreateRemoteBook();
|
||||||
remoteBook.Release.Title = title;
|
remoteBook.Release.Title = title;
|
||||||
|
|
||||||
var id = Subject.Download(remoteBook);
|
var id = Subject.Download(remoteBook);
|
||||||
@@ -312,7 +312,7 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.SabnzbdTests
|
|||||||
{
|
{
|
||||||
GivenSuccessfulDownload();
|
GivenSuccessfulDownload();
|
||||||
|
|
||||||
var remoteBook = CreateRemoteAlbum();
|
var remoteBook = CreateRemoteBook();
|
||||||
|
|
||||||
var id = Subject.Download(remoteBook);
|
var id = Subject.Download(remoteBook);
|
||||||
|
|
||||||
@@ -353,7 +353,7 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.SabnzbdTests
|
|||||||
.Setup(s => s.DownloadNzb(It.IsAny<byte[]>(), It.IsAny<string>(), It.IsAny<string>(), (int)SabnzbdPriority.High, It.IsAny<SabnzbdSettings>()))
|
.Setup(s => s.DownloadNzb(It.IsAny<byte[]>(), It.IsAny<string>(), It.IsAny<string>(), (int)SabnzbdPriority.High, It.IsAny<SabnzbdSettings>()))
|
||||||
.Returns(new SabnzbdAddResponse { Ids = new List<string> { "readarrtest" } });
|
.Returns(new SabnzbdAddResponse { Ids = new List<string> { "readarrtest" } });
|
||||||
|
|
||||||
var remoteBook = CreateRemoteAlbum();
|
var remoteBook = CreateRemoteBook();
|
||||||
remoteBook.Books = Builder<Book>.CreateListOfSize(1)
|
remoteBook.Books = Builder<Book>.CreateListOfSize(1)
|
||||||
.All()
|
.All()
|
||||||
.With(e => e.ReleaseDate = DateTime.Today)
|
.With(e => e.ReleaseDate = DateTime.Today)
|
||||||
|
|||||||
@@ -58,7 +58,7 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.TransmissionTests
|
|||||||
{
|
{
|
||||||
GivenSuccessfulDownload();
|
GivenSuccessfulDownload();
|
||||||
|
|
||||||
var remoteBook = CreateRemoteAlbum();
|
var remoteBook = CreateRemoteBook();
|
||||||
|
|
||||||
var id = Subject.Download(remoteBook);
|
var id = Subject.Download(remoteBook);
|
||||||
|
|
||||||
@@ -71,7 +71,7 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.TransmissionTests
|
|||||||
GivenTvDirectory();
|
GivenTvDirectory();
|
||||||
GivenSuccessfulDownload();
|
GivenSuccessfulDownload();
|
||||||
|
|
||||||
var remoteBook = CreateRemoteAlbum();
|
var remoteBook = CreateRemoteBook();
|
||||||
|
|
||||||
var id = Subject.Download(remoteBook);
|
var id = Subject.Download(remoteBook);
|
||||||
|
|
||||||
@@ -87,7 +87,7 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.TransmissionTests
|
|||||||
GivenMusicCategory();
|
GivenMusicCategory();
|
||||||
GivenSuccessfulDownload();
|
GivenSuccessfulDownload();
|
||||||
|
|
||||||
var remoteBook = CreateRemoteAlbum();
|
var remoteBook = CreateRemoteBook();
|
||||||
|
|
||||||
var id = Subject.Download(remoteBook);
|
var id = Subject.Download(remoteBook);
|
||||||
|
|
||||||
@@ -105,7 +105,7 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.TransmissionTests
|
|||||||
|
|
||||||
_transmissionConfigItems["download-dir"] += "/";
|
_transmissionConfigItems["download-dir"] += "/";
|
||||||
|
|
||||||
var remoteBook = CreateRemoteAlbum();
|
var remoteBook = CreateRemoteBook();
|
||||||
|
|
||||||
var id = Subject.Download(remoteBook);
|
var id = Subject.Download(remoteBook);
|
||||||
|
|
||||||
@@ -120,7 +120,7 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.TransmissionTests
|
|||||||
{
|
{
|
||||||
GivenSuccessfulDownload();
|
GivenSuccessfulDownload();
|
||||||
|
|
||||||
var remoteBook = CreateRemoteAlbum();
|
var remoteBook = CreateRemoteBook();
|
||||||
|
|
||||||
var id = Subject.Download(remoteBook);
|
var id = Subject.Download(remoteBook);
|
||||||
|
|
||||||
@@ -135,7 +135,7 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.TransmissionTests
|
|||||||
{
|
{
|
||||||
GivenSuccessfulDownload();
|
GivenSuccessfulDownload();
|
||||||
|
|
||||||
var remoteBook = CreateRemoteAlbum();
|
var remoteBook = CreateRemoteBook();
|
||||||
remoteBook.Release.DownloadUrl = magnetUrl;
|
remoteBook.Release.DownloadUrl = magnetUrl;
|
||||||
|
|
||||||
var id = Subject.Download(remoteBook);
|
var id = Subject.Download(remoteBook);
|
||||||
|
|||||||
@@ -232,7 +232,7 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.UTorrentTests
|
|||||||
{
|
{
|
||||||
GivenSuccessfulDownload();
|
GivenSuccessfulDownload();
|
||||||
|
|
||||||
var remoteBook = CreateRemoteAlbum();
|
var remoteBook = CreateRemoteBook();
|
||||||
|
|
||||||
var id = Subject.Download(remoteBook);
|
var id = Subject.Download(remoteBook);
|
||||||
|
|
||||||
@@ -256,7 +256,7 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.UTorrentTests
|
|||||||
{
|
{
|
||||||
GivenSuccessfulDownload();
|
GivenSuccessfulDownload();
|
||||||
|
|
||||||
var remoteBook = CreateRemoteAlbum();
|
var remoteBook = CreateRemoteBook();
|
||||||
remoteBook.Release.DownloadUrl = magnetUrl;
|
remoteBook.Release.DownloadUrl = magnetUrl;
|
||||||
|
|
||||||
var id = Subject.Download(remoteBook);
|
var id = Subject.Download(remoteBook);
|
||||||
@@ -355,7 +355,7 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.UTorrentTests
|
|||||||
GivenRedirectToMagnet();
|
GivenRedirectToMagnet();
|
||||||
GivenSuccessfulDownload();
|
GivenSuccessfulDownload();
|
||||||
|
|
||||||
var remoteBook = CreateRemoteAlbum();
|
var remoteBook = CreateRemoteBook();
|
||||||
|
|
||||||
var id = Subject.Download(remoteBook);
|
var id = Subject.Download(remoteBook);
|
||||||
|
|
||||||
@@ -368,7 +368,7 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.UTorrentTests
|
|||||||
GivenRedirectToTorrent();
|
GivenRedirectToTorrent();
|
||||||
GivenSuccessfulDownload();
|
GivenSuccessfulDownload();
|
||||||
|
|
||||||
var remoteBook = CreateRemoteAlbum();
|
var remoteBook = CreateRemoteBook();
|
||||||
|
|
||||||
var id = Subject.Download(remoteBook);
|
var id = Subject.Download(remoteBook);
|
||||||
|
|
||||||
|
|||||||
@@ -67,7 +67,7 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.VuzeTests
|
|||||||
{
|
{
|
||||||
GivenSuccessfulDownload();
|
GivenSuccessfulDownload();
|
||||||
|
|
||||||
var remoteBook = CreateRemoteAlbum();
|
var remoteBook = CreateRemoteBook();
|
||||||
|
|
||||||
var id = Subject.Download(remoteBook);
|
var id = Subject.Download(remoteBook);
|
||||||
|
|
||||||
@@ -80,7 +80,7 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.VuzeTests
|
|||||||
GivenTvDirectory();
|
GivenTvDirectory();
|
||||||
GivenSuccessfulDownload();
|
GivenSuccessfulDownload();
|
||||||
|
|
||||||
var remoteBook = CreateRemoteAlbum();
|
var remoteBook = CreateRemoteBook();
|
||||||
|
|
||||||
var id = Subject.Download(remoteBook);
|
var id = Subject.Download(remoteBook);
|
||||||
|
|
||||||
@@ -96,7 +96,7 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.VuzeTests
|
|||||||
GivenMusicCategory();
|
GivenMusicCategory();
|
||||||
GivenSuccessfulDownload();
|
GivenSuccessfulDownload();
|
||||||
|
|
||||||
var remoteBook = CreateRemoteAlbum();
|
var remoteBook = CreateRemoteBook();
|
||||||
|
|
||||||
var id = Subject.Download(remoteBook);
|
var id = Subject.Download(remoteBook);
|
||||||
|
|
||||||
@@ -114,7 +114,7 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.VuzeTests
|
|||||||
|
|
||||||
_transmissionConfigItems["download-dir"] += "/";
|
_transmissionConfigItems["download-dir"] += "/";
|
||||||
|
|
||||||
var remoteBook = CreateRemoteAlbum();
|
var remoteBook = CreateRemoteBook();
|
||||||
|
|
||||||
var id = Subject.Download(remoteBook);
|
var id = Subject.Download(remoteBook);
|
||||||
|
|
||||||
@@ -129,7 +129,7 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.VuzeTests
|
|||||||
{
|
{
|
||||||
GivenSuccessfulDownload();
|
GivenSuccessfulDownload();
|
||||||
|
|
||||||
var remoteBook = CreateRemoteAlbum();
|
var remoteBook = CreateRemoteBook();
|
||||||
|
|
||||||
var id = Subject.Download(remoteBook);
|
var id = Subject.Download(remoteBook);
|
||||||
|
|
||||||
@@ -144,7 +144,7 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.VuzeTests
|
|||||||
{
|
{
|
||||||
GivenSuccessfulDownload();
|
GivenSuccessfulDownload();
|
||||||
|
|
||||||
var remoteBook = CreateRemoteAlbum();
|
var remoteBook = CreateRemoteBook();
|
||||||
remoteBook.Release.DownloadUrl = magnetUrl;
|
remoteBook.Release.DownloadUrl = magnetUrl;
|
||||||
|
|
||||||
var id = Subject.Download(remoteBook);
|
var id = Subject.Download(remoteBook);
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ namespace NzbDrone.Core.Test.Download.FailedDownloadServiceTests
|
|||||||
var completed = Builder<DownloadClientItem>.CreateNew()
|
var completed = Builder<DownloadClientItem>.CreateNew()
|
||||||
.With(h => h.Status = DownloadItemStatus.Completed)
|
.With(h => h.Status = DownloadItemStatus.Completed)
|
||||||
.With(h => h.OutputPath = new OsPath(@"C:\DropFolder\MyDownload".AsOsAgnostic()))
|
.With(h => h.OutputPath = new OsPath(@"C:\DropFolder\MyDownload".AsOsAgnostic()))
|
||||||
.With(h => h.Title = "Drone.DroneTheAlbum.FLAC")
|
.With(h => h.Title = "Drone.DroneTheBook.FLAC")
|
||||||
.Build();
|
.Build();
|
||||||
|
|
||||||
_grabHistory = Builder<History.History>.CreateListOfSize(2).BuildList();
|
_grabHistory = Builder<History.History>.CreateListOfSize(2).BuildList();
|
||||||
|
|||||||
@@ -21,8 +21,8 @@ namespace NzbDrone.Core.Test.Download.Pending.PendingReleaseServiceTests
|
|||||||
public class AddFixture : CoreTest<PendingReleaseService>
|
public class AddFixture : CoreTest<PendingReleaseService>
|
||||||
{
|
{
|
||||||
private DownloadDecision _temporarilyRejected;
|
private DownloadDecision _temporarilyRejected;
|
||||||
private Author _artist;
|
private Author _author;
|
||||||
private Book _album;
|
private Book _book;
|
||||||
private QualityProfile _profile;
|
private QualityProfile _profile;
|
||||||
private ReleaseInfo _release;
|
private ReleaseInfo _release;
|
||||||
private ParsedBookInfo _parsedBookInfo;
|
private ParsedBookInfo _parsedBookInfo;
|
||||||
@@ -32,10 +32,10 @@ namespace NzbDrone.Core.Test.Download.Pending.PendingReleaseServiceTests
|
|||||||
[SetUp]
|
[SetUp]
|
||||||
public void Setup()
|
public void Setup()
|
||||||
{
|
{
|
||||||
_artist = Builder<Author>.CreateNew()
|
_author = Builder<Author>.CreateNew()
|
||||||
.Build();
|
.Build();
|
||||||
|
|
||||||
_album = Builder<Book>.CreateNew()
|
_book = Builder<Book>.CreateNew()
|
||||||
.Build();
|
.Build();
|
||||||
|
|
||||||
_profile = new QualityProfile
|
_profile = new QualityProfile
|
||||||
@@ -50,7 +50,7 @@ namespace NzbDrone.Core.Test.Download.Pending.PendingReleaseServiceTests
|
|||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
_artist.QualityProfile = new LazyLoaded<QualityProfile>(_profile);
|
_author.QualityProfile = new LazyLoaded<QualityProfile>(_profile);
|
||||||
|
|
||||||
_release = Builder<ReleaseInfo>.CreateNew().Build();
|
_release = Builder<ReleaseInfo>.CreateNew().Build();
|
||||||
|
|
||||||
@@ -58,8 +58,8 @@ namespace NzbDrone.Core.Test.Download.Pending.PendingReleaseServiceTests
|
|||||||
_parsedBookInfo.Quality = new QualityModel(Quality.MP3_320);
|
_parsedBookInfo.Quality = new QualityModel(Quality.MP3_320);
|
||||||
|
|
||||||
_remoteBook = new RemoteBook();
|
_remoteBook = new RemoteBook();
|
||||||
_remoteBook.Books = new List<Book> { _album };
|
_remoteBook.Books = new List<Book> { _book };
|
||||||
_remoteBook.Author = _artist;
|
_remoteBook.Author = _author;
|
||||||
_remoteBook.ParsedBookInfo = _parsedBookInfo;
|
_remoteBook.ParsedBookInfo = _parsedBookInfo;
|
||||||
_remoteBook.Release = _release;
|
_remoteBook.Release = _release;
|
||||||
|
|
||||||
@@ -77,15 +77,15 @@ namespace NzbDrone.Core.Test.Download.Pending.PendingReleaseServiceTests
|
|||||||
|
|
||||||
Mocker.GetMock<IAuthorService>()
|
Mocker.GetMock<IAuthorService>()
|
||||||
.Setup(s => s.GetAuthor(It.IsAny<int>()))
|
.Setup(s => s.GetAuthor(It.IsAny<int>()))
|
||||||
.Returns(_artist);
|
.Returns(_author);
|
||||||
|
|
||||||
Mocker.GetMock<IAuthorService>()
|
Mocker.GetMock<IAuthorService>()
|
||||||
.Setup(s => s.GetAuthors(It.IsAny<IEnumerable<int>>()))
|
.Setup(s => s.GetAuthors(It.IsAny<IEnumerable<int>>()))
|
||||||
.Returns(new List<Author> { _artist });
|
.Returns(new List<Author> { _author });
|
||||||
|
|
||||||
Mocker.GetMock<IParsingService>()
|
Mocker.GetMock<IParsingService>()
|
||||||
.Setup(s => s.GetAlbums(It.IsAny<ParsedBookInfo>(), _artist, null))
|
.Setup(s => s.GetBooks(It.IsAny<ParsedBookInfo>(), _author, null))
|
||||||
.Returns(new List<Book> { _album });
|
.Returns(new List<Book> { _book });
|
||||||
|
|
||||||
Mocker.GetMock<IPrioritizeDownloadDecision>()
|
Mocker.GetMock<IPrioritizeDownloadDecision>()
|
||||||
.Setup(s => s.PrioritizeDecisions(It.IsAny<List<DownloadDecision>>()))
|
.Setup(s => s.PrioritizeDecisions(It.IsAny<List<DownloadDecision>>()))
|
||||||
@@ -100,7 +100,7 @@ namespace NzbDrone.Core.Test.Download.Pending.PendingReleaseServiceTests
|
|||||||
|
|
||||||
var heldReleases = Builder<PendingRelease>.CreateListOfSize(1)
|
var heldReleases = Builder<PendingRelease>.CreateListOfSize(1)
|
||||||
.All()
|
.All()
|
||||||
.With(h => h.AuthorId = _artist.Id)
|
.With(h => h.AuthorId = _author.Id)
|
||||||
.With(h => h.Title = title)
|
.With(h => h.Title = title)
|
||||||
.With(h => h.Release = release)
|
.With(h => h.Release = release)
|
||||||
.With(h => h.Reason = reason)
|
.With(h => h.Reason = reason)
|
||||||
|
|||||||
@@ -21,8 +21,8 @@ namespace NzbDrone.Core.Test.Download.Pending.PendingReleaseServiceTests
|
|||||||
public class RemoveGrabbedFixture : CoreTest<PendingReleaseService>
|
public class RemoveGrabbedFixture : CoreTest<PendingReleaseService>
|
||||||
{
|
{
|
||||||
private DownloadDecision _temporarilyRejected;
|
private DownloadDecision _temporarilyRejected;
|
||||||
private Author _artist;
|
private Author _author;
|
||||||
private Book _album;
|
private Book _book;
|
||||||
private QualityProfile _profile;
|
private QualityProfile _profile;
|
||||||
private ReleaseInfo _release;
|
private ReleaseInfo _release;
|
||||||
private ParsedBookInfo _parsedBookInfo;
|
private ParsedBookInfo _parsedBookInfo;
|
||||||
@@ -32,10 +32,10 @@ namespace NzbDrone.Core.Test.Download.Pending.PendingReleaseServiceTests
|
|||||||
[SetUp]
|
[SetUp]
|
||||||
public void Setup()
|
public void Setup()
|
||||||
{
|
{
|
||||||
_artist = Builder<Author>.CreateNew()
|
_author = Builder<Author>.CreateNew()
|
||||||
.Build();
|
.Build();
|
||||||
|
|
||||||
_album = Builder<Book>.CreateNew()
|
_book = Builder<Book>.CreateNew()
|
||||||
.Build();
|
.Build();
|
||||||
|
|
||||||
_profile = new QualityProfile
|
_profile = new QualityProfile
|
||||||
@@ -50,7 +50,7 @@ namespace NzbDrone.Core.Test.Download.Pending.PendingReleaseServiceTests
|
|||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
_artist.QualityProfile = new LazyLoaded<QualityProfile>(_profile);
|
_author.QualityProfile = new LazyLoaded<QualityProfile>(_profile);
|
||||||
|
|
||||||
_release = Builder<ReleaseInfo>.CreateNew().Build();
|
_release = Builder<ReleaseInfo>.CreateNew().Build();
|
||||||
|
|
||||||
@@ -58,8 +58,8 @@ namespace NzbDrone.Core.Test.Download.Pending.PendingReleaseServiceTests
|
|||||||
_parsedBookInfo.Quality = new QualityModel(Quality.MP3_320);
|
_parsedBookInfo.Quality = new QualityModel(Quality.MP3_320);
|
||||||
|
|
||||||
_remoteBook = new RemoteBook();
|
_remoteBook = new RemoteBook();
|
||||||
_remoteBook.Books = new List<Book> { _album };
|
_remoteBook.Books = new List<Book> { _book };
|
||||||
_remoteBook.Author = _artist;
|
_remoteBook.Author = _author;
|
||||||
_remoteBook.ParsedBookInfo = _parsedBookInfo;
|
_remoteBook.ParsedBookInfo = _parsedBookInfo;
|
||||||
_remoteBook.Release = _release;
|
_remoteBook.Release = _release;
|
||||||
|
|
||||||
@@ -77,15 +77,15 @@ namespace NzbDrone.Core.Test.Download.Pending.PendingReleaseServiceTests
|
|||||||
|
|
||||||
Mocker.GetMock<IAuthorService>()
|
Mocker.GetMock<IAuthorService>()
|
||||||
.Setup(s => s.GetAuthor(It.IsAny<int>()))
|
.Setup(s => s.GetAuthor(It.IsAny<int>()))
|
||||||
.Returns(_artist);
|
.Returns(_author);
|
||||||
|
|
||||||
Mocker.GetMock<IAuthorService>()
|
Mocker.GetMock<IAuthorService>()
|
||||||
.Setup(s => s.GetAuthors(It.IsAny<IEnumerable<int>>()))
|
.Setup(s => s.GetAuthors(It.IsAny<IEnumerable<int>>()))
|
||||||
.Returns(new List<Author> { _artist });
|
.Returns(new List<Author> { _author });
|
||||||
|
|
||||||
Mocker.GetMock<IParsingService>()
|
Mocker.GetMock<IParsingService>()
|
||||||
.Setup(s => s.GetAlbums(It.IsAny<ParsedBookInfo>(), _artist, null))
|
.Setup(s => s.GetBooks(It.IsAny<ParsedBookInfo>(), _author, null))
|
||||||
.Returns(new List<Book> { _album });
|
.Returns(new List<Book> { _book });
|
||||||
|
|
||||||
Mocker.GetMock<IPrioritizeDownloadDecision>()
|
Mocker.GetMock<IPrioritizeDownloadDecision>()
|
||||||
.Setup(s => s.PrioritizeDecisions(It.IsAny<List<DownloadDecision>>()))
|
.Setup(s => s.PrioritizeDecisions(It.IsAny<List<DownloadDecision>>()))
|
||||||
@@ -99,7 +99,7 @@ namespace NzbDrone.Core.Test.Download.Pending.PendingReleaseServiceTests
|
|||||||
|
|
||||||
var heldReleases = Builder<PendingRelease>.CreateListOfSize(1)
|
var heldReleases = Builder<PendingRelease>.CreateListOfSize(1)
|
||||||
.All()
|
.All()
|
||||||
.With(h => h.AuthorId = _artist.Id)
|
.With(h => h.AuthorId = _author.Id)
|
||||||
.With(h => h.Release = _release.JsonClone())
|
.With(h => h.Release = _release.JsonClone())
|
||||||
.With(h => h.ParsedBookInfo = parsedEpisodeInfo)
|
.With(h => h.ParsedBookInfo = parsedEpisodeInfo)
|
||||||
.Build();
|
.Build();
|
||||||
|
|||||||
@@ -16,14 +16,14 @@ namespace NzbDrone.Core.Test.Download.Pending.PendingReleaseServiceTests
|
|||||||
public class RemovePendingFixture : CoreTest<PendingReleaseService>
|
public class RemovePendingFixture : CoreTest<PendingReleaseService>
|
||||||
{
|
{
|
||||||
private List<PendingRelease> _pending;
|
private List<PendingRelease> _pending;
|
||||||
private Book _album;
|
private Book _book;
|
||||||
|
|
||||||
[SetUp]
|
[SetUp]
|
||||||
public void Setup()
|
public void Setup()
|
||||||
{
|
{
|
||||||
_pending = new List<PendingRelease>();
|
_pending = new List<PendingRelease>();
|
||||||
|
|
||||||
_album = Builder<Book>.CreateNew()
|
_book = Builder<Book>.CreateNew()
|
||||||
.Build();
|
.Build();
|
||||||
|
|
||||||
Mocker.GetMock<IPendingReleaseRepository>()
|
Mocker.GetMock<IPendingReleaseRepository>()
|
||||||
@@ -43,25 +43,25 @@ namespace NzbDrone.Core.Test.Download.Pending.PendingReleaseServiceTests
|
|||||||
.Returns(new List<Author> { new Author() });
|
.Returns(new List<Author> { new Author() });
|
||||||
|
|
||||||
Mocker.GetMock<IParsingService>()
|
Mocker.GetMock<IParsingService>()
|
||||||
.Setup(s => s.GetAlbums(It.IsAny<ParsedBookInfo>(), It.IsAny<Author>(), null))
|
.Setup(s => s.GetBooks(It.IsAny<ParsedBookInfo>(), It.IsAny<Author>(), null))
|
||||||
.Returns(new List<Book> { _album });
|
.Returns(new List<Book> { _book });
|
||||||
}
|
}
|
||||||
|
|
||||||
private void AddPending(int id, string album)
|
private void AddPending(int id, string book)
|
||||||
{
|
{
|
||||||
_pending.Add(new PendingRelease
|
_pending.Add(new PendingRelease
|
||||||
{
|
{
|
||||||
Id = id,
|
Id = id,
|
||||||
ParsedBookInfo = new ParsedBookInfo { BookTitle = album }
|
ParsedBookInfo = new ParsedBookInfo { BookTitle = book }
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void should_remove_same_release()
|
public void should_remove_same_release()
|
||||||
{
|
{
|
||||||
AddPending(id: 1, album: "Album");
|
AddPending(id: 1, book: "Book");
|
||||||
|
|
||||||
var queueId = HashConverter.GetHashInt31(string.Format("pending-{0}-book{1}", 1, _album.Id));
|
var queueId = HashConverter.GetHashInt31(string.Format("pending-{0}-book{1}", 1, _book.Id));
|
||||||
|
|
||||||
Subject.RemovePendingQueueItems(queueId);
|
Subject.RemovePendingQueueItems(queueId);
|
||||||
|
|
||||||
@@ -71,12 +71,12 @@ namespace NzbDrone.Core.Test.Download.Pending.PendingReleaseServiceTests
|
|||||||
[Test]
|
[Test]
|
||||||
public void should_remove_multiple_releases_release()
|
public void should_remove_multiple_releases_release()
|
||||||
{
|
{
|
||||||
AddPending(id: 1, album: "Album 1");
|
AddPending(id: 1, book: "Book 1");
|
||||||
AddPending(id: 2, album: "Album 2");
|
AddPending(id: 2, book: "Book 2");
|
||||||
AddPending(id: 3, album: "Album 3");
|
AddPending(id: 3, book: "Book 3");
|
||||||
AddPending(id: 4, album: "Album 3");
|
AddPending(id: 4, book: "Book 3");
|
||||||
|
|
||||||
var queueId = HashConverter.GetHashInt31(string.Format("pending-{0}-book{1}", 3, _album.Id));
|
var queueId = HashConverter.GetHashInt31(string.Format("pending-{0}-book{1}", 3, _book.Id));
|
||||||
|
|
||||||
Subject.RemovePendingQueueItems(queueId);
|
Subject.RemovePendingQueueItems(queueId);
|
||||||
|
|
||||||
@@ -84,14 +84,14 @@ namespace NzbDrone.Core.Test.Download.Pending.PendingReleaseServiceTests
|
|||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void should_not_remove_diffrent_albums()
|
public void should_not_remove_diffrent_books()
|
||||||
{
|
{
|
||||||
AddPending(id: 1, album: "Album 1");
|
AddPending(id: 1, book: "Book 1");
|
||||||
AddPending(id: 2, album: "Album 1");
|
AddPending(id: 2, book: "Book 1");
|
||||||
AddPending(id: 3, album: "Album 2");
|
AddPending(id: 3, book: "Book 2");
|
||||||
AddPending(id: 4, album: "Album 3");
|
AddPending(id: 4, book: "Book 3");
|
||||||
|
|
||||||
var queueId = HashConverter.GetHashInt31(string.Format("pending-{0}-book{1}", 1, _album.Id));
|
var queueId = HashConverter.GetHashInt31(string.Format("pending-{0}-book{1}", 1, _book.Id));
|
||||||
|
|
||||||
Subject.RemovePendingQueueItems(queueId);
|
Subject.RemovePendingQueueItems(queueId);
|
||||||
|
|
||||||
|
|||||||
@@ -22,8 +22,8 @@ namespace NzbDrone.Core.Test.Download.Pending.PendingReleaseServiceTests
|
|||||||
public class RemoveRejectedFixture : CoreTest<PendingReleaseService>
|
public class RemoveRejectedFixture : CoreTest<PendingReleaseService>
|
||||||
{
|
{
|
||||||
private DownloadDecision _temporarilyRejected;
|
private DownloadDecision _temporarilyRejected;
|
||||||
private Author _artist;
|
private Author _author;
|
||||||
private Book _album;
|
private Book _book;
|
||||||
private QualityProfile _profile;
|
private QualityProfile _profile;
|
||||||
private ReleaseInfo _release;
|
private ReleaseInfo _release;
|
||||||
private ParsedBookInfo _parsedBookInfo;
|
private ParsedBookInfo _parsedBookInfo;
|
||||||
@@ -32,10 +32,10 @@ namespace NzbDrone.Core.Test.Download.Pending.PendingReleaseServiceTests
|
|||||||
[SetUp]
|
[SetUp]
|
||||||
public void Setup()
|
public void Setup()
|
||||||
{
|
{
|
||||||
_artist = Builder<Author>.CreateNew()
|
_author = Builder<Author>.CreateNew()
|
||||||
.Build();
|
.Build();
|
||||||
|
|
||||||
_album = Builder<Book>.CreateNew()
|
_book = Builder<Book>.CreateNew()
|
||||||
.Build();
|
.Build();
|
||||||
|
|
||||||
_profile = new QualityProfile
|
_profile = new QualityProfile
|
||||||
@@ -50,7 +50,7 @@ namespace NzbDrone.Core.Test.Download.Pending.PendingReleaseServiceTests
|
|||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
_artist.QualityProfile = new LazyLoaded<QualityProfile>(_profile);
|
_author.QualityProfile = new LazyLoaded<QualityProfile>(_profile);
|
||||||
|
|
||||||
_release = Builder<ReleaseInfo>.CreateNew().Build();
|
_release = Builder<ReleaseInfo>.CreateNew().Build();
|
||||||
|
|
||||||
@@ -58,8 +58,8 @@ namespace NzbDrone.Core.Test.Download.Pending.PendingReleaseServiceTests
|
|||||||
_parsedBookInfo.Quality = new QualityModel(Quality.MP3_320);
|
_parsedBookInfo.Quality = new QualityModel(Quality.MP3_320);
|
||||||
|
|
||||||
_remoteBook = new RemoteBook();
|
_remoteBook = new RemoteBook();
|
||||||
_remoteBook.Books = new List<Book> { _album };
|
_remoteBook.Books = new List<Book> { _book };
|
||||||
_remoteBook.Author = _artist;
|
_remoteBook.Author = _author;
|
||||||
_remoteBook.ParsedBookInfo = _parsedBookInfo;
|
_remoteBook.ParsedBookInfo = _parsedBookInfo;
|
||||||
_remoteBook.Release = _release;
|
_remoteBook.Release = _release;
|
||||||
|
|
||||||
@@ -71,15 +71,15 @@ namespace NzbDrone.Core.Test.Download.Pending.PendingReleaseServiceTests
|
|||||||
|
|
||||||
Mocker.GetMock<IAuthorService>()
|
Mocker.GetMock<IAuthorService>()
|
||||||
.Setup(s => s.GetAuthor(It.IsAny<int>()))
|
.Setup(s => s.GetAuthor(It.IsAny<int>()))
|
||||||
.Returns(_artist);
|
.Returns(_author);
|
||||||
|
|
||||||
Mocker.GetMock<IAuthorService>()
|
Mocker.GetMock<IAuthorService>()
|
||||||
.Setup(s => s.GetAuthors(It.IsAny<IEnumerable<int>>()))
|
.Setup(s => s.GetAuthors(It.IsAny<IEnumerable<int>>()))
|
||||||
.Returns(new List<Author> { _artist });
|
.Returns(new List<Author> { _author });
|
||||||
|
|
||||||
Mocker.GetMock<IParsingService>()
|
Mocker.GetMock<IParsingService>()
|
||||||
.Setup(s => s.GetAlbums(It.IsAny<ParsedBookInfo>(), _artist, null))
|
.Setup(s => s.GetBooks(It.IsAny<ParsedBookInfo>(), _author, null))
|
||||||
.Returns(new List<Book> { _album });
|
.Returns(new List<Book> { _book });
|
||||||
|
|
||||||
Mocker.GetMock<IPrioritizeDownloadDecision>()
|
Mocker.GetMock<IPrioritizeDownloadDecision>()
|
||||||
.Setup(s => s.PrioritizeDecisions(It.IsAny<List<DownloadDecision>>()))
|
.Setup(s => s.PrioritizeDecisions(It.IsAny<List<DownloadDecision>>()))
|
||||||
@@ -94,7 +94,7 @@ namespace NzbDrone.Core.Test.Download.Pending.PendingReleaseServiceTests
|
|||||||
|
|
||||||
var heldReleases = Builder<PendingRelease>.CreateListOfSize(1)
|
var heldReleases = Builder<PendingRelease>.CreateListOfSize(1)
|
||||||
.All()
|
.All()
|
||||||
.With(h => h.AuthorId = _artist.Id)
|
.With(h => h.AuthorId = _author.Id)
|
||||||
.With(h => h.Title = title)
|
.With(h => h.Title = title)
|
||||||
.With(h => h.Release = release)
|
.With(h => h.Release = release)
|
||||||
.Build();
|
.Build();
|
||||||
|
|||||||
@@ -64,7 +64,7 @@ namespace NzbDrone.Core.Test.Download
|
|||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void should_redownload_album_on_failure()
|
public void should_redownload_book_on_failure()
|
||||||
{
|
{
|
||||||
var failedEvent = new DownloadFailedEvent
|
var failedEvent = new DownloadFailedEvent
|
||||||
{
|
{
|
||||||
@@ -87,7 +87,7 @@ namespace NzbDrone.Core.Test.Download
|
|||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void should_redownload_multiple_albums_on_failure()
|
public void should_redownload_multiple_books_on_failure()
|
||||||
{
|
{
|
||||||
var failedEvent = new DownloadFailedEvent
|
var failedEvent = new DownloadFailedEvent
|
||||||
{
|
{
|
||||||
@@ -111,9 +111,9 @@ namespace NzbDrone.Core.Test.Download
|
|||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void should_redownload_artist_on_failure()
|
public void should_redownload_author_on_failure()
|
||||||
{
|
{
|
||||||
// note that artist is set to have 3 albums in setup
|
// note that author is set to have 3 books in setup
|
||||||
var failedEvent = new DownloadFailedEvent
|
var failedEvent = new DownloadFailedEvent
|
||||||
{
|
{
|
||||||
AuthorId = 2,
|
AuthorId = 2,
|
||||||
|
|||||||
@@ -13,17 +13,17 @@ namespace NzbDrone.Core.Test.Download.TrackedDownloads
|
|||||||
[TestFixture]
|
[TestFixture]
|
||||||
public class TrackedDownloadAlreadyImportedFixture : CoreTest<TrackedDownloadAlreadyImported>
|
public class TrackedDownloadAlreadyImportedFixture : CoreTest<TrackedDownloadAlreadyImported>
|
||||||
{
|
{
|
||||||
private List<Book> _albums;
|
private List<Book> _books;
|
||||||
private TrackedDownload _trackedDownload;
|
private TrackedDownload _trackedDownload;
|
||||||
private List<History.History> _historyItems;
|
private List<History.History> _historyItems;
|
||||||
|
|
||||||
[SetUp]
|
[SetUp]
|
||||||
public void Setup()
|
public void Setup()
|
||||||
{
|
{
|
||||||
_albums = new List<Book>();
|
_books = new List<Book>();
|
||||||
|
|
||||||
var remoteBook = Builder<RemoteBook>.CreateNew()
|
var remoteBook = Builder<RemoteBook>.CreateNew()
|
||||||
.With(r => r.Books = _albums)
|
.With(r => r.Books = _books)
|
||||||
.Build();
|
.Build();
|
||||||
|
|
||||||
_trackedDownload = Builder<TrackedDownload>.CreateNew()
|
_trackedDownload = Builder<TrackedDownload>.CreateNew()
|
||||||
@@ -35,7 +35,7 @@ namespace NzbDrone.Core.Test.Download.TrackedDownloads
|
|||||||
|
|
||||||
public void GivenEpisodes(int count)
|
public void GivenEpisodes(int count)
|
||||||
{
|
{
|
||||||
_albums.AddRange(Builder<Book>.CreateListOfSize(count)
|
_books.AddRange(Builder<Book>.CreateListOfSize(count)
|
||||||
.BuildList());
|
.BuildList());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -66,7 +66,7 @@ namespace NzbDrone.Core.Test.Download.TrackedDownloads
|
|||||||
{
|
{
|
||||||
GivenEpisodes(1);
|
GivenEpisodes(1);
|
||||||
|
|
||||||
GivenHistoryForEpisode(_albums[0], HistoryEventType.Grabbed);
|
GivenHistoryForEpisode(_books[0], HistoryEventType.Grabbed);
|
||||||
|
|
||||||
Subject.IsImported(_trackedDownload, _historyItems)
|
Subject.IsImported(_trackedDownload, _historyItems)
|
||||||
.Should()
|
.Should()
|
||||||
@@ -78,8 +78,8 @@ namespace NzbDrone.Core.Test.Download.TrackedDownloads
|
|||||||
{
|
{
|
||||||
GivenEpisodes(2);
|
GivenEpisodes(2);
|
||||||
|
|
||||||
GivenHistoryForEpisode(_albums[0], HistoryEventType.Grabbed);
|
GivenHistoryForEpisode(_books[0], HistoryEventType.Grabbed);
|
||||||
GivenHistoryForEpisode(_albums[1], HistoryEventType.Grabbed);
|
GivenHistoryForEpisode(_books[1], HistoryEventType.Grabbed);
|
||||||
|
|
||||||
Subject.IsImported(_trackedDownload, _historyItems)
|
Subject.IsImported(_trackedDownload, _historyItems)
|
||||||
.Should()
|
.Should()
|
||||||
@@ -91,8 +91,8 @@ namespace NzbDrone.Core.Test.Download.TrackedDownloads
|
|||||||
{
|
{
|
||||||
GivenEpisodes(2);
|
GivenEpisodes(2);
|
||||||
|
|
||||||
GivenHistoryForEpisode(_albums[0], HistoryEventType.DownloadImported, HistoryEventType.Grabbed);
|
GivenHistoryForEpisode(_books[0], HistoryEventType.DownloadImported, HistoryEventType.Grabbed);
|
||||||
GivenHistoryForEpisode(_albums[1], HistoryEventType.Grabbed);
|
GivenHistoryForEpisode(_books[1], HistoryEventType.Grabbed);
|
||||||
|
|
||||||
Subject.IsImported(_trackedDownload, _historyItems)
|
Subject.IsImported(_trackedDownload, _historyItems)
|
||||||
.Should()
|
.Should()
|
||||||
@@ -104,7 +104,7 @@ namespace NzbDrone.Core.Test.Download.TrackedDownloads
|
|||||||
{
|
{
|
||||||
GivenEpisodes(1);
|
GivenEpisodes(1);
|
||||||
|
|
||||||
GivenHistoryForEpisode(_albums[0], HistoryEventType.DownloadImported, HistoryEventType.Grabbed);
|
GivenHistoryForEpisode(_books[0], HistoryEventType.DownloadImported, HistoryEventType.Grabbed);
|
||||||
|
|
||||||
Subject.IsImported(_trackedDownload, _historyItems)
|
Subject.IsImported(_trackedDownload, _historyItems)
|
||||||
.Should()
|
.Should()
|
||||||
@@ -116,8 +116,8 @@ namespace NzbDrone.Core.Test.Download.TrackedDownloads
|
|||||||
{
|
{
|
||||||
GivenEpisodes(2);
|
GivenEpisodes(2);
|
||||||
|
|
||||||
GivenHistoryForEpisode(_albums[0], HistoryEventType.DownloadImported, HistoryEventType.Grabbed);
|
GivenHistoryForEpisode(_books[0], HistoryEventType.DownloadImported, HistoryEventType.Grabbed);
|
||||||
GivenHistoryForEpisode(_albums[1], HistoryEventType.DownloadImported, HistoryEventType.Grabbed);
|
GivenHistoryForEpisode(_books[1], HistoryEventType.DownloadImported, HistoryEventType.Grabbed);
|
||||||
|
|
||||||
Subject.IsImported(_trackedDownload, _historyItems)
|
Subject.IsImported(_trackedDownload, _historyItems)
|
||||||
.Should()
|
.Should()
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ namespace NzbDrone.Core.Test.Download.TrackedDownloads
|
|||||||
new History.History()
|
new History.History()
|
||||||
{
|
{
|
||||||
DownloadId = "35238",
|
DownloadId = "35238",
|
||||||
SourceTitle = "Audio Artist - Audio Album [2018 - FLAC]",
|
SourceTitle = "Audio Author - Audio Book [2018 - FLAC]",
|
||||||
AuthorId = 5,
|
AuthorId = 5,
|
||||||
BookId = 4,
|
BookId = 4,
|
||||||
}
|
}
|
||||||
@@ -45,13 +45,13 @@ namespace NzbDrone.Core.Test.Download.TrackedDownloads
|
|||||||
Books = new List<Book> { new Book { Id = 4 } },
|
Books = new List<Book> { new Book { Id = 4 } },
|
||||||
ParsedBookInfo = new ParsedBookInfo()
|
ParsedBookInfo = new ParsedBookInfo()
|
||||||
{
|
{
|
||||||
BookTitle = "Audio Album",
|
BookTitle = "Audio Book",
|
||||||
AuthorName = "Audio Artist"
|
AuthorName = "Audio Author"
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
Mocker.GetMock<IParsingService>()
|
Mocker.GetMock<IParsingService>()
|
||||||
.Setup(s => s.Map(It.Is<ParsedBookInfo>(i => i.BookTitle == "Audio Album" && i.AuthorName == "Audio Artist"), It.IsAny<int>(), It.IsAny<IEnumerable<int>>()))
|
.Setup(s => s.Map(It.Is<ParsedBookInfo>(i => i.BookTitle == "Audio Book" && i.AuthorName == "Audio Author"), It.IsAny<int>(), It.IsAny<IEnumerable<int>>()))
|
||||||
.Returns(remoteBook);
|
.Returns(remoteBook);
|
||||||
|
|
||||||
var client = new DownloadClientDefinition()
|
var client = new DownloadClientDefinition()
|
||||||
@@ -82,7 +82,7 @@ namespace NzbDrone.Core.Test.Download.TrackedDownloads
|
|||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void should_unmap_tracked_download_if_album_deleted()
|
public void should_unmap_tracked_download_if_book_deleted()
|
||||||
{
|
{
|
||||||
GivenDownloadHistory();
|
GivenDownloadHistory();
|
||||||
|
|
||||||
@@ -92,13 +92,13 @@ namespace NzbDrone.Core.Test.Download.TrackedDownloads
|
|||||||
Books = new List<Book> { new Book { Id = 4 } },
|
Books = new List<Book> { new Book { Id = 4 } },
|
||||||
ParsedBookInfo = new ParsedBookInfo()
|
ParsedBookInfo = new ParsedBookInfo()
|
||||||
{
|
{
|
||||||
BookTitle = "Audio Album",
|
BookTitle = "Audio Book",
|
||||||
AuthorName = "Audio Artist"
|
AuthorName = "Audio Author"
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
Mocker.GetMock<IParsingService>()
|
Mocker.GetMock<IParsingService>()
|
||||||
.Setup(s => s.Map(It.Is<ParsedBookInfo>(i => i.BookTitle == "Audio Album" && i.AuthorName == "Audio Artist"), It.IsAny<int>(), It.IsAny<IEnumerable<int>>()))
|
.Setup(s => s.Map(It.Is<ParsedBookInfo>(i => i.BookTitle == "Audio Book" && i.AuthorName == "Audio Author"), It.IsAny<int>(), It.IsAny<IEnumerable<int>>()))
|
||||||
.Returns(remoteBook);
|
.Returns(remoteBook);
|
||||||
|
|
||||||
var client = new DownloadClientDefinition()
|
var client = new DownloadClientDefinition()
|
||||||
@@ -109,7 +109,7 @@ namespace NzbDrone.Core.Test.Download.TrackedDownloads
|
|||||||
|
|
||||||
var item = new DownloadClientItem()
|
var item = new DownloadClientItem()
|
||||||
{
|
{
|
||||||
Title = "Audio Artist - Audio Album [2018 - FLAC]",
|
Title = "Audio Author - Audio Book [2018 - FLAC]",
|
||||||
DownloadId = "35238",
|
DownloadId = "35238",
|
||||||
DownloadClientInfo = new DownloadClientItemClientInfo
|
DownloadClientInfo = new DownloadClientItemClientInfo
|
||||||
{
|
{
|
||||||
@@ -123,15 +123,15 @@ namespace NzbDrone.Core.Test.Download.TrackedDownloads
|
|||||||
var trackedDownload = Subject.TrackDownload(client, item);
|
var trackedDownload = Subject.TrackDownload(client, item);
|
||||||
Subject.GetTrackedDownloads().Should().HaveCount(1);
|
Subject.GetTrackedDownloads().Should().HaveCount(1);
|
||||||
|
|
||||||
// simulate deletion - album no longer maps
|
// simulate deletion - book no longer maps
|
||||||
Mocker.GetMock<IParsingService>()
|
Mocker.GetMock<IParsingService>()
|
||||||
.Setup(s => s.Map(It.Is<ParsedBookInfo>(i => i.BookTitle == "Audio Album" && i.AuthorName == "Audio Artist"), It.IsAny<int>(), It.IsAny<IEnumerable<int>>()))
|
.Setup(s => s.Map(It.Is<ParsedBookInfo>(i => i.BookTitle == "Audio Book" && i.AuthorName == "Audio Author"), It.IsAny<int>(), It.IsAny<IEnumerable<int>>()))
|
||||||
.Returns(default(RemoteBook));
|
.Returns(default(RemoteBook));
|
||||||
|
|
||||||
// handle deletion event
|
// handle deletion event
|
||||||
Subject.Handle(new BookDeletedEvent(remoteBook.Books.First(), false, false));
|
Subject.Handle(new BookDeletedEvent(remoteBook.Books.First(), false, false));
|
||||||
|
|
||||||
// verify download has null remote album
|
// verify download has null remote book
|
||||||
var trackedDownloads = Subject.GetTrackedDownloads();
|
var trackedDownloads = Subject.GetTrackedDownloads();
|
||||||
trackedDownloads.Should().HaveCount(1);
|
trackedDownloads.Should().HaveCount(1);
|
||||||
trackedDownloads.First().RemoteBook.Should().BeNull();
|
trackedDownloads.First().RemoteBook.Should().BeNull();
|
||||||
|
|||||||
@@ -2,114 +2,114 @@
|
|||||||
"expectedMusicBrainzReleaseIds": [
|
"expectedMusicBrainzReleaseIds": [
|
||||||
"e34999c7-36bd-4d77-a10b-627b1b4f3904"
|
"e34999c7-36bd-4d77-a10b-627b1b4f3904"
|
||||||
],
|
],
|
||||||
"libraryArtists": [
|
"libraryAuthors": [
|
||||||
{
|
{
|
||||||
"artist": "401c3991-b76b-499d-8082-9f2df958ef78",
|
"author": "401c3991-b76b-499d-8082-9f2df958ef78",
|
||||||
"metadataProfile": {
|
"metadataProfile": {
|
||||||
"name": "Standard",
|
"name": "Standard",
|
||||||
"primaryAlbumTypes": [
|
"primaryBookTypes": [
|
||||||
{
|
{
|
||||||
"primaryAlbumType": {
|
"primaryBookType": {
|
||||||
"id": 2,
|
"id": 2,
|
||||||
"name": "Single"
|
"name": "Single"
|
||||||
},
|
},
|
||||||
"allowed": false
|
"allowed": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"primaryAlbumType": {
|
"primaryBookType": {
|
||||||
"id": 4,
|
"id": 4,
|
||||||
"name": "Other"
|
"name": "Other"
|
||||||
},
|
},
|
||||||
"allowed": false
|
"allowed": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"primaryAlbumType": {
|
"primaryBookType": {
|
||||||
"id": 1,
|
"id": 1,
|
||||||
"name": "EP"
|
"name": "EP"
|
||||||
},
|
},
|
||||||
"allowed": false
|
"allowed": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"primaryAlbumType": {
|
"primaryBookType": {
|
||||||
"id": 3,
|
"id": 3,
|
||||||
"name": "Broadcast"
|
"name": "Broadcast"
|
||||||
},
|
},
|
||||||
"allowed": false
|
"allowed": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"primaryAlbumType": {
|
"primaryBookType": {
|
||||||
"id": 0,
|
"id": 0,
|
||||||
"name": "Album"
|
"name": "Book"
|
||||||
},
|
},
|
||||||
"allowed": true
|
"allowed": true
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"secondaryAlbumTypes": [
|
"secondaryBookTypes": [
|
||||||
{
|
{
|
||||||
"secondaryAlbumType": {
|
"secondaryBookType": {
|
||||||
"id": 0,
|
"id": 0,
|
||||||
"name": "Studio"
|
"name": "Studio"
|
||||||
},
|
},
|
||||||
"allowed": true
|
"allowed": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"secondaryAlbumType": {
|
"secondaryBookType": {
|
||||||
"id": 3,
|
"id": 3,
|
||||||
"name": "Spokenword"
|
"name": "Spokenword"
|
||||||
},
|
},
|
||||||
"allowed": false
|
"allowed": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"secondaryAlbumType": {
|
"secondaryBookType": {
|
||||||
"id": 2,
|
"id": 2,
|
||||||
"name": "Soundtrack"
|
"name": "Soundtrack"
|
||||||
},
|
},
|
||||||
"allowed": false
|
"allowed": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"secondaryAlbumType": {
|
"secondaryBookType": {
|
||||||
"id": 7,
|
"id": 7,
|
||||||
"name": "Remix"
|
"name": "Remix"
|
||||||
},
|
},
|
||||||
"allowed": false
|
"allowed": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"secondaryAlbumType": {
|
"secondaryBookType": {
|
||||||
"id": 9,
|
"id": 9,
|
||||||
"name": "Mixtape/Street"
|
"name": "Mixtape/Street"
|
||||||
},
|
},
|
||||||
"allowed": false
|
"allowed": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"secondaryAlbumType": {
|
"secondaryBookType": {
|
||||||
"id": 6,
|
"id": 6,
|
||||||
"name": "Live"
|
"name": "Live"
|
||||||
},
|
},
|
||||||
"allowed": false
|
"allowed": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"secondaryAlbumType": {
|
"secondaryBookType": {
|
||||||
"id": 4,
|
"id": 4,
|
||||||
"name": "Interview"
|
"name": "Interview"
|
||||||
},
|
},
|
||||||
"allowed": false
|
"allowed": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"secondaryAlbumType": {
|
"secondaryBookType": {
|
||||||
"id": 8,
|
"id": 8,
|
||||||
"name": "DJ-mix"
|
"name": "DJ-mix"
|
||||||
},
|
},
|
||||||
"allowed": false
|
"allowed": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"secondaryAlbumType": {
|
"secondaryBookType": {
|
||||||
"id": 10,
|
"id": 10,
|
||||||
"name": "Demo"
|
"name": "Demo"
|
||||||
},
|
},
|
||||||
"allowed": false
|
"allowed": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"secondaryAlbumType": {
|
"secondaryBookType": {
|
||||||
"id": 1,
|
"id": 1,
|
||||||
"name": "Compilation"
|
"name": "Compilation"
|
||||||
},
|
},
|
||||||
@@ -156,8 +156,8 @@
|
|||||||
{
|
{
|
||||||
"path": "/media/nas/video/unpacked/music/Phil_Collins_The_Essential_Going_Back_(081227946470)_REMASTERED_DELUXE_EDITION_2CD_FLAC_2016_WRE/101-phil_collins-going_back.flac",
|
"path": "/media/nas/video/unpacked/music/Phil_Collins_The_Essential_Going_Back_(081227946470)_REMASTERED_DELUXE_EDITION_2CD_FLAC_2016_WRE/101-phil_collins-going_back.flac",
|
||||||
"fileTrackInfo": {
|
"fileTrackInfo": {
|
||||||
"artistTitle": "Phil Collins The Essential Going Back (081227946470) REMASTERED DELUXE EDITION 2CD FLAC 2016 WRE 101",
|
"authorTitle": "Phil Collins The Essential Going Back (081227946470) REMASTERED DELUXE EDITION 2CD FLAC 2016 WRE 101",
|
||||||
"artistTitleInfo": {
|
"authorTitleInfo": {
|
||||||
"title": "Phil Collins The Essential Going Back (081227946470) REMASTERED DELUXE EDITION 2CD FLAC 2016 WRE 101",
|
"title": "Phil Collins The Essential Going Back (081227946470) REMASTERED DELUXE EDITION 2CD FLAC 2016 WRE 101",
|
||||||
"year": 0
|
"year": 0
|
||||||
},
|
},
|
||||||
@@ -183,9 +183,9 @@
|
|||||||
"fileTrackInfo": {
|
"fileTrackInfo": {
|
||||||
"title": "Girl (Why You Wanna Make Me Blue)",
|
"title": "Girl (Why You Wanna Make Me Blue)",
|
||||||
"cleanTitle": "Girl (Why You Wanna Make Me Blue)",
|
"cleanTitle": "Girl (Why You Wanna Make Me Blue)",
|
||||||
"artistTitle": "Phil Collins",
|
"authorTitle": "Phil Collins",
|
||||||
"albumTitle": "The Essential Going Back",
|
"bookTitle": "The Essential Going Back",
|
||||||
"artistTitleInfo": {
|
"authorTitleInfo": {
|
||||||
"title": "Phil Collins",
|
"title": "Phil Collins",
|
||||||
"year": 2016
|
"year": 2016
|
||||||
},
|
},
|
||||||
@@ -221,9 +221,9 @@
|
|||||||
"fileTrackInfo": {
|
"fileTrackInfo": {
|
||||||
"title": "(Love Is Like A) Heatwave",
|
"title": "(Love Is Like A) Heatwave",
|
||||||
"cleanTitle": "(Love Is Like A) Heatwave",
|
"cleanTitle": "(Love Is Like A) Heatwave",
|
||||||
"artistTitle": "Phil Collins",
|
"authorTitle": "Phil Collins",
|
||||||
"albumTitle": "The Essential Going Back",
|
"bookTitle": "The Essential Going Back",
|
||||||
"artistTitleInfo": {
|
"authorTitleInfo": {
|
||||||
"title": "Phil Collins",
|
"title": "Phil Collins",
|
||||||
"year": 2016
|
"year": 2016
|
||||||
},
|
},
|
||||||
@@ -259,9 +259,9 @@
|
|||||||
"fileTrackInfo": {
|
"fileTrackInfo": {
|
||||||
"title": "Some Of Your Lovin'",
|
"title": "Some Of Your Lovin'",
|
||||||
"cleanTitle": "Some Of Your Lovin'",
|
"cleanTitle": "Some Of Your Lovin'",
|
||||||
"artistTitle": "Phil Collins",
|
"authorTitle": "Phil Collins",
|
||||||
"albumTitle": "The Essential Going Back",
|
"bookTitle": "The Essential Going Back",
|
||||||
"artistTitleInfo": {
|
"authorTitleInfo": {
|
||||||
"title": "Phil Collins",
|
"title": "Phil Collins",
|
||||||
"year": 2016
|
"year": 2016
|
||||||
},
|
},
|
||||||
@@ -297,9 +297,9 @@
|
|||||||
"fileTrackInfo": {
|
"fileTrackInfo": {
|
||||||
"title": "Going To A Go-Go",
|
"title": "Going To A Go-Go",
|
||||||
"cleanTitle": "Going To A Go-Go",
|
"cleanTitle": "Going To A Go-Go",
|
||||||
"artistTitle": "Phil Collins",
|
"authorTitle": "Phil Collins",
|
||||||
"albumTitle": "The Essential Going Back",
|
"bookTitle": "The Essential Going Back",
|
||||||
"artistTitleInfo": {
|
"authorTitleInfo": {
|
||||||
"title": "Phil Collins",
|
"title": "Phil Collins",
|
||||||
"year": 2016
|
"year": 2016
|
||||||
},
|
},
|
||||||
@@ -335,9 +335,9 @@
|
|||||||
"fileTrackInfo": {
|
"fileTrackInfo": {
|
||||||
"title": "Papa Was A Rolling Stone",
|
"title": "Papa Was A Rolling Stone",
|
||||||
"cleanTitle": "Papa Was A Rolling Stone",
|
"cleanTitle": "Papa Was A Rolling Stone",
|
||||||
"artistTitle": "Phil Collins",
|
"authorTitle": "Phil Collins",
|
||||||
"albumTitle": "The Essential Going Back",
|
"bookTitle": "The Essential Going Back",
|
||||||
"artistTitleInfo": {
|
"authorTitleInfo": {
|
||||||
"title": "Phil Collins",
|
"title": "Phil Collins",
|
||||||
"year": 2016
|
"year": 2016
|
||||||
},
|
},
|
||||||
@@ -373,9 +373,9 @@
|
|||||||
"fileTrackInfo": {
|
"fileTrackInfo": {
|
||||||
"title": "Loving You Is Sweeter Than Ever",
|
"title": "Loving You Is Sweeter Than Ever",
|
||||||
"cleanTitle": "Loving You Is Sweeter Than Ever",
|
"cleanTitle": "Loving You Is Sweeter Than Ever",
|
||||||
"artistTitle": "Phil Collins",
|
"authorTitle": "Phil Collins",
|
||||||
"albumTitle": "The Essential Going Back",
|
"bookTitle": "The Essential Going Back",
|
||||||
"artistTitleInfo": {
|
"authorTitleInfo": {
|
||||||
"title": "Phil Collins",
|
"title": "Phil Collins",
|
||||||
"year": 2016
|
"year": 2016
|
||||||
},
|
},
|
||||||
@@ -411,9 +411,9 @@
|
|||||||
"fileTrackInfo": {
|
"fileTrackInfo": {
|
||||||
"title": "Something About You",
|
"title": "Something About You",
|
||||||
"cleanTitle": "Something About You",
|
"cleanTitle": "Something About You",
|
||||||
"artistTitle": "Phil Collins",
|
"authorTitle": "Phil Collins",
|
||||||
"albumTitle": "The Essential Going Back",
|
"bookTitle": "The Essential Going Back",
|
||||||
"artistTitleInfo": {
|
"authorTitleInfo": {
|
||||||
"title": "Phil Collins",
|
"title": "Phil Collins",
|
||||||
"year": 2016
|
"year": 2016
|
||||||
},
|
},
|
||||||
@@ -449,9 +449,9 @@
|
|||||||
"fileTrackInfo": {
|
"fileTrackInfo": {
|
||||||
"title": "Talkin' About My Baby",
|
"title": "Talkin' About My Baby",
|
||||||
"cleanTitle": "Talkin' About My Baby",
|
"cleanTitle": "Talkin' About My Baby",
|
||||||
"artistTitle": "Phil Collins",
|
"authorTitle": "Phil Collins",
|
||||||
"albumTitle": "The Essential Going Back",
|
"bookTitle": "The Essential Going Back",
|
||||||
"artistTitleInfo": {
|
"authorTitleInfo": {
|
||||||
"title": "Phil Collins",
|
"title": "Phil Collins",
|
||||||
"year": 2016
|
"year": 2016
|
||||||
},
|
},
|
||||||
@@ -487,9 +487,9 @@
|
|||||||
"fileTrackInfo": {
|
"fileTrackInfo": {
|
||||||
"title": "Do I Love You",
|
"title": "Do I Love You",
|
||||||
"cleanTitle": "Do I Love You",
|
"cleanTitle": "Do I Love You",
|
||||||
"artistTitle": "Phil Collins",
|
"authorTitle": "Phil Collins",
|
||||||
"albumTitle": "The Essential Going Back",
|
"bookTitle": "The Essential Going Back",
|
||||||
"artistTitleInfo": {
|
"authorTitleInfo": {
|
||||||
"title": "Phil Collins",
|
"title": "Phil Collins",
|
||||||
"year": 2016
|
"year": 2016
|
||||||
},
|
},
|
||||||
@@ -525,9 +525,9 @@
|
|||||||
"fileTrackInfo": {
|
"fileTrackInfo": {
|
||||||
"title": "Never Dreamed You'd Leave In Summer",
|
"title": "Never Dreamed You'd Leave In Summer",
|
||||||
"cleanTitle": "Never Dreamed You'd Leave In Summer",
|
"cleanTitle": "Never Dreamed You'd Leave In Summer",
|
||||||
"artistTitle": "Phil Collins",
|
"authorTitle": "Phil Collins",
|
||||||
"albumTitle": "The Essential Going Back",
|
"bookTitle": "The Essential Going Back",
|
||||||
"artistTitleInfo": {
|
"authorTitleInfo": {
|
||||||
"title": "Phil Collins",
|
"title": "Phil Collins",
|
||||||
"year": 2016
|
"year": 2016
|
||||||
},
|
},
|
||||||
@@ -563,9 +563,9 @@
|
|||||||
"fileTrackInfo": {
|
"fileTrackInfo": {
|
||||||
"title": "Take Me In Your Arms (Rock Me For A Little While)",
|
"title": "Take Me In Your Arms (Rock Me For A Little While)",
|
||||||
"cleanTitle": "Take Me In Your Arms (Rock Me For A Little While)",
|
"cleanTitle": "Take Me In Your Arms (Rock Me For A Little While)",
|
||||||
"artistTitle": "Phil Collins",
|
"authorTitle": "Phil Collins",
|
||||||
"albumTitle": "The Essential Going Back",
|
"bookTitle": "The Essential Going Back",
|
||||||
"artistTitleInfo": {
|
"authorTitleInfo": {
|
||||||
"title": "Phil Collins",
|
"title": "Phil Collins",
|
||||||
"year": 2016
|
"year": 2016
|
||||||
},
|
},
|
||||||
@@ -601,9 +601,9 @@
|
|||||||
"fileTrackInfo": {
|
"fileTrackInfo": {
|
||||||
"title": "Too Many Fish In The Sea",
|
"title": "Too Many Fish In The Sea",
|
||||||
"cleanTitle": "Too Many Fish In The Sea",
|
"cleanTitle": "Too Many Fish In The Sea",
|
||||||
"artistTitle": "Phil Collins",
|
"authorTitle": "Phil Collins",
|
||||||
"albumTitle": "The Essential Going Back",
|
"bookTitle": "The Essential Going Back",
|
||||||
"artistTitleInfo": {
|
"authorTitleInfo": {
|
||||||
"title": "Phil Collins",
|
"title": "Phil Collins",
|
||||||
"year": 2016
|
"year": 2016
|
||||||
},
|
},
|
||||||
@@ -639,9 +639,9 @@
|
|||||||
"fileTrackInfo": {
|
"fileTrackInfo": {
|
||||||
"title": "Uptight (Everything's Alright)",
|
"title": "Uptight (Everything's Alright)",
|
||||||
"cleanTitle": "Uptight (Everything's Alright)",
|
"cleanTitle": "Uptight (Everything's Alright)",
|
||||||
"artistTitle": "Phil Collins",
|
"authorTitle": "Phil Collins",
|
||||||
"albumTitle": "The Essential Going Back",
|
"bookTitle": "The Essential Going Back",
|
||||||
"artistTitleInfo": {
|
"authorTitleInfo": {
|
||||||
"title": "Phil Collins",
|
"title": "Phil Collins",
|
||||||
"year": 2016
|
"year": 2016
|
||||||
},
|
},
|
||||||
@@ -677,9 +677,9 @@
|
|||||||
"fileTrackInfo": {
|
"fileTrackInfo": {
|
||||||
"title": "Signed, Sealed, Delivered (I'm Yours) Intro (Live)",
|
"title": "Signed, Sealed, Delivered (I'm Yours) Intro (Live)",
|
||||||
"cleanTitle": "Signed, Sealed, Delivered (I'm Yours) Intro (Live)",
|
"cleanTitle": "Signed, Sealed, Delivered (I'm Yours) Intro (Live)",
|
||||||
"artistTitle": "Phil Collins",
|
"authorTitle": "Phil Collins",
|
||||||
"albumTitle": "The Essential Going Back",
|
"bookTitle": "The Essential Going Back",
|
||||||
"artistTitleInfo": {
|
"authorTitleInfo": {
|
||||||
"title": "Phil Collins",
|
"title": "Phil Collins",
|
||||||
"year": 2016
|
"year": 2016
|
||||||
},
|
},
|
||||||
@@ -715,9 +715,9 @@
|
|||||||
"fileTrackInfo": {
|
"fileTrackInfo": {
|
||||||
"title": "Ain't Too Proud To Beg (Live)",
|
"title": "Ain't Too Proud To Beg (Live)",
|
||||||
"cleanTitle": "Ain't Too Proud To Beg (Live)",
|
"cleanTitle": "Ain't Too Proud To Beg (Live)",
|
||||||
"artistTitle": "Phil Collins",
|
"authorTitle": "Phil Collins",
|
||||||
"albumTitle": "The Essential Going Back",
|
"bookTitle": "The Essential Going Back",
|
||||||
"artistTitleInfo": {
|
"authorTitleInfo": {
|
||||||
"title": "Phil Collins",
|
"title": "Phil Collins",
|
||||||
"year": 2016
|
"year": 2016
|
||||||
},
|
},
|
||||||
@@ -753,9 +753,9 @@
|
|||||||
"fileTrackInfo": {
|
"fileTrackInfo": {
|
||||||
"title": "Girl (Why You Wanna Make Me Blue) (Live)",
|
"title": "Girl (Why You Wanna Make Me Blue) (Live)",
|
||||||
"cleanTitle": "Girl (Why You Wanna Make Me Blue) (Live)",
|
"cleanTitle": "Girl (Why You Wanna Make Me Blue) (Live)",
|
||||||
"artistTitle": "Phil Collins",
|
"authorTitle": "Phil Collins",
|
||||||
"albumTitle": "The Essential Going Back",
|
"bookTitle": "The Essential Going Back",
|
||||||
"artistTitleInfo": {
|
"authorTitleInfo": {
|
||||||
"title": "Phil Collins",
|
"title": "Phil Collins",
|
||||||
"year": 2016
|
"year": 2016
|
||||||
},
|
},
|
||||||
@@ -791,9 +791,9 @@
|
|||||||
"fileTrackInfo": {
|
"fileTrackInfo": {
|
||||||
"title": "Dancing In The Street (Live)",
|
"title": "Dancing In The Street (Live)",
|
||||||
"cleanTitle": "Dancing In The Street (Live)",
|
"cleanTitle": "Dancing In The Street (Live)",
|
||||||
"artistTitle": "Phil Collins",
|
"authorTitle": "Phil Collins",
|
||||||
"albumTitle": "The Essential Going Back",
|
"bookTitle": "The Essential Going Back",
|
||||||
"artistTitleInfo": {
|
"authorTitleInfo": {
|
||||||
"title": "Phil Collins",
|
"title": "Phil Collins",
|
||||||
"year": 2016
|
"year": 2016
|
||||||
},
|
},
|
||||||
@@ -829,9 +829,9 @@
|
|||||||
"fileTrackInfo": {
|
"fileTrackInfo": {
|
||||||
"title": "(Love Is Like A) Heatwave (Live)",
|
"title": "(Love Is Like A) Heatwave (Live)",
|
||||||
"cleanTitle": "(Love Is Like A) Heatwave (Live)",
|
"cleanTitle": "(Love Is Like A) Heatwave (Live)",
|
||||||
"artistTitle": "Phil Collins",
|
"authorTitle": "Phil Collins",
|
||||||
"albumTitle": "The Essential Going Back",
|
"bookTitle": "The Essential Going Back",
|
||||||
"artistTitleInfo": {
|
"authorTitleInfo": {
|
||||||
"title": "Phil Collins",
|
"title": "Phil Collins",
|
||||||
"year": 2016
|
"year": 2016
|
||||||
},
|
},
|
||||||
@@ -867,9 +867,9 @@
|
|||||||
"fileTrackInfo": {
|
"fileTrackInfo": {
|
||||||
"title": "Papa Was A Rolling Stone (Live)",
|
"title": "Papa Was A Rolling Stone (Live)",
|
||||||
"cleanTitle": "Papa Was A Rolling Stone (Live)",
|
"cleanTitle": "Papa Was A Rolling Stone (Live)",
|
||||||
"artistTitle": "Phil Collins",
|
"authorTitle": "Phil Collins",
|
||||||
"albumTitle": "The Essential Going Back",
|
"bookTitle": "The Essential Going Back",
|
||||||
"artistTitleInfo": {
|
"authorTitleInfo": {
|
||||||
"title": "Phil Collins",
|
"title": "Phil Collins",
|
||||||
"year": 2016
|
"year": 2016
|
||||||
},
|
},
|
||||||
@@ -905,9 +905,9 @@
|
|||||||
"fileTrackInfo": {
|
"fileTrackInfo": {
|
||||||
"title": "Never Dreamed You'd Leave In Summer (Live)",
|
"title": "Never Dreamed You'd Leave In Summer (Live)",
|
||||||
"cleanTitle": "Never Dreamed You'd Leave In Summer (Live)",
|
"cleanTitle": "Never Dreamed You'd Leave In Summer (Live)",
|
||||||
"artistTitle": "Phil Collins",
|
"authorTitle": "Phil Collins",
|
||||||
"albumTitle": "The Essential Going Back",
|
"bookTitle": "The Essential Going Back",
|
||||||
"artistTitleInfo": {
|
"authorTitleInfo": {
|
||||||
"title": "Phil Collins",
|
"title": "Phil Collins",
|
||||||
"year": 2016
|
"year": 2016
|
||||||
},
|
},
|
||||||
@@ -943,9 +943,9 @@
|
|||||||
"fileTrackInfo": {
|
"fileTrackInfo": {
|
||||||
"title": "Talkin' About My Baby (Live)",
|
"title": "Talkin' About My Baby (Live)",
|
||||||
"cleanTitle": "Talkin' About My Baby (Live)",
|
"cleanTitle": "Talkin' About My Baby (Live)",
|
||||||
"artistTitle": "Phil Collins",
|
"authorTitle": "Phil Collins",
|
||||||
"albumTitle": "The Essential Going Back",
|
"bookTitle": "The Essential Going Back",
|
||||||
"artistTitleInfo": {
|
"authorTitleInfo": {
|
||||||
"title": "Phil Collins",
|
"title": "Phil Collins",
|
||||||
"year": 2016
|
"year": 2016
|
||||||
},
|
},
|
||||||
@@ -981,9 +981,9 @@
|
|||||||
"fileTrackInfo": {
|
"fileTrackInfo": {
|
||||||
"title": "Do I Love You (Live)",
|
"title": "Do I Love You (Live)",
|
||||||
"cleanTitle": "Do I Love You (Live)",
|
"cleanTitle": "Do I Love You (Live)",
|
||||||
"artistTitle": "Phil Collins",
|
"authorTitle": "Phil Collins",
|
||||||
"albumTitle": "The Essential Going Back",
|
"bookTitle": "The Essential Going Back",
|
||||||
"artistTitleInfo": {
|
"authorTitleInfo": {
|
||||||
"title": "Phil Collins",
|
"title": "Phil Collins",
|
||||||
"year": 2016
|
"year": 2016
|
||||||
},
|
},
|
||||||
@@ -1019,9 +1019,9 @@
|
|||||||
"fileTrackInfo": {
|
"fileTrackInfo": {
|
||||||
"title": "Ain't That Peculiar (Live)",
|
"title": "Ain't That Peculiar (Live)",
|
||||||
"cleanTitle": "Ain't That Peculiar (Live)",
|
"cleanTitle": "Ain't That Peculiar (Live)",
|
||||||
"artistTitle": "Phil Collins",
|
"authorTitle": "Phil Collins",
|
||||||
"albumTitle": "The Essential Going Back",
|
"bookTitle": "The Essential Going Back",
|
||||||
"artistTitleInfo": {
|
"authorTitleInfo": {
|
||||||
"title": "Phil Collins",
|
"title": "Phil Collins",
|
||||||
"year": 2016
|
"year": 2016
|
||||||
},
|
},
|
||||||
@@ -1057,9 +1057,9 @@
|
|||||||
"fileTrackInfo": {
|
"fileTrackInfo": {
|
||||||
"title": "Too Many Fish In The Sea (Live)",
|
"title": "Too Many Fish In The Sea (Live)",
|
||||||
"cleanTitle": "Too Many Fish In The Sea (Live)",
|
"cleanTitle": "Too Many Fish In The Sea (Live)",
|
||||||
"artistTitle": "Phil Collins",
|
"authorTitle": "Phil Collins",
|
||||||
"albumTitle": "The Essential Going Back",
|
"bookTitle": "The Essential Going Back",
|
||||||
"artistTitleInfo": {
|
"authorTitleInfo": {
|
||||||
"title": "Phil Collins",
|
"title": "Phil Collins",
|
||||||
"year": 2016
|
"year": 2016
|
||||||
},
|
},
|
||||||
@@ -1095,9 +1095,9 @@
|
|||||||
"fileTrackInfo": {
|
"fileTrackInfo": {
|
||||||
"title": "You Really Got A Hold On Me (Live)",
|
"title": "You Really Got A Hold On Me (Live)",
|
||||||
"cleanTitle": "You Really Got A Hold On Me (Live)",
|
"cleanTitle": "You Really Got A Hold On Me (Live)",
|
||||||
"artistTitle": "Phil Collins",
|
"authorTitle": "Phil Collins",
|
||||||
"albumTitle": "The Essential Going Back",
|
"bookTitle": "The Essential Going Back",
|
||||||
"artistTitleInfo": {
|
"authorTitleInfo": {
|
||||||
"title": "Phil Collins",
|
"title": "Phil Collins",
|
||||||
"year": 2016
|
"year": 2016
|
||||||
},
|
},
|
||||||
@@ -1133,9 +1133,9 @@
|
|||||||
"fileTrackInfo": {
|
"fileTrackInfo": {
|
||||||
"title": "Something About You (Live)",
|
"title": "Something About You (Live)",
|
||||||
"cleanTitle": "Something About You (Live)",
|
"cleanTitle": "Something About You (Live)",
|
||||||
"artistTitle": "Phil Collins",
|
"authorTitle": "Phil Collins",
|
||||||
"albumTitle": "The Essential Going Back",
|
"bookTitle": "The Essential Going Back",
|
||||||
"artistTitleInfo": {
|
"authorTitleInfo": {
|
||||||
"title": "Phil Collins",
|
"title": "Phil Collins",
|
||||||
"year": 2016
|
"year": 2016
|
||||||
},
|
},
|
||||||
@@ -1171,9 +1171,9 @@
|
|||||||
"fileTrackInfo": {
|
"fileTrackInfo": {
|
||||||
"title": "Uptight (Everything's Alright) (Live)",
|
"title": "Uptight (Everything's Alright) (Live)",
|
||||||
"cleanTitle": "Uptight (Everything's Alright) (Live)",
|
"cleanTitle": "Uptight (Everything's Alright) (Live)",
|
||||||
"artistTitle": "Phil Collins",
|
"authorTitle": "Phil Collins",
|
||||||
"albumTitle": "The Essential Going Back",
|
"bookTitle": "The Essential Going Back",
|
||||||
"artistTitleInfo": {
|
"authorTitleInfo": {
|
||||||
"title": "Phil Collins",
|
"title": "Phil Collins",
|
||||||
"year": 2016
|
"year": 2016
|
||||||
},
|
},
|
||||||
@@ -1209,9 +1209,9 @@
|
|||||||
"fileTrackInfo": {
|
"fileTrackInfo": {
|
||||||
"title": "My Girl (Live)",
|
"title": "My Girl (Live)",
|
||||||
"cleanTitle": "My Girl (Live)",
|
"cleanTitle": "My Girl (Live)",
|
||||||
"artistTitle": "Phil Collins",
|
"authorTitle": "Phil Collins",
|
||||||
"albumTitle": "The Essential Going Back",
|
"bookTitle": "The Essential Going Back",
|
||||||
"artistTitleInfo": {
|
"authorTitleInfo": {
|
||||||
"title": "Phil Collins",
|
"title": "Phil Collins",
|
||||||
"year": 2016
|
"year": 2016
|
||||||
},
|
},
|
||||||
@@ -1247,9 +1247,9 @@
|
|||||||
"fileTrackInfo": {
|
"fileTrackInfo": {
|
||||||
"title": "Going Back (Live)",
|
"title": "Going Back (Live)",
|
||||||
"cleanTitle": "Going Back (Live)",
|
"cleanTitle": "Going Back (Live)",
|
||||||
"artistTitle": "Phil Collins",
|
"authorTitle": "Phil Collins",
|
||||||
"albumTitle": "The Essential Going Back",
|
"bookTitle": "The Essential Going Back",
|
||||||
"artistTitleInfo": {
|
"authorTitleInfo": {
|
||||||
"title": "Phil Collins",
|
"title": "Phil Collins",
|
||||||
"year": 2016
|
"year": 2016
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -4,114 +4,114 @@
|
|||||||
"97189482-89ee-4d31-90c7-ba07b412d7f9",
|
"97189482-89ee-4d31-90c7-ba07b412d7f9",
|
||||||
"9105a5b3-eb68-3a03-9aa8-f3495e602a4f"
|
"9105a5b3-eb68-3a03-9aa8-f3495e602a4f"
|
||||||
],
|
],
|
||||||
"libraryArtists": [
|
"libraryAuthors": [
|
||||||
{
|
{
|
||||||
"artist": "cc2c9c3c-b7bc-4b8b-84d8-4fbd8779e493",
|
"author": "cc2c9c3c-b7bc-4b8b-84d8-4fbd8779e493",
|
||||||
"metadataProfile": {
|
"metadataProfile": {
|
||||||
"name": "Standard",
|
"name": "Standard",
|
||||||
"primaryAlbumTypes": [
|
"primaryBookTypes": [
|
||||||
{
|
{
|
||||||
"primaryAlbumType": {
|
"primaryBookType": {
|
||||||
"id": 2,
|
"id": 2,
|
||||||
"name": "Single"
|
"name": "Single"
|
||||||
},
|
},
|
||||||
"allowed": false
|
"allowed": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"primaryAlbumType": {
|
"primaryBookType": {
|
||||||
"id": 4,
|
"id": 4,
|
||||||
"name": "Other"
|
"name": "Other"
|
||||||
},
|
},
|
||||||
"allowed": false
|
"allowed": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"primaryAlbumType": {
|
"primaryBookType": {
|
||||||
"id": 1,
|
"id": 1,
|
||||||
"name": "EP"
|
"name": "EP"
|
||||||
},
|
},
|
||||||
"allowed": false
|
"allowed": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"primaryAlbumType": {
|
"primaryBookType": {
|
||||||
"id": 3,
|
"id": 3,
|
||||||
"name": "Broadcast"
|
"name": "Broadcast"
|
||||||
},
|
},
|
||||||
"allowed": false
|
"allowed": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"primaryAlbumType": {
|
"primaryBookType": {
|
||||||
"id": 0,
|
"id": 0,
|
||||||
"name": "Album"
|
"name": "Book"
|
||||||
},
|
},
|
||||||
"allowed": true
|
"allowed": true
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"secondaryAlbumTypes": [
|
"secondaryBookTypes": [
|
||||||
{
|
{
|
||||||
"secondaryAlbumType": {
|
"secondaryBookType": {
|
||||||
"id": 0,
|
"id": 0,
|
||||||
"name": "Studio"
|
"name": "Studio"
|
||||||
},
|
},
|
||||||
"allowed": true
|
"allowed": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"secondaryAlbumType": {
|
"secondaryBookType": {
|
||||||
"id": 3,
|
"id": 3,
|
||||||
"name": "Spokenword"
|
"name": "Spokenword"
|
||||||
},
|
},
|
||||||
"allowed": false
|
"allowed": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"secondaryAlbumType": {
|
"secondaryBookType": {
|
||||||
"id": 2,
|
"id": 2,
|
||||||
"name": "Soundtrack"
|
"name": "Soundtrack"
|
||||||
},
|
},
|
||||||
"allowed": false
|
"allowed": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"secondaryAlbumType": {
|
"secondaryBookType": {
|
||||||
"id": 7,
|
"id": 7,
|
||||||
"name": "Remix"
|
"name": "Remix"
|
||||||
},
|
},
|
||||||
"allowed": false
|
"allowed": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"secondaryAlbumType": {
|
"secondaryBookType": {
|
||||||
"id": 9,
|
"id": 9,
|
||||||
"name": "Mixtape/Street"
|
"name": "Mixtape/Street"
|
||||||
},
|
},
|
||||||
"allowed": false
|
"allowed": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"secondaryAlbumType": {
|
"secondaryBookType": {
|
||||||
"id": 6,
|
"id": 6,
|
||||||
"name": "Live"
|
"name": "Live"
|
||||||
},
|
},
|
||||||
"allowed": false
|
"allowed": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"secondaryAlbumType": {
|
"secondaryBookType": {
|
||||||
"id": 4,
|
"id": 4,
|
||||||
"name": "Interview"
|
"name": "Interview"
|
||||||
},
|
},
|
||||||
"allowed": false
|
"allowed": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"secondaryAlbumType": {
|
"secondaryBookType": {
|
||||||
"id": 8,
|
"id": 8,
|
||||||
"name": "DJ-mix"
|
"name": "DJ-mix"
|
||||||
},
|
},
|
||||||
"allowed": false
|
"allowed": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"secondaryAlbumType": {
|
"secondaryBookType": {
|
||||||
"id": 10,
|
"id": 10,
|
||||||
"name": "Demo"
|
"name": "Demo"
|
||||||
},
|
},
|
||||||
"allowed": false
|
"allowed": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"secondaryAlbumType": {
|
"secondaryBookType": {
|
||||||
"id": 1,
|
"id": 1,
|
||||||
"name": "Compilation"
|
"name": "Compilation"
|
||||||
},
|
},
|
||||||
@@ -160,14 +160,14 @@
|
|||||||
"fileTrackInfo": {
|
"fileTrackInfo": {
|
||||||
"title": "Rolling in the Deep",
|
"title": "Rolling in the Deep",
|
||||||
"cleanTitle": "Rolling in the Deep",
|
"cleanTitle": "Rolling in the Deep",
|
||||||
"artistTitle": "Adele",
|
"authorTitle": "Adele",
|
||||||
"albumTitle": "21",
|
"bookTitle": "21",
|
||||||
"artistTitleInfo": {
|
"authorTitleInfo": {
|
||||||
"title": "Adele",
|
"title": "Adele",
|
||||||
"year": 2011
|
"year": 2011
|
||||||
},
|
},
|
||||||
"artistMBId": "cc2c9c3c-b7bc-4b8b-84d8-4fbd8779e493",
|
"authorMBId": "cc2c9c3c-b7bc-4b8b-84d8-4fbd8779e493",
|
||||||
"albumMBId": "e4174758-d333-4a8e-a31f-dd0edd51518e",
|
"bookMBId": "e4174758-d333-4a8e-a31f-dd0edd51518e",
|
||||||
"releaseMBId": "768bc7f7-6b91-4b57-8a7b-1508636719e6",
|
"releaseMBId": "768bc7f7-6b91-4b57-8a7b-1508636719e6",
|
||||||
"recordingMBId": "1a13c710-4b7e-4701-8968-cd61f2e58110",
|
"recordingMBId": "1a13c710-4b7e-4701-8968-cd61f2e58110",
|
||||||
"discNumber": 1,
|
"discNumber": 1,
|
||||||
@@ -207,14 +207,14 @@
|
|||||||
"fileTrackInfo": {
|
"fileTrackInfo": {
|
||||||
"title": "Rumour Has It",
|
"title": "Rumour Has It",
|
||||||
"cleanTitle": "Rumour Has It",
|
"cleanTitle": "Rumour Has It",
|
||||||
"artistTitle": "Adele",
|
"authorTitle": "Adele",
|
||||||
"albumTitle": "21",
|
"bookTitle": "21",
|
||||||
"artistTitleInfo": {
|
"authorTitleInfo": {
|
||||||
"title": "Adele",
|
"title": "Adele",
|
||||||
"year": 2011
|
"year": 2011
|
||||||
},
|
},
|
||||||
"artistMBId": "cc2c9c3c-b7bc-4b8b-84d8-4fbd8779e493",
|
"authorMBId": "cc2c9c3c-b7bc-4b8b-84d8-4fbd8779e493",
|
||||||
"albumMBId": "e4174758-d333-4a8e-a31f-dd0edd51518e",
|
"bookMBId": "e4174758-d333-4a8e-a31f-dd0edd51518e",
|
||||||
"releaseMBId": "768bc7f7-6b91-4b57-8a7b-1508636719e6",
|
"releaseMBId": "768bc7f7-6b91-4b57-8a7b-1508636719e6",
|
||||||
"recordingMBId": "797ae656-81d4-4d89-bddb-eca56f77ba72",
|
"recordingMBId": "797ae656-81d4-4d89-bddb-eca56f77ba72",
|
||||||
"discNumber": 1,
|
"discNumber": 1,
|
||||||
@@ -254,14 +254,14 @@
|
|||||||
"fileTrackInfo": {
|
"fileTrackInfo": {
|
||||||
"title": "Turning Tables",
|
"title": "Turning Tables",
|
||||||
"cleanTitle": "Turning Tables",
|
"cleanTitle": "Turning Tables",
|
||||||
"artistTitle": "Adele",
|
"authorTitle": "Adele",
|
||||||
"albumTitle": "21",
|
"bookTitle": "21",
|
||||||
"artistTitleInfo": {
|
"authorTitleInfo": {
|
||||||
"title": "Adele",
|
"title": "Adele",
|
||||||
"year": 2011
|
"year": 2011
|
||||||
},
|
},
|
||||||
"artistMBId": "cc2c9c3c-b7bc-4b8b-84d8-4fbd8779e493",
|
"authorMBId": "cc2c9c3c-b7bc-4b8b-84d8-4fbd8779e493",
|
||||||
"albumMBId": "e4174758-d333-4a8e-a31f-dd0edd51518e",
|
"bookMBId": "e4174758-d333-4a8e-a31f-dd0edd51518e",
|
||||||
"releaseMBId": "768bc7f7-6b91-4b57-8a7b-1508636719e6",
|
"releaseMBId": "768bc7f7-6b91-4b57-8a7b-1508636719e6",
|
||||||
"recordingMBId": "5ac6c47f-bce8-4718-8bc6-f1de40693d14",
|
"recordingMBId": "5ac6c47f-bce8-4718-8bc6-f1de40693d14",
|
||||||
"discNumber": 1,
|
"discNumber": 1,
|
||||||
@@ -301,14 +301,14 @@
|
|||||||
"fileTrackInfo": {
|
"fileTrackInfo": {
|
||||||
"title": "Don’t You Remember",
|
"title": "Don’t You Remember",
|
||||||
"cleanTitle": "Don’t You Remember",
|
"cleanTitle": "Don’t You Remember",
|
||||||
"artistTitle": "Adele",
|
"authorTitle": "Adele",
|
||||||
"albumTitle": "21",
|
"bookTitle": "21",
|
||||||
"artistTitleInfo": {
|
"authorTitleInfo": {
|
||||||
"title": "Adele",
|
"title": "Adele",
|
||||||
"year": 2011
|
"year": 2011
|
||||||
},
|
},
|
||||||
"artistMBId": "cc2c9c3c-b7bc-4b8b-84d8-4fbd8779e493",
|
"authorMBId": "cc2c9c3c-b7bc-4b8b-84d8-4fbd8779e493",
|
||||||
"albumMBId": "e4174758-d333-4a8e-a31f-dd0edd51518e",
|
"bookMBId": "e4174758-d333-4a8e-a31f-dd0edd51518e",
|
||||||
"releaseMBId": "768bc7f7-6b91-4b57-8a7b-1508636719e6",
|
"releaseMBId": "768bc7f7-6b91-4b57-8a7b-1508636719e6",
|
||||||
"recordingMBId": "f5057d26-1aac-47fe-b766-18c5a28927b1",
|
"recordingMBId": "f5057d26-1aac-47fe-b766-18c5a28927b1",
|
||||||
"discNumber": 1,
|
"discNumber": 1,
|
||||||
@@ -348,14 +348,14 @@
|
|||||||
"fileTrackInfo": {
|
"fileTrackInfo": {
|
||||||
"title": "Set Fire to the Rain",
|
"title": "Set Fire to the Rain",
|
||||||
"cleanTitle": "Set Fire to the Rain",
|
"cleanTitle": "Set Fire to the Rain",
|
||||||
"artistTitle": "Adele",
|
"authorTitle": "Adele",
|
||||||
"albumTitle": "21",
|
"bookTitle": "21",
|
||||||
"artistTitleInfo": {
|
"authorTitleInfo": {
|
||||||
"title": "Adele",
|
"title": "Adele",
|
||||||
"year": 2011
|
"year": 2011
|
||||||
},
|
},
|
||||||
"artistMBId": "cc2c9c3c-b7bc-4b8b-84d8-4fbd8779e493",
|
"authorMBId": "cc2c9c3c-b7bc-4b8b-84d8-4fbd8779e493",
|
||||||
"albumMBId": "e4174758-d333-4a8e-a31f-dd0edd51518e",
|
"bookMBId": "e4174758-d333-4a8e-a31f-dd0edd51518e",
|
||||||
"releaseMBId": "768bc7f7-6b91-4b57-8a7b-1508636719e6",
|
"releaseMBId": "768bc7f7-6b91-4b57-8a7b-1508636719e6",
|
||||||
"recordingMBId": "d1e0a99e-1894-457b-ba6a-985eeef4d0c4",
|
"recordingMBId": "d1e0a99e-1894-457b-ba6a-985eeef4d0c4",
|
||||||
"discNumber": 1,
|
"discNumber": 1,
|
||||||
@@ -395,14 +395,14 @@
|
|||||||
"fileTrackInfo": {
|
"fileTrackInfo": {
|
||||||
"title": "He Won’t Go",
|
"title": "He Won’t Go",
|
||||||
"cleanTitle": "He Won’t Go",
|
"cleanTitle": "He Won’t Go",
|
||||||
"artistTitle": "Adele",
|
"authorTitle": "Adele",
|
||||||
"albumTitle": "21",
|
"bookTitle": "21",
|
||||||
"artistTitleInfo": {
|
"authorTitleInfo": {
|
||||||
"title": "Adele",
|
"title": "Adele",
|
||||||
"year": 2011
|
"year": 2011
|
||||||
},
|
},
|
||||||
"artistMBId": "cc2c9c3c-b7bc-4b8b-84d8-4fbd8779e493",
|
"authorMBId": "cc2c9c3c-b7bc-4b8b-84d8-4fbd8779e493",
|
||||||
"albumMBId": "e4174758-d333-4a8e-a31f-dd0edd51518e",
|
"bookMBId": "e4174758-d333-4a8e-a31f-dd0edd51518e",
|
||||||
"releaseMBId": "768bc7f7-6b91-4b57-8a7b-1508636719e6",
|
"releaseMBId": "768bc7f7-6b91-4b57-8a7b-1508636719e6",
|
||||||
"recordingMBId": "4dd209b9-80fd-4e11-8093-3bab2db810fc",
|
"recordingMBId": "4dd209b9-80fd-4e11-8093-3bab2db810fc",
|
||||||
"discNumber": 1,
|
"discNumber": 1,
|
||||||
@@ -442,14 +442,14 @@
|
|||||||
"fileTrackInfo": {
|
"fileTrackInfo": {
|
||||||
"title": "Take It All",
|
"title": "Take It All",
|
||||||
"cleanTitle": "Take It All",
|
"cleanTitle": "Take It All",
|
||||||
"artistTitle": "Adele",
|
"authorTitle": "Adele",
|
||||||
"albumTitle": "21",
|
"bookTitle": "21",
|
||||||
"artistTitleInfo": {
|
"authorTitleInfo": {
|
||||||
"title": "Adele",
|
"title": "Adele",
|
||||||
"year": 2011
|
"year": 2011
|
||||||
},
|
},
|
||||||
"artistMBId": "cc2c9c3c-b7bc-4b8b-84d8-4fbd8779e493",
|
"authorMBId": "cc2c9c3c-b7bc-4b8b-84d8-4fbd8779e493",
|
||||||
"albumMBId": "e4174758-d333-4a8e-a31f-dd0edd51518e",
|
"bookMBId": "e4174758-d333-4a8e-a31f-dd0edd51518e",
|
||||||
"releaseMBId": "768bc7f7-6b91-4b57-8a7b-1508636719e6",
|
"releaseMBId": "768bc7f7-6b91-4b57-8a7b-1508636719e6",
|
||||||
"recordingMBId": "4f515654-052b-4631-8a78-57ea362cd18a",
|
"recordingMBId": "4f515654-052b-4631-8a78-57ea362cd18a",
|
||||||
"discNumber": 1,
|
"discNumber": 1,
|
||||||
@@ -489,14 +489,14 @@
|
|||||||
"fileTrackInfo": {
|
"fileTrackInfo": {
|
||||||
"title": "I’ll Be Waiting",
|
"title": "I’ll Be Waiting",
|
||||||
"cleanTitle": "I’ll Be Waiting",
|
"cleanTitle": "I’ll Be Waiting",
|
||||||
"artistTitle": "Adele",
|
"authorTitle": "Adele",
|
||||||
"albumTitle": "21",
|
"bookTitle": "21",
|
||||||
"artistTitleInfo": {
|
"authorTitleInfo": {
|
||||||
"title": "Adele",
|
"title": "Adele",
|
||||||
"year": 2011
|
"year": 2011
|
||||||
},
|
},
|
||||||
"artistMBId": "cc2c9c3c-b7bc-4b8b-84d8-4fbd8779e493",
|
"authorMBId": "cc2c9c3c-b7bc-4b8b-84d8-4fbd8779e493",
|
||||||
"albumMBId": "e4174758-d333-4a8e-a31f-dd0edd51518e",
|
"bookMBId": "e4174758-d333-4a8e-a31f-dd0edd51518e",
|
||||||
"releaseMBId": "768bc7f7-6b91-4b57-8a7b-1508636719e6",
|
"releaseMBId": "768bc7f7-6b91-4b57-8a7b-1508636719e6",
|
||||||
"recordingMBId": "dd2d2073-50c4-438a-91cc-a1fea1c81b12",
|
"recordingMBId": "dd2d2073-50c4-438a-91cc-a1fea1c81b12",
|
||||||
"discNumber": 1,
|
"discNumber": 1,
|
||||||
@@ -536,14 +536,14 @@
|
|||||||
"fileTrackInfo": {
|
"fileTrackInfo": {
|
||||||
"title": "One and Only",
|
"title": "One and Only",
|
||||||
"cleanTitle": "One and Only",
|
"cleanTitle": "One and Only",
|
||||||
"artistTitle": "Adele",
|
"authorTitle": "Adele",
|
||||||
"albumTitle": "21",
|
"bookTitle": "21",
|
||||||
"artistTitleInfo": {
|
"authorTitleInfo": {
|
||||||
"title": "Adele",
|
"title": "Adele",
|
||||||
"year": 2011
|
"year": 2011
|
||||||
},
|
},
|
||||||
"artistMBId": "cc2c9c3c-b7bc-4b8b-84d8-4fbd8779e493",
|
"authorMBId": "cc2c9c3c-b7bc-4b8b-84d8-4fbd8779e493",
|
||||||
"albumMBId": "e4174758-d333-4a8e-a31f-dd0edd51518e",
|
"bookMBId": "e4174758-d333-4a8e-a31f-dd0edd51518e",
|
||||||
"releaseMBId": "768bc7f7-6b91-4b57-8a7b-1508636719e6",
|
"releaseMBId": "768bc7f7-6b91-4b57-8a7b-1508636719e6",
|
||||||
"recordingMBId": "04f96056-91ac-4b64-af89-24c596013f05",
|
"recordingMBId": "04f96056-91ac-4b64-af89-24c596013f05",
|
||||||
"discNumber": 1,
|
"discNumber": 1,
|
||||||
@@ -583,14 +583,14 @@
|
|||||||
"fileTrackInfo": {
|
"fileTrackInfo": {
|
||||||
"title": "Lovesong",
|
"title": "Lovesong",
|
||||||
"cleanTitle": "Lovesong",
|
"cleanTitle": "Lovesong",
|
||||||
"artistTitle": "Adele",
|
"authorTitle": "Adele",
|
||||||
"albumTitle": "21",
|
"bookTitle": "21",
|
||||||
"artistTitleInfo": {
|
"authorTitleInfo": {
|
||||||
"title": "Adele",
|
"title": "Adele",
|
||||||
"year": 2011
|
"year": 2011
|
||||||
},
|
},
|
||||||
"artistMBId": "cc2c9c3c-b7bc-4b8b-84d8-4fbd8779e493",
|
"authorMBId": "cc2c9c3c-b7bc-4b8b-84d8-4fbd8779e493",
|
||||||
"albumMBId": "e4174758-d333-4a8e-a31f-dd0edd51518e",
|
"bookMBId": "e4174758-d333-4a8e-a31f-dd0edd51518e",
|
||||||
"releaseMBId": "768bc7f7-6b91-4b57-8a7b-1508636719e6",
|
"releaseMBId": "768bc7f7-6b91-4b57-8a7b-1508636719e6",
|
||||||
"recordingMBId": "7932ba40-a0d3-4a7e-8d85-b351fd33317e",
|
"recordingMBId": "7932ba40-a0d3-4a7e-8d85-b351fd33317e",
|
||||||
"discNumber": 1,
|
"discNumber": 1,
|
||||||
@@ -630,14 +630,14 @@
|
|||||||
"fileTrackInfo": {
|
"fileTrackInfo": {
|
||||||
"title": "Someone Like You",
|
"title": "Someone Like You",
|
||||||
"cleanTitle": "Someone Like You",
|
"cleanTitle": "Someone Like You",
|
||||||
"artistTitle": "Adele",
|
"authorTitle": "Adele",
|
||||||
"albumTitle": "21",
|
"bookTitle": "21",
|
||||||
"artistTitleInfo": {
|
"authorTitleInfo": {
|
||||||
"title": "Adele",
|
"title": "Adele",
|
||||||
"year": 2011
|
"year": 2011
|
||||||
},
|
},
|
||||||
"artistMBId": "cc2c9c3c-b7bc-4b8b-84d8-4fbd8779e493",
|
"authorMBId": "cc2c9c3c-b7bc-4b8b-84d8-4fbd8779e493",
|
||||||
"albumMBId": "e4174758-d333-4a8e-a31f-dd0edd51518e",
|
"bookMBId": "e4174758-d333-4a8e-a31f-dd0edd51518e",
|
||||||
"releaseMBId": "768bc7f7-6b91-4b57-8a7b-1508636719e6",
|
"releaseMBId": "768bc7f7-6b91-4b57-8a7b-1508636719e6",
|
||||||
"recordingMBId": "028efe7f-cdfb-4135-846f-848f2fff15b1",
|
"recordingMBId": "028efe7f-cdfb-4135-846f-848f2fff15b1",
|
||||||
"discNumber": 1,
|
"discNumber": 1,
|
||||||
@@ -677,14 +677,14 @@
|
|||||||
"fileTrackInfo": {
|
"fileTrackInfo": {
|
||||||
"title": "I Found a Boy",
|
"title": "I Found a Boy",
|
||||||
"cleanTitle": "I Found a Boy",
|
"cleanTitle": "I Found a Boy",
|
||||||
"artistTitle": "Adele",
|
"authorTitle": "Adele",
|
||||||
"albumTitle": "21",
|
"bookTitle": "21",
|
||||||
"artistTitleInfo": {
|
"authorTitleInfo": {
|
||||||
"title": "Adele",
|
"title": "Adele",
|
||||||
"year": 2011
|
"year": 2011
|
||||||
},
|
},
|
||||||
"artistMBId": "cc2c9c3c-b7bc-4b8b-84d8-4fbd8779e493",
|
"authorMBId": "cc2c9c3c-b7bc-4b8b-84d8-4fbd8779e493",
|
||||||
"albumMBId": "e4174758-d333-4a8e-a31f-dd0edd51518e",
|
"bookMBId": "e4174758-d333-4a8e-a31f-dd0edd51518e",
|
||||||
"releaseMBId": "768bc7f7-6b91-4b57-8a7b-1508636719e6",
|
"releaseMBId": "768bc7f7-6b91-4b57-8a7b-1508636719e6",
|
||||||
"recordingMBId": "a027bfd5-c002-4a85-906e-f2c613c45022",
|
"recordingMBId": "a027bfd5-c002-4a85-906e-f2c613c45022",
|
||||||
"discNumber": 1,
|
"discNumber": 1,
|
||||||
@@ -724,14 +724,14 @@
|
|||||||
"fileTrackInfo": {
|
"fileTrackInfo": {
|
||||||
"title": "Turning Tables (live acoustic)",
|
"title": "Turning Tables (live acoustic)",
|
||||||
"cleanTitle": "Turning Tables (live acoustic)",
|
"cleanTitle": "Turning Tables (live acoustic)",
|
||||||
"artistTitle": "Adele",
|
"authorTitle": "Adele",
|
||||||
"albumTitle": "21",
|
"bookTitle": "21",
|
||||||
"artistTitleInfo": {
|
"authorTitleInfo": {
|
||||||
"title": "Adele",
|
"title": "Adele",
|
||||||
"year": 2011
|
"year": 2011
|
||||||
},
|
},
|
||||||
"artistMBId": "cc2c9c3c-b7bc-4b8b-84d8-4fbd8779e493",
|
"authorMBId": "cc2c9c3c-b7bc-4b8b-84d8-4fbd8779e493",
|
||||||
"albumMBId": "e4174758-d333-4a8e-a31f-dd0edd51518e",
|
"bookMBId": "e4174758-d333-4a8e-a31f-dd0edd51518e",
|
||||||
"releaseMBId": "768bc7f7-6b91-4b57-8a7b-1508636719e6",
|
"releaseMBId": "768bc7f7-6b91-4b57-8a7b-1508636719e6",
|
||||||
"recordingMBId": "b2e47e6d-b69a-420a-aa52-31d3f38978ed",
|
"recordingMBId": "b2e47e6d-b69a-420a-aa52-31d3f38978ed",
|
||||||
"discNumber": 1,
|
"discNumber": 1,
|
||||||
@@ -771,14 +771,14 @@
|
|||||||
"fileTrackInfo": {
|
"fileTrackInfo": {
|
||||||
"title": "Don’t You Remember (live acoustic)",
|
"title": "Don’t You Remember (live acoustic)",
|
||||||
"cleanTitle": "Don’t You Remember (live acoustic)",
|
"cleanTitle": "Don’t You Remember (live acoustic)",
|
||||||
"artistTitle": "Adele",
|
"authorTitle": "Adele",
|
||||||
"albumTitle": "21",
|
"bookTitle": "21",
|
||||||
"artistTitleInfo": {
|
"authorTitleInfo": {
|
||||||
"title": "Adele",
|
"title": "Adele",
|
||||||
"year": 2011
|
"year": 2011
|
||||||
},
|
},
|
||||||
"artistMBId": "cc2c9c3c-b7bc-4b8b-84d8-4fbd8779e493",
|
"authorMBId": "cc2c9c3c-b7bc-4b8b-84d8-4fbd8779e493",
|
||||||
"albumMBId": "e4174758-d333-4a8e-a31f-dd0edd51518e",
|
"bookMBId": "e4174758-d333-4a8e-a31f-dd0edd51518e",
|
||||||
"releaseMBId": "768bc7f7-6b91-4b57-8a7b-1508636719e6",
|
"releaseMBId": "768bc7f7-6b91-4b57-8a7b-1508636719e6",
|
||||||
"recordingMBId": "b19a4995-7fbf-406a-8ff1-db5b8896bd28",
|
"recordingMBId": "b19a4995-7fbf-406a-8ff1-db5b8896bd28",
|
||||||
"discNumber": 1,
|
"discNumber": 1,
|
||||||
@@ -818,14 +818,14 @@
|
|||||||
"fileTrackInfo": {
|
"fileTrackInfo": {
|
||||||
"title": "Someone Like You (live acoustic)",
|
"title": "Someone Like You (live acoustic)",
|
||||||
"cleanTitle": "Someone Like You (live acoustic)",
|
"cleanTitle": "Someone Like You (live acoustic)",
|
||||||
"artistTitle": "Adele",
|
"authorTitle": "Adele",
|
||||||
"albumTitle": "21",
|
"bookTitle": "21",
|
||||||
"artistTitleInfo": {
|
"authorTitleInfo": {
|
||||||
"title": "Adele",
|
"title": "Adele",
|
||||||
"year": 2011
|
"year": 2011
|
||||||
},
|
},
|
||||||
"artistMBId": "cc2c9c3c-b7bc-4b8b-84d8-4fbd8779e493",
|
"authorMBId": "cc2c9c3c-b7bc-4b8b-84d8-4fbd8779e493",
|
||||||
"albumMBId": "e4174758-d333-4a8e-a31f-dd0edd51518e",
|
"bookMBId": "e4174758-d333-4a8e-a31f-dd0edd51518e",
|
||||||
"releaseMBId": "768bc7f7-6b91-4b57-8a7b-1508636719e6",
|
"releaseMBId": "768bc7f7-6b91-4b57-8a7b-1508636719e6",
|
||||||
"recordingMBId": "c365d988-0f2d-4313-9c5f-a557c30f027b",
|
"recordingMBId": "c365d988-0f2d-4313-9c5f-a557c30f027b",
|
||||||
"discNumber": 1,
|
"discNumber": 1,
|
||||||
@@ -865,14 +865,14 @@
|
|||||||
"fileTrackInfo": {
|
"fileTrackInfo": {
|
||||||
"title": "Hello",
|
"title": "Hello",
|
||||||
"cleanTitle": "Hello",
|
"cleanTitle": "Hello",
|
||||||
"artistTitle": "Adele",
|
"authorTitle": "Adele",
|
||||||
"albumTitle": "25",
|
"bookTitle": "25",
|
||||||
"artistTitleInfo": {
|
"authorTitleInfo": {
|
||||||
"title": "Adele",
|
"title": "Adele",
|
||||||
"year": 2015
|
"year": 2015
|
||||||
},
|
},
|
||||||
"artistMBId": "cc2c9c3c-b7bc-4b8b-84d8-4fbd8779e493",
|
"authorMBId": "cc2c9c3c-b7bc-4b8b-84d8-4fbd8779e493",
|
||||||
"albumMBId": "5537624c-3d2f-4f5c-8099-df916082c85c",
|
"bookMBId": "5537624c-3d2f-4f5c-8099-df916082c85c",
|
||||||
"releaseMBId": "97189482-89ee-4d31-90c7-ba07b412d7f9",
|
"releaseMBId": "97189482-89ee-4d31-90c7-ba07b412d7f9",
|
||||||
"recordingMBId": "0a8e8d55-4b83-4f8a-9732-fbb5ded9f344",
|
"recordingMBId": "0a8e8d55-4b83-4f8a-9732-fbb5ded9f344",
|
||||||
"discNumber": 1,
|
"discNumber": 1,
|
||||||
@@ -912,14 +912,14 @@
|
|||||||
"fileTrackInfo": {
|
"fileTrackInfo": {
|
||||||
"title": "Send My Love (to Your New Lover)",
|
"title": "Send My Love (to Your New Lover)",
|
||||||
"cleanTitle": "Send My Love (to Your New Lover)",
|
"cleanTitle": "Send My Love (to Your New Lover)",
|
||||||
"artistTitle": "Adele",
|
"authorTitle": "Adele",
|
||||||
"albumTitle": "25",
|
"bookTitle": "25",
|
||||||
"artistTitleInfo": {
|
"authorTitleInfo": {
|
||||||
"title": "Adele",
|
"title": "Adele",
|
||||||
"year": 2015
|
"year": 2015
|
||||||
},
|
},
|
||||||
"artistMBId": "cc2c9c3c-b7bc-4b8b-84d8-4fbd8779e493",
|
"authorMBId": "cc2c9c3c-b7bc-4b8b-84d8-4fbd8779e493",
|
||||||
"albumMBId": "5537624c-3d2f-4f5c-8099-df916082c85c",
|
"bookMBId": "5537624c-3d2f-4f5c-8099-df916082c85c",
|
||||||
"releaseMBId": "97189482-89ee-4d31-90c7-ba07b412d7f9",
|
"releaseMBId": "97189482-89ee-4d31-90c7-ba07b412d7f9",
|
||||||
"recordingMBId": "1e74cd4c-cfa7-4bdb-99da-41869f5f1171",
|
"recordingMBId": "1e74cd4c-cfa7-4bdb-99da-41869f5f1171",
|
||||||
"discNumber": 1,
|
"discNumber": 1,
|
||||||
@@ -959,14 +959,14 @@
|
|||||||
"fileTrackInfo": {
|
"fileTrackInfo": {
|
||||||
"title": "I Miss You",
|
"title": "I Miss You",
|
||||||
"cleanTitle": "I Miss You",
|
"cleanTitle": "I Miss You",
|
||||||
"artistTitle": "Adele",
|
"authorTitle": "Adele",
|
||||||
"albumTitle": "25",
|
"bookTitle": "25",
|
||||||
"artistTitleInfo": {
|
"authorTitleInfo": {
|
||||||
"title": "Adele",
|
"title": "Adele",
|
||||||
"year": 2015
|
"year": 2015
|
||||||
},
|
},
|
||||||
"artistMBId": "cc2c9c3c-b7bc-4b8b-84d8-4fbd8779e493",
|
"authorMBId": "cc2c9c3c-b7bc-4b8b-84d8-4fbd8779e493",
|
||||||
"albumMBId": "5537624c-3d2f-4f5c-8099-df916082c85c",
|
"bookMBId": "5537624c-3d2f-4f5c-8099-df916082c85c",
|
||||||
"releaseMBId": "97189482-89ee-4d31-90c7-ba07b412d7f9",
|
"releaseMBId": "97189482-89ee-4d31-90c7-ba07b412d7f9",
|
||||||
"recordingMBId": "20594682-fa10-43e8-80fa-b116c68f1b7f",
|
"recordingMBId": "20594682-fa10-43e8-80fa-b116c68f1b7f",
|
||||||
"discNumber": 1,
|
"discNumber": 1,
|
||||||
@@ -1006,14 +1006,14 @@
|
|||||||
"fileTrackInfo": {
|
"fileTrackInfo": {
|
||||||
"title": "When We Were Young",
|
"title": "When We Were Young",
|
||||||
"cleanTitle": "When We Were Young",
|
"cleanTitle": "When We Were Young",
|
||||||
"artistTitle": "Adele",
|
"authorTitle": "Adele",
|
||||||
"albumTitle": "25",
|
"bookTitle": "25",
|
||||||
"artistTitleInfo": {
|
"authorTitleInfo": {
|
||||||
"title": "Adele",
|
"title": "Adele",
|
||||||
"year": 2015
|
"year": 2015
|
||||||
},
|
},
|
||||||
"artistMBId": "cc2c9c3c-b7bc-4b8b-84d8-4fbd8779e493",
|
"authorMBId": "cc2c9c3c-b7bc-4b8b-84d8-4fbd8779e493",
|
||||||
"albumMBId": "5537624c-3d2f-4f5c-8099-df916082c85c",
|
"bookMBId": "5537624c-3d2f-4f5c-8099-df916082c85c",
|
||||||
"releaseMBId": "97189482-89ee-4d31-90c7-ba07b412d7f9",
|
"releaseMBId": "97189482-89ee-4d31-90c7-ba07b412d7f9",
|
||||||
"recordingMBId": "c5ad2611-071b-4003-bb22-eee8b4f48fe9",
|
"recordingMBId": "c5ad2611-071b-4003-bb22-eee8b4f48fe9",
|
||||||
"discNumber": 1,
|
"discNumber": 1,
|
||||||
@@ -1053,14 +1053,14 @@
|
|||||||
"fileTrackInfo": {
|
"fileTrackInfo": {
|
||||||
"title": "Remedy",
|
"title": "Remedy",
|
||||||
"cleanTitle": "Remedy",
|
"cleanTitle": "Remedy",
|
||||||
"artistTitle": "Adele",
|
"authorTitle": "Adele",
|
||||||
"albumTitle": "25",
|
"bookTitle": "25",
|
||||||
"artistTitleInfo": {
|
"authorTitleInfo": {
|
||||||
"title": "Adele",
|
"title": "Adele",
|
||||||
"year": 2015
|
"year": 2015
|
||||||
},
|
},
|
||||||
"artistMBId": "cc2c9c3c-b7bc-4b8b-84d8-4fbd8779e493",
|
"authorMBId": "cc2c9c3c-b7bc-4b8b-84d8-4fbd8779e493",
|
||||||
"albumMBId": "5537624c-3d2f-4f5c-8099-df916082c85c",
|
"bookMBId": "5537624c-3d2f-4f5c-8099-df916082c85c",
|
||||||
"releaseMBId": "97189482-89ee-4d31-90c7-ba07b412d7f9",
|
"releaseMBId": "97189482-89ee-4d31-90c7-ba07b412d7f9",
|
||||||
"recordingMBId": "cdc9f701-60b4-4e37-a94f-87d0e396f2bc",
|
"recordingMBId": "cdc9f701-60b4-4e37-a94f-87d0e396f2bc",
|
||||||
"discNumber": 1,
|
"discNumber": 1,
|
||||||
@@ -1100,14 +1100,14 @@
|
|||||||
"fileTrackInfo": {
|
"fileTrackInfo": {
|
||||||
"title": "Water Under the Bridge",
|
"title": "Water Under the Bridge",
|
||||||
"cleanTitle": "Water Under the Bridge",
|
"cleanTitle": "Water Under the Bridge",
|
||||||
"artistTitle": "Adele",
|
"authorTitle": "Adele",
|
||||||
"albumTitle": "25",
|
"bookTitle": "25",
|
||||||
"artistTitleInfo": {
|
"authorTitleInfo": {
|
||||||
"title": "Adele",
|
"title": "Adele",
|
||||||
"year": 2015
|
"year": 2015
|
||||||
},
|
},
|
||||||
"artistMBId": "cc2c9c3c-b7bc-4b8b-84d8-4fbd8779e493",
|
"authorMBId": "cc2c9c3c-b7bc-4b8b-84d8-4fbd8779e493",
|
||||||
"albumMBId": "5537624c-3d2f-4f5c-8099-df916082c85c",
|
"bookMBId": "5537624c-3d2f-4f5c-8099-df916082c85c",
|
||||||
"releaseMBId": "97189482-89ee-4d31-90c7-ba07b412d7f9",
|
"releaseMBId": "97189482-89ee-4d31-90c7-ba07b412d7f9",
|
||||||
"recordingMBId": "ade2f0f3-39bf-46ad-a44d-7fc4a8069db7",
|
"recordingMBId": "ade2f0f3-39bf-46ad-a44d-7fc4a8069db7",
|
||||||
"discNumber": 1,
|
"discNumber": 1,
|
||||||
@@ -1147,14 +1147,14 @@
|
|||||||
"fileTrackInfo": {
|
"fileTrackInfo": {
|
||||||
"title": "River Lea",
|
"title": "River Lea",
|
||||||
"cleanTitle": "River Lea",
|
"cleanTitle": "River Lea",
|
||||||
"artistTitle": "Adele",
|
"authorTitle": "Adele",
|
||||||
"albumTitle": "25",
|
"bookTitle": "25",
|
||||||
"artistTitleInfo": {
|
"authorTitleInfo": {
|
||||||
"title": "Adele",
|
"title": "Adele",
|
||||||
"year": 2015
|
"year": 2015
|
||||||
},
|
},
|
||||||
"artistMBId": "cc2c9c3c-b7bc-4b8b-84d8-4fbd8779e493",
|
"authorMBId": "cc2c9c3c-b7bc-4b8b-84d8-4fbd8779e493",
|
||||||
"albumMBId": "5537624c-3d2f-4f5c-8099-df916082c85c",
|
"bookMBId": "5537624c-3d2f-4f5c-8099-df916082c85c",
|
||||||
"releaseMBId": "97189482-89ee-4d31-90c7-ba07b412d7f9",
|
"releaseMBId": "97189482-89ee-4d31-90c7-ba07b412d7f9",
|
||||||
"recordingMBId": "b7c37d3d-feea-4a73-8346-9e2392a292e6",
|
"recordingMBId": "b7c37d3d-feea-4a73-8346-9e2392a292e6",
|
||||||
"discNumber": 1,
|
"discNumber": 1,
|
||||||
@@ -1194,14 +1194,14 @@
|
|||||||
"fileTrackInfo": {
|
"fileTrackInfo": {
|
||||||
"title": "Love in the Dark",
|
"title": "Love in the Dark",
|
||||||
"cleanTitle": "Love in the Dark",
|
"cleanTitle": "Love in the Dark",
|
||||||
"artistTitle": "Adele",
|
"authorTitle": "Adele",
|
||||||
"albumTitle": "25",
|
"bookTitle": "25",
|
||||||
"artistTitleInfo": {
|
"authorTitleInfo": {
|
||||||
"title": "Adele",
|
"title": "Adele",
|
||||||
"year": 2015
|
"year": 2015
|
||||||
},
|
},
|
||||||
"artistMBId": "cc2c9c3c-b7bc-4b8b-84d8-4fbd8779e493",
|
"authorMBId": "cc2c9c3c-b7bc-4b8b-84d8-4fbd8779e493",
|
||||||
"albumMBId": "5537624c-3d2f-4f5c-8099-df916082c85c",
|
"bookMBId": "5537624c-3d2f-4f5c-8099-df916082c85c",
|
||||||
"releaseMBId": "97189482-89ee-4d31-90c7-ba07b412d7f9",
|
"releaseMBId": "97189482-89ee-4d31-90c7-ba07b412d7f9",
|
||||||
"recordingMBId": "dedf519d-8eca-4756-9f93-c390308e0c1b",
|
"recordingMBId": "dedf519d-8eca-4756-9f93-c390308e0c1b",
|
||||||
"discNumber": 1,
|
"discNumber": 1,
|
||||||
@@ -1241,14 +1241,14 @@
|
|||||||
"fileTrackInfo": {
|
"fileTrackInfo": {
|
||||||
"title": "Million Years Ago",
|
"title": "Million Years Ago",
|
||||||
"cleanTitle": "Million Years Ago",
|
"cleanTitle": "Million Years Ago",
|
||||||
"artistTitle": "Adele",
|
"authorTitle": "Adele",
|
||||||
"albumTitle": "25",
|
"bookTitle": "25",
|
||||||
"artistTitleInfo": {
|
"authorTitleInfo": {
|
||||||
"title": "Adele",
|
"title": "Adele",
|
||||||
"year": 2015
|
"year": 2015
|
||||||
},
|
},
|
||||||
"artistMBId": "cc2c9c3c-b7bc-4b8b-84d8-4fbd8779e493",
|
"authorMBId": "cc2c9c3c-b7bc-4b8b-84d8-4fbd8779e493",
|
||||||
"albumMBId": "5537624c-3d2f-4f5c-8099-df916082c85c",
|
"bookMBId": "5537624c-3d2f-4f5c-8099-df916082c85c",
|
||||||
"releaseMBId": "97189482-89ee-4d31-90c7-ba07b412d7f9",
|
"releaseMBId": "97189482-89ee-4d31-90c7-ba07b412d7f9",
|
||||||
"recordingMBId": "870c62b6-ba2c-4873-b962-6289128e4a90",
|
"recordingMBId": "870c62b6-ba2c-4873-b962-6289128e4a90",
|
||||||
"discNumber": 1,
|
"discNumber": 1,
|
||||||
@@ -1288,14 +1288,14 @@
|
|||||||
"fileTrackInfo": {
|
"fileTrackInfo": {
|
||||||
"title": "All I Ask",
|
"title": "All I Ask",
|
||||||
"cleanTitle": "All I Ask",
|
"cleanTitle": "All I Ask",
|
||||||
"artistTitle": "Adele",
|
"authorTitle": "Adele",
|
||||||
"albumTitle": "25",
|
"bookTitle": "25",
|
||||||
"artistTitleInfo": {
|
"authorTitleInfo": {
|
||||||
"title": "Adele",
|
"title": "Adele",
|
||||||
"year": 2015
|
"year": 2015
|
||||||
},
|
},
|
||||||
"artistMBId": "cc2c9c3c-b7bc-4b8b-84d8-4fbd8779e493",
|
"authorMBId": "cc2c9c3c-b7bc-4b8b-84d8-4fbd8779e493",
|
||||||
"albumMBId": "5537624c-3d2f-4f5c-8099-df916082c85c",
|
"bookMBId": "5537624c-3d2f-4f5c-8099-df916082c85c",
|
||||||
"releaseMBId": "97189482-89ee-4d31-90c7-ba07b412d7f9",
|
"releaseMBId": "97189482-89ee-4d31-90c7-ba07b412d7f9",
|
||||||
"recordingMBId": "bfe7a94e-4161-4802-8916-efe57e611842",
|
"recordingMBId": "bfe7a94e-4161-4802-8916-efe57e611842",
|
||||||
"discNumber": 1,
|
"discNumber": 1,
|
||||||
@@ -1335,14 +1335,14 @@
|
|||||||
"fileTrackInfo": {
|
"fileTrackInfo": {
|
||||||
"title": "Sweetest Devotion",
|
"title": "Sweetest Devotion",
|
||||||
"cleanTitle": "Sweetest Devotion",
|
"cleanTitle": "Sweetest Devotion",
|
||||||
"artistTitle": "Adele",
|
"authorTitle": "Adele",
|
||||||
"albumTitle": "25",
|
"bookTitle": "25",
|
||||||
"artistTitleInfo": {
|
"authorTitleInfo": {
|
||||||
"title": "Adele",
|
"title": "Adele",
|
||||||
"year": 2015
|
"year": 2015
|
||||||
},
|
},
|
||||||
"artistMBId": "cc2c9c3c-b7bc-4b8b-84d8-4fbd8779e493",
|
"authorMBId": "cc2c9c3c-b7bc-4b8b-84d8-4fbd8779e493",
|
||||||
"albumMBId": "5537624c-3d2f-4f5c-8099-df916082c85c",
|
"bookMBId": "5537624c-3d2f-4f5c-8099-df916082c85c",
|
||||||
"releaseMBId": "97189482-89ee-4d31-90c7-ba07b412d7f9",
|
"releaseMBId": "97189482-89ee-4d31-90c7-ba07b412d7f9",
|
||||||
"recordingMBId": "b2c8aed1-777d-409b-941e-7d4c594697a2",
|
"recordingMBId": "b2c8aed1-777d-409b-941e-7d4c594697a2",
|
||||||
"discNumber": 1,
|
"discNumber": 1,
|
||||||
@@ -1382,14 +1382,14 @@
|
|||||||
"fileTrackInfo": {
|
"fileTrackInfo": {
|
||||||
"title": "Right as Rain",
|
"title": "Right as Rain",
|
||||||
"cleanTitle": "Right as Rain",
|
"cleanTitle": "Right as Rain",
|
||||||
"artistTitle": "Adele",
|
"authorTitle": "Adele",
|
||||||
"albumTitle": "19",
|
"bookTitle": "19",
|
||||||
"artistTitleInfo": {
|
"authorTitleInfo": {
|
||||||
"title": "Adele",
|
"title": "Adele",
|
||||||
"year": 2008
|
"year": 2008
|
||||||
},
|
},
|
||||||
"artistMBId": "cc2c9c3c-b7bc-4b8b-84d8-4fbd8779e493",
|
"authorMBId": "cc2c9c3c-b7bc-4b8b-84d8-4fbd8779e493",
|
||||||
"albumMBId": "9796da06-2d59-3176-8598-2105f31ee54a",
|
"bookMBId": "9796da06-2d59-3176-8598-2105f31ee54a",
|
||||||
"releaseMBId": "9105a5b3-eb68-3a03-9aa8-f3495e602a4f",
|
"releaseMBId": "9105a5b3-eb68-3a03-9aa8-f3495e602a4f",
|
||||||
"recordingMBId": "e5aa0386-15cc-43a8-a059-b14fc39b8301",
|
"recordingMBId": "e5aa0386-15cc-43a8-a059-b14fc39b8301",
|
||||||
"trackMBId": "d98b4797-f47e-3acf-b334-54c71c9cb608",
|
"trackMBId": "d98b4797-f47e-3acf-b334-54c71c9cb608",
|
||||||
|
|||||||
@@ -2,114 +2,114 @@
|
|||||||
"expectedMusicBrainzReleaseIds": [
|
"expectedMusicBrainzReleaseIds": [
|
||||||
"9105a5b3-eb68-3a03-9aa8-f3495e602a4f"
|
"9105a5b3-eb68-3a03-9aa8-f3495e602a4f"
|
||||||
],
|
],
|
||||||
"libraryArtists": [
|
"libraryAuthors": [
|
||||||
{
|
{
|
||||||
"artist": "cc2c9c3c-b7bc-4b8b-84d8-4fbd8779e493",
|
"author": "cc2c9c3c-b7bc-4b8b-84d8-4fbd8779e493",
|
||||||
"metadataProfile": {
|
"metadataProfile": {
|
||||||
"name": "Standard",
|
"name": "Standard",
|
||||||
"primaryAlbumTypes": [
|
"primaryBookTypes": [
|
||||||
{
|
{
|
||||||
"primaryAlbumType": {
|
"primaryBookType": {
|
||||||
"id": 2,
|
"id": 2,
|
||||||
"name": "Single"
|
"name": "Single"
|
||||||
},
|
},
|
||||||
"allowed": false
|
"allowed": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"primaryAlbumType": {
|
"primaryBookType": {
|
||||||
"id": 4,
|
"id": 4,
|
||||||
"name": "Other"
|
"name": "Other"
|
||||||
},
|
},
|
||||||
"allowed": false
|
"allowed": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"primaryAlbumType": {
|
"primaryBookType": {
|
||||||
"id": 1,
|
"id": 1,
|
||||||
"name": "EP"
|
"name": "EP"
|
||||||
},
|
},
|
||||||
"allowed": false
|
"allowed": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"primaryAlbumType": {
|
"primaryBookType": {
|
||||||
"id": 3,
|
"id": 3,
|
||||||
"name": "Broadcast"
|
"name": "Broadcast"
|
||||||
},
|
},
|
||||||
"allowed": false
|
"allowed": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"primaryAlbumType": {
|
"primaryBookType": {
|
||||||
"id": 0,
|
"id": 0,
|
||||||
"name": "Album"
|
"name": "Book"
|
||||||
},
|
},
|
||||||
"allowed": true
|
"allowed": true
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"secondaryAlbumTypes": [
|
"secondaryBookTypes": [
|
||||||
{
|
{
|
||||||
"secondaryAlbumType": {
|
"secondaryBookType": {
|
||||||
"id": 0,
|
"id": 0,
|
||||||
"name": "Studio"
|
"name": "Studio"
|
||||||
},
|
},
|
||||||
"allowed": true
|
"allowed": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"secondaryAlbumType": {
|
"secondaryBookType": {
|
||||||
"id": 3,
|
"id": 3,
|
||||||
"name": "Spokenword"
|
"name": "Spokenword"
|
||||||
},
|
},
|
||||||
"allowed": false
|
"allowed": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"secondaryAlbumType": {
|
"secondaryBookType": {
|
||||||
"id": 2,
|
"id": 2,
|
||||||
"name": "Soundtrack"
|
"name": "Soundtrack"
|
||||||
},
|
},
|
||||||
"allowed": false
|
"allowed": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"secondaryAlbumType": {
|
"secondaryBookType": {
|
||||||
"id": 7,
|
"id": 7,
|
||||||
"name": "Remix"
|
"name": "Remix"
|
||||||
},
|
},
|
||||||
"allowed": false
|
"allowed": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"secondaryAlbumType": {
|
"secondaryBookType": {
|
||||||
"id": 9,
|
"id": 9,
|
||||||
"name": "Mixtape/Street"
|
"name": "Mixtape/Street"
|
||||||
},
|
},
|
||||||
"allowed": false
|
"allowed": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"secondaryAlbumType": {
|
"secondaryBookType": {
|
||||||
"id": 6,
|
"id": 6,
|
||||||
"name": "Live"
|
"name": "Live"
|
||||||
},
|
},
|
||||||
"allowed": false
|
"allowed": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"secondaryAlbumType": {
|
"secondaryBookType": {
|
||||||
"id": 4,
|
"id": 4,
|
||||||
"name": "Interview"
|
"name": "Interview"
|
||||||
},
|
},
|
||||||
"allowed": false
|
"allowed": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"secondaryAlbumType": {
|
"secondaryBookType": {
|
||||||
"id": 8,
|
"id": 8,
|
||||||
"name": "DJ-mix"
|
"name": "DJ-mix"
|
||||||
},
|
},
|
||||||
"allowed": false
|
"allowed": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"secondaryAlbumType": {
|
"secondaryBookType": {
|
||||||
"id": 10,
|
"id": 10,
|
||||||
"name": "Demo"
|
"name": "Demo"
|
||||||
},
|
},
|
||||||
"allowed": false
|
"allowed": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"secondaryAlbumType": {
|
"secondaryBookType": {
|
||||||
"id": 1,
|
"id": 1,
|
||||||
"name": "Compilation"
|
"name": "Compilation"
|
||||||
},
|
},
|
||||||
@@ -156,7 +156,7 @@
|
|||||||
{
|
{
|
||||||
"path": "/mnt/data1/ImportTest/19_no_tags/CD1/Adele - 19 - 101 - Daydreamer.mp3",
|
"path": "/mnt/data1/ImportTest/19_no_tags/CD1/Adele - 19 - 101 - Daydreamer.mp3",
|
||||||
"fileTrackInfo": {
|
"fileTrackInfo": {
|
||||||
"artistTitleInfo": {
|
"authorTitleInfo": {
|
||||||
"year": 0
|
"year": 0
|
||||||
},
|
},
|
||||||
"discNumber": 0,
|
"discNumber": 0,
|
||||||
@@ -188,7 +188,7 @@
|
|||||||
{
|
{
|
||||||
"path": "/mnt/data1/ImportTest/19_no_tags/CD1/Adele - 19 - 102 - Best for Last.mp3",
|
"path": "/mnt/data1/ImportTest/19_no_tags/CD1/Adele - 19 - 102 - Best for Last.mp3",
|
||||||
"fileTrackInfo": {
|
"fileTrackInfo": {
|
||||||
"artistTitleInfo": {
|
"authorTitleInfo": {
|
||||||
"year": 0
|
"year": 0
|
||||||
},
|
},
|
||||||
"discNumber": 0,
|
"discNumber": 0,
|
||||||
@@ -220,7 +220,7 @@
|
|||||||
{
|
{
|
||||||
"path": "/mnt/data1/ImportTest/19_no_tags/CD1/Adele - 19 - 103 - Chasing Pavements.mp3",
|
"path": "/mnt/data1/ImportTest/19_no_tags/CD1/Adele - 19 - 103 - Chasing Pavements.mp3",
|
||||||
"fileTrackInfo": {
|
"fileTrackInfo": {
|
||||||
"artistTitleInfo": {
|
"authorTitleInfo": {
|
||||||
"year": 0
|
"year": 0
|
||||||
},
|
},
|
||||||
"discNumber": 0,
|
"discNumber": 0,
|
||||||
@@ -252,7 +252,7 @@
|
|||||||
{
|
{
|
||||||
"path": "/mnt/data1/ImportTest/19_no_tags/CD1/Adele - 19 - 104 - Cold Shoulder.mp3",
|
"path": "/mnt/data1/ImportTest/19_no_tags/CD1/Adele - 19 - 104 - Cold Shoulder.mp3",
|
||||||
"fileTrackInfo": {
|
"fileTrackInfo": {
|
||||||
"artistTitleInfo": {
|
"authorTitleInfo": {
|
||||||
"year": 0
|
"year": 0
|
||||||
},
|
},
|
||||||
"discNumber": 0,
|
"discNumber": 0,
|
||||||
@@ -284,7 +284,7 @@
|
|||||||
{
|
{
|
||||||
"path": "/mnt/data1/ImportTest/19_no_tags/CD1/Adele - 19 - 105 - Crazy for You.mp3",
|
"path": "/mnt/data1/ImportTest/19_no_tags/CD1/Adele - 19 - 105 - Crazy for You.mp3",
|
||||||
"fileTrackInfo": {
|
"fileTrackInfo": {
|
||||||
"artistTitleInfo": {
|
"authorTitleInfo": {
|
||||||
"year": 0
|
"year": 0
|
||||||
},
|
},
|
||||||
"discNumber": 0,
|
"discNumber": 0,
|
||||||
@@ -316,7 +316,7 @@
|
|||||||
{
|
{
|
||||||
"path": "/mnt/data1/ImportTest/19_no_tags/CD1/Adele - 19 - 106 - Melt My Heart to Stone.mp3",
|
"path": "/mnt/data1/ImportTest/19_no_tags/CD1/Adele - 19 - 106 - Melt My Heart to Stone.mp3",
|
||||||
"fileTrackInfo": {
|
"fileTrackInfo": {
|
||||||
"artistTitleInfo": {
|
"authorTitleInfo": {
|
||||||
"year": 0
|
"year": 0
|
||||||
},
|
},
|
||||||
"discNumber": 0,
|
"discNumber": 0,
|
||||||
@@ -348,7 +348,7 @@
|
|||||||
{
|
{
|
||||||
"path": "/mnt/data1/ImportTest/19_no_tags/CD1/Adele - 19 - 107 - First Love.mp3",
|
"path": "/mnt/data1/ImportTest/19_no_tags/CD1/Adele - 19 - 107 - First Love.mp3",
|
||||||
"fileTrackInfo": {
|
"fileTrackInfo": {
|
||||||
"artistTitleInfo": {
|
"authorTitleInfo": {
|
||||||
"year": 0
|
"year": 0
|
||||||
},
|
},
|
||||||
"discNumber": 0,
|
"discNumber": 0,
|
||||||
@@ -380,7 +380,7 @@
|
|||||||
{
|
{
|
||||||
"path": "/mnt/data1/ImportTest/19_no_tags/CD1/Adele - 19 - 108 - Right as Rain.mp3",
|
"path": "/mnt/data1/ImportTest/19_no_tags/CD1/Adele - 19 - 108 - Right as Rain.mp3",
|
||||||
"fileTrackInfo": {
|
"fileTrackInfo": {
|
||||||
"artistTitleInfo": {
|
"authorTitleInfo": {
|
||||||
"year": 0
|
"year": 0
|
||||||
},
|
},
|
||||||
"discNumber": 0,
|
"discNumber": 0,
|
||||||
@@ -412,7 +412,7 @@
|
|||||||
{
|
{
|
||||||
"path": "/mnt/data1/ImportTest/19_no_tags/CD1/Adele - 19 - 109 - Make You Feel My Love.mp3",
|
"path": "/mnt/data1/ImportTest/19_no_tags/CD1/Adele - 19 - 109 - Make You Feel My Love.mp3",
|
||||||
"fileTrackInfo": {
|
"fileTrackInfo": {
|
||||||
"artistTitleInfo": {
|
"authorTitleInfo": {
|
||||||
"year": 0
|
"year": 0
|
||||||
},
|
},
|
||||||
"discNumber": 0,
|
"discNumber": 0,
|
||||||
@@ -444,7 +444,7 @@
|
|||||||
{
|
{
|
||||||
"path": "/mnt/data1/ImportTest/19_no_tags/CD1/Adele - 19 - 110 - My Same.mp3",
|
"path": "/mnt/data1/ImportTest/19_no_tags/CD1/Adele - 19 - 110 - My Same.mp3",
|
||||||
"fileTrackInfo": {
|
"fileTrackInfo": {
|
||||||
"artistTitleInfo": {
|
"authorTitleInfo": {
|
||||||
"year": 0
|
"year": 0
|
||||||
},
|
},
|
||||||
"discNumber": 0,
|
"discNumber": 0,
|
||||||
@@ -476,7 +476,7 @@
|
|||||||
{
|
{
|
||||||
"path": "/mnt/data1/ImportTest/19_no_tags/CD1/Adele - 19 - 111 - Tired.mp3",
|
"path": "/mnt/data1/ImportTest/19_no_tags/CD1/Adele - 19 - 111 - Tired.mp3",
|
||||||
"fileTrackInfo": {
|
"fileTrackInfo": {
|
||||||
"artistTitleInfo": {
|
"authorTitleInfo": {
|
||||||
"year": 0
|
"year": 0
|
||||||
},
|
},
|
||||||
"discNumber": 0,
|
"discNumber": 0,
|
||||||
@@ -508,7 +508,7 @@
|
|||||||
{
|
{
|
||||||
"path": "/mnt/data1/ImportTest/19_no_tags/CD1/Adele - 19 - 112 - Hometown Glory.mp3",
|
"path": "/mnt/data1/ImportTest/19_no_tags/CD1/Adele - 19 - 112 - Hometown Glory.mp3",
|
||||||
"fileTrackInfo": {
|
"fileTrackInfo": {
|
||||||
"artistTitleInfo": {
|
"authorTitleInfo": {
|
||||||
"year": 0
|
"year": 0
|
||||||
},
|
},
|
||||||
"discNumber": 0,
|
"discNumber": 0,
|
||||||
@@ -540,7 +540,7 @@
|
|||||||
{
|
{
|
||||||
"path": "/mnt/data1/ImportTest/19_no_tags/CD2/Adele - 19 - 201 - Chasing Pavements.mp3",
|
"path": "/mnt/data1/ImportTest/19_no_tags/CD2/Adele - 19 - 201 - Chasing Pavements.mp3",
|
||||||
"fileTrackInfo": {
|
"fileTrackInfo": {
|
||||||
"artistTitleInfo": {
|
"authorTitleInfo": {
|
||||||
"year": 0
|
"year": 0
|
||||||
},
|
},
|
||||||
"discNumber": 0,
|
"discNumber": 0,
|
||||||
@@ -572,7 +572,7 @@
|
|||||||
{
|
{
|
||||||
"path": "/mnt/data1/ImportTest/19_no_tags/CD2/Adele - 19 - 202 - Melt My Heart to Stone.mp3",
|
"path": "/mnt/data1/ImportTest/19_no_tags/CD2/Adele - 19 - 202 - Melt My Heart to Stone.mp3",
|
||||||
"fileTrackInfo": {
|
"fileTrackInfo": {
|
||||||
"artistTitleInfo": {
|
"authorTitleInfo": {
|
||||||
"year": 0
|
"year": 0
|
||||||
},
|
},
|
||||||
"discNumber": 0,
|
"discNumber": 0,
|
||||||
@@ -604,7 +604,7 @@
|
|||||||
{
|
{
|
||||||
"path": "/mnt/data1/ImportTest/19_no_tags/CD2/Adele - 19 - 203 - That's It, I Quit, I'm Moving On.mp3",
|
"path": "/mnt/data1/ImportTest/19_no_tags/CD2/Adele - 19 - 203 - That's It, I Quit, I'm Moving On.mp3",
|
||||||
"fileTrackInfo": {
|
"fileTrackInfo": {
|
||||||
"artistTitleInfo": {
|
"authorTitleInfo": {
|
||||||
"year": 0
|
"year": 0
|
||||||
},
|
},
|
||||||
"discNumber": 0,
|
"discNumber": 0,
|
||||||
@@ -636,7 +636,7 @@
|
|||||||
{
|
{
|
||||||
"path": "/mnt/data1/ImportTest/19_no_tags/CD2/Adele - 19 - 204 - Crazy for You.mp3",
|
"path": "/mnt/data1/ImportTest/19_no_tags/CD2/Adele - 19 - 204 - Crazy for You.mp3",
|
||||||
"fileTrackInfo": {
|
"fileTrackInfo": {
|
||||||
"artistTitleInfo": {
|
"authorTitleInfo": {
|
||||||
"year": 0
|
"year": 0
|
||||||
},
|
},
|
||||||
"discNumber": 0,
|
"discNumber": 0,
|
||||||
@@ -668,7 +668,7 @@
|
|||||||
{
|
{
|
||||||
"path": "/mnt/data1/ImportTest/19_no_tags/CD2/Adele - 19 - 205 - Right as Rain.mp3",
|
"path": "/mnt/data1/ImportTest/19_no_tags/CD2/Adele - 19 - 205 - Right as Rain.mp3",
|
||||||
"fileTrackInfo": {
|
"fileTrackInfo": {
|
||||||
"artistTitleInfo": {
|
"authorTitleInfo": {
|
||||||
"year": 0
|
"year": 0
|
||||||
},
|
},
|
||||||
"discNumber": 0,
|
"discNumber": 0,
|
||||||
@@ -700,7 +700,7 @@
|
|||||||
{
|
{
|
||||||
"path": "/mnt/data1/ImportTest/19_no_tags/CD2/Adele - 19 - 206 - My Same.mp3",
|
"path": "/mnt/data1/ImportTest/19_no_tags/CD2/Adele - 19 - 206 - My Same.mp3",
|
||||||
"fileTrackInfo": {
|
"fileTrackInfo": {
|
||||||
"artistTitleInfo": {
|
"authorTitleInfo": {
|
||||||
"year": 0
|
"year": 0
|
||||||
},
|
},
|
||||||
"discNumber": 0,
|
"discNumber": 0,
|
||||||
@@ -732,7 +732,7 @@
|
|||||||
{
|
{
|
||||||
"path": "/mnt/data1/ImportTest/19_no_tags/CD2/Adele - 19 - 207 - Make You Feel My Love.mp3",
|
"path": "/mnt/data1/ImportTest/19_no_tags/CD2/Adele - 19 - 207 - Make You Feel My Love.mp3",
|
||||||
"fileTrackInfo": {
|
"fileTrackInfo": {
|
||||||
"artistTitleInfo": {
|
"authorTitleInfo": {
|
||||||
"year": 0
|
"year": 0
|
||||||
},
|
},
|
||||||
"discNumber": 0,
|
"discNumber": 0,
|
||||||
@@ -764,7 +764,7 @@
|
|||||||
{
|
{
|
||||||
"path": "/mnt/data1/ImportTest/19_no_tags/CD2/Adele - 19 - 208 - Daydreamer.mp3",
|
"path": "/mnt/data1/ImportTest/19_no_tags/CD2/Adele - 19 - 208 - Daydreamer.mp3",
|
||||||
"fileTrackInfo": {
|
"fileTrackInfo": {
|
||||||
"artistTitleInfo": {
|
"authorTitleInfo": {
|
||||||
"year": 0
|
"year": 0
|
||||||
},
|
},
|
||||||
"discNumber": 0,
|
"discNumber": 0,
|
||||||
@@ -796,7 +796,7 @@
|
|||||||
{
|
{
|
||||||
"path": "/mnt/data1/ImportTest/19_no_tags/CD2/Adele - 19 - 209 - Hometown Glory.mp3",
|
"path": "/mnt/data1/ImportTest/19_no_tags/CD2/Adele - 19 - 209 - Hometown Glory.mp3",
|
||||||
"fileTrackInfo": {
|
"fileTrackInfo": {
|
||||||
"artistTitleInfo": {
|
"authorTitleInfo": {
|
||||||
"year": 0
|
"year": 0
|
||||||
},
|
},
|
||||||
"discNumber": 0,
|
"discNumber": 0,
|
||||||
@@ -828,7 +828,7 @@
|
|||||||
{
|
{
|
||||||
"path": "/mnt/data1/ImportTest/19_no_tags/CD2/Adele - 19 - 210 - Many Shades of Black.mp3",
|
"path": "/mnt/data1/ImportTest/19_no_tags/CD2/Adele - 19 - 210 - Many Shades of Black.mp3",
|
||||||
"fileTrackInfo": {
|
"fileTrackInfo": {
|
||||||
"artistTitleInfo": {
|
"authorTitleInfo": {
|
||||||
"year": 0
|
"year": 0
|
||||||
},
|
},
|
||||||
"discNumber": 0,
|
"discNumber": 0,
|
||||||
|
|||||||
@@ -2,114 +2,114 @@
|
|||||||
"expectedMusicBrainzReleaseIds": [
|
"expectedMusicBrainzReleaseIds": [
|
||||||
"134f5f3e-8b5f-46ab-809d-8c0dbc794f3e"
|
"134f5f3e-8b5f-46ab-809d-8c0dbc794f3e"
|
||||||
],
|
],
|
||||||
"libraryArtists": [
|
"libraryAuthors": [
|
||||||
{
|
{
|
||||||
"artist": "c296e10c-110a-4103-9e77-47bfebb7fb2e",
|
"author": "c296e10c-110a-4103-9e77-47bfebb7fb2e",
|
||||||
"metadataProfile": {
|
"metadataProfile": {
|
||||||
"name": "Standard",
|
"name": "Standard",
|
||||||
"primaryAlbumTypes": [
|
"primaryBookTypes": [
|
||||||
{
|
{
|
||||||
"primaryAlbumType": {
|
"primaryBookType": {
|
||||||
"id": 2,
|
"id": 2,
|
||||||
"name": "Single"
|
"name": "Single"
|
||||||
},
|
},
|
||||||
"allowed": false
|
"allowed": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"primaryAlbumType": {
|
"primaryBookType": {
|
||||||
"id": 4,
|
"id": 4,
|
||||||
"name": "Other"
|
"name": "Other"
|
||||||
},
|
},
|
||||||
"allowed": false
|
"allowed": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"primaryAlbumType": {
|
"primaryBookType": {
|
||||||
"id": 1,
|
"id": 1,
|
||||||
"name": "EP"
|
"name": "EP"
|
||||||
},
|
},
|
||||||
"allowed": false
|
"allowed": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"primaryAlbumType": {
|
"primaryBookType": {
|
||||||
"id": 3,
|
"id": 3,
|
||||||
"name": "Broadcast"
|
"name": "Broadcast"
|
||||||
},
|
},
|
||||||
"allowed": false
|
"allowed": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"primaryAlbumType": {
|
"primaryBookType": {
|
||||||
"id": 0,
|
"id": 0,
|
||||||
"name": "Album"
|
"name": "Book"
|
||||||
},
|
},
|
||||||
"allowed": true
|
"allowed": true
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"secondaryAlbumTypes": [
|
"secondaryBookTypes": [
|
||||||
{
|
{
|
||||||
"secondaryAlbumType": {
|
"secondaryBookType": {
|
||||||
"id": 0,
|
"id": 0,
|
||||||
"name": "Studio"
|
"name": "Studio"
|
||||||
},
|
},
|
||||||
"allowed": true
|
"allowed": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"secondaryAlbumType": {
|
"secondaryBookType": {
|
||||||
"id": 3,
|
"id": 3,
|
||||||
"name": "Spokenword"
|
"name": "Spokenword"
|
||||||
},
|
},
|
||||||
"allowed": false
|
"allowed": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"secondaryAlbumType": {
|
"secondaryBookType": {
|
||||||
"id": 2,
|
"id": 2,
|
||||||
"name": "Soundtrack"
|
"name": "Soundtrack"
|
||||||
},
|
},
|
||||||
"allowed": false
|
"allowed": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"secondaryAlbumType": {
|
"secondaryBookType": {
|
||||||
"id": 7,
|
"id": 7,
|
||||||
"name": "Remix"
|
"name": "Remix"
|
||||||
},
|
},
|
||||||
"allowed": false
|
"allowed": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"secondaryAlbumType": {
|
"secondaryBookType": {
|
||||||
"id": 9,
|
"id": 9,
|
||||||
"name": "Mixtape/Street"
|
"name": "Mixtape/Street"
|
||||||
},
|
},
|
||||||
"allowed": false
|
"allowed": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"secondaryAlbumType": {
|
"secondaryBookType": {
|
||||||
"id": 6,
|
"id": 6,
|
||||||
"name": "Live"
|
"name": "Live"
|
||||||
},
|
},
|
||||||
"allowed": false
|
"allowed": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"secondaryAlbumType": {
|
"secondaryBookType": {
|
||||||
"id": 4,
|
"id": 4,
|
||||||
"name": "Interview"
|
"name": "Interview"
|
||||||
},
|
},
|
||||||
"allowed": false
|
"allowed": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"secondaryAlbumType": {
|
"secondaryBookType": {
|
||||||
"id": 8,
|
"id": 8,
|
||||||
"name": "DJ-mix"
|
"name": "DJ-mix"
|
||||||
},
|
},
|
||||||
"allowed": false
|
"allowed": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"secondaryAlbumType": {
|
"secondaryBookType": {
|
||||||
"id": 10,
|
"id": 10,
|
||||||
"name": "Demo"
|
"name": "Demo"
|
||||||
},
|
},
|
||||||
"allowed": false
|
"allowed": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"secondaryAlbumType": {
|
"secondaryBookType": {
|
||||||
"id": 1,
|
"id": 1,
|
||||||
"name": "Compilation"
|
"name": "Compilation"
|
||||||
},
|
},
|
||||||
@@ -158,9 +158,9 @@
|
|||||||
"fileTrackInfo": {
|
"fileTrackInfo": {
|
||||||
"title": "Positive Vibration",
|
"title": "Positive Vibration",
|
||||||
"cleanTitle": "Positive Vibration",
|
"cleanTitle": "Positive Vibration",
|
||||||
"artistTitle": "Bob Marley & The Wailers",
|
"authorTitle": "Bob Marley & The Wailers",
|
||||||
"albumTitle": "Rastaman Vibration (Remastered)",
|
"bookTitle": "Rastaman Vibration (Remastered)",
|
||||||
"artistTitleInfo": {
|
"authorTitleInfo": {
|
||||||
"title": "Bob Marley & The Wailers",
|
"title": "Bob Marley & The Wailers",
|
||||||
"year": 2002
|
"year": 2002
|
||||||
},
|
},
|
||||||
@@ -195,9 +195,9 @@
|
|||||||
"fileTrackInfo": {
|
"fileTrackInfo": {
|
||||||
"title": "Roots Rock Reggae",
|
"title": "Roots Rock Reggae",
|
||||||
"cleanTitle": "Roots Rock Reggae",
|
"cleanTitle": "Roots Rock Reggae",
|
||||||
"artistTitle": "Bob Marley & The Wailers",
|
"authorTitle": "Bob Marley & The Wailers",
|
||||||
"albumTitle": "Rastaman Vibration (Remastered",
|
"bookTitle": "Rastaman Vibration (Remastered",
|
||||||
"artistTitleInfo": {
|
"authorTitleInfo": {
|
||||||
"title": "Bob Marley & The Wailers",
|
"title": "Bob Marley & The Wailers",
|
||||||
"year": 2002
|
"year": 2002
|
||||||
},
|
},
|
||||||
@@ -232,9 +232,9 @@
|
|||||||
"fileTrackInfo": {
|
"fileTrackInfo": {
|
||||||
"title": "Johnny Was",
|
"title": "Johnny Was",
|
||||||
"cleanTitle": "Johnny Was",
|
"cleanTitle": "Johnny Was",
|
||||||
"artistTitle": "Bob Marley & The Wailers",
|
"authorTitle": "Bob Marley & The Wailers",
|
||||||
"albumTitle": "Rastaman Vibration (Remastered",
|
"bookTitle": "Rastaman Vibration (Remastered",
|
||||||
"artistTitleInfo": {
|
"authorTitleInfo": {
|
||||||
"title": "Bob Marley & The Wailers",
|
"title": "Bob Marley & The Wailers",
|
||||||
"year": 2002
|
"year": 2002
|
||||||
},
|
},
|
||||||
@@ -269,9 +269,9 @@
|
|||||||
"fileTrackInfo": {
|
"fileTrackInfo": {
|
||||||
"title": "Cry To Me",
|
"title": "Cry To Me",
|
||||||
"cleanTitle": "Cry To Me",
|
"cleanTitle": "Cry To Me",
|
||||||
"artistTitle": "Bob Marley & The Wailers",
|
"authorTitle": "Bob Marley & The Wailers",
|
||||||
"albumTitle": "Rastaman Vibration (Remastered",
|
"bookTitle": "Rastaman Vibration (Remastered",
|
||||||
"artistTitleInfo": {
|
"authorTitleInfo": {
|
||||||
"title": "Bob Marley & The Wailers",
|
"title": "Bob Marley & The Wailers",
|
||||||
"year": 2002
|
"year": 2002
|
||||||
},
|
},
|
||||||
@@ -306,9 +306,9 @@
|
|||||||
"fileTrackInfo": {
|
"fileTrackInfo": {
|
||||||
"title": "Want More",
|
"title": "Want More",
|
||||||
"cleanTitle": "Want More",
|
"cleanTitle": "Want More",
|
||||||
"artistTitle": "Bob Marley & The Wailers",
|
"authorTitle": "Bob Marley & The Wailers",
|
||||||
"albumTitle": "Rastaman Vibration (Remastered",
|
"bookTitle": "Rastaman Vibration (Remastered",
|
||||||
"artistTitleInfo": {
|
"authorTitleInfo": {
|
||||||
"title": "Bob Marley & The Wailers",
|
"title": "Bob Marley & The Wailers",
|
||||||
"year": 2002
|
"year": 2002
|
||||||
},
|
},
|
||||||
@@ -343,9 +343,9 @@
|
|||||||
"fileTrackInfo": {
|
"fileTrackInfo": {
|
||||||
"title": "Crazy Baldhead",
|
"title": "Crazy Baldhead",
|
||||||
"cleanTitle": "Crazy Baldhead",
|
"cleanTitle": "Crazy Baldhead",
|
||||||
"artistTitle": "Bob Marley & The Wailers",
|
"authorTitle": "Bob Marley & The Wailers",
|
||||||
"albumTitle": "Rastaman Vibration (Remastered",
|
"bookTitle": "Rastaman Vibration (Remastered",
|
||||||
"artistTitleInfo": {
|
"authorTitleInfo": {
|
||||||
"title": "Bob Marley & The Wailers",
|
"title": "Bob Marley & The Wailers",
|
||||||
"year": 2002
|
"year": 2002
|
||||||
},
|
},
|
||||||
@@ -380,9 +380,9 @@
|
|||||||
"fileTrackInfo": {
|
"fileTrackInfo": {
|
||||||
"title": "Who The Cap Fit",
|
"title": "Who The Cap Fit",
|
||||||
"cleanTitle": "Who The Cap Fit",
|
"cleanTitle": "Who The Cap Fit",
|
||||||
"artistTitle": "Bob Marley & The Wailers",
|
"authorTitle": "Bob Marley & The Wailers",
|
||||||
"albumTitle": "Rastaman Vibration (Remastered",
|
"bookTitle": "Rastaman Vibration (Remastered",
|
||||||
"artistTitleInfo": {
|
"authorTitleInfo": {
|
||||||
"title": "Bob Marley & The Wailers",
|
"title": "Bob Marley & The Wailers",
|
||||||
"year": 2002
|
"year": 2002
|
||||||
},
|
},
|
||||||
@@ -417,9 +417,9 @@
|
|||||||
"fileTrackInfo": {
|
"fileTrackInfo": {
|
||||||
"title": "Night Shift",
|
"title": "Night Shift",
|
||||||
"cleanTitle": "Night Shift",
|
"cleanTitle": "Night Shift",
|
||||||
"artistTitle": "Bob Marley & The Wailers",
|
"authorTitle": "Bob Marley & The Wailers",
|
||||||
"albumTitle": "Rastaman Vibration (Remastered",
|
"bookTitle": "Rastaman Vibration (Remastered",
|
||||||
"artistTitleInfo": {
|
"authorTitleInfo": {
|
||||||
"title": "Bob Marley & The Wailers",
|
"title": "Bob Marley & The Wailers",
|
||||||
"year": 2002
|
"year": 2002
|
||||||
},
|
},
|
||||||
@@ -454,9 +454,9 @@
|
|||||||
"fileTrackInfo": {
|
"fileTrackInfo": {
|
||||||
"title": "War",
|
"title": "War",
|
||||||
"cleanTitle": "War",
|
"cleanTitle": "War",
|
||||||
"artistTitle": "Bob Marley & The Wailers",
|
"authorTitle": "Bob Marley & The Wailers",
|
||||||
"albumTitle": "Rastaman Vibration (Remastered",
|
"bookTitle": "Rastaman Vibration (Remastered",
|
||||||
"artistTitleInfo": {
|
"authorTitleInfo": {
|
||||||
"title": "Bob Marley & The Wailers",
|
"title": "Bob Marley & The Wailers",
|
||||||
"year": 2002
|
"year": 2002
|
||||||
},
|
},
|
||||||
@@ -491,9 +491,9 @@
|
|||||||
"fileTrackInfo": {
|
"fileTrackInfo": {
|
||||||
"title": "Rat Race",
|
"title": "Rat Race",
|
||||||
"cleanTitle": "Rat Race",
|
"cleanTitle": "Rat Race",
|
||||||
"artistTitle": "Bob Marley & The Wailers",
|
"authorTitle": "Bob Marley & The Wailers",
|
||||||
"albumTitle": "Rastaman Vibration (Remastered",
|
"bookTitle": "Rastaman Vibration (Remastered",
|
||||||
"artistTitleInfo": {
|
"authorTitleInfo": {
|
||||||
"title": "Bob Marley & The Wailers",
|
"title": "Bob Marley & The Wailers",
|
||||||
"year": 2002
|
"year": 2002
|
||||||
},
|
},
|
||||||
@@ -528,9 +528,9 @@
|
|||||||
"fileTrackInfo": {
|
"fileTrackInfo": {
|
||||||
"title": "Jah Live (Original Mix)",
|
"title": "Jah Live (Original Mix)",
|
||||||
"cleanTitle": "Jah Live (Original Mix)",
|
"cleanTitle": "Jah Live (Original Mix)",
|
||||||
"artistTitle": "Bob Marley & The Wailers",
|
"authorTitle": "Bob Marley & The Wailers",
|
||||||
"albumTitle": "Rastaman Vibration (Remastered",
|
"bookTitle": "Rastaman Vibration (Remastered",
|
||||||
"artistTitleInfo": {
|
"authorTitleInfo": {
|
||||||
"title": "Bob Marley & The Wailers",
|
"title": "Bob Marley & The Wailers",
|
||||||
"year": 2002
|
"year": 2002
|
||||||
},
|
},
|
||||||
@@ -565,9 +565,9 @@
|
|||||||
"fileTrackInfo": {
|
"fileTrackInfo": {
|
||||||
"title": "Concrete",
|
"title": "Concrete",
|
||||||
"cleanTitle": "Concrete",
|
"cleanTitle": "Concrete",
|
||||||
"artistTitle": "Bob Marley & The Wailers",
|
"authorTitle": "Bob Marley & The Wailers",
|
||||||
"albumTitle": "Rastaman Vibration (Remastered",
|
"bookTitle": "Rastaman Vibration (Remastered",
|
||||||
"artistTitleInfo": {
|
"authorTitleInfo": {
|
||||||
"title": "Bob Marley & The Wailers",
|
"title": "Bob Marley & The Wailers",
|
||||||
"year": 2002
|
"year": 2002
|
||||||
},
|
},
|
||||||
@@ -602,9 +602,9 @@
|
|||||||
"fileTrackInfo": {
|
"fileTrackInfo": {
|
||||||
"title": "Roots Rock Reggae",
|
"title": "Roots Rock Reggae",
|
||||||
"cleanTitle": "Roots Rock Reggae",
|
"cleanTitle": "Roots Rock Reggae",
|
||||||
"artistTitle": "Bob Marley & The Wailers",
|
"authorTitle": "Bob Marley & The Wailers",
|
||||||
"albumTitle": "Rastaman Vibration (Remastered",
|
"bookTitle": "Rastaman Vibration (Remastered",
|
||||||
"artistTitleInfo": {
|
"authorTitleInfo": {
|
||||||
"title": "Bob Marley & The Wailers",
|
"title": "Bob Marley & The Wailers",
|
||||||
"year": 2002
|
"year": 2002
|
||||||
},
|
},
|
||||||
@@ -639,9 +639,9 @@
|
|||||||
"fileTrackInfo": {
|
"fileTrackInfo": {
|
||||||
"title": "Roots Rock Dub",
|
"title": "Roots Rock Dub",
|
||||||
"cleanTitle": "Roots Rock Dub",
|
"cleanTitle": "Roots Rock Dub",
|
||||||
"artistTitle": "Bob Marley & The Wailers",
|
"authorTitle": "Bob Marley & The Wailers",
|
||||||
"albumTitle": "Rastaman Vibration (Remastered",
|
"bookTitle": "Rastaman Vibration (Remastered",
|
||||||
"artistTitleInfo": {
|
"authorTitleInfo": {
|
||||||
"title": "Bob Marley & The Wailers",
|
"title": "Bob Marley & The Wailers",
|
||||||
"year": 2002
|
"year": 2002
|
||||||
},
|
},
|
||||||
@@ -676,9 +676,9 @@
|
|||||||
"fileTrackInfo": {
|
"fileTrackInfo": {
|
||||||
"title": "Want More (Alternate Mix)",
|
"title": "Want More (Alternate Mix)",
|
||||||
"cleanTitle": "Want More (Alternate Mix)",
|
"cleanTitle": "Want More (Alternate Mix)",
|
||||||
"artistTitle": "Bob Marley & The Wailers",
|
"authorTitle": "Bob Marley & The Wailers",
|
||||||
"albumTitle": "Rastaman Vibration (Remastered",
|
"bookTitle": "Rastaman Vibration (Remastered",
|
||||||
"artistTitleInfo": {
|
"authorTitleInfo": {
|
||||||
"title": "Bob Marley & The Wailers",
|
"title": "Bob Marley & The Wailers",
|
||||||
"year": 2002
|
"year": 2002
|
||||||
},
|
},
|
||||||
@@ -713,9 +713,9 @@
|
|||||||
"fileTrackInfo": {
|
"fileTrackInfo": {
|
||||||
"title": "Crazy Baldhead (Alternate Mix)",
|
"title": "Crazy Baldhead (Alternate Mix)",
|
||||||
"cleanTitle": "Crazy Baldhead (Alternate Mix)",
|
"cleanTitle": "Crazy Baldhead (Alternate Mix)",
|
||||||
"artistTitle": "Bob Marley & The Wailers",
|
"authorTitle": "Bob Marley & The Wailers",
|
||||||
"albumTitle": "Rastaman Vibration (Remastered",
|
"bookTitle": "Rastaman Vibration (Remastered",
|
||||||
"artistTitleInfo": {
|
"authorTitleInfo": {
|
||||||
"title": "Bob Marley & The Wailers",
|
"title": "Bob Marley & The Wailers",
|
||||||
"year": 2002
|
"year": 2002
|
||||||
},
|
},
|
||||||
@@ -750,9 +750,9 @@
|
|||||||
"fileTrackInfo": {
|
"fileTrackInfo": {
|
||||||
"title": "War (Alternate Mix)",
|
"title": "War (Alternate Mix)",
|
||||||
"cleanTitle": "War (Alternate Mix)",
|
"cleanTitle": "War (Alternate Mix)",
|
||||||
"artistTitle": "Bob Marley & The Wailers",
|
"authorTitle": "Bob Marley & The Wailers",
|
||||||
"albumTitle": "Rastaman Vibration (Remastered",
|
"bookTitle": "Rastaman Vibration (Remastered",
|
||||||
"artistTitleInfo": {
|
"authorTitleInfo": {
|
||||||
"title": "Bob Marley & The Wailers",
|
"title": "Bob Marley & The Wailers",
|
||||||
"year": 2002
|
"year": 2002
|
||||||
},
|
},
|
||||||
@@ -787,9 +787,9 @@
|
|||||||
"fileTrackInfo": {
|
"fileTrackInfo": {
|
||||||
"title": "Johnny Was (Alternate Mix)",
|
"title": "Johnny Was (Alternate Mix)",
|
||||||
"cleanTitle": "Johnny Was (Alternate Mix)",
|
"cleanTitle": "Johnny Was (Alternate Mix)",
|
||||||
"artistTitle": "Bob Marley & The Wailers",
|
"authorTitle": "Bob Marley & The Wailers",
|
||||||
"albumTitle": "Rastaman Vibration (Remastered",
|
"bookTitle": "Rastaman Vibration (Remastered",
|
||||||
"artistTitleInfo": {
|
"authorTitleInfo": {
|
||||||
"title": "Bob Marley & The Wailers",
|
"title": "Bob Marley & The Wailers",
|
||||||
"year": 2002
|
"year": 2002
|
||||||
},
|
},
|
||||||
@@ -824,9 +824,9 @@
|
|||||||
"fileTrackInfo": {
|
"fileTrackInfo": {
|
||||||
"title": "Introduction",
|
"title": "Introduction",
|
||||||
"cleanTitle": "Introduction",
|
"cleanTitle": "Introduction",
|
||||||
"artistTitle": "Bob Marley & The Wailers",
|
"authorTitle": "Bob Marley & The Wailers",
|
||||||
"albumTitle": "Rastaman Vibration (Remastered)",
|
"bookTitle": "Rastaman Vibration (Remastered)",
|
||||||
"artistTitleInfo": {
|
"authorTitleInfo": {
|
||||||
"title": "Bob Marley & The Wailers",
|
"title": "Bob Marley & The Wailers",
|
||||||
"year": 2002
|
"year": 2002
|
||||||
},
|
},
|
||||||
@@ -861,9 +861,9 @@
|
|||||||
"fileTrackInfo": {
|
"fileTrackInfo": {
|
||||||
"title": "Trenchtown Rock (Live)",
|
"title": "Trenchtown Rock (Live)",
|
||||||
"cleanTitle": "Trenchtown Rock (Live)",
|
"cleanTitle": "Trenchtown Rock (Live)",
|
||||||
"artistTitle": "Bob Marley & The Wailers",
|
"authorTitle": "Bob Marley & The Wailers",
|
||||||
"albumTitle": "Rastaman Vibration (Remastered)",
|
"bookTitle": "Rastaman Vibration (Remastered)",
|
||||||
"artistTitleInfo": {
|
"authorTitleInfo": {
|
||||||
"title": "Bob Marley & The Wailers",
|
"title": "Bob Marley & The Wailers",
|
||||||
"year": 2002
|
"year": 2002
|
||||||
},
|
},
|
||||||
@@ -898,9 +898,9 @@
|
|||||||
"fileTrackInfo": {
|
"fileTrackInfo": {
|
||||||
"title": "Burnin And Looting (Live)",
|
"title": "Burnin And Looting (Live)",
|
||||||
"cleanTitle": "Burnin And Looting (Live)",
|
"cleanTitle": "Burnin And Looting (Live)",
|
||||||
"artistTitle": "Bob Marley & The Wailers",
|
"authorTitle": "Bob Marley & The Wailers",
|
||||||
"albumTitle": "Rastaman Vibration (Remastered)",
|
"bookTitle": "Rastaman Vibration (Remastered)",
|
||||||
"artistTitleInfo": {
|
"authorTitleInfo": {
|
||||||
"title": "Bob Marley & The Wailers",
|
"title": "Bob Marley & The Wailers",
|
||||||
"year": 2002
|
"year": 2002
|
||||||
},
|
},
|
||||||
@@ -935,9 +935,9 @@
|
|||||||
"fileTrackInfo": {
|
"fileTrackInfo": {
|
||||||
"title": "Them Belly Full (Live)",
|
"title": "Them Belly Full (Live)",
|
||||||
"cleanTitle": "Them Belly Full (Live)",
|
"cleanTitle": "Them Belly Full (Live)",
|
||||||
"artistTitle": "Bob Marley & The Wailers",
|
"authorTitle": "Bob Marley & The Wailers",
|
||||||
"albumTitle": "Rastaman Vibration (Remastered)",
|
"bookTitle": "Rastaman Vibration (Remastered)",
|
||||||
"artistTitleInfo": {
|
"authorTitleInfo": {
|
||||||
"title": "Bob Marley & The Wailers",
|
"title": "Bob Marley & The Wailers",
|
||||||
"year": 2002
|
"year": 2002
|
||||||
},
|
},
|
||||||
@@ -972,9 +972,9 @@
|
|||||||
"fileTrackInfo": {
|
"fileTrackInfo": {
|
||||||
"title": "Rebel Music (Live)",
|
"title": "Rebel Music (Live)",
|
||||||
"cleanTitle": "Rebel Music (Live)",
|
"cleanTitle": "Rebel Music (Live)",
|
||||||
"artistTitle": "Bob Marley & The Wailers",
|
"authorTitle": "Bob Marley & The Wailers",
|
||||||
"albumTitle": "Rastaman Vibration (Remastered)",
|
"bookTitle": "Rastaman Vibration (Remastered)",
|
||||||
"artistTitleInfo": {
|
"authorTitleInfo": {
|
||||||
"title": "Bob Marley & The Wailers",
|
"title": "Bob Marley & The Wailers",
|
||||||
"year": 2002
|
"year": 2002
|
||||||
},
|
},
|
||||||
@@ -1009,9 +1009,9 @@
|
|||||||
"fileTrackInfo": {
|
"fileTrackInfo": {
|
||||||
"title": "I Shot The Sheriff (Live)",
|
"title": "I Shot The Sheriff (Live)",
|
||||||
"cleanTitle": "I Shot The Sheriff (Live)",
|
"cleanTitle": "I Shot The Sheriff (Live)",
|
||||||
"artistTitle": "Bob Marley & The Wailers",
|
"authorTitle": "Bob Marley & The Wailers",
|
||||||
"albumTitle": "Rastaman Vibration (Remastered)",
|
"bookTitle": "Rastaman Vibration (Remastered)",
|
||||||
"artistTitleInfo": {
|
"authorTitleInfo": {
|
||||||
"title": "Bob Marley & The Wailers",
|
"title": "Bob Marley & The Wailers",
|
||||||
"year": 2002
|
"year": 2002
|
||||||
},
|
},
|
||||||
@@ -1046,9 +1046,9 @@
|
|||||||
"fileTrackInfo": {
|
"fileTrackInfo": {
|
||||||
"title": "Want More (Live)",
|
"title": "Want More (Live)",
|
||||||
"cleanTitle": "Want More (Live)",
|
"cleanTitle": "Want More (Live)",
|
||||||
"artistTitle": "Bob Marley & The Wailers",
|
"authorTitle": "Bob Marley & The Wailers",
|
||||||
"albumTitle": "Rastaman Vibration (Remastered)",
|
"bookTitle": "Rastaman Vibration (Remastered)",
|
||||||
"artistTitleInfo": {
|
"authorTitleInfo": {
|
||||||
"title": "Bob Marley & The Wailers",
|
"title": "Bob Marley & The Wailers",
|
||||||
"year": 2002
|
"year": 2002
|
||||||
},
|
},
|
||||||
@@ -1083,9 +1083,9 @@
|
|||||||
"fileTrackInfo": {
|
"fileTrackInfo": {
|
||||||
"title": "No Woman No Cry (Live)",
|
"title": "No Woman No Cry (Live)",
|
||||||
"cleanTitle": "No Woman No Cry (Live)",
|
"cleanTitle": "No Woman No Cry (Live)",
|
||||||
"artistTitle": "Bob Marley & The Wailers",
|
"authorTitle": "Bob Marley & The Wailers",
|
||||||
"albumTitle": "Rastaman Vibration (Remastered)",
|
"bookTitle": "Rastaman Vibration (Remastered)",
|
||||||
"artistTitleInfo": {
|
"authorTitleInfo": {
|
||||||
"title": "Bob Marley & The Wailers",
|
"title": "Bob Marley & The Wailers",
|
||||||
"year": 2002
|
"year": 2002
|
||||||
},
|
},
|
||||||
@@ -1120,9 +1120,9 @@
|
|||||||
"fileTrackInfo": {
|
"fileTrackInfo": {
|
||||||
"title": "Lively Up Yourself (Live)",
|
"title": "Lively Up Yourself (Live)",
|
||||||
"cleanTitle": "Lively Up Yourself (Live)",
|
"cleanTitle": "Lively Up Yourself (Live)",
|
||||||
"artistTitle": "Bob Marley & The Wailers",
|
"authorTitle": "Bob Marley & The Wailers",
|
||||||
"albumTitle": "Rastaman Vibration (Remastered)",
|
"bookTitle": "Rastaman Vibration (Remastered)",
|
||||||
"artistTitleInfo": {
|
"authorTitleInfo": {
|
||||||
"title": "Bob Marley & The Wailers",
|
"title": "Bob Marley & The Wailers",
|
||||||
"year": 2002
|
"year": 2002
|
||||||
},
|
},
|
||||||
@@ -1157,9 +1157,9 @@
|
|||||||
"fileTrackInfo": {
|
"fileTrackInfo": {
|
||||||
"title": "Roots Rock Reggae (Live)",
|
"title": "Roots Rock Reggae (Live)",
|
||||||
"cleanTitle": "Roots Rock Reggae (Live)",
|
"cleanTitle": "Roots Rock Reggae (Live)",
|
||||||
"artistTitle": "Bob Marley & The Wailers",
|
"authorTitle": "Bob Marley & The Wailers",
|
||||||
"albumTitle": "Rastaman Vibration (Remastered)",
|
"bookTitle": "Rastaman Vibration (Remastered)",
|
||||||
"artistTitleInfo": {
|
"authorTitleInfo": {
|
||||||
"title": "Bob Marley & The Wailers",
|
"title": "Bob Marley & The Wailers",
|
||||||
"year": 2002
|
"year": 2002
|
||||||
},
|
},
|
||||||
@@ -1194,9 +1194,9 @@
|
|||||||
"fileTrackInfo": {
|
"fileTrackInfo": {
|
||||||
"title": "Rat Race (Live)",
|
"title": "Rat Race (Live)",
|
||||||
"cleanTitle": "Rat Race (Live)",
|
"cleanTitle": "Rat Race (Live)",
|
||||||
"artistTitle": "Bob Marley & The Wailers",
|
"authorTitle": "Bob Marley & The Wailers",
|
||||||
"albumTitle": "Rastaman Vibration (Remastered)",
|
"bookTitle": "Rastaman Vibration (Remastered)",
|
||||||
"artistTitleInfo": {
|
"authorTitleInfo": {
|
||||||
"title": "Bob Marley & The Wailers",
|
"title": "Bob Marley & The Wailers",
|
||||||
"year": 2002
|
"year": 2002
|
||||||
},
|
},
|
||||||
@@ -1231,9 +1231,9 @@
|
|||||||
"fileTrackInfo": {
|
"fileTrackInfo": {
|
||||||
"title": "Smile Jamica (Part One Live)",
|
"title": "Smile Jamica (Part One Live)",
|
||||||
"cleanTitle": "Smile Jamica (Part One Live)",
|
"cleanTitle": "Smile Jamica (Part One Live)",
|
||||||
"artistTitle": "Bob Marley & The Wailers",
|
"authorTitle": "Bob Marley & The Wailers",
|
||||||
"albumTitle": "Rastaman Vibration (Remastered)",
|
"bookTitle": "Rastaman Vibration (Remastered)",
|
||||||
"artistTitleInfo": {
|
"authorTitleInfo": {
|
||||||
"title": "Bob Marley & The Wailers",
|
"title": "Bob Marley & The Wailers",
|
||||||
"year": 2002
|
"year": 2002
|
||||||
},
|
},
|
||||||
@@ -1268,9 +1268,9 @@
|
|||||||
"fileTrackInfo": {
|
"fileTrackInfo": {
|
||||||
"title": "Smile Jamica (Part 2 Live)",
|
"title": "Smile Jamica (Part 2 Live)",
|
||||||
"cleanTitle": "Smile Jamica (Part 2 Live)",
|
"cleanTitle": "Smile Jamica (Part 2 Live)",
|
||||||
"artistTitle": "Bob Marley & The Wailers",
|
"authorTitle": "Bob Marley & The Wailers",
|
||||||
"albumTitle": "Rastaman Vibration (Remastered)",
|
"bookTitle": "Rastaman Vibration (Remastered)",
|
||||||
"artistTitleInfo": {
|
"authorTitleInfo": {
|
||||||
"title": "Bob Marley & The Wailers",
|
"title": "Bob Marley & The Wailers",
|
||||||
"year": 2002
|
"year": 2002
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -2,114 +2,114 @@
|
|||||||
"expectedMusicBrainzReleaseIds": [
|
"expectedMusicBrainzReleaseIds": [
|
||||||
"0ce2d66f-e871-415a-9a85-e564f99d4021"
|
"0ce2d66f-e871-415a-9a85-e564f99d4021"
|
||||||
],
|
],
|
||||||
"libraryArtists": [
|
"libraryAuthors": [
|
||||||
{
|
{
|
||||||
"artist": "7ac055fa-e357-4890-9098-010b8094a900",
|
"author": "7ac055fa-e357-4890-9098-010b8094a900",
|
||||||
"metadataProfile": {
|
"metadataProfile": {
|
||||||
"name": "Standard",
|
"name": "Standard",
|
||||||
"primaryAlbumTypes": [
|
"primaryBookTypes": [
|
||||||
{
|
{
|
||||||
"primaryAlbumType": {
|
"primaryBookType": {
|
||||||
"id": 2,
|
"id": 2,
|
||||||
"name": "Single"
|
"name": "Single"
|
||||||
},
|
},
|
||||||
"allowed": true
|
"allowed": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"primaryAlbumType": {
|
"primaryBookType": {
|
||||||
"id": 4,
|
"id": 4,
|
||||||
"name": "Other"
|
"name": "Other"
|
||||||
},
|
},
|
||||||
"allowed": false
|
"allowed": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"primaryAlbumType": {
|
"primaryBookType": {
|
||||||
"id": 1,
|
"id": 1,
|
||||||
"name": "EP"
|
"name": "EP"
|
||||||
},
|
},
|
||||||
"allowed": false
|
"allowed": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"primaryAlbumType": {
|
"primaryBookType": {
|
||||||
"id": 3,
|
"id": 3,
|
||||||
"name": "Broadcast"
|
"name": "Broadcast"
|
||||||
},
|
},
|
||||||
"allowed": false
|
"allowed": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"primaryAlbumType": {
|
"primaryBookType": {
|
||||||
"id": 0,
|
"id": 0,
|
||||||
"name": "Album"
|
"name": "Book"
|
||||||
},
|
},
|
||||||
"allowed": true
|
"allowed": true
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"secondaryAlbumTypes": [
|
"secondaryBookTypes": [
|
||||||
{
|
{
|
||||||
"secondaryAlbumType": {
|
"secondaryBookType": {
|
||||||
"id": 0,
|
"id": 0,
|
||||||
"name": "Studio"
|
"name": "Studio"
|
||||||
},
|
},
|
||||||
"allowed": true
|
"allowed": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"secondaryAlbumType": {
|
"secondaryBookType": {
|
||||||
"id": 3,
|
"id": 3,
|
||||||
"name": "Spokenword"
|
"name": "Spokenword"
|
||||||
},
|
},
|
||||||
"allowed": false
|
"allowed": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"secondaryAlbumType": {
|
"secondaryBookType": {
|
||||||
"id": 2,
|
"id": 2,
|
||||||
"name": "Soundtrack"
|
"name": "Soundtrack"
|
||||||
},
|
},
|
||||||
"allowed": false
|
"allowed": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"secondaryAlbumType": {
|
"secondaryBookType": {
|
||||||
"id": 7,
|
"id": 7,
|
||||||
"name": "Remix"
|
"name": "Remix"
|
||||||
},
|
},
|
||||||
"allowed": false
|
"allowed": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"secondaryAlbumType": {
|
"secondaryBookType": {
|
||||||
"id": 9,
|
"id": 9,
|
||||||
"name": "Mixtape/Street"
|
"name": "Mixtape/Street"
|
||||||
},
|
},
|
||||||
"allowed": false
|
"allowed": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"secondaryAlbumType": {
|
"secondaryBookType": {
|
||||||
"id": 6,
|
"id": 6,
|
||||||
"name": "Live"
|
"name": "Live"
|
||||||
},
|
},
|
||||||
"allowed": false
|
"allowed": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"secondaryAlbumType": {
|
"secondaryBookType": {
|
||||||
"id": 4,
|
"id": 4,
|
||||||
"name": "Interview"
|
"name": "Interview"
|
||||||
},
|
},
|
||||||
"allowed": false
|
"allowed": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"secondaryAlbumType": {
|
"secondaryBookType": {
|
||||||
"id": 8,
|
"id": 8,
|
||||||
"name": "DJ-mix"
|
"name": "DJ-mix"
|
||||||
},
|
},
|
||||||
"allowed": false
|
"allowed": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"secondaryAlbumType": {
|
"secondaryBookType": {
|
||||||
"id": 10,
|
"id": 10,
|
||||||
"name": "Demo"
|
"name": "Demo"
|
||||||
},
|
},
|
||||||
"allowed": false
|
"allowed": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"secondaryAlbumType": {
|
"secondaryBookType": {
|
||||||
"id": 1,
|
"id": 1,
|
||||||
"name": "Compilation"
|
"name": "Compilation"
|
||||||
},
|
},
|
||||||
@@ -158,9 +158,9 @@
|
|||||||
"fileTrackInfo": {
|
"fileTrackInfo": {
|
||||||
"title": "Touch Me When We're Dancing",
|
"title": "Touch Me When We're Dancing",
|
||||||
"cleanTitle": "Touch Me When We're Dancing",
|
"cleanTitle": "Touch Me When We're Dancing",
|
||||||
"artistTitle": "Alabama",
|
"authorTitle": "Alabama",
|
||||||
"albumTitle": "The Touch",
|
"bookTitle": "The Touch",
|
||||||
"artistTitleInfo": {
|
"authorTitleInfo": {
|
||||||
"title": "Alabama",
|
"title": "Alabama",
|
||||||
"year": 1986
|
"year": 1986
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -2,114 +2,114 @@
|
|||||||
"expectedMusicBrainzReleaseIds": [
|
"expectedMusicBrainzReleaseIds": [
|
||||||
"25f0fa1b-ae04-479a-a182-18a655ff6040"
|
"25f0fa1b-ae04-479a-a182-18a655ff6040"
|
||||||
],
|
],
|
||||||
"libraryArtists": [
|
"libraryAuthors": [
|
||||||
{
|
{
|
||||||
"artist": "70248960-cb53-4ea4-943a-edb18f7d336f",
|
"author": "70248960-cb53-4ea4-943a-edb18f7d336f",
|
||||||
"metadataProfile": {
|
"metadataProfile": {
|
||||||
"name": "Album+Single",
|
"name": "Book+Single",
|
||||||
"primaryAlbumTypes": [
|
"primaryBookTypes": [
|
||||||
{
|
{
|
||||||
"primaryAlbumType": {
|
"primaryBookType": {
|
||||||
"id": 4,
|
"id": 4,
|
||||||
"name": "Other"
|
"name": "Other"
|
||||||
},
|
},
|
||||||
"allowed": false
|
"allowed": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"primaryAlbumType": {
|
"primaryBookType": {
|
||||||
"id": 3,
|
"id": 3,
|
||||||
"name": "Broadcast"
|
"name": "Broadcast"
|
||||||
},
|
},
|
||||||
"allowed": false
|
"allowed": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"primaryAlbumType": {
|
"primaryBookType": {
|
||||||
"id": 2,
|
"id": 2,
|
||||||
"name": "Single"
|
"name": "Single"
|
||||||
},
|
},
|
||||||
"allowed": true
|
"allowed": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"primaryAlbumType": {
|
"primaryBookType": {
|
||||||
"id": 1,
|
"id": 1,
|
||||||
"name": "EP"
|
"name": "EP"
|
||||||
},
|
},
|
||||||
"allowed": false
|
"allowed": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"primaryAlbumType": {
|
"primaryBookType": {
|
||||||
"id": 0,
|
"id": 0,
|
||||||
"name": "Album"
|
"name": "Book"
|
||||||
},
|
},
|
||||||
"allowed": true
|
"allowed": true
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"secondaryAlbumTypes": [
|
"secondaryBookTypes": [
|
||||||
{
|
{
|
||||||
"secondaryAlbumType": {
|
"secondaryBookType": {
|
||||||
"id": 10,
|
"id": 10,
|
||||||
"name": "Demo"
|
"name": "Demo"
|
||||||
},
|
},
|
||||||
"allowed": false
|
"allowed": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"secondaryAlbumType": {
|
"secondaryBookType": {
|
||||||
"id": 9,
|
"id": 9,
|
||||||
"name": "Mixtape/Street"
|
"name": "Mixtape/Street"
|
||||||
},
|
},
|
||||||
"allowed": false
|
"allowed": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"secondaryAlbumType": {
|
"secondaryBookType": {
|
||||||
"id": 8,
|
"id": 8,
|
||||||
"name": "DJ-mix"
|
"name": "DJ-mix"
|
||||||
},
|
},
|
||||||
"allowed": false
|
"allowed": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"secondaryAlbumType": {
|
"secondaryBookType": {
|
||||||
"id": 7,
|
"id": 7,
|
||||||
"name": "Remix"
|
"name": "Remix"
|
||||||
},
|
},
|
||||||
"allowed": false
|
"allowed": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"secondaryAlbumType": {
|
"secondaryBookType": {
|
||||||
"id": 6,
|
"id": 6,
|
||||||
"name": "Live"
|
"name": "Live"
|
||||||
},
|
},
|
||||||
"allowed": false
|
"allowed": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"secondaryAlbumType": {
|
"secondaryBookType": {
|
||||||
"id": 4,
|
"id": 4,
|
||||||
"name": "Interview"
|
"name": "Interview"
|
||||||
},
|
},
|
||||||
"allowed": false
|
"allowed": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"secondaryAlbumType": {
|
"secondaryBookType": {
|
||||||
"id": 3,
|
"id": 3,
|
||||||
"name": "Spokenword"
|
"name": "Spokenword"
|
||||||
},
|
},
|
||||||
"allowed": false
|
"allowed": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"secondaryAlbumType": {
|
"secondaryBookType": {
|
||||||
"id": 2,
|
"id": 2,
|
||||||
"name": "Soundtrack"
|
"name": "Soundtrack"
|
||||||
},
|
},
|
||||||
"allowed": false
|
"allowed": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"secondaryAlbumType": {
|
"secondaryBookType": {
|
||||||
"id": 1,
|
"id": 1,
|
||||||
"name": "Compilation"
|
"name": "Compilation"
|
||||||
},
|
},
|
||||||
"allowed": false
|
"allowed": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"secondaryAlbumType": {
|
"secondaryBookType": {
|
||||||
"id": 0,
|
"id": 0,
|
||||||
"name": "Studio"
|
"name": "Studio"
|
||||||
},
|
},
|
||||||
@@ -154,13 +154,13 @@
|
|||||||
"singleRelease": false,
|
"singleRelease": false,
|
||||||
"tracks": [
|
"tracks": [
|
||||||
{
|
{
|
||||||
"path": "/mnt/data1/ReadarrTest/Bruce Springsteen/Album/10_Glory_Days.mp3",
|
"path": "/mnt/data1/ReadarrTest/Bruce Springsteen/Book/10_Glory_Days.mp3",
|
||||||
"fileTrackInfo": {
|
"fileTrackInfo": {
|
||||||
"title": "Glory Days",
|
"title": "Glory Days",
|
||||||
"cleanTitle": "Glory Days",
|
"cleanTitle": "Glory Days",
|
||||||
"artistTitle": "Bruce Springsteen",
|
"authorTitle": "Bruce Springsteen",
|
||||||
"albumTitle": "Born in the U.S.A.",
|
"bookTitle": "Born in the U.S.A.",
|
||||||
"artistTitleInfo": {
|
"authorTitleInfo": {
|
||||||
"title": "Bruce Springsteen",
|
"title": "Bruce Springsteen",
|
||||||
"year": 1984
|
"year": 1984
|
||||||
},
|
},
|
||||||
@@ -191,13 +191,13 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"path": "/mnt/data1/ReadarrTest/Bruce Springsteen/Album/11_Dancing_In_The_Dark.mp3",
|
"path": "/mnt/data1/ReadarrTest/Bruce Springsteen/Book/11_Dancing_In_The_Dark.mp3",
|
||||||
"fileTrackInfo": {
|
"fileTrackInfo": {
|
||||||
"title": "Dancing In The Dark",
|
"title": "Dancing In The Dark",
|
||||||
"cleanTitle": "Dancing In The Dark",
|
"cleanTitle": "Dancing In The Dark",
|
||||||
"artistTitle": "Bruce Springsteen",
|
"authorTitle": "Bruce Springsteen",
|
||||||
"albumTitle": "Born in the U.S.A.",
|
"bookTitle": "Born in the U.S.A.",
|
||||||
"artistTitleInfo": {
|
"authorTitleInfo": {
|
||||||
"title": "Bruce Springsteen",
|
"title": "Bruce Springsteen",
|
||||||
"year": 1984
|
"year": 1984
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -2,114 +2,114 @@
|
|||||||
"expectedMusicBrainzReleaseIds": [
|
"expectedMusicBrainzReleaseIds": [
|
||||||
"4e2dd34f-53fe-4d54-b564-b14a2871505e"
|
"4e2dd34f-53fe-4d54-b564-b14a2871505e"
|
||||||
],
|
],
|
||||||
"libraryArtists": [
|
"libraryAuthors": [
|
||||||
{
|
{
|
||||||
"artist": "6fe07aa5-fec0-4eca-a456-f29bff451b04",
|
"author": "6fe07aa5-fec0-4eca-a456-f29bff451b04",
|
||||||
"metadataProfile": {
|
"metadataProfile": {
|
||||||
"name": "Standard",
|
"name": "Standard",
|
||||||
"primaryAlbumTypes": [
|
"primaryBookTypes": [
|
||||||
{
|
{
|
||||||
"primaryAlbumType": {
|
"primaryBookType": {
|
||||||
"id": 2,
|
"id": 2,
|
||||||
"name": "Single"
|
"name": "Single"
|
||||||
},
|
},
|
||||||
"allowed": false
|
"allowed": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"primaryAlbumType": {
|
"primaryBookType": {
|
||||||
"id": 4,
|
"id": 4,
|
||||||
"name": "Other"
|
"name": "Other"
|
||||||
},
|
},
|
||||||
"allowed": false
|
"allowed": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"primaryAlbumType": {
|
"primaryBookType": {
|
||||||
"id": 1,
|
"id": 1,
|
||||||
"name": "EP"
|
"name": "EP"
|
||||||
},
|
},
|
||||||
"allowed": false
|
"allowed": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"primaryAlbumType": {
|
"primaryBookType": {
|
||||||
"id": 3,
|
"id": 3,
|
||||||
"name": "Broadcast"
|
"name": "Broadcast"
|
||||||
},
|
},
|
||||||
"allowed": false
|
"allowed": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"primaryAlbumType": {
|
"primaryBookType": {
|
||||||
"id": 0,
|
"id": 0,
|
||||||
"name": "Album"
|
"name": "Book"
|
||||||
},
|
},
|
||||||
"allowed": true
|
"allowed": true
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"secondaryAlbumTypes": [
|
"secondaryBookTypes": [
|
||||||
{
|
{
|
||||||
"secondaryAlbumType": {
|
"secondaryBookType": {
|
||||||
"id": 0,
|
"id": 0,
|
||||||
"name": "Studio"
|
"name": "Studio"
|
||||||
},
|
},
|
||||||
"allowed": true
|
"allowed": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"secondaryAlbumType": {
|
"secondaryBookType": {
|
||||||
"id": 3,
|
"id": 3,
|
||||||
"name": "Spokenword"
|
"name": "Spokenword"
|
||||||
},
|
},
|
||||||
"allowed": false
|
"allowed": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"secondaryAlbumType": {
|
"secondaryBookType": {
|
||||||
"id": 2,
|
"id": 2,
|
||||||
"name": "Soundtrack"
|
"name": "Soundtrack"
|
||||||
},
|
},
|
||||||
"allowed": false
|
"allowed": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"secondaryAlbumType": {
|
"secondaryBookType": {
|
||||||
"id": 7,
|
"id": 7,
|
||||||
"name": "Remix"
|
"name": "Remix"
|
||||||
},
|
},
|
||||||
"allowed": false
|
"allowed": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"secondaryAlbumType": {
|
"secondaryBookType": {
|
||||||
"id": 9,
|
"id": 9,
|
||||||
"name": "Mixtape/Street"
|
"name": "Mixtape/Street"
|
||||||
},
|
},
|
||||||
"allowed": false
|
"allowed": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"secondaryAlbumType": {
|
"secondaryBookType": {
|
||||||
"id": 6,
|
"id": 6,
|
||||||
"name": "Live"
|
"name": "Live"
|
||||||
},
|
},
|
||||||
"allowed": false
|
"allowed": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"secondaryAlbumType": {
|
"secondaryBookType": {
|
||||||
"id": 4,
|
"id": 4,
|
||||||
"name": "Interview"
|
"name": "Interview"
|
||||||
},
|
},
|
||||||
"allowed": false
|
"allowed": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"secondaryAlbumType": {
|
"secondaryBookType": {
|
||||||
"id": 8,
|
"id": 8,
|
||||||
"name": "DJ-mix"
|
"name": "DJ-mix"
|
||||||
},
|
},
|
||||||
"allowed": false
|
"allowed": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"secondaryAlbumType": {
|
"secondaryBookType": {
|
||||||
"id": 10,
|
"id": 10,
|
||||||
"name": "Demo"
|
"name": "Demo"
|
||||||
},
|
},
|
||||||
"allowed": false
|
"allowed": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"secondaryAlbumType": {
|
"secondaryBookType": {
|
||||||
"id": 1,
|
"id": 1,
|
||||||
"name": "Compilation"
|
"name": "Compilation"
|
||||||
},
|
},
|
||||||
@@ -158,9 +158,9 @@
|
|||||||
"fileTrackInfo": {
|
"fileTrackInfo": {
|
||||||
"title": "Africa",
|
"title": "Africa",
|
||||||
"cleanTitle": "Africa",
|
"cleanTitle": "Africa",
|
||||||
"artistTitle": "Weezer",
|
"authorTitle": "Weezer",
|
||||||
"albumTitle": "Weezer (Teal Album)",
|
"bookTitle": "Weezer (Teal Book)",
|
||||||
"artistTitleInfo": {
|
"authorTitleInfo": {
|
||||||
"title": "Weezer",
|
"title": "Weezer",
|
||||||
"year": 2019
|
"year": 2019
|
||||||
},
|
},
|
||||||
@@ -196,9 +196,9 @@
|
|||||||
"fileTrackInfo": {
|
"fileTrackInfo": {
|
||||||
"title": "Everybody Wants To Rule The World",
|
"title": "Everybody Wants To Rule The World",
|
||||||
"cleanTitle": "Everybody Wants To Rule The World",
|
"cleanTitle": "Everybody Wants To Rule The World",
|
||||||
"artistTitle": "Weezer",
|
"authorTitle": "Weezer",
|
||||||
"albumTitle": "Weezer (Teal Album)",
|
"bookTitle": "Weezer (Teal Book)",
|
||||||
"artistTitleInfo": {
|
"authorTitleInfo": {
|
||||||
"title": "Weezer",
|
"title": "Weezer",
|
||||||
"year": 2019
|
"year": 2019
|
||||||
},
|
},
|
||||||
@@ -234,9 +234,9 @@
|
|||||||
"fileTrackInfo": {
|
"fileTrackInfo": {
|
||||||
"title": "Sweet Dreams (Are Made Of This)",
|
"title": "Sweet Dreams (Are Made Of This)",
|
||||||
"cleanTitle": "Sweet Dreams (Are Made Of This)",
|
"cleanTitle": "Sweet Dreams (Are Made Of This)",
|
||||||
"artistTitle": "Weezer",
|
"authorTitle": "Weezer",
|
||||||
"albumTitle": "Weezer (Teal Album)",
|
"bookTitle": "Weezer (Teal Book)",
|
||||||
"artistTitleInfo": {
|
"authorTitleInfo": {
|
||||||
"title": "Weezer",
|
"title": "Weezer",
|
||||||
"year": 2019
|
"year": 2019
|
||||||
},
|
},
|
||||||
@@ -272,9 +272,9 @@
|
|||||||
"fileTrackInfo": {
|
"fileTrackInfo": {
|
||||||
"title": "Take On Me",
|
"title": "Take On Me",
|
||||||
"cleanTitle": "Take On Me",
|
"cleanTitle": "Take On Me",
|
||||||
"artistTitle": "Weezer",
|
"authorTitle": "Weezer",
|
||||||
"albumTitle": "Weezer (Teal Album)",
|
"bookTitle": "Weezer (Teal Book)",
|
||||||
"artistTitleInfo": {
|
"authorTitleInfo": {
|
||||||
"title": "Weezer",
|
"title": "Weezer",
|
||||||
"year": 2019
|
"year": 2019
|
||||||
},
|
},
|
||||||
@@ -310,9 +310,9 @@
|
|||||||
"fileTrackInfo": {
|
"fileTrackInfo": {
|
||||||
"title": "Happy Together",
|
"title": "Happy Together",
|
||||||
"cleanTitle": "Happy Together",
|
"cleanTitle": "Happy Together",
|
||||||
"artistTitle": "Weezer",
|
"authorTitle": "Weezer",
|
||||||
"albumTitle": "Weezer (Teal Album)",
|
"bookTitle": "Weezer (Teal Book)",
|
||||||
"artistTitleInfo": {
|
"authorTitleInfo": {
|
||||||
"title": "Weezer",
|
"title": "Weezer",
|
||||||
"year": 2019
|
"year": 2019
|
||||||
},
|
},
|
||||||
@@ -348,9 +348,9 @@
|
|||||||
"fileTrackInfo": {
|
"fileTrackInfo": {
|
||||||
"title": "Paranoid",
|
"title": "Paranoid",
|
||||||
"cleanTitle": "Paranoid",
|
"cleanTitle": "Paranoid",
|
||||||
"artistTitle": "Weezer",
|
"authorTitle": "Weezer",
|
||||||
"albumTitle": "Weezer (Teal Album)",
|
"bookTitle": "Weezer (Teal Book)",
|
||||||
"artistTitleInfo": {
|
"authorTitleInfo": {
|
||||||
"title": "Weezer",
|
"title": "Weezer",
|
||||||
"year": 2019
|
"year": 2019
|
||||||
},
|
},
|
||||||
@@ -386,9 +386,9 @@
|
|||||||
"fileTrackInfo": {
|
"fileTrackInfo": {
|
||||||
"title": "Mr. Blue Sky",
|
"title": "Mr. Blue Sky",
|
||||||
"cleanTitle": "Mr. Blue Sky",
|
"cleanTitle": "Mr. Blue Sky",
|
||||||
"artistTitle": "Weezer",
|
"authorTitle": "Weezer",
|
||||||
"albumTitle": "Weezer (Teal Album)",
|
"bookTitle": "Weezer (Teal Book)",
|
||||||
"artistTitleInfo": {
|
"authorTitleInfo": {
|
||||||
"title": "Weezer",
|
"title": "Weezer",
|
||||||
"year": 2019
|
"year": 2019
|
||||||
},
|
},
|
||||||
@@ -424,9 +424,9 @@
|
|||||||
"fileTrackInfo": {
|
"fileTrackInfo": {
|
||||||
"title": "No Scrubs",
|
"title": "No Scrubs",
|
||||||
"cleanTitle": "No Scrubs",
|
"cleanTitle": "No Scrubs",
|
||||||
"artistTitle": "Weezer",
|
"authorTitle": "Weezer",
|
||||||
"albumTitle": "Weezer (Teal Album)",
|
"bookTitle": "Weezer (Teal Book)",
|
||||||
"artistTitleInfo": {
|
"authorTitleInfo": {
|
||||||
"title": "Weezer",
|
"title": "Weezer",
|
||||||
"year": 2019
|
"year": 2019
|
||||||
},
|
},
|
||||||
@@ -462,9 +462,9 @@
|
|||||||
"fileTrackInfo": {
|
"fileTrackInfo": {
|
||||||
"title": "Billie Jean",
|
"title": "Billie Jean",
|
||||||
"cleanTitle": "Billie Jean",
|
"cleanTitle": "Billie Jean",
|
||||||
"artistTitle": "Weezer",
|
"authorTitle": "Weezer",
|
||||||
"albumTitle": "Weezer (Teal Album)",
|
"bookTitle": "Weezer (Teal Book)",
|
||||||
"artistTitleInfo": {
|
"authorTitleInfo": {
|
||||||
"title": "Weezer",
|
"title": "Weezer",
|
||||||
"year": 2019
|
"year": 2019
|
||||||
},
|
},
|
||||||
@@ -500,9 +500,9 @@
|
|||||||
"fileTrackInfo": {
|
"fileTrackInfo": {
|
||||||
"title": "Stand By Me",
|
"title": "Stand By Me",
|
||||||
"cleanTitle": "Stand By Me",
|
"cleanTitle": "Stand By Me",
|
||||||
"artistTitle": "Weezer",
|
"authorTitle": "Weezer",
|
||||||
"albumTitle": "Weezer (Teal Album)",
|
"bookTitle": "Weezer (Teal Book)",
|
||||||
"artistTitleInfo": {
|
"authorTitleInfo": {
|
||||||
"title": "Weezer",
|
"title": "Weezer",
|
||||||
"year": 2019
|
"year": 2019
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
{
|
{
|
||||||
"groupId": 106951,
|
"groupId": 106951,
|
||||||
"groupName": "Shania Twain",
|
"groupName": "Shania Twain",
|
||||||
"artist": "Shania Twain",
|
"author": "Shania Twain",
|
||||||
"cover": "https:\\/\\/ptpimg.me\\/460az6.jpg",
|
"cover": "https:\\/\\/ptpimg.me\\/460az6.jpg",
|
||||||
"tags": [
|
"tags": [
|
||||||
"rock",
|
"rock",
|
||||||
@@ -16,7 +16,7 @@
|
|||||||
"bookmarked": false,
|
"bookmarked": false,
|
||||||
"vanityHouse": false,
|
"vanityHouse": false,
|
||||||
"groupYear": 1993,
|
"groupYear": 1993,
|
||||||
"releaseType": "Album",
|
"releaseType": "Book",
|
||||||
"groupTime": "1512951473",
|
"groupTime": "1512951473",
|
||||||
"maxSize": 653734702,
|
"maxSize": 653734702,
|
||||||
"totalSnatched": 33,
|
"totalSnatched": 33,
|
||||||
@@ -26,7 +26,7 @@
|
|||||||
{
|
{
|
||||||
"torrentId": 194008,
|
"torrentId": 194008,
|
||||||
"editionId": 1,
|
"editionId": 1,
|
||||||
"artists": [
|
"authors": [
|
||||||
{
|
{
|
||||||
"id": 9504,
|
"id": 9504,
|
||||||
"name": "Shania Twain",
|
"name": "Shania Twain",
|
||||||
@@ -60,7 +60,7 @@
|
|||||||
{
|
{
|
||||||
"torrentId": 230096,
|
"torrentId": 230096,
|
||||||
"editionId": 1,
|
"editionId": 1,
|
||||||
"artists": [
|
"authors": [
|
||||||
{
|
{
|
||||||
"id": 9504,
|
"id": 9504,
|
||||||
"name": "Shania Twain",
|
"name": "Shania Twain",
|
||||||
@@ -94,7 +94,7 @@
|
|||||||
{
|
{
|
||||||
"torrentId": 230086,
|
"torrentId": 230086,
|
||||||
"editionId": 1,
|
"editionId": 1,
|
||||||
"artists": [
|
"authors": [
|
||||||
{
|
{
|
||||||
"id": 9504,
|
"id": 9504,
|
||||||
"name": "Shania Twain",
|
"name": "Shania Twain",
|
||||||
@@ -128,7 +128,7 @@
|
|||||||
{
|
{
|
||||||
"torrentId": 1541452,
|
"torrentId": 1541452,
|
||||||
"editionId": 2,
|
"editionId": 2,
|
||||||
"artists": [
|
"authors": [
|
||||||
{
|
{
|
||||||
"id": 9504,
|
"id": 9504,
|
||||||
"name": "Shania Twain",
|
"name": "Shania Twain",
|
||||||
|
|||||||
@@ -28,8 +28,8 @@
|
|||||||
<newznab:attr name="category" value="3040" />
|
<newznab:attr name="category" value="3040" />
|
||||||
<newznab:attr name="size" value="492735000" />
|
<newznab:attr name="size" value="492735000" />
|
||||||
<newznab:attr name="guid" value="38884827e1e56b9336278a449e0a38ec" />
|
<newznab:attr name="guid" value="38884827e1e56b9336278a449e0a38ec" />
|
||||||
<newznab:attr name="album" value="Scary Creatures" />
|
<newznab:attr name="book" value="Scary Creatures" />
|
||||||
<newznab:attr name="artist" value="Brainstorm" />
|
<newznab:attr name="author" value="Brainstorm" />
|
||||||
<newznab:attr name="label" value="AFM Records" />
|
<newznab:attr name="label" value="AFM Records" />
|
||||||
<newznab:attr name="coverurl" value="https://api.nzbgeek.info/covers/music/.jpg" />
|
<newznab:attr name="coverurl" value="https://api.nzbgeek.info/covers/music/.jpg" />
|
||||||
<newznab:attr name="genre" value="Hard Rock & Metal" />
|
<newznab:attr name="genre" value="Hard Rock & Metal" />
|
||||||
@@ -49,8 +49,8 @@
|
|||||||
<newznab:attr name="category" value="3040" />
|
<newznab:attr name="category" value="3040" />
|
||||||
<newznab:attr name="size" value="295696000" />
|
<newznab:attr name="size" value="295696000" />
|
||||||
<newznab:attr name="guid" value="d6395e3218b0b2ed15cbc3743df77112" />
|
<newznab:attr name="guid" value="d6395e3218b0b2ed15cbc3743df77112" />
|
||||||
<newznab:attr name="album" value="Cautionary Tale" />
|
<newznab:attr name="book" value="Cautionary Tale" />
|
||||||
<newznab:attr name="artist" value="Dylan LeBlanc" />
|
<newznab:attr name="author" value="Dylan LeBlanc" />
|
||||||
<newznab:attr name="label" value="Single Lock Records" />
|
<newznab:attr name="label" value="Single Lock Records" />
|
||||||
<newznab:attr name="coverurl" value="https://api.nzbgeek.info/covers/music/.jpg" />
|
<newznab:attr name="coverurl" value="https://api.nzbgeek.info/covers/music/.jpg" />
|
||||||
<newznab:attr name="genre" value="Folk" />
|
<newznab:attr name="genre" value="Folk" />
|
||||||
@@ -71,8 +71,8 @@
|
|||||||
<newznab:attr name="category" value="3040" />
|
<newznab:attr name="category" value="3040" />
|
||||||
<newznab:attr name="size" value="608379000" />
|
<newznab:attr name="size" value="608379000" />
|
||||||
<newznab:attr name="guid" value="dc3230ac8143dd9a2fab65c07ad0f295" />
|
<newznab:attr name="guid" value="dc3230ac8143dd9a2fab65c07ad0f295" />
|
||||||
<newznab:attr name="album" value="This Is Acting" />
|
<newznab:attr name="book" value="This Is Acting" />
|
||||||
<newznab:attr name="artist" value="Sia" />
|
<newznab:attr name="author" value="Sia" />
|
||||||
<newznab:attr name="label" value="Monkey Puzzle RecordsRCA Records" />
|
<newznab:attr name="label" value="Monkey Puzzle RecordsRCA Records" />
|
||||||
<newznab:attr name="coverurl" value="https://api.nzbgeek.info/covers/music/.jpg" />
|
<newznab:attr name="coverurl" value="https://api.nzbgeek.info/covers/music/.jpg" />
|
||||||
<newznab:attr name="genre" value="Pop" />
|
<newznab:attr name="genre" value="Pop" />
|
||||||
@@ -93,8 +93,8 @@
|
|||||||
<newznab:attr name="category" value="3040" />
|
<newznab:attr name="category" value="3040" />
|
||||||
<newznab:attr name="size" value="908727000" />
|
<newznab:attr name="size" value="908727000" />
|
||||||
<newznab:attr name="guid" value="a5560bb5ecf2ad19642527a567d427d0" />
|
<newznab:attr name="guid" value="a5560bb5ecf2ad19642527a567d427d0" />
|
||||||
<newznab:attr name="album" value="Leben II Explicit" />
|
<newznab:attr name="book" value="Leben II Explicit" />
|
||||||
<newznab:attr name="artist" value="Azad" />
|
<newznab:attr name="author" value="Azad" />
|
||||||
<newznab:attr name="label" value="Bozz Music" />
|
<newznab:attr name="label" value="Bozz Music" />
|
||||||
<newznab:attr name="coverurl" value="https://api.nzbgeek.info/covers/music/.jpg" />
|
<newznab:attr name="coverurl" value="https://api.nzbgeek.info/covers/music/.jpg" />
|
||||||
<newznab:attr name="genre" value="Rap & Hip-Hop" />
|
<newznab:attr name="genre" value="Rap & Hip-Hop" />
|
||||||
@@ -115,8 +115,8 @@
|
|||||||
<newznab:attr name="category" value="3040" />
|
<newznab:attr name="category" value="3040" />
|
||||||
<newznab:attr name="size" value="693728000" />
|
<newznab:attr name="size" value="693728000" />
|
||||||
<newznab:attr name="guid" value="eb42bbef1b5d8e0697962a291371655b" />
|
<newznab:attr name="guid" value="eb42bbef1b5d8e0697962a291371655b" />
|
||||||
<newznab:attr name="album" value="Planeta Mix Hits 2016 Winter Edition" />
|
<newznab:attr name="book" value="Planeta Mix Hits 2016 Winter Edition" />
|
||||||
<newznab:attr name="artist" value="Various Artists" />
|
<newznab:attr name="author" value="Various Authors" />
|
||||||
<newznab:attr name="label" value="Planet Dance Music" />
|
<newznab:attr name="label" value="Planet Dance Music" />
|
||||||
<newznab:attr name="coverurl" value="https://api.nzbgeek.info/covers/music/.jpg" />
|
<newznab:attr name="coverurl" value="https://api.nzbgeek.info/covers/music/.jpg" />
|
||||||
<newznab:attr name="genre" value="Dance & Electronic" />
|
<newznab:attr name="genre" value="Dance & Electronic" />
|
||||||
@@ -137,8 +137,8 @@
|
|||||||
<newznab:attr name="category" value="3040" />
|
<newznab:attr name="category" value="3040" />
|
||||||
<newznab:attr name="size" value="557772000" />
|
<newznab:attr name="size" value="557772000" />
|
||||||
<newznab:attr name="guid" value="812d0f7b9c38b6989d07c125eb35eabd" />
|
<newznab:attr name="guid" value="812d0f7b9c38b6989d07c125eb35eabd" />
|
||||||
<newznab:attr name="album" value="Into the Legend" />
|
<newznab:attr name="book" value="Into the Legend" />
|
||||||
<newznab:attr name="artist" value="Rhapsody Of Fire" />
|
<newznab:attr name="author" value="Rhapsody Of Fire" />
|
||||||
<newznab:attr name="label" value="AFM Records" />
|
<newznab:attr name="label" value="AFM Records" />
|
||||||
<newznab:attr name="coverurl" value="https://api.nzbgeek.info/covers/music/.jpg" />
|
<newznab:attr name="coverurl" value="https://api.nzbgeek.info/covers/music/.jpg" />
|
||||||
<newznab:attr name="genre" value="Hard Rock & Metal" />
|
<newznab:attr name="genre" value="Hard Rock & Metal" />
|
||||||
@@ -159,8 +159,8 @@
|
|||||||
<newznab:attr name="category" value="3040" />
|
<newznab:attr name="category" value="3040" />
|
||||||
<newznab:attr name="size" value="433859000" />
|
<newznab:attr name="size" value="433859000" />
|
||||||
<newznab:attr name="guid" value="6ac8a40d20fb27a3d8fc11cb41afae4b" />
|
<newznab:attr name="guid" value="6ac8a40d20fb27a3d8fc11cb41afae4b" />
|
||||||
<newznab:attr name="album" value="Dystopia" />
|
<newznab:attr name="book" value="Dystopia" />
|
||||||
<newznab:attr name="artist" value="Megadeth" />
|
<newznab:attr name="author" value="Megadeth" />
|
||||||
<newznab:attr name="label" value="UMeTBoy Records" />
|
<newznab:attr name="label" value="UMeTBoy Records" />
|
||||||
<newznab:attr name="coverurl" value="https://api.nzbgeek.info/covers/music/.jpg" />
|
<newznab:attr name="coverurl" value="https://api.nzbgeek.info/covers/music/.jpg" />
|
||||||
<newznab:attr name="genre" value="Hard Rock & Metal" />
|
<newznab:attr name="genre" value="Hard Rock & Metal" />
|
||||||
@@ -181,8 +181,8 @@
|
|||||||
<newznab:attr name="category" value="3040" />
|
<newznab:attr name="category" value="3040" />
|
||||||
<newznab:attr name="size" value="409419000" />
|
<newznab:attr name="size" value="409419000" />
|
||||||
<newznab:attr name="guid" value="36b4176e900767359b5ad2cb5c3b9906" />
|
<newznab:attr name="guid" value="36b4176e900767359b5ad2cb5c3b9906" />
|
||||||
<newznab:attr name="album" value="Wildfire" />
|
<newznab:attr name="book" value="Wildfire" />
|
||||||
<newznab:attr name="artist" value="Rachel Platten" />
|
<newznab:attr name="author" value="Rachel Platten" />
|
||||||
<newznab:attr name="label" value="Columbia" />
|
<newznab:attr name="label" value="Columbia" />
|
||||||
<newznab:attr name="coverurl" value="https://api.nzbgeek.info/covers/music/.jpg" />
|
<newznab:attr name="coverurl" value="https://api.nzbgeek.info/covers/music/.jpg" />
|
||||||
<newznab:attr name="genre" value="Pop" />
|
<newznab:attr name="genre" value="Pop" />
|
||||||
@@ -203,8 +203,8 @@
|
|||||||
<newznab:attr name="category" value="3040" />
|
<newznab:attr name="category" value="3040" />
|
||||||
<newznab:attr name="size" value="602702000" />
|
<newznab:attr name="size" value="602702000" />
|
||||||
<newznab:attr name="guid" value="fc1aaca4356bef96677483c7da2b5693" />
|
<newznab:attr name="guid" value="fc1aaca4356bef96677483c7da2b5693" />
|
||||||
<newznab:attr name="album" value="For All Kings" />
|
<newznab:attr name="book" value="For All Kings" />
|
||||||
<newznab:attr name="artist" value="Anthrax" />
|
<newznab:attr name="author" value="Anthrax" />
|
||||||
<newznab:attr name="label" value="Megaforce" />
|
<newznab:attr name="label" value="Megaforce" />
|
||||||
<newznab:attr name="coverurl" value="https://api.nzbgeek.info/covers/music/.jpg" />
|
<newznab:attr name="coverurl" value="https://api.nzbgeek.info/covers/music/.jpg" />
|
||||||
<newznab:attr name="genre" value="Hard Rock & Metal" />
|
<newznab:attr name="genre" value="Hard Rock & Metal" />
|
||||||
@@ -225,8 +225,8 @@
|
|||||||
<newznab:attr name="category" value="3040" />
|
<newznab:attr name="category" value="3040" />
|
||||||
<newznab:attr name="size" value="331143000" />
|
<newznab:attr name="size" value="331143000" />
|
||||||
<newznab:attr name="guid" value="c14b90c40483c0fe9ab9e93541453449" />
|
<newznab:attr name="guid" value="c14b90c40483c0fe9ab9e93541453449" />
|
||||||
<newznab:attr name="album" value="Rare Breed" />
|
<newznab:attr name="book" value="Rare Breed" />
|
||||||
<newznab:attr name="artist" value="Shrine, The" />
|
<newznab:attr name="author" value="Shrine, The" />
|
||||||
<newznab:attr name="label" value="Century Media" />
|
<newznab:attr name="label" value="Century Media" />
|
||||||
<newznab:attr name="coverurl" value="https://api.nzbgeek.info/covers/music/.jpg" />
|
<newznab:attr name="coverurl" value="https://api.nzbgeek.info/covers/music/.jpg" />
|
||||||
<newznab:attr name="genre" value="Hard Rock & Metal" />
|
<newznab:attr name="genre" value="Hard Rock & Metal" />
|
||||||
@@ -247,8 +247,8 @@
|
|||||||
<newznab:attr name="category" value="3040" />
|
<newznab:attr name="category" value="3040" />
|
||||||
<newznab:attr name="size" value="512689000" />
|
<newznab:attr name="size" value="512689000" />
|
||||||
<newznab:attr name="guid" value="cf9908f3c878107d84c015aad48b8845" />
|
<newznab:attr name="guid" value="cf9908f3c878107d84c015aad48b8845" />
|
||||||
<newznab:attr name="album" value="For All Kings" />
|
<newznab:attr name="book" value="For All Kings" />
|
||||||
<newznab:attr name="artist" value="Anthrax" />
|
<newznab:attr name="author" value="Anthrax" />
|
||||||
<newznab:attr name="label" value="Megaforce" />
|
<newznab:attr name="label" value="Megaforce" />
|
||||||
<newznab:attr name="coverurl" value="https://api.nzbgeek.info/covers/music/.jpg" />
|
<newznab:attr name="coverurl" value="https://api.nzbgeek.info/covers/music/.jpg" />
|
||||||
<newznab:attr name="genre" value="Hard Rock & Metal" />
|
<newznab:attr name="genre" value="Hard Rock & Metal" />
|
||||||
@@ -269,8 +269,8 @@
|
|||||||
<newznab:attr name="category" value="3010" />
|
<newznab:attr name="category" value="3010" />
|
||||||
<newznab:attr name="size" value="164608000" />
|
<newznab:attr name="size" value="164608000" />
|
||||||
<newznab:attr name="guid" value="06dcfac7a4b7f46dc1e9ec483f8ec73f" />
|
<newznab:attr name="guid" value="06dcfac7a4b7f46dc1e9ec483f8ec73f" />
|
||||||
<newznab:attr name="album" value="For All Kings" />
|
<newznab:attr name="book" value="For All Kings" />
|
||||||
<newznab:attr name="artist" value="Anthrax" />
|
<newznab:attr name="author" value="Anthrax" />
|
||||||
<newznab:attr name="label" value="Megaforce" />
|
<newznab:attr name="label" value="Megaforce" />
|
||||||
<newznab:attr name="coverurl" value="https://api.nzbgeek.info/covers/music/.jpg" />
|
<newznab:attr name="coverurl" value="https://api.nzbgeek.info/covers/music/.jpg" />
|
||||||
<newznab:attr name="genre" value="Hard Rock & Metal" />
|
<newznab:attr name="genre" value="Hard Rock & Metal" />
|
||||||
@@ -291,8 +291,8 @@
|
|||||||
<newznab:attr name="category" value="3010" />
|
<newznab:attr name="category" value="3010" />
|
||||||
<newznab:attr name="size" value="116494000" />
|
<newznab:attr name="size" value="116494000" />
|
||||||
<newznab:attr name="guid" value="952effe2dc87e5d1c271d5ea8fa3801f" />
|
<newznab:attr name="guid" value="952effe2dc87e5d1c271d5ea8fa3801f" />
|
||||||
<newznab:attr name="album" value="Exoplanet" />
|
<newznab:attr name="book" value="Exoplanet" />
|
||||||
<newznab:attr name="artist" value="Contortionist, The" />
|
<newznab:attr name="author" value="Contortionist, The" />
|
||||||
<newznab:attr name="label" value="Good Fight Music" />
|
<newznab:attr name="label" value="Good Fight Music" />
|
||||||
<newznab:attr name="coverurl" value="https://api.nzbgeek.info/covers/music/.jpg" />
|
<newznab:attr name="coverurl" value="https://api.nzbgeek.info/covers/music/.jpg" />
|
||||||
<newznab:attr name="genre" value="Rock" />
|
<newznab:attr name="genre" value="Rock" />
|
||||||
@@ -313,8 +313,8 @@
|
|||||||
<newznab:attr name="category" value="3010" />
|
<newznab:attr name="category" value="3010" />
|
||||||
<newznab:attr name="size" value="627256000" />
|
<newznab:attr name="size" value="627256000" />
|
||||||
<newznab:attr name="guid" value="474de3b6fe44b3190bf35fba59328327" />
|
<newznab:attr name="guid" value="474de3b6fe44b3190bf35fba59328327" />
|
||||||
<newznab:attr name="album" value="Hard Bass 2016" />
|
<newznab:attr name="book" value="Hard Bass 2016" />
|
||||||
<newznab:attr name="artist" value="Various Artists" />
|
<newznab:attr name="author" value="Various Authors" />
|
||||||
<newznab:attr name="label" value="Imports" />
|
<newznab:attr name="label" value="Imports" />
|
||||||
<newznab:attr name="coverurl" value="https://api.nzbgeek.info/covers/music/.jpg" />
|
<newznab:attr name="coverurl" value="https://api.nzbgeek.info/covers/music/.jpg" />
|
||||||
<newznab:attr name="genre" value="Dance & Electronic" />
|
<newznab:attr name="genre" value="Dance & Electronic" />
|
||||||
@@ -335,8 +335,8 @@
|
|||||||
<newznab:attr name="category" value="3040" />
|
<newznab:attr name="category" value="3040" />
|
||||||
<newznab:attr name="size" value="400294000" />
|
<newznab:attr name="size" value="400294000" />
|
||||||
<newznab:attr name="guid" value="31c118f3e86f87b071768a7e090176d1" />
|
<newznab:attr name="guid" value="31c118f3e86f87b071768a7e090176d1" />
|
||||||
<newznab:attr name="album" value="This Is Acting" />
|
<newznab:attr name="book" value="This Is Acting" />
|
||||||
<newznab:attr name="artist" value="Sia" />
|
<newznab:attr name="author" value="Sia" />
|
||||||
<newznab:attr name="label" value="Monkey Puzzle RecordsRCA Records" />
|
<newznab:attr name="label" value="Monkey Puzzle RecordsRCA Records" />
|
||||||
<newznab:attr name="coverurl" value="https://api.nzbgeek.info/covers/music/.jpg" />
|
<newznab:attr name="coverurl" value="https://api.nzbgeek.info/covers/music/.jpg" />
|
||||||
<newznab:attr name="genre" value="Pop" />
|
<newznab:attr name="genre" value="Pop" />
|
||||||
@@ -357,8 +357,8 @@
|
|||||||
<newznab:attr name="category" value="3040" />
|
<newznab:attr name="category" value="3040" />
|
||||||
<newznab:attr name="size" value="549938000" />
|
<newznab:attr name="size" value="549938000" />
|
||||||
<newznab:attr name="guid" value="664f15bd457f6669745fa494091f8108" />
|
<newznab:attr name="guid" value="664f15bd457f6669745fa494091f8108" />
|
||||||
<newznab:attr name="album" value="Monsieur Fall" />
|
<newznab:attr name="book" value="Monsieur Fall" />
|
||||||
<newznab:attr name="artist" value="Lefa" />
|
<newznab:attr name="author" value="Lefa" />
|
||||||
<newznab:attr name="label" value="Imports" />
|
<newznab:attr name="label" value="Imports" />
|
||||||
<newznab:attr name="coverurl" value="https://api.nzbgeek.info/covers/music/.jpg" />
|
<newznab:attr name="coverurl" value="https://api.nzbgeek.info/covers/music/.jpg" />
|
||||||
<newznab:attr name="genre" value="Pop" />
|
<newznab:attr name="genre" value="Pop" />
|
||||||
@@ -379,8 +379,8 @@
|
|||||||
<newznab:attr name="category" value="3040" />
|
<newznab:attr name="category" value="3040" />
|
||||||
<newznab:attr name="size" value="624799000" />
|
<newznab:attr name="size" value="624799000" />
|
||||||
<newznab:attr name="guid" value="a57f2a5d61f0b403b05904dc0e8a0d9e" />
|
<newznab:attr name="guid" value="a57f2a5d61f0b403b05904dc0e8a0d9e" />
|
||||||
<newznab:attr name="album" value="Now Thats What I Call Classic Rock" />
|
<newznab:attr name="book" value="Now Thats What I Call Classic Rock" />
|
||||||
<newznab:attr name="artist" value="Various Artists" />
|
<newznab:attr name="author" value="Various Authors" />
|
||||||
<newznab:attr name="label" value="NOW Joint Venture" />
|
<newznab:attr name="label" value="NOW Joint Venture" />
|
||||||
<newznab:attr name="coverurl" value="https://api.nzbgeek.info/covers/music/.jpg" />
|
<newznab:attr name="coverurl" value="https://api.nzbgeek.info/covers/music/.jpg" />
|
||||||
<newznab:attr name="genre" value="Rock" />
|
<newznab:attr name="genre" value="Rock" />
|
||||||
@@ -401,8 +401,8 @@
|
|||||||
<newznab:attr name="category" value="3040" />
|
<newznab:attr name="category" value="3040" />
|
||||||
<newznab:attr name="size" value="971446000" />
|
<newznab:attr name="size" value="971446000" />
|
||||||
<newznab:attr name="guid" value="6b0315222a1df2a4b07f2681a9dbbc41" />
|
<newznab:attr name="guid" value="6b0315222a1df2a4b07f2681a9dbbc41" />
|
||||||
<newznab:attr name="album" value="Exterminate Extended DJ Versions WEB" />
|
<newznab:attr name="book" value="Exterminate Extended DJ Versions WEB" />
|
||||||
<newznab:attr name="artist" value="Anime" />
|
<newznab:attr name="author" value="Anime" />
|
||||||
<newznab:attr name="genre" value="Hardcore" />
|
<newznab:attr name="genre" value="Hardcore" />
|
||||||
<newznab:attr name="year" value="2016" />
|
<newznab:attr name="year" value="2016" />
|
||||||
<newznab:attr name="grabs" value="5" />
|
<newznab:attr name="grabs" value="5" />
|
||||||
@@ -421,8 +421,8 @@
|
|||||||
<newznab:attr name="category" value="3010" />
|
<newznab:attr name="category" value="3010" />
|
||||||
<newznab:attr name="size" value="154908000" />
|
<newznab:attr name="size" value="154908000" />
|
||||||
<newznab:attr name="guid" value="51ac24dbb3122346e6fa2860efc3cff7" />
|
<newznab:attr name="guid" value="51ac24dbb3122346e6fa2860efc3cff7" />
|
||||||
<newznab:attr name="album" value="Absolute Uplifter, Vol 2 Euphoric Trance" />
|
<newznab:attr name="book" value="Absolute Uplifter, Vol 2 Euphoric Trance" />
|
||||||
<newznab:attr name="artist" value="Various Artists" />
|
<newznab:attr name="author" value="Various Authors" />
|
||||||
<newznab:attr name="label" value="Rimoshee Traxx" />
|
<newznab:attr name="label" value="Rimoshee Traxx" />
|
||||||
<newznab:attr name="coverurl" value="https://api.nzbgeek.info/covers/music/.jpg" />
|
<newznab:attr name="coverurl" value="https://api.nzbgeek.info/covers/music/.jpg" />
|
||||||
<newznab:attr name="genre" value="Dance & Electronic" />
|
<newznab:attr name="genre" value="Dance & Electronic" />
|
||||||
@@ -443,8 +443,8 @@
|
|||||||
<newznab:attr name="category" value="3010" />
|
<newznab:attr name="category" value="3010" />
|
||||||
<newznab:attr name="size" value="358513000" />
|
<newznab:attr name="size" value="358513000" />
|
||||||
<newznab:attr name="guid" value="d9e64c5efa86444f4c227fc99c155861" />
|
<newznab:attr name="guid" value="d9e64c5efa86444f4c227fc99c155861" />
|
||||||
<newznab:attr name="album" value="The Gift Of Music" />
|
<newznab:attr name="book" value="The Gift Of Music" />
|
||||||
<newznab:attr name="artist" value="Dream Theater" />
|
<newznab:attr name="author" value="Dream Theater" />
|
||||||
<newznab:attr name="label" value="Roadrunner Records" />
|
<newznab:attr name="label" value="Roadrunner Records" />
|
||||||
<newznab:attr name="coverurl" value="https://api.nzbgeek.info/covers/music/.jpg" />
|
<newznab:attr name="coverurl" value="https://api.nzbgeek.info/covers/music/.jpg" />
|
||||||
<newznab:attr name="genre" value="Hard Rock & Metal" />
|
<newznab:attr name="genre" value="Hard Rock & Metal" />
|
||||||
@@ -465,8 +465,8 @@
|
|||||||
<newznab:attr name="category" value="3010" />
|
<newznab:attr name="category" value="3010" />
|
||||||
<newznab:attr name="size" value="152033000" />
|
<newznab:attr name="size" value="152033000" />
|
||||||
<newznab:attr name="guid" value="0d720fffa565fd1ab16f2f1eb8ef2129" />
|
<newznab:attr name="guid" value="0d720fffa565fd1ab16f2f1eb8ef2129" />
|
||||||
<newznab:attr name="album" value="The End" />
|
<newznab:attr name="book" value="The End" />
|
||||||
<newznab:attr name="artist" value="Black Sabbath" />
|
<newznab:attr name="author" value="Black Sabbath" />
|
||||||
<newznab:attr name="year" value="2016" />
|
<newznab:attr name="year" value="2016" />
|
||||||
<newznab:attr name="grabs" value="341" />
|
<newznab:attr name="grabs" value="341" />
|
||||||
<newznab:attr name="usenetdate" value="Mon, 25 Jan 2016 18:52:05 +0000" />
|
<newznab:attr name="usenetdate" value="Mon, 25 Jan 2016 18:52:05 +0000" />
|
||||||
@@ -484,8 +484,8 @@
|
|||||||
<newznab:attr name="category" value="3010" />
|
<newznab:attr name="category" value="3010" />
|
||||||
<newznab:attr name="size" value="253814000" />
|
<newznab:attr name="size" value="253814000" />
|
||||||
<newznab:attr name="guid" value="0040f26df09ad3b0742f3b32afe7f3ab" />
|
<newznab:attr name="guid" value="0040f26df09ad3b0742f3b32afe7f3ab" />
|
||||||
<newznab:attr name="album" value="Status Quo Remastered Explicit" />
|
<newznab:attr name="book" value="Status Quo Remastered Explicit" />
|
||||||
<newznab:attr name="artist" value="Status Quo Quo" />
|
<newznab:attr name="author" value="Status Quo Quo" />
|
||||||
<newznab:attr name="label" value="Sidipus Records" />
|
<newznab:attr name="label" value="Sidipus Records" />
|
||||||
<newznab:attr name="coverurl" value="https://api.nzbgeek.info/covers/music/.jpg" />
|
<newznab:attr name="coverurl" value="https://api.nzbgeek.info/covers/music/.jpg" />
|
||||||
<newznab:attr name="genre" value="Hard Rock & Metal" />
|
<newznab:attr name="genre" value="Hard Rock & Metal" />
|
||||||
@@ -506,8 +506,8 @@
|
|||||||
<newznab:attr name="category" value="3010" />
|
<newznab:attr name="category" value="3010" />
|
||||||
<newznab:attr name="size" value="307205000" />
|
<newznab:attr name="size" value="307205000" />
|
||||||
<newznab:attr name="guid" value="b0109c03014ff38a7b080e4791a31cb1" />
|
<newznab:attr name="guid" value="b0109c03014ff38a7b080e4791a31cb1" />
|
||||||
<newznab:attr name="album" value="Polonaise Deel 12" />
|
<newznab:attr name="book" value="Polonaise Deel 12" />
|
||||||
<newznab:attr name="artist" value="Stanneke amp Goldfinger" />
|
<newznab:attr name="author" value="Stanneke amp Goldfinger" />
|
||||||
<newznab:attr name="genre" value="Folk" />
|
<newznab:attr name="genre" value="Folk" />
|
||||||
<newznab:attr name="year" value="2016" />
|
<newznab:attr name="year" value="2016" />
|
||||||
<newznab:attr name="grabs" value="3" />
|
<newznab:attr name="grabs" value="3" />
|
||||||
@@ -526,8 +526,8 @@
|
|||||||
<newznab:attr name="category" value="3010" />
|
<newznab:attr name="category" value="3010" />
|
||||||
<newznab:attr name="size" value="139348000" />
|
<newznab:attr name="size" value="139348000" />
|
||||||
<newznab:attr name="guid" value="3606e4c22779a8aa9da0fda29c851913" />
|
<newznab:attr name="guid" value="3606e4c22779a8aa9da0fda29c851913" />
|
||||||
<newznab:attr name="album" value="From Glory Towards Void" />
|
<newznab:attr name="book" value="From Glory Towards Void" />
|
||||||
<newznab:attr name="artist" value="Lutece" />
|
<newznab:attr name="author" value="Lutece" />
|
||||||
<newznab:attr name="label" value="Dooweet Records" />
|
<newznab:attr name="label" value="Dooweet Records" />
|
||||||
<newznab:attr name="coverurl" value="https://api.nzbgeek.info/covers/music/.jpg" />
|
<newznab:attr name="coverurl" value="https://api.nzbgeek.info/covers/music/.jpg" />
|
||||||
<newznab:attr name="genre" value="Classical" />
|
<newznab:attr name="genre" value="Classical" />
|
||||||
@@ -548,8 +548,8 @@
|
|||||||
<newznab:attr name="category" value="3010" />
|
<newznab:attr name="category" value="3010" />
|
||||||
<newznab:attr name="size" value="85396000" />
|
<newznab:attr name="size" value="85396000" />
|
||||||
<newznab:attr name="guid" value="94b8ed888b3b42279961c3472e0b080d" />
|
<newznab:attr name="guid" value="94b8ed888b3b42279961c3472e0b080d" />
|
||||||
<newznab:attr name="album" value="II" />
|
<newznab:attr name="book" value="II" />
|
||||||
<newznab:attr name="artist" value="The Black Market Trust" />
|
<newznab:attr name="author" value="The Black Market Trust" />
|
||||||
<newznab:attr name="genre" value="Vocal Jazz; Pop" />
|
<newznab:attr name="genre" value="Vocal Jazz; Pop" />
|
||||||
<newznab:attr name="year" value="2016" />
|
<newznab:attr name="year" value="2016" />
|
||||||
<newznab:attr name="usenetdate" value="Mon, 25 Jan 2016 04:00:51 +0000" />
|
<newznab:attr name="usenetdate" value="Mon, 25 Jan 2016 04:00:51 +0000" />
|
||||||
@@ -567,8 +567,8 @@
|
|||||||
<newznab:attr name="category" value="3040" />
|
<newznab:attr name="category" value="3040" />
|
||||||
<newznab:attr name="size" value="494061000" />
|
<newznab:attr name="size" value="494061000" />
|
||||||
<newznab:attr name="guid" value="ab70097392213165d77bc41b5375aa4a" />
|
<newznab:attr name="guid" value="ab70097392213165d77bc41b5375aa4a" />
|
||||||
<newznab:attr name="album" value="Winter Thrice" />
|
<newznab:attr name="book" value="Winter Thrice" />
|
||||||
<newznab:attr name="artist" value="Borknagar" />
|
<newznab:attr name="author" value="Borknagar" />
|
||||||
<newznab:attr name="label" value="Century Media" />
|
<newznab:attr name="label" value="Century Media" />
|
||||||
<newznab:attr name="coverurl" value="https://api.nzbgeek.info/covers/music/.jpg" />
|
<newznab:attr name="coverurl" value="https://api.nzbgeek.info/covers/music/.jpg" />
|
||||||
<newznab:attr name="genre" value="Hard Rock & Metal" />
|
<newznab:attr name="genre" value="Hard Rock & Metal" />
|
||||||
@@ -589,8 +589,8 @@
|
|||||||
<newznab:attr name="category" value="3040" />
|
<newznab:attr name="category" value="3040" />
|
||||||
<newznab:attr name="size" value="157346000" />
|
<newznab:attr name="size" value="157346000" />
|
||||||
<newznab:attr name="guid" value="e562e530012f8e7b8e0340baed72060e" />
|
<newznab:attr name="guid" value="e562e530012f8e7b8e0340baed72060e" />
|
||||||
<newznab:attr name="album" value="Straight Outta Compton Original Motion Picture Score" />
|
<newznab:attr name="book" value="Straight Outta Compton Original Motion Picture Score" />
|
||||||
<newznab:attr name="artist" value="Joseph Trapanese" />
|
<newznab:attr name="author" value="Joseph Trapanese" />
|
||||||
<newznab:attr name="label" value="UME" />
|
<newznab:attr name="label" value="UME" />
|
||||||
<newznab:attr name="coverurl" value="https://api.nzbgeek.info/covers/music/.jpg" />
|
<newznab:attr name="coverurl" value="https://api.nzbgeek.info/covers/music/.jpg" />
|
||||||
<newznab:attr name="genre" value="Soundtracks" />
|
<newznab:attr name="genre" value="Soundtracks" />
|
||||||
@@ -611,8 +611,8 @@
|
|||||||
<newznab:attr name="category" value="3010" />
|
<newznab:attr name="category" value="3010" />
|
||||||
<newznab:attr name="size" value="344739000" />
|
<newznab:attr name="size" value="344739000" />
|
||||||
<newznab:attr name="guid" value="1b1d1cf2690e9cf344968d6e4cd5432f" />
|
<newznab:attr name="guid" value="1b1d1cf2690e9cf344968d6e4cd5432f" />
|
||||||
<newznab:attr name="album" value="Deephouse Top 100 Vol3" />
|
<newznab:attr name="book" value="Deephouse Top 100 Vol3" />
|
||||||
<newznab:attr name="artist" value="VA" />
|
<newznab:attr name="author" value="VA" />
|
||||||
<newznab:attr name="genre" value="House" />
|
<newznab:attr name="genre" value="House" />
|
||||||
<newznab:attr name="year" value="2016" />
|
<newznab:attr name="year" value="2016" />
|
||||||
<newznab:attr name="grabs" value="6" />
|
<newznab:attr name="grabs" value="6" />
|
||||||
@@ -631,8 +631,8 @@
|
|||||||
<newznab:attr name="category" value="3010" />
|
<newznab:attr name="category" value="3010" />
|
||||||
<newznab:attr name="size" value="344739000" />
|
<newznab:attr name="size" value="344739000" />
|
||||||
<newznab:attr name="guid" value="bde795d6aa76e337ca996075d092f79a" />
|
<newznab:attr name="guid" value="bde795d6aa76e337ca996075d092f79a" />
|
||||||
<newznab:attr name="album" value="Deephouse Top 100 Vol3" />
|
<newznab:attr name="book" value="Deephouse Top 100 Vol3" />
|
||||||
<newznab:attr name="artist" value="VA" />
|
<newznab:attr name="author" value="VA" />
|
||||||
<newznab:attr name="genre" value="House" />
|
<newznab:attr name="genre" value="House" />
|
||||||
<newznab:attr name="year" value="2016" />
|
<newznab:attr name="year" value="2016" />
|
||||||
<newznab:attr name="grabs" value="8" />
|
<newznab:attr name="grabs" value="8" />
|
||||||
@@ -651,8 +651,8 @@
|
|||||||
<newznab:attr name="category" value="3040" />
|
<newznab:attr name="category" value="3040" />
|
||||||
<newznab:attr name="size" value="627117000" />
|
<newznab:attr name="size" value="627117000" />
|
||||||
<newznab:attr name="guid" value="4deac3811667801dce66637d05f4e6ca" />
|
<newznab:attr name="guid" value="4deac3811667801dce66637d05f4e6ca" />
|
||||||
<newznab:attr name="album" value="2016 GRAMMY Nominees" />
|
<newznab:attr name="book" value="2016 GRAMMY Nominees" />
|
||||||
<newznab:attr name="artist" value="Various Artists" />
|
<newznab:attr name="author" value="Various Authors" />
|
||||||
<newznab:attr name="label" value="NARAS Grammy Nominees Republic" />
|
<newznab:attr name="label" value="NARAS Grammy Nominees Republic" />
|
||||||
<newznab:attr name="coverurl" value="https://api.nzbgeek.info/covers/music/.jpg" />
|
<newznab:attr name="coverurl" value="https://api.nzbgeek.info/covers/music/.jpg" />
|
||||||
<newznab:attr name="genre" value="Pop" />
|
<newznab:attr name="genre" value="Pop" />
|
||||||
@@ -673,8 +673,8 @@
|
|||||||
<newznab:attr name="category" value="3010" />
|
<newznab:attr name="category" value="3010" />
|
||||||
<newznab:attr name="size" value="109371000" />
|
<newznab:attr name="size" value="109371000" />
|
||||||
<newznab:attr name="guid" value="ba6e1b072dc863b65c1ea73c8c0994f3" />
|
<newznab:attr name="guid" value="ba6e1b072dc863b65c1ea73c8c0994f3" />
|
||||||
<newznab:attr name="album" value="Aus Dem Schatten" />
|
<newznab:attr name="book" value="Aus Dem Schatten" />
|
||||||
<newznab:attr name="artist" value="Dvalin" />
|
<newznab:attr name="author" value="Dvalin" />
|
||||||
<newznab:attr name="label" value="Imports" />
|
<newznab:attr name="label" value="Imports" />
|
||||||
<newznab:attr name="coverurl" value="https://api.nzbgeek.info/covers/music/.jpg" />
|
<newznab:attr name="coverurl" value="https://api.nzbgeek.info/covers/music/.jpg" />
|
||||||
<newznab:attr name="genre" value="Dance & Electronic" />
|
<newznab:attr name="genre" value="Dance & Electronic" />
|
||||||
@@ -695,8 +695,8 @@
|
|||||||
<newznab:attr name="category" value="3040" />
|
<newznab:attr name="category" value="3040" />
|
||||||
<newznab:attr name="size" value="24272000" />
|
<newznab:attr name="size" value="24272000" />
|
||||||
<newznab:attr name="guid" value="c6cca22fbd4e5c21584a88d7f7324965" />
|
<newznab:attr name="guid" value="c6cca22fbd4e5c21584a88d7f7324965" />
|
||||||
<newznab:attr name="album" value="Pond Scum" />
|
<newznab:attr name="book" value="Pond Scum" />
|
||||||
<newznab:attr name="artist" value="Bonnie Prince Billy" />
|
<newznab:attr name="author" value="Bonnie Prince Billy" />
|
||||||
<newznab:attr name="label" value="Drag City" />
|
<newznab:attr name="label" value="Drag City" />
|
||||||
<newznab:attr name="coverurl" value="https://api.nzbgeek.info/covers/music/.jpg" />
|
<newznab:attr name="coverurl" value="https://api.nzbgeek.info/covers/music/.jpg" />
|
||||||
<newznab:attr name="genre" value="Rock" />
|
<newznab:attr name="genre" value="Rock" />
|
||||||
@@ -717,8 +717,8 @@
|
|||||||
<newznab:attr name="category" value="3010" />
|
<newznab:attr name="category" value="3010" />
|
||||||
<newznab:attr name="size" value="456256000" />
|
<newznab:attr name="size" value="456256000" />
|
||||||
<newznab:attr name="guid" value="c3a554620060484770cd0d2034b5191d" />
|
<newznab:attr name="guid" value="c3a554620060484770cd0d2034b5191d" />
|
||||||
<newznab:attr name="album" value="Urban Vibes, Vol 15 the Underground Sound of House Music" />
|
<newznab:attr name="book" value="Urban Vibes, Vol 15 the Underground Sound of House Music" />
|
||||||
<newznab:attr name="artist" value="Various Artists" />
|
<newznab:attr name="author" value="Various Authors" />
|
||||||
<newznab:attr name="label" value="Recovery House" />
|
<newznab:attr name="label" value="Recovery House" />
|
||||||
<newznab:attr name="coverurl" value="https://api.nzbgeek.info/covers/music/.jpg" />
|
<newznab:attr name="coverurl" value="https://api.nzbgeek.info/covers/music/.jpg" />
|
||||||
<newznab:attr name="genre" value="Dance & Electronic" />
|
<newznab:attr name="genre" value="Dance & Electronic" />
|
||||||
@@ -739,8 +739,8 @@
|
|||||||
<newznab:attr name="category" value="3010" />
|
<newznab:attr name="category" value="3010" />
|
||||||
<newznab:attr name="size" value="456256000" />
|
<newznab:attr name="size" value="456256000" />
|
||||||
<newznab:attr name="guid" value="19ad406b3e21480794e5905f335fe19c" />
|
<newznab:attr name="guid" value="19ad406b3e21480794e5905f335fe19c" />
|
||||||
<newznab:attr name="album" value="Urban Vibes, Vol 15 the Underground Sound of House Music" />
|
<newznab:attr name="book" value="Urban Vibes, Vol 15 the Underground Sound of House Music" />
|
||||||
<newznab:attr name="artist" value="Various Artists" />
|
<newznab:attr name="author" value="Various Authors" />
|
||||||
<newznab:attr name="label" value="Recovery House" />
|
<newznab:attr name="label" value="Recovery House" />
|
||||||
<newznab:attr name="coverurl" value="https://api.nzbgeek.info/covers/music/.jpg" />
|
<newznab:attr name="coverurl" value="https://api.nzbgeek.info/covers/music/.jpg" />
|
||||||
<newznab:attr name="genre" value="Dance & Electronic" />
|
<newznab:attr name="genre" value="Dance & Electronic" />
|
||||||
@@ -761,8 +761,8 @@
|
|||||||
<newznab:attr name="category" value="3010" />
|
<newznab:attr name="category" value="3010" />
|
||||||
<newznab:attr name="size" value="358555000" />
|
<newznab:attr name="size" value="358555000" />
|
||||||
<newznab:attr name="guid" value="44905e4b6dd3be7488dce4959d23103a" />
|
<newznab:attr name="guid" value="44905e4b6dd3be7488dce4959d23103a" />
|
||||||
<newznab:attr name="album" value="Handsup Hits 2 Explicit" />
|
<newznab:attr name="book" value="Handsup Hits 2 Explicit" />
|
||||||
<newznab:attr name="artist" value="Various Artists" />
|
<newznab:attr name="author" value="Various Authors" />
|
||||||
<newznab:attr name="label" value="Earthquake" />
|
<newznab:attr name="label" value="Earthquake" />
|
||||||
<newznab:attr name="coverurl" value="https://api.nzbgeek.info/covers/music/.jpg" />
|
<newznab:attr name="coverurl" value="https://api.nzbgeek.info/covers/music/.jpg" />
|
||||||
<newznab:attr name="genre" value="Dance & Electronic" />
|
<newznab:attr name="genre" value="Dance & Electronic" />
|
||||||
@@ -783,8 +783,8 @@
|
|||||||
<newznab:attr name="category" value="3010" />
|
<newznab:attr name="category" value="3010" />
|
||||||
<newznab:attr name="size" value="358555000" />
|
<newznab:attr name="size" value="358555000" />
|
||||||
<newznab:attr name="guid" value="32968fa3ecc7f15d9145477dc3f823aa" />
|
<newznab:attr name="guid" value="32968fa3ecc7f15d9145477dc3f823aa" />
|
||||||
<newznab:attr name="album" value="Handsup Hits 2 Explicit" />
|
<newznab:attr name="book" value="Handsup Hits 2 Explicit" />
|
||||||
<newznab:attr name="artist" value="Various Artists" />
|
<newznab:attr name="author" value="Various Authors" />
|
||||||
<newznab:attr name="label" value="Earthquake" />
|
<newznab:attr name="label" value="Earthquake" />
|
||||||
<newznab:attr name="coverurl" value="https://api.nzbgeek.info/covers/music/.jpg" />
|
<newznab:attr name="coverurl" value="https://api.nzbgeek.info/covers/music/.jpg" />
|
||||||
<newznab:attr name="genre" value="Dance & Electronic" />
|
<newznab:attr name="genre" value="Dance & Electronic" />
|
||||||
@@ -805,8 +805,8 @@
|
|||||||
<newznab:attr name="category" value="3010" />
|
<newznab:attr name="category" value="3010" />
|
||||||
<newznab:attr name="size" value="1324404000" />
|
<newznab:attr name="size" value="1324404000" />
|
||||||
<newznab:attr name="guid" value="878d45b6cac8ccdb8d80ae60ae581af8" />
|
<newznab:attr name="guid" value="878d45b6cac8ccdb8d80ae60ae581af8" />
|
||||||
<newznab:attr name="album" value="Ultimate Trance Reflections" />
|
<newznab:attr name="book" value="Ultimate Trance Reflections" />
|
||||||
<newznab:attr name="artist" value="MKampTW" />
|
<newznab:attr name="author" value="MKampTW" />
|
||||||
<newznab:attr name="genre" value="Trance" />
|
<newznab:attr name="genre" value="Trance" />
|
||||||
<newznab:attr name="year" value="2016" />
|
<newznab:attr name="year" value="2016" />
|
||||||
<newznab:attr name="grabs" value="4" />
|
<newznab:attr name="grabs" value="4" />
|
||||||
@@ -825,8 +825,8 @@
|
|||||||
<newznab:attr name="category" value="3010" />
|
<newznab:attr name="category" value="3010" />
|
||||||
<newznab:attr name="size" value="111538000" />
|
<newznab:attr name="size" value="111538000" />
|
||||||
<newznab:attr name="guid" value="81f9e2d70f1164aef1a9543ccf817331" />
|
<newznab:attr name="guid" value="81f9e2d70f1164aef1a9543ccf817331" />
|
||||||
<newznab:attr name="album" value="Descent" />
|
<newznab:attr name="book" value="Descent" />
|
||||||
<newznab:attr name="artist" value="Highborne" />
|
<newznab:attr name="author" value="Highborne" />
|
||||||
<newznab:attr name="label" value="Imminent Records" />
|
<newznab:attr name="label" value="Imminent Records" />
|
||||||
<newznab:attr name="coverurl" value="https://api.nzbgeek.info/covers/music/.jpg" />
|
<newznab:attr name="coverurl" value="https://api.nzbgeek.info/covers/music/.jpg" />
|
||||||
<newznab:attr name="genre" value="Rock" />
|
<newznab:attr name="genre" value="Rock" />
|
||||||
@@ -847,8 +847,8 @@
|
|||||||
<newznab:attr name="category" value="3010" />
|
<newznab:attr name="category" value="3010" />
|
||||||
<newznab:attr name="size" value="117578000" />
|
<newznab:attr name="size" value="117578000" />
|
||||||
<newznab:attr name="guid" value="da8c9de4ee5e9a4362dcac650ae42ef7" />
|
<newznab:attr name="guid" value="da8c9de4ee5e9a4362dcac650ae42ef7" />
|
||||||
<newznab:attr name="album" value="L2l" />
|
<newznab:attr name="book" value="L2l" />
|
||||||
<newznab:attr name="artist" value="Lifelss 2 Life" />
|
<newznab:attr name="author" value="Lifelss 2 Life" />
|
||||||
<newznab:attr name="label" value="Unsigned" />
|
<newznab:attr name="label" value="Unsigned" />
|
||||||
<newznab:attr name="coverurl" value="https://api.nzbgeek.info/covers/music/.jpg" />
|
<newznab:attr name="coverurl" value="https://api.nzbgeek.info/covers/music/.jpg" />
|
||||||
<newznab:attr name="genre" value="Christian & Gospel" />
|
<newznab:attr name="genre" value="Christian & Gospel" />
|
||||||
@@ -869,8 +869,8 @@
|
|||||||
<newznab:attr name="category" value="3010" />
|
<newznab:attr name="category" value="3010" />
|
||||||
<newznab:attr name="size" value="110230000" />
|
<newznab:attr name="size" value="110230000" />
|
||||||
<newznab:attr name="guid" value="682506affbe0a2aaccc0f5f830e5349e" />
|
<newznab:attr name="guid" value="682506affbe0a2aaccc0f5f830e5349e" />
|
||||||
<newznab:attr name="album" value="Blackened Visions" />
|
<newznab:attr name="book" value="Blackened Visions" />
|
||||||
<newznab:attr name="artist" value="Lumberjack Feedback" />
|
<newznab:attr name="author" value="Lumberjack Feedback" />
|
||||||
<newznab:attr name="label" value="KAOTOXIN" />
|
<newznab:attr name="label" value="KAOTOXIN" />
|
||||||
<newznab:attr name="coverurl" value="https://api.nzbgeek.info/covers/music/.jpg" />
|
<newznab:attr name="coverurl" value="https://api.nzbgeek.info/covers/music/.jpg" />
|
||||||
<newznab:attr name="genre" value="Rock" />
|
<newznab:attr name="genre" value="Rock" />
|
||||||
@@ -891,8 +891,8 @@
|
|||||||
<newznab:attr name="category" value="3010" />
|
<newznab:attr name="category" value="3010" />
|
||||||
<newznab:attr name="size" value="120720000" />
|
<newznab:attr name="size" value="120720000" />
|
||||||
<newznab:attr name="guid" value="6a1b8e3bdae227fc1f6d1a1819123ea0" />
|
<newznab:attr name="guid" value="6a1b8e3bdae227fc1f6d1a1819123ea0" />
|
||||||
<newznab:attr name="album" value="The Same Old Stories" />
|
<newznab:attr name="book" value="The Same Old Stories" />
|
||||||
<newznab:attr name="artist" value="Semidimes" />
|
<newznab:attr name="author" value="Semidimes" />
|
||||||
<newznab:attr name="label" value="Gateways Productions Art Gates Records" />
|
<newznab:attr name="label" value="Gateways Productions Art Gates Records" />
|
||||||
<newznab:attr name="coverurl" value="https://api.nzbgeek.info/covers/music/.jpg" />
|
<newznab:attr name="coverurl" value="https://api.nzbgeek.info/covers/music/.jpg" />
|
||||||
<newznab:attr name="genre" value="Hard Rock & Metal" />
|
<newznab:attr name="genre" value="Hard Rock & Metal" />
|
||||||
@@ -913,8 +913,8 @@
|
|||||||
<newznab:attr name="category" value="3010" />
|
<newznab:attr name="category" value="3010" />
|
||||||
<newznab:attr name="size" value="105702000" />
|
<newznab:attr name="size" value="105702000" />
|
||||||
<newznab:attr name="guid" value="6afe8e823a75b1e122701e58ef31f4ed" />
|
<newznab:attr name="guid" value="6afe8e823a75b1e122701e58ef31f4ed" />
|
||||||
<newznab:attr name="album" value="Rare Breed" />
|
<newznab:attr name="book" value="Rare Breed" />
|
||||||
<newznab:attr name="artist" value="Shrine, The" />
|
<newznab:attr name="author" value="Shrine, The" />
|
||||||
<newznab:attr name="label" value="Century Media" />
|
<newznab:attr name="label" value="Century Media" />
|
||||||
<newznab:attr name="coverurl" value="https://api.nzbgeek.info/covers/music/.jpg" />
|
<newznab:attr name="coverurl" value="https://api.nzbgeek.info/covers/music/.jpg" />
|
||||||
<newznab:attr name="genre" value="Hard Rock & Metal" />
|
<newznab:attr name="genre" value="Hard Rock & Metal" />
|
||||||
@@ -935,8 +935,8 @@
|
|||||||
<newznab:attr name="category" value="3010" />
|
<newznab:attr name="category" value="3010" />
|
||||||
<newznab:attr name="size" value="121798000" />
|
<newznab:attr name="size" value="121798000" />
|
||||||
<newznab:attr name="guid" value="c8d7048ddbb7044eecb3722dd532f2b9" />
|
<newznab:attr name="guid" value="c8d7048ddbb7044eecb3722dd532f2b9" />
|
||||||
<newznab:attr name="album" value="Exoplanet" />
|
<newznab:attr name="book" value="Exoplanet" />
|
||||||
<newznab:attr name="artist" value="Contortionist, The" />
|
<newznab:attr name="author" value="Contortionist, The" />
|
||||||
<newznab:attr name="label" value="Good Fight Music" />
|
<newznab:attr name="label" value="Good Fight Music" />
|
||||||
<newznab:attr name="coverurl" value="https://api.nzbgeek.info/covers/music/.jpg" />
|
<newznab:attr name="coverurl" value="https://api.nzbgeek.info/covers/music/.jpg" />
|
||||||
<newznab:attr name="genre" value="Rock" />
|
<newznab:attr name="genre" value="Rock" />
|
||||||
@@ -957,8 +957,8 @@
|
|||||||
<newznab:attr name="category" value="3010" />
|
<newznab:attr name="category" value="3010" />
|
||||||
<newznab:attr name="size" value="138935000" />
|
<newznab:attr name="size" value="138935000" />
|
||||||
<newznab:attr name="guid" value="ec0d7b18c13a076f6417ca7da1018c04" />
|
<newznab:attr name="guid" value="ec0d7b18c13a076f6417ca7da1018c04" />
|
||||||
<newznab:attr name="album" value="Dystopia" />
|
<newznab:attr name="book" value="Dystopia" />
|
||||||
<newznab:attr name="artist" value="Megadeth" />
|
<newznab:attr name="author" value="Megadeth" />
|
||||||
<newznab:attr name="label" value="UMeTBoy Records" />
|
<newznab:attr name="label" value="UMeTBoy Records" />
|
||||||
<newznab:attr name="coverurl" value="https://api.nzbgeek.info/covers/music/.jpg" />
|
<newznab:attr name="coverurl" value="https://api.nzbgeek.info/covers/music/.jpg" />
|
||||||
<newznab:attr name="genre" value="Hard Rock & Metal" />
|
<newznab:attr name="genre" value="Hard Rock & Metal" />
|
||||||
@@ -979,8 +979,8 @@
|
|||||||
<newznab:attr name="category" value="3010" />
|
<newznab:attr name="category" value="3010" />
|
||||||
<newznab:attr name="size" value="100495000" />
|
<newznab:attr name="size" value="100495000" />
|
||||||
<newznab:attr name="guid" value="fef4f9ead88a88d33253efdc25909263" />
|
<newznab:attr name="guid" value="fef4f9ead88a88d33253efdc25909263" />
|
||||||
<newznab:attr name="album" value="Klein Geluk" />
|
<newznab:attr name="book" value="Klein Geluk" />
|
||||||
<newznab:attr name="artist" value="Will Tura" />
|
<newznab:attr name="author" value="Will Tura" />
|
||||||
<newznab:attr name="label" value="Universal Music Belgium" />
|
<newznab:attr name="label" value="Universal Music Belgium" />
|
||||||
<newznab:attr name="genre" value="Folk" />
|
<newznab:attr name="genre" value="Folk" />
|
||||||
<newznab:attr name="year" value="2016" />
|
<newznab:attr name="year" value="2016" />
|
||||||
@@ -1000,8 +1000,8 @@
|
|||||||
<newznab:attr name="category" value="3010" />
|
<newznab:attr name="category" value="3010" />
|
||||||
<newznab:attr name="size" value="124254000" />
|
<newznab:attr name="size" value="124254000" />
|
||||||
<newznab:attr name="guid" value="a932af5da0bc8e35967f4b00f72b2790" />
|
<newznab:attr name="guid" value="a932af5da0bc8e35967f4b00f72b2790" />
|
||||||
<newznab:attr name="album" value="Winter Thrice" />
|
<newznab:attr name="book" value="Winter Thrice" />
|
||||||
<newznab:attr name="artist" value="Borknagar" />
|
<newznab:attr name="author" value="Borknagar" />
|
||||||
<newznab:attr name="label" value="Century Media" />
|
<newznab:attr name="label" value="Century Media" />
|
||||||
<newznab:attr name="coverurl" value="https://api.nzbgeek.info/covers/music/.jpg" />
|
<newznab:attr name="coverurl" value="https://api.nzbgeek.info/covers/music/.jpg" />
|
||||||
<newznab:attr name="genre" value="Hard Rock & Metal" />
|
<newznab:attr name="genre" value="Hard Rock & Metal" />
|
||||||
@@ -1022,8 +1022,8 @@
|
|||||||
<newznab:attr name="category" value="3010" />
|
<newznab:attr name="category" value="3010" />
|
||||||
<newznab:attr name="size" value="491897000" />
|
<newznab:attr name="size" value="491897000" />
|
||||||
<newznab:attr name="guid" value="8a5309e266d1fb7676dff6c256de0b6a" />
|
<newznab:attr name="guid" value="8a5309e266d1fb7676dff6c256de0b6a" />
|
||||||
<newznab:attr name="album" value="Media Markt TOP 40 2016 WEEK 04" />
|
<newznab:attr name="book" value="Media Markt TOP 40 2016 WEEK 04" />
|
||||||
<newznab:attr name="artist" value="Justin Bieber" />
|
<newznab:attr name="author" value="Justin Bieber" />
|
||||||
<newznab:attr name="genre" value="Top 40" />
|
<newznab:attr name="genre" value="Top 40" />
|
||||||
<newznab:attr name="year" value="2016" />
|
<newznab:attr name="year" value="2016" />
|
||||||
<newznab:attr name="grabs" value="4" />
|
<newznab:attr name="grabs" value="4" />
|
||||||
@@ -1042,8 +1042,8 @@
|
|||||||
<newznab:attr name="category" value="3010" />
|
<newznab:attr name="category" value="3010" />
|
||||||
<newznab:attr name="size" value="393058000" />
|
<newznab:attr name="size" value="393058000" />
|
||||||
<newznab:attr name="guid" value="3a1cd051d0d477f35e9255fcbc77b0c9" />
|
<newznab:attr name="guid" value="3a1cd051d0d477f35e9255fcbc77b0c9" />
|
||||||
<newznab:attr name="album" value="Exterminate Extended DJ Versions WEB" />
|
<newznab:attr name="book" value="Exterminate Extended DJ Versions WEB" />
|
||||||
<newznab:attr name="artist" value="Anime" />
|
<newznab:attr name="author" value="Anime" />
|
||||||
<newznab:attr name="genre" value="Hardcore" />
|
<newznab:attr name="genre" value="Hardcore" />
|
||||||
<newznab:attr name="year" value="2016" />
|
<newznab:attr name="year" value="2016" />
|
||||||
<newznab:attr name="grabs" value="4" />
|
<newznab:attr name="grabs" value="4" />
|
||||||
@@ -1062,8 +1062,8 @@
|
|||||||
<newznab:attr name="category" value="3040" />
|
<newznab:attr name="category" value="3040" />
|
||||||
<newznab:attr name="size" value="228128000" />
|
<newznab:attr name="size" value="228128000" />
|
||||||
<newznab:attr name="guid" value="7cf3e8abcb2a7ac2e660b97d2d7df788" />
|
<newznab:attr name="guid" value="7cf3e8abcb2a7ac2e660b97d2d7df788" />
|
||||||
<newznab:attr name="album" value="Number Two Explicit" />
|
<newznab:attr name="book" value="Number Two Explicit" />
|
||||||
<newznab:attr name="artist" value="Turkish Techno" />
|
<newznab:attr name="author" value="Turkish Techno" />
|
||||||
<newznab:attr name="label" value="Dirt Cult Records" />
|
<newznab:attr name="label" value="Dirt Cult Records" />
|
||||||
<newznab:attr name="coverurl" value="https://api.nzbgeek.info/covers/music/.jpg" />
|
<newznab:attr name="coverurl" value="https://api.nzbgeek.info/covers/music/.jpg" />
|
||||||
<newznab:attr name="genre" value="Alternative Rock" />
|
<newznab:attr name="genre" value="Alternative Rock" />
|
||||||
@@ -1084,8 +1084,8 @@
|
|||||||
<newznab:attr name="category" value="3040" />
|
<newznab:attr name="category" value="3040" />
|
||||||
<newznab:attr name="size" value="480863000" />
|
<newznab:attr name="size" value="480863000" />
|
||||||
<newznab:attr name="guid" value="31482d6031794cfb9cb52eedd4e8b960" />
|
<newznab:attr name="guid" value="31482d6031794cfb9cb52eedd4e8b960" />
|
||||||
<newznab:attr name="album" value="Dystopia" />
|
<newznab:attr name="book" value="Dystopia" />
|
||||||
<newznab:attr name="artist" value="Megadeth" />
|
<newznab:attr name="author" value="Megadeth" />
|
||||||
<newznab:attr name="label" value="UMeTBoy Records" />
|
<newznab:attr name="label" value="UMeTBoy Records" />
|
||||||
<newznab:attr name="coverurl" value="https://api.nzbgeek.info/covers/music/.jpg" />
|
<newznab:attr name="coverurl" value="https://api.nzbgeek.info/covers/music/.jpg" />
|
||||||
<newznab:attr name="genre" value="Hard Rock & Metal" />
|
<newznab:attr name="genre" value="Hard Rock & Metal" />
|
||||||
@@ -1106,8 +1106,8 @@
|
|||||||
<newznab:attr name="category" value="3040" />
|
<newznab:attr name="category" value="3040" />
|
||||||
<newznab:attr name="size" value="264470000" />
|
<newznab:attr name="size" value="264470000" />
|
||||||
<newznab:attr name="guid" value="7fdf940f3d459c1e33c31d6a89ef13f2" />
|
<newznab:attr name="guid" value="7fdf940f3d459c1e33c31d6a89ef13f2" />
|
||||||
<newznab:attr name="album" value="Love Dont Live Here Explicit" />
|
<newznab:attr name="book" value="Love Dont Live Here Explicit" />
|
||||||
<newznab:attr name="artist" value="Lionheart" />
|
<newznab:attr name="author" value="Lionheart" />
|
||||||
<newznab:attr name="label" value="LHHC RECORDS" />
|
<newznab:attr name="label" value="LHHC RECORDS" />
|
||||||
<newznab:attr name="coverurl" value="https://api.nzbgeek.info/covers/music/.jpg" />
|
<newznab:attr name="coverurl" value="https://api.nzbgeek.info/covers/music/.jpg" />
|
||||||
<newznab:attr name="genre" value="Hard Rock & Metal" />
|
<newznab:attr name="genre" value="Hard Rock & Metal" />
|
||||||
@@ -1128,8 +1128,8 @@
|
|||||||
<newznab:attr name="category" value="3010" />
|
<newznab:attr name="category" value="3010" />
|
||||||
<newznab:attr name="size" value="517476000" />
|
<newznab:attr name="size" value="517476000" />
|
||||||
<newznab:attr name="guid" value="6bbf1e1423d477a6f942224e54eac60b" />
|
<newznab:attr name="guid" value="6bbf1e1423d477a6f942224e54eac60b" />
|
||||||
<newznab:attr name="album" value="House Clubhits Megamix Vol6" />
|
<newznab:attr name="book" value="House Clubhits Megamix Vol6" />
|
||||||
<newznab:attr name="artist" value="VA" />
|
<newznab:attr name="author" value="VA" />
|
||||||
<newznab:attr name="genre" value="House" />
|
<newznab:attr name="genre" value="House" />
|
||||||
<newznab:attr name="year" value="2016" />
|
<newznab:attr name="year" value="2016" />
|
||||||
<newznab:attr name="grabs" value="10" />
|
<newznab:attr name="grabs" value="10" />
|
||||||
@@ -1148,8 +1148,8 @@
|
|||||||
<newznab:attr name="category" value="3040" />
|
<newznab:attr name="category" value="3040" />
|
||||||
<newznab:attr name="size" value="337003000" />
|
<newznab:attr name="size" value="337003000" />
|
||||||
<newznab:attr name="guid" value="a88a5cc38ea18ea66e4e2b6ab918a0b8" />
|
<newznab:attr name="guid" value="a88a5cc38ea18ea66e4e2b6ab918a0b8" />
|
||||||
<newznab:attr name="album" value="Wildfire" />
|
<newznab:attr name="book" value="Wildfire" />
|
||||||
<newznab:attr name="artist" value="Rachel Platten" />
|
<newznab:attr name="author" value="Rachel Platten" />
|
||||||
<newznab:attr name="label" value="Columbia" />
|
<newznab:attr name="label" value="Columbia" />
|
||||||
<newznab:attr name="coverurl" value="https://api.nzbgeek.info/covers/music/.jpg" />
|
<newznab:attr name="coverurl" value="https://api.nzbgeek.info/covers/music/.jpg" />
|
||||||
<newznab:attr name="genre" value="Pop" />
|
<newznab:attr name="genre" value="Pop" />
|
||||||
@@ -1170,8 +1170,8 @@
|
|||||||
<newznab:attr name="category" value="3040" />
|
<newznab:attr name="category" value="3040" />
|
||||||
<newznab:attr name="size" value="319452000" />
|
<newznab:attr name="size" value="319452000" />
|
||||||
<newznab:attr name="guid" value="427874c8793cdbf0998d1271b5523b49" />
|
<newznab:attr name="guid" value="427874c8793cdbf0998d1271b5523b49" />
|
||||||
<newznab:attr name="album" value="Moth" />
|
<newznab:attr name="book" value="Moth" />
|
||||||
<newznab:attr name="artist" value="Chairlift" />
|
<newznab:attr name="author" value="Chairlift" />
|
||||||
<newznab:attr name="label" value="Columbia" />
|
<newznab:attr name="label" value="Columbia" />
|
||||||
<newznab:attr name="coverurl" value="https://api.nzbgeek.info/covers/music/.jpg" />
|
<newznab:attr name="coverurl" value="https://api.nzbgeek.info/covers/music/.jpg" />
|
||||||
<newznab:attr name="genre" value="Alternative Rock" />
|
<newznab:attr name="genre" value="Alternative Rock" />
|
||||||
@@ -1192,8 +1192,8 @@
|
|||||||
<newznab:attr name="category" value="3010" />
|
<newznab:attr name="category" value="3010" />
|
||||||
<newznab:attr name="size" value="393726000" />
|
<newznab:attr name="size" value="393726000" />
|
||||||
<newznab:attr name="guid" value="573e6c6b7320094b89a9135538559f21" />
|
<newznab:attr name="guid" value="573e6c6b7320094b89a9135538559f21" />
|
||||||
<newznab:attr name="album" value="Exterminate Extended DJ Versions WEB" />
|
<newznab:attr name="book" value="Exterminate Extended DJ Versions WEB" />
|
||||||
<newznab:attr name="artist" value="Anime" />
|
<newznab:attr name="author" value="Anime" />
|
||||||
<newznab:attr name="genre" value="Hardcore" />
|
<newznab:attr name="genre" value="Hardcore" />
|
||||||
<newznab:attr name="year" value="2016" />
|
<newznab:attr name="year" value="2016" />
|
||||||
<newznab:attr name="grabs" value="3" />
|
<newznab:attr name="grabs" value="3" />
|
||||||
@@ -1212,8 +1212,8 @@
|
|||||||
<newznab:attr name="category" value="3040" />
|
<newznab:attr name="category" value="3040" />
|
||||||
<newznab:attr name="size" value="215392000" />
|
<newznab:attr name="size" value="215392000" />
|
||||||
<newznab:attr name="guid" value="e3e39d2cac1e2f7b509d02f8391ec0ac" />
|
<newznab:attr name="guid" value="e3e39d2cac1e2f7b509d02f8391ec0ac" />
|
||||||
<newznab:attr name="album" value="Crack House Explicit" />
|
<newznab:attr name="book" value="Crack House Explicit" />
|
||||||
<newznab:attr name="artist" value="Danforth" />
|
<newznab:attr name="author" value="Danforth" />
|
||||||
<newznab:attr name="label" value="Danforth Hardcore Paris" />
|
<newznab:attr name="label" value="Danforth Hardcore Paris" />
|
||||||
<newznab:attr name="coverurl" value="https://api.nzbgeek.info/covers/music/.jpg" />
|
<newznab:attr name="coverurl" value="https://api.nzbgeek.info/covers/music/.jpg" />
|
||||||
<newznab:attr name="genre" value="Alternative Rock" />
|
<newznab:attr name="genre" value="Alternative Rock" />
|
||||||
@@ -1234,8 +1234,8 @@
|
|||||||
<newznab:attr name="category" value="3040" />
|
<newznab:attr name="category" value="3040" />
|
||||||
<newznab:attr name="size" value="483771000" />
|
<newznab:attr name="size" value="483771000" />
|
||||||
<newznab:attr name="guid" value="5011e7db085ac89d11c6a6378ca7d7d2" />
|
<newznab:attr name="guid" value="5011e7db085ac89d11c6a6378ca7d7d2" />
|
||||||
<newznab:attr name="album" value="Monster Tape" />
|
<newznab:attr name="book" value="Monster Tape" />
|
||||||
<newznab:attr name="artist" value="Rimk" />
|
<newznab:attr name="author" value="Rimk" />
|
||||||
<newznab:attr name="label" value="Imports" />
|
<newznab:attr name="label" value="Imports" />
|
||||||
<newznab:attr name="coverurl" value="https://api.nzbgeek.info/covers/music/.jpg" />
|
<newznab:attr name="coverurl" value="https://api.nzbgeek.info/covers/music/.jpg" />
|
||||||
<newznab:attr name="genre" value="Pop" />
|
<newznab:attr name="genre" value="Pop" />
|
||||||
@@ -1256,8 +1256,8 @@
|
|||||||
<newznab:attr name="category" value="3040" />
|
<newznab:attr name="category" value="3040" />
|
||||||
<newznab:attr name="size" value="580190000" />
|
<newznab:attr name="size" value="580190000" />
|
||||||
<newznab:attr name="guid" value="b00e5ec0b5466aaf1b5ae33d0e7c7036" />
|
<newznab:attr name="guid" value="b00e5ec0b5466aaf1b5ae33d0e7c7036" />
|
||||||
<newznab:attr name="album" value="Fin de Dream Avant Gotham City Explicit" />
|
<newznab:attr name="book" value="Fin de Dream Avant Gotham City Explicit" />
|
||||||
<newznab:attr name="artist" value="HMagnum" />
|
<newznab:attr name="author" value="HMagnum" />
|
||||||
<newznab:attr name="label" value="Loudschool" />
|
<newznab:attr name="label" value="Loudschool" />
|
||||||
<newznab:attr name="coverurl" value="https://api.nzbgeek.info/covers/music/.jpg" />
|
<newznab:attr name="coverurl" value="https://api.nzbgeek.info/covers/music/.jpg" />
|
||||||
<newznab:attr name="genre" value="World Music" />
|
<newznab:attr name="genre" value="World Music" />
|
||||||
@@ -1278,8 +1278,8 @@
|
|||||||
<newznab:attr name="category" value="3040" />
|
<newznab:attr name="category" value="3040" />
|
||||||
<newznab:attr name="size" value="2786608000" />
|
<newznab:attr name="size" value="2786608000" />
|
||||||
<newznab:attr name="guid" value="7cf1334353e9196b8473f0ea361c099b" />
|
<newznab:attr name="guid" value="7cf1334353e9196b8473f0ea361c099b" />
|
||||||
<newznab:attr name="album" value="Hard Bass 2016" />
|
<newznab:attr name="book" value="Hard Bass 2016" />
|
||||||
<newznab:attr name="artist" value="Various Artists" />
|
<newznab:attr name="author" value="Various Authors" />
|
||||||
<newznab:attr name="label" value="Imports" />
|
<newznab:attr name="label" value="Imports" />
|
||||||
<newznab:attr name="coverurl" value="https://api.nzbgeek.info/covers/music/.jpg" />
|
<newznab:attr name="coverurl" value="https://api.nzbgeek.info/covers/music/.jpg" />
|
||||||
<newznab:attr name="genre" value="Dance & Electronic" />
|
<newznab:attr name="genre" value="Dance & Electronic" />
|
||||||
@@ -1300,8 +1300,8 @@
|
|||||||
<newznab:attr name="category" value="3040" />
|
<newznab:attr name="category" value="3040" />
|
||||||
<newznab:attr name="size" value="329213000" />
|
<newznab:attr name="size" value="329213000" />
|
||||||
<newznab:attr name="guid" value="34f4a16d0bb579dde38de29f716f1bdf" />
|
<newznab:attr name="guid" value="34f4a16d0bb579dde38de29f716f1bdf" />
|
||||||
<newznab:attr name="album" value="Cautionary Tale" />
|
<newznab:attr name="book" value="Cautionary Tale" />
|
||||||
<newznab:attr name="artist" value="Dylan LeBlanc" />
|
<newznab:attr name="author" value="Dylan LeBlanc" />
|
||||||
<newznab:attr name="label" value="Single Lock Records" />
|
<newznab:attr name="label" value="Single Lock Records" />
|
||||||
<newznab:attr name="coverurl" value="https://api.nzbgeek.info/covers/music/.jpg" />
|
<newznab:attr name="coverurl" value="https://api.nzbgeek.info/covers/music/.jpg" />
|
||||||
<newznab:attr name="genre" value="Folk" />
|
<newznab:attr name="genre" value="Folk" />
|
||||||
@@ -1322,8 +1322,8 @@
|
|||||||
<newznab:attr name="category" value="3010" />
|
<newznab:attr name="category" value="3010" />
|
||||||
<newznab:attr name="size" value="44773000" />
|
<newznab:attr name="size" value="44773000" />
|
||||||
<newznab:attr name="guid" value="d47f7d44a4aef15259e21323f3780ec1" />
|
<newznab:attr name="guid" value="d47f7d44a4aef15259e21323f3780ec1" />
|
||||||
<newznab:attr name="album" value="Jan 20 2016" />
|
<newznab:attr name="book" value="Jan 20 2016" />
|
||||||
<newznab:attr name="artist" value="Howard Stern Show" />
|
<newznab:attr name="author" value="Howard Stern Show" />
|
||||||
<newznab:attr name="genre" value="Comedy" />
|
<newznab:attr name="genre" value="Comedy" />
|
||||||
<newznab:attr name="year" value="2016" />
|
<newznab:attr name="year" value="2016" />
|
||||||
<newznab:attr name="grabs" value="7" />
|
<newznab:attr name="grabs" value="7" />
|
||||||
@@ -1342,8 +1342,8 @@
|
|||||||
<newznab:attr name="category" value="3040" />
|
<newznab:attr name="category" value="3040" />
|
||||||
<newznab:attr name="size" value="28241000" />
|
<newznab:attr name="size" value="28241000" />
|
||||||
<newznab:attr name="guid" value="2dc103b2b15a63f2779e36dd7cf40232" />
|
<newznab:attr name="guid" value="2dc103b2b15a63f2779e36dd7cf40232" />
|
||||||
<newznab:attr name="album" value="Cautionary Tale" />
|
<newznab:attr name="book" value="Cautionary Tale" />
|
||||||
<newznab:attr name="artist" value="Dylan LeBlanc" />
|
<newznab:attr name="author" value="Dylan LeBlanc" />
|
||||||
<newznab:attr name="label" value="Single Lock Records" />
|
<newznab:attr name="label" value="Single Lock Records" />
|
||||||
<newznab:attr name="coverurl" value="https://api.nzbgeek.info/covers/music/.jpg" />
|
<newznab:attr name="coverurl" value="https://api.nzbgeek.info/covers/music/.jpg" />
|
||||||
<newznab:attr name="genre" value="Folk" />
|
<newznab:attr name="genre" value="Folk" />
|
||||||
@@ -1364,8 +1364,8 @@
|
|||||||
<newznab:attr name="category" value="3010" />
|
<newznab:attr name="category" value="3010" />
|
||||||
<newznab:attr name="size" value="44754000" />
|
<newznab:attr name="size" value="44754000" />
|
||||||
<newznab:attr name="guid" value="be3cf337f012387b0e26c5e3a9c51281" />
|
<newznab:attr name="guid" value="be3cf337f012387b0e26c5e3a9c51281" />
|
||||||
<newznab:attr name="album" value="Jan 20 2016" />
|
<newznab:attr name="book" value="Jan 20 2016" />
|
||||||
<newznab:attr name="artist" value="Howard Stern Show" />
|
<newznab:attr name="author" value="Howard Stern Show" />
|
||||||
<newznab:attr name="genre" value="Comedy" />
|
<newznab:attr name="genre" value="Comedy" />
|
||||||
<newznab:attr name="year" value="2016" />
|
<newznab:attr name="year" value="2016" />
|
||||||
<newznab:attr name="grabs" value="7" />
|
<newznab:attr name="grabs" value="7" />
|
||||||
@@ -1384,8 +1384,8 @@
|
|||||||
<newznab:attr name="category" value="3010" />
|
<newznab:attr name="category" value="3010" />
|
||||||
<newznab:attr name="size" value="44763000" />
|
<newznab:attr name="size" value="44763000" />
|
||||||
<newznab:attr name="guid" value="218d85679fdc286720b35763380d715b" />
|
<newznab:attr name="guid" value="218d85679fdc286720b35763380d715b" />
|
||||||
<newznab:attr name="album" value="Jan 20 2016" />
|
<newznab:attr name="book" value="Jan 20 2016" />
|
||||||
<newznab:attr name="artist" value="Howard Stern Show" />
|
<newznab:attr name="author" value="Howard Stern Show" />
|
||||||
<newznab:attr name="genre" value="Comedy" />
|
<newznab:attr name="genre" value="Comedy" />
|
||||||
<newznab:attr name="year" value="2016" />
|
<newznab:attr name="year" value="2016" />
|
||||||
<newznab:attr name="grabs" value="7" />
|
<newznab:attr name="grabs" value="7" />
|
||||||
@@ -1404,8 +1404,8 @@
|
|||||||
<newznab:attr name="category" value="3010" />
|
<newznab:attr name="category" value="3010" />
|
||||||
<newznab:attr name="size" value="393377000" />
|
<newznab:attr name="size" value="393377000" />
|
||||||
<newznab:attr name="guid" value="158c3782cbb82996b0a67dc43b5ad87b" />
|
<newznab:attr name="guid" value="158c3782cbb82996b0a67dc43b5ad87b" />
|
||||||
<newznab:attr name="album" value="NRJ Winter Hits 2016" />
|
<newznab:attr name="book" value="NRJ Winter Hits 2016" />
|
||||||
<newznab:attr name="artist" value="Justin Bieber" />
|
<newznab:attr name="author" value="Justin Bieber" />
|
||||||
<newznab:attr name="genre" value="Pop" />
|
<newznab:attr name="genre" value="Pop" />
|
||||||
<newznab:attr name="year" value="2016" />
|
<newznab:attr name="year" value="2016" />
|
||||||
<newznab:attr name="grabs" value="8" />
|
<newznab:attr name="grabs" value="8" />
|
||||||
@@ -1424,8 +1424,8 @@
|
|||||||
<newznab:attr name="category" value="3010" />
|
<newznab:attr name="category" value="3010" />
|
||||||
<newznab:attr name="size" value="42361000" />
|
<newznab:attr name="size" value="42361000" />
|
||||||
<newznab:attr name="guid" value="fbc231e82faef5759a9742f678946e78" />
|
<newznab:attr name="guid" value="fbc231e82faef5759a9742f678946e78" />
|
||||||
<newznab:attr name="album" value="Jan 20 2016" />
|
<newznab:attr name="book" value="Jan 20 2016" />
|
||||||
<newznab:attr name="artist" value="Howard Stern Show" />
|
<newznab:attr name="author" value="Howard Stern Show" />
|
||||||
<newznab:attr name="genre" value="Comedy" />
|
<newznab:attr name="genre" value="Comedy" />
|
||||||
<newznab:attr name="year" value="2016" />
|
<newznab:attr name="year" value="2016" />
|
||||||
<newznab:attr name="grabs" value="8" />
|
<newznab:attr name="grabs" value="8" />
|
||||||
@@ -1444,8 +1444,8 @@
|
|||||||
<newznab:attr name="category" value="3010" />
|
<newznab:attr name="category" value="3010" />
|
||||||
<newznab:attr name="size" value="41082000" />
|
<newznab:attr name="size" value="41082000" />
|
||||||
<newznab:attr name="guid" value="2a6101c2e09ba53517186c3f211525c0" />
|
<newznab:attr name="guid" value="2a6101c2e09ba53517186c3f211525c0" />
|
||||||
<newznab:attr name="album" value="Jan 20 2016" />
|
<newznab:attr name="book" value="Jan 20 2016" />
|
||||||
<newznab:attr name="artist" value="Howard Stern Show" />
|
<newznab:attr name="author" value="Howard Stern Show" />
|
||||||
<newznab:attr name="genre" value="Comedy" />
|
<newznab:attr name="genre" value="Comedy" />
|
||||||
<newznab:attr name="year" value="2016" />
|
<newznab:attr name="year" value="2016" />
|
||||||
<newznab:attr name="grabs" value="8" />
|
<newznab:attr name="grabs" value="8" />
|
||||||
@@ -1464,8 +1464,8 @@
|
|||||||
<newznab:attr name="category" value="3010" />
|
<newznab:attr name="category" value="3010" />
|
||||||
<newznab:attr name="size" value="991267000" />
|
<newznab:attr name="size" value="991267000" />
|
||||||
<newznab:attr name="guid" value="b051509428cf7d265677e57e55e21a78" />
|
<newznab:attr name="guid" value="b051509428cf7d265677e57e55e21a78" />
|
||||||
<newznab:attr name="album" value="German Top 100 Single Charts 16 Jan 2016" />
|
<newznab:attr name="book" value="German Top 100 Single Charts 16 Jan 2016" />
|
||||||
<newznab:attr name="artist" value="Adele" />
|
<newznab:attr name="author" value="Adele" />
|
||||||
<newznab:attr name="genre" value="Pop" />
|
<newznab:attr name="genre" value="Pop" />
|
||||||
<newznab:attr name="year" value="2016" />
|
<newznab:attr name="year" value="2016" />
|
||||||
<newznab:attr name="grabs" value="6" />
|
<newznab:attr name="grabs" value="6" />
|
||||||
@@ -1484,8 +1484,8 @@
|
|||||||
<newznab:attr name="category" value="3010" />
|
<newznab:attr name="category" value="3010" />
|
||||||
<newznab:attr name="size" value="672245000" />
|
<newznab:attr name="size" value="672245000" />
|
||||||
<newznab:attr name="guid" value="f6263050e63c48b3c169deea08019ae2" />
|
<newznab:attr name="guid" value="f6263050e63c48b3c169deea08019ae2" />
|
||||||
<newznab:attr name="album" value="DJ Sounds 20161" />
|
<newznab:attr name="book" value="DJ Sounds 20161" />
|
||||||
<newznab:attr name="artist" value="Avicii" />
|
<newznab:attr name="author" value="Avicii" />
|
||||||
<newznab:attr name="label" value="Pink Revolver" />
|
<newznab:attr name="label" value="Pink Revolver" />
|
||||||
<newznab:attr name="genre" value="Dance" />
|
<newznab:attr name="genre" value="Dance" />
|
||||||
<newznab:attr name="year" value="2016" />
|
<newznab:attr name="year" value="2016" />
|
||||||
@@ -1505,8 +1505,8 @@
|
|||||||
<newznab:attr name="category" value="3010" />
|
<newznab:attr name="category" value="3010" />
|
||||||
<newznab:attr name="size" value="672245000" />
|
<newznab:attr name="size" value="672245000" />
|
||||||
<newznab:attr name="guid" value="6ce01dc1a826621c1892276af045b938" />
|
<newznab:attr name="guid" value="6ce01dc1a826621c1892276af045b938" />
|
||||||
<newznab:attr name="album" value="DJ Sounds 20161" />
|
<newznab:attr name="book" value="DJ Sounds 20161" />
|
||||||
<newznab:attr name="artist" value="Avicii" />
|
<newznab:attr name="author" value="Avicii" />
|
||||||
<newznab:attr name="label" value="Pink Revolver" />
|
<newznab:attr name="label" value="Pink Revolver" />
|
||||||
<newznab:attr name="genre" value="Dance" />
|
<newznab:attr name="genre" value="Dance" />
|
||||||
<newznab:attr name="year" value="2016" />
|
<newznab:attr name="year" value="2016" />
|
||||||
@@ -1526,8 +1526,8 @@
|
|||||||
<newznab:attr name="category" value="3010" />
|
<newznab:attr name="category" value="3010" />
|
||||||
<newznab:attr name="size" value="135093000" />
|
<newznab:attr name="size" value="135093000" />
|
||||||
<newznab:attr name="guid" value="be1bd46c6ecdf495bfcc780137853514" />
|
<newznab:attr name="guid" value="be1bd46c6ecdf495bfcc780137853514" />
|
||||||
<newznab:attr name="album" value="Caged In Memories" />
|
<newznab:attr name="book" value="Caged In Memories" />
|
||||||
<newznab:attr name="artist" value="Anima Tempo" />
|
<newznab:attr name="author" value="Anima Tempo" />
|
||||||
<newznab:attr name="genre" value="Metal" />
|
<newznab:attr name="genre" value="Metal" />
|
||||||
<newznab:attr name="year" value="2016" />
|
<newznab:attr name="year" value="2016" />
|
||||||
<newznab:attr name="grabs" value="4" />
|
<newznab:attr name="grabs" value="4" />
|
||||||
@@ -1546,8 +1546,8 @@
|
|||||||
<newznab:attr name="category" value="3010" />
|
<newznab:attr name="category" value="3010" />
|
||||||
<newznab:attr name="size" value="303751000" />
|
<newznab:attr name="size" value="303751000" />
|
||||||
<newznab:attr name="guid" value="2408b6aff117464c5a577dcc35b8bac1" />
|
<newznab:attr name="guid" value="2408b6aff117464c5a577dcc35b8bac1" />
|
||||||
<newznab:attr name="album" value="Into the Legend" />
|
<newznab:attr name="book" value="Into the Legend" />
|
||||||
<newznab:attr name="artist" value="Rhapsody Of Fire" />
|
<newznab:attr name="author" value="Rhapsody Of Fire" />
|
||||||
<newznab:attr name="label" value="AFM Records" />
|
<newznab:attr name="label" value="AFM Records" />
|
||||||
<newznab:attr name="coverurl" value="https://api.nzbgeek.info/covers/music/.jpg" />
|
<newznab:attr name="coverurl" value="https://api.nzbgeek.info/covers/music/.jpg" />
|
||||||
<newznab:attr name="genre" value="Hard Rock & Metal" />
|
<newznab:attr name="genre" value="Hard Rock & Metal" />
|
||||||
@@ -1568,8 +1568,8 @@
|
|||||||
<newznab:attr name="category" value="3010" />
|
<newznab:attr name="category" value="3010" />
|
||||||
<newznab:attr name="size" value="220695000" />
|
<newznab:attr name="size" value="220695000" />
|
||||||
<newznab:attr name="guid" value="0eee04bc2599d4b9627944cc3fef6b0a" />
|
<newznab:attr name="guid" value="0eee04bc2599d4b9627944cc3fef6b0a" />
|
||||||
<newznab:attr name="album" value="Scary Creatures" />
|
<newznab:attr name="book" value="Scary Creatures" />
|
||||||
<newznab:attr name="artist" value="Brainstorm" />
|
<newznab:attr name="author" value="Brainstorm" />
|
||||||
<newznab:attr name="label" value="AFM Records" />
|
<newznab:attr name="label" value="AFM Records" />
|
||||||
<newznab:attr name="coverurl" value="https://api.nzbgeek.info/covers/music/.jpg" />
|
<newznab:attr name="coverurl" value="https://api.nzbgeek.info/covers/music/.jpg" />
|
||||||
<newznab:attr name="genre" value="Hard Rock & Metal" />
|
<newznab:attr name="genre" value="Hard Rock & Metal" />
|
||||||
@@ -1590,8 +1590,8 @@
|
|||||||
<newznab:attr name="category" value="3010" />
|
<newznab:attr name="category" value="3010" />
|
||||||
<newznab:attr name="size" value="661012000" />
|
<newznab:attr name="size" value="661012000" />
|
||||||
<newznab:attr name="guid" value="be4ac48e3a40631b3611cd50bb471841" />
|
<newznab:attr name="guid" value="be4ac48e3a40631b3611cd50bb471841" />
|
||||||
<newznab:attr name="album" value="Hardstyle The Annual 2016 Explicit" />
|
<newznab:attr name="book" value="Hardstyle The Annual 2016 Explicit" />
|
||||||
<newznab:attr name="artist" value="Various Artists" />
|
<newznab:attr name="author" value="Various Authors" />
|
||||||
<newznab:attr name="label" value="Be Yourself Music" />
|
<newznab:attr name="label" value="Be Yourself Music" />
|
||||||
<newznab:attr name="coverurl" value="https://api.nzbgeek.info/covers/music/.jpg" />
|
<newznab:attr name="coverurl" value="https://api.nzbgeek.info/covers/music/.jpg" />
|
||||||
<newznab:attr name="genre" value="Dance & Electronic" />
|
<newznab:attr name="genre" value="Dance & Electronic" />
|
||||||
@@ -1612,7 +1612,7 @@
|
|||||||
<newznab:attr name="category" value="3040" />
|
<newznab:attr name="category" value="3040" />
|
||||||
<newznab:attr name="size" value="271778000" />
|
<newznab:attr name="size" value="271778000" />
|
||||||
<newznab:attr name="guid" value="e2afc175525a5ea0f5269ef5a03b507d" />
|
<newznab:attr name="guid" value="e2afc175525a5ea0f5269ef5a03b507d" />
|
||||||
<newznab:attr name="artist" value="Benjamin Bluemchen" />
|
<newznab:attr name="author" value="Benjamin Bluemchen" />
|
||||||
<newznab:attr name="coverurl" value="https://api.nzbgeek.info/covers/music/.jpg" />
|
<newznab:attr name="coverurl" value="https://api.nzbgeek.info/covers/music/.jpg" />
|
||||||
<newznab:attr name="genre" value="Alternative Rock" />
|
<newznab:attr name="genre" value="Alternative Rock" />
|
||||||
<newznab:attr name="year" value="2016" />
|
<newznab:attr name="year" value="2016" />
|
||||||
@@ -1632,8 +1632,8 @@
|
|||||||
<newznab:attr name="category" value="3010" />
|
<newznab:attr name="category" value="3010" />
|
||||||
<newznab:attr name="size" value="117666000" />
|
<newznab:attr name="size" value="117666000" />
|
||||||
<newznab:attr name="guid" value="59b0acad0a23ae5c0ccf2ef7a9d994b6" />
|
<newznab:attr name="guid" value="59b0acad0a23ae5c0ccf2ef7a9d994b6" />
|
||||||
<newznab:attr name="album" value="Melancholia" />
|
<newznab:attr name="book" value="Melancholia" />
|
||||||
<newznab:attr name="artist" value="Tribulation" />
|
<newznab:attr name="author" value="Tribulation" />
|
||||||
<newznab:attr name="label" value="Century Media" />
|
<newznab:attr name="label" value="Century Media" />
|
||||||
<newznab:attr name="coverurl" value="https://api.nzbgeek.info/covers/music/.jpg" />
|
<newznab:attr name="coverurl" value="https://api.nzbgeek.info/covers/music/.jpg" />
|
||||||
<newznab:attr name="genre" value="Hard Rock & Metal" />
|
<newznab:attr name="genre" value="Hard Rock & Metal" />
|
||||||
@@ -1654,8 +1654,8 @@
|
|||||||
<newznab:attr name="category" value="3010" />
|
<newznab:attr name="category" value="3010" />
|
||||||
<newznab:attr name="size" value="205842000" />
|
<newznab:attr name="size" value="205842000" />
|
||||||
<newznab:attr name="guid" value="f55fd82e73969feee4a18a561bf61df1" />
|
<newznab:attr name="guid" value="f55fd82e73969feee4a18a561bf61df1" />
|
||||||
<newznab:attr name="album" value="A State Of Trance Radio Top 20 January 2016" />
|
<newznab:attr name="book" value="A State Of Trance Radio Top 20 January 2016" />
|
||||||
<newznab:attr name="artist" value="Dash Berlin" />
|
<newznab:attr name="author" value="Dash Berlin" />
|
||||||
<newznab:attr name="genre" value="Trance" />
|
<newznab:attr name="genre" value="Trance" />
|
||||||
<newznab:attr name="year" value="2016" />
|
<newznab:attr name="year" value="2016" />
|
||||||
<newznab:attr name="grabs" value="14" />
|
<newznab:attr name="grabs" value="14" />
|
||||||
@@ -1674,8 +1674,8 @@
|
|||||||
<newznab:attr name="category" value="3010" />
|
<newznab:attr name="category" value="3010" />
|
||||||
<newznab:attr name="size" value="145323000" />
|
<newznab:attr name="size" value="145323000" />
|
||||||
<newznab:attr name="guid" value="39992159d6488a00adcfb39ee26408e8" />
|
<newznab:attr name="guid" value="39992159d6488a00adcfb39ee26408e8" />
|
||||||
<newznab:attr name="album" value="Tanz Der Skelette Folge 48 by Videomann" />
|
<newznab:attr name="book" value="Tanz Der Skelette Folge 48 by Videomann" />
|
||||||
<newznab:attr name="artist" value="Die Drei Fragezeichen Kids" />
|
<newznab:attr name="author" value="Die Drei Fragezeichen Kids" />
|
||||||
<newznab:attr name="genre" value="Hoerspiel" />
|
<newznab:attr name="genre" value="Hoerspiel" />
|
||||||
<newznab:attr name="year" value="2016" />
|
<newznab:attr name="year" value="2016" />
|
||||||
<newznab:attr name="usenetdate" value="Sun, 17 Jan 2016 00:01:02 +0000" />
|
<newznab:attr name="usenetdate" value="Sun, 17 Jan 2016 00:01:02 +0000" />
|
||||||
@@ -1693,8 +1693,8 @@
|
|||||||
<newznab:attr name="category" value="3010" />
|
<newznab:attr name="category" value="3010" />
|
||||||
<newznab:attr name="size" value="145144000" />
|
<newznab:attr name="size" value="145144000" />
|
||||||
<newznab:attr name="guid" value="9568ef54e722af0d827fadd7c4f3719e" />
|
<newznab:attr name="guid" value="9568ef54e722af0d827fadd7c4f3719e" />
|
||||||
<newznab:attr name="album" value="Tanz Der Skelette Folge 48 by Videomann" />
|
<newznab:attr name="book" value="Tanz Der Skelette Folge 48 by Videomann" />
|
||||||
<newznab:attr name="artist" value="Die Drei Fragezeichen Kids" />
|
<newznab:attr name="author" value="Die Drei Fragezeichen Kids" />
|
||||||
<newznab:attr name="genre" value="Hoerspiel" />
|
<newznab:attr name="genre" value="Hoerspiel" />
|
||||||
<newznab:attr name="year" value="2016" />
|
<newznab:attr name="year" value="2016" />
|
||||||
<newznab:attr name="usenetdate" value="Sun, 17 Jan 2016 00:01:02 +0000" />
|
<newznab:attr name="usenetdate" value="Sun, 17 Jan 2016 00:01:02 +0000" />
|
||||||
@@ -1712,8 +1712,8 @@
|
|||||||
<newznab:attr name="category" value="3010" />
|
<newznab:attr name="category" value="3010" />
|
||||||
<newznab:attr name="size" value="303085000" />
|
<newznab:attr name="size" value="303085000" />
|
||||||
<newznab:attr name="guid" value="7a545e70c7fb59de811a164089ca3cd4" />
|
<newznab:attr name="guid" value="7a545e70c7fb59de811a164089ca3cd4" />
|
||||||
<newznab:attr name="album" value="Deep Nirvana, Vol 4 25 DeepHouse Tunes" />
|
<newznab:attr name="book" value="Deep Nirvana, Vol 4 25 DeepHouse Tunes" />
|
||||||
<newznab:attr name="artist" value="Deep Nirvana Vol 4 25 Deep" />
|
<newznab:attr name="author" value="Deep Nirvana Vol 4 25 Deep" />
|
||||||
<newznab:attr name="label" value="Groove Nation" />
|
<newznab:attr name="label" value="Groove Nation" />
|
||||||
<newznab:attr name="coverurl" value="https://api.nzbgeek.info/covers/music/.jpg" />
|
<newznab:attr name="coverurl" value="https://api.nzbgeek.info/covers/music/.jpg" />
|
||||||
<newznab:attr name="genre" value="Dance & Electronic" />
|
<newznab:attr name="genre" value="Dance & Electronic" />
|
||||||
@@ -1734,8 +1734,8 @@
|
|||||||
<newznab:attr name="category" value="3040" />
|
<newznab:attr name="category" value="3040" />
|
||||||
<newznab:attr name="size" value="626000000" />
|
<newznab:attr name="size" value="626000000" />
|
||||||
<newznab:attr name="guid" value="03a7c325f9c7f5c90d3a0b9200f58b86" />
|
<newznab:attr name="guid" value="03a7c325f9c7f5c90d3a0b9200f58b86" />
|
||||||
<newznab:attr name="album" value="Straight Outta Compton Music From The Motion Picture Explicit" />
|
<newznab:attr name="book" value="Straight Outta Compton Music From The Motion Picture Explicit" />
|
||||||
<newznab:attr name="artist" value="Various Artists" />
|
<newznab:attr name="author" value="Various Authors" />
|
||||||
<newznab:attr name="label" value="UME" />
|
<newznab:attr name="label" value="UME" />
|
||||||
<newznab:attr name="coverurl" value="https://api.nzbgeek.info/covers/music/.jpg" />
|
<newznab:attr name="coverurl" value="https://api.nzbgeek.info/covers/music/.jpg" />
|
||||||
<newznab:attr name="genre" value="Soundtracks" />
|
<newznab:attr name="genre" value="Soundtracks" />
|
||||||
@@ -1757,8 +1757,8 @@
|
|||||||
<newznab:attr name="category" value="3010" />
|
<newznab:attr name="category" value="3010" />
|
||||||
<newznab:attr name="size" value="460165000" />
|
<newznab:attr name="size" value="460165000" />
|
||||||
<newznab:attr name="guid" value="201513128394d6471174f4c42d73e26c" />
|
<newznab:attr name="guid" value="201513128394d6471174f4c42d73e26c" />
|
||||||
<newznab:attr name="album" value="The Infinite Steve Vai An Anthology" />
|
<newznab:attr name="book" value="The Infinite Steve Vai An Anthology" />
|
||||||
<newznab:attr name="artist" value="Steve Vai" />
|
<newznab:attr name="author" value="Steve Vai" />
|
||||||
<newznab:attr name="year" value="2016" />
|
<newznab:attr name="year" value="2016" />
|
||||||
<newznab:attr name="grabs" value="9" />
|
<newznab:attr name="grabs" value="9" />
|
||||||
<newznab:attr name="usenetdate" value="Sat, 16 Jan 2016 11:49:53 +0000" />
|
<newznab:attr name="usenetdate" value="Sat, 16 Jan 2016 11:49:53 +0000" />
|
||||||
@@ -1776,7 +1776,7 @@
|
|||||||
<newznab:attr name="category" value="3010" />
|
<newznab:attr name="category" value="3010" />
|
||||||
<newznab:attr name="size" value="190955000" />
|
<newznab:attr name="size" value="190955000" />
|
||||||
<newznab:attr name="guid" value="577a981b680b896fce8bb8a5c6829c4d" />
|
<newznab:attr name="guid" value="577a981b680b896fce8bb8a5c6829c4d" />
|
||||||
<newznab:attr name="artist" value="Varg" />
|
<newznab:attr name="author" value="Varg" />
|
||||||
<newznab:attr name="label" value="Napalm Records" />
|
<newznab:attr name="label" value="Napalm Records" />
|
||||||
<newznab:attr name="coverurl" value="https://api.nzbgeek.info/covers/music/.jpg" />
|
<newznab:attr name="coverurl" value="https://api.nzbgeek.info/covers/music/.jpg" />
|
||||||
<newznab:attr name="genre" value="Hard Rock & Metal" />
|
<newznab:attr name="genre" value="Hard Rock & Metal" />
|
||||||
@@ -1797,8 +1797,8 @@
|
|||||||
<newznab:attr name="category" value="3010" />
|
<newznab:attr name="category" value="3010" />
|
||||||
<newznab:attr name="size" value="133681000" />
|
<newznab:attr name="size" value="133681000" />
|
||||||
<newznab:attr name="guid" value="8297d9b82646f8aff603b1f8b277d673" />
|
<newznab:attr name="guid" value="8297d9b82646f8aff603b1f8b277d673" />
|
||||||
<newznab:attr name="album" value="Motvind" />
|
<newznab:attr name="book" value="Motvind" />
|
||||||
<newznab:attr name="artist" value="Nifrost" />
|
<newznab:attr name="author" value="Nifrost" />
|
||||||
<newznab:attr name="label" value="IndiGoBoom" />
|
<newznab:attr name="label" value="IndiGoBoom" />
|
||||||
<newznab:attr name="coverurl" value="https://api.nzbgeek.info/covers/music/.jpg" />
|
<newznab:attr name="coverurl" value="https://api.nzbgeek.info/covers/music/.jpg" />
|
||||||
<newznab:attr name="genre" value="Hard Rock & Metal" />
|
<newznab:attr name="genre" value="Hard Rock & Metal" />
|
||||||
@@ -1819,8 +1819,8 @@
|
|||||||
<newznab:attr name="category" value="3010" />
|
<newznab:attr name="category" value="3010" />
|
||||||
<newznab:attr name="size" value="158783000" />
|
<newznab:attr name="size" value="158783000" />
|
||||||
<newznab:attr name="guid" value="5c3ef6652729ed046a22f5b749b6c8f1" />
|
<newznab:attr name="guid" value="5c3ef6652729ed046a22f5b749b6c8f1" />
|
||||||
<newznab:attr name="album" value="Die Rache des Untoten Folge 179 by Videomann" />
|
<newznab:attr name="book" value="Die Rache des Untoten Folge 179 by Videomann" />
|
||||||
<newznab:attr name="artist" value="Die drei Fragezeichen" />
|
<newznab:attr name="author" value="Die drei Fragezeichen" />
|
||||||
<newznab:attr name="genre" value="Hoespiel" />
|
<newznab:attr name="genre" value="Hoespiel" />
|
||||||
<newznab:attr name="year" value="2016" />
|
<newznab:attr name="year" value="2016" />
|
||||||
<newznab:attr name="grabs" value="7" />
|
<newznab:attr name="grabs" value="7" />
|
||||||
@@ -1839,8 +1839,8 @@
|
|||||||
<newznab:attr name="category" value="3010" />
|
<newznab:attr name="category" value="3010" />
|
||||||
<newznab:attr name="size" value="384044000" />
|
<newznab:attr name="size" value="384044000" />
|
||||||
<newznab:attr name="guid" value="f8b01b2bf982572922980b45ed587d47" />
|
<newznab:attr name="guid" value="f8b01b2bf982572922980b45ed587d47" />
|
||||||
<newznab:attr name="album" value="The Best Deep House, Vol 1" />
|
<newznab:attr name="book" value="The Best Deep House, Vol 1" />
|
||||||
<newznab:attr name="artist" value="Various Artists" />
|
<newznab:attr name="author" value="Various Authors" />
|
||||||
<newznab:attr name="label" value="Twentythree Records" />
|
<newznab:attr name="label" value="Twentythree Records" />
|
||||||
<newznab:attr name="coverurl" value="https://api.nzbgeek.info/covers/music/.jpg" />
|
<newznab:attr name="coverurl" value="https://api.nzbgeek.info/covers/music/.jpg" />
|
||||||
<newznab:attr name="genre" value="Dance & Electronic" />
|
<newznab:attr name="genre" value="Dance & Electronic" />
|
||||||
@@ -1861,8 +1861,8 @@
|
|||||||
<newznab:attr name="category" value="3040" />
|
<newznab:attr name="category" value="3040" />
|
||||||
<newznab:attr name="size" value="485959000" />
|
<newznab:attr name="size" value="485959000" />
|
||||||
<newznab:attr name="guid" value="dc53f812c384fadc25af8d800e3870a3" />
|
<newznab:attr name="guid" value="dc53f812c384fadc25af8d800e3870a3" />
|
||||||
<newznab:attr name="album" value="Hand aufs Herz Explicit" />
|
<newznab:attr name="book" value="Hand aufs Herz Explicit" />
|
||||||
<newznab:attr name="artist" value="Unantastbar" />
|
<newznab:attr name="author" value="Unantastbar" />
|
||||||
<newznab:attr name="label" value="RookiesampKings" />
|
<newznab:attr name="label" value="RookiesampKings" />
|
||||||
<newznab:attr name="coverurl" value="https://api.nzbgeek.info/covers/music/.jpg" />
|
<newznab:attr name="coverurl" value="https://api.nzbgeek.info/covers/music/.jpg" />
|
||||||
<newznab:attr name="genre" value="Rock" />
|
<newznab:attr name="genre" value="Rock" />
|
||||||
@@ -1883,8 +1883,8 @@
|
|||||||
<newznab:attr name="category" value="3040" />
|
<newznab:attr name="category" value="3040" />
|
||||||
<newznab:attr name="size" value="371163000" />
|
<newznab:attr name="size" value="371163000" />
|
||||||
<newznab:attr name="guid" value="288cd748eb0de993baad85d0ed13b0d2" />
|
<newznab:attr name="guid" value="288cd748eb0de993baad85d0ed13b0d2" />
|
||||||
<newznab:attr name="album" value="Tiergarten Explicit" />
|
<newznab:attr name="book" value="Tiergarten Explicit" />
|
||||||
<newznab:attr name="artist" value="Terrorgruppe" />
|
<newznab:attr name="author" value="Terrorgruppe" />
|
||||||
<newznab:attr name="label" value="AggropopRecords" />
|
<newznab:attr name="label" value="AggropopRecords" />
|
||||||
<newznab:attr name="coverurl" value="https://api.nzbgeek.info/covers/music/.jpg" />
|
<newznab:attr name="coverurl" value="https://api.nzbgeek.info/covers/music/.jpg" />
|
||||||
<newznab:attr name="genre" value="Alternative Rock" />
|
<newznab:attr name="genre" value="Alternative Rock" />
|
||||||
@@ -1905,8 +1905,8 @@
|
|||||||
<newznab:attr name="category" value="3010" />
|
<newznab:attr name="category" value="3010" />
|
||||||
<newznab:attr name="size" value="412969000" />
|
<newznab:attr name="size" value="412969000" />
|
||||||
<newznab:attr name="guid" value="031f0dc6f560180a935521a35bc11170" />
|
<newznab:attr name="guid" value="031f0dc6f560180a935521a35bc11170" />
|
||||||
<newznab:attr name="album" value="Hardstyle Sounds Vol05" />
|
<newznab:attr name="book" value="Hardstyle Sounds Vol05" />
|
||||||
<newznab:attr name="artist" value="VA" />
|
<newznab:attr name="author" value="VA" />
|
||||||
<newznab:attr name="label" value="I Love This Sound" />
|
<newznab:attr name="label" value="I Love This Sound" />
|
||||||
<newznab:attr name="genre" value="Techno" />
|
<newznab:attr name="genre" value="Techno" />
|
||||||
<newznab:attr name="year" value="2016" />
|
<newznab:attr name="year" value="2016" />
|
||||||
@@ -1926,8 +1926,8 @@
|
|||||||
<newznab:attr name="category" value="3010" />
|
<newznab:attr name="category" value="3010" />
|
||||||
<newznab:attr name="size" value="444843000" />
|
<newznab:attr name="size" value="444843000" />
|
||||||
<newznab:attr name="guid" value="8ce80d7775a0ef8799d91b432f842194" />
|
<newznab:attr name="guid" value="8ce80d7775a0ef8799d91b432f842194" />
|
||||||
<newznab:attr name="album" value="Media Markt TOP 40 2016 WEEK 03" />
|
<newznab:attr name="book" value="Media Markt TOP 40 2016 WEEK 03" />
|
||||||
<newznab:attr name="artist" value="Justin Bieber" />
|
<newznab:attr name="author" value="Justin Bieber" />
|
||||||
<newznab:attr name="genre" value="Top 40" />
|
<newznab:attr name="genre" value="Top 40" />
|
||||||
<newznab:attr name="year" value="2016" />
|
<newznab:attr name="year" value="2016" />
|
||||||
<newznab:attr name="grabs" value="2" />
|
<newznab:attr name="grabs" value="2" />
|
||||||
@@ -1946,8 +1946,8 @@
|
|||||||
<newznab:attr name="category" value="3010" />
|
<newznab:attr name="category" value="3010" />
|
||||||
<newznab:attr name="size" value="444843000" />
|
<newznab:attr name="size" value="444843000" />
|
||||||
<newznab:attr name="guid" value="13763b97f75ee8245f9fb14f5ea0b5c7" />
|
<newznab:attr name="guid" value="13763b97f75ee8245f9fb14f5ea0b5c7" />
|
||||||
<newznab:attr name="album" value="Media Markt TOP 40 2016 WEEK 03" />
|
<newznab:attr name="book" value="Media Markt TOP 40 2016 WEEK 03" />
|
||||||
<newznab:attr name="artist" value="Justin Bieber" />
|
<newznab:attr name="author" value="Justin Bieber" />
|
||||||
<newznab:attr name="genre" value="Top 40" />
|
<newznab:attr name="genre" value="Top 40" />
|
||||||
<newznab:attr name="year" value="2016" />
|
<newznab:attr name="year" value="2016" />
|
||||||
<newznab:attr name="grabs" value="4" />
|
<newznab:attr name="grabs" value="4" />
|
||||||
@@ -1966,8 +1966,8 @@
|
|||||||
<newznab:attr name="category" value="3010" />
|
<newznab:attr name="category" value="3010" />
|
||||||
<newznab:attr name="size" value="345186000" />
|
<newznab:attr name="size" value="345186000" />
|
||||||
<newznab:attr name="guid" value="8bb7a0045f07af8a39ae4568d366b2ca" />
|
<newznab:attr name="guid" value="8bb7a0045f07af8a39ae4568d366b2ca" />
|
||||||
<newznab:attr name="album" value="House Do Brasil, Vol 2" />
|
<newznab:attr name="book" value="House Do Brasil, Vol 2" />
|
||||||
<newznab:attr name="artist" value="Various Artists" />
|
<newznab:attr name="author" value="Various Authors" />
|
||||||
<newznab:attr name="label" value="Gaathy Recordings" />
|
<newznab:attr name="label" value="Gaathy Recordings" />
|
||||||
<newznab:attr name="coverurl" value="https://api.nzbgeek.info/covers/music/.jpg" />
|
<newznab:attr name="coverurl" value="https://api.nzbgeek.info/covers/music/.jpg" />
|
||||||
<newznab:attr name="genre" value="Dance & Electronic" />
|
<newznab:attr name="genre" value="Dance & Electronic" />
|
||||||
@@ -1988,8 +1988,8 @@
|
|||||||
<newznab:attr name="category" value="3010" />
|
<newznab:attr name="category" value="3010" />
|
||||||
<newznab:attr name="size" value="233252000" />
|
<newznab:attr name="size" value="233252000" />
|
||||||
<newznab:attr name="guid" value="802c4caf3ac508b49abcd9a5f06ec97c" />
|
<newznab:attr name="guid" value="802c4caf3ac508b49abcd9a5f06ec97c" />
|
||||||
<newznab:attr name="album" value="Rinse FM 01012016" />
|
<newznab:attr name="book" value="Rinse FM 01012016" />
|
||||||
<newznab:attr name="artist" value="Todd Edwards" />
|
<newznab:attr name="author" value="Todd Edwards" />
|
||||||
<newznab:attr name="genre" value="House" />
|
<newznab:attr name="genre" value="House" />
|
||||||
<newznab:attr name="year" value="2016" />
|
<newznab:attr name="year" value="2016" />
|
||||||
<newznab:attr name="grabs" value="2" />
|
<newznab:attr name="grabs" value="2" />
|
||||||
@@ -2008,8 +2008,8 @@
|
|||||||
<newznab:attr name="category" value="3040" />
|
<newznab:attr name="category" value="3040" />
|
||||||
<newznab:attr name="size" value="414959000" />
|
<newznab:attr name="size" value="414959000" />
|
||||||
<newznab:attr name="guid" value="59c990e1a889c7e6d436ea069ab90336" />
|
<newznab:attr name="guid" value="59c990e1a889c7e6d436ea069ab90336" />
|
||||||
<newznab:attr name="album" value="Leben II Explicit" />
|
<newznab:attr name="book" value="Leben II Explicit" />
|
||||||
<newznab:attr name="artist" value="Azad" />
|
<newznab:attr name="author" value="Azad" />
|
||||||
<newznab:attr name="label" value="Bozz Music" />
|
<newznab:attr name="label" value="Bozz Music" />
|
||||||
<newznab:attr name="coverurl" value="https://api.nzbgeek.info/covers/music/.jpg" />
|
<newznab:attr name="coverurl" value="https://api.nzbgeek.info/covers/music/.jpg" />
|
||||||
<newznab:attr name="genre" value="Rap & Hip-Hop" />
|
<newznab:attr name="genre" value="Rap & Hip-Hop" />
|
||||||
@@ -2030,8 +2030,8 @@
|
|||||||
<newznab:attr name="category" value="3010" />
|
<newznab:attr name="category" value="3010" />
|
||||||
<newznab:attr name="size" value="166201000" />
|
<newznab:attr name="size" value="166201000" />
|
||||||
<newznab:attr name="guid" value="9ea015decb1907fb579f8fcd2d08daa2" />
|
<newznab:attr name="guid" value="9ea015decb1907fb579f8fcd2d08daa2" />
|
||||||
<newznab:attr name="album" value="Into the Legend" />
|
<newznab:attr name="book" value="Into the Legend" />
|
||||||
<newznab:attr name="artist" value="Rhapsody Of Fire" />
|
<newznab:attr name="author" value="Rhapsody Of Fire" />
|
||||||
<newznab:attr name="label" value="AFM Records" />
|
<newznab:attr name="label" value="AFM Records" />
|
||||||
<newznab:attr name="coverurl" value="https://api.nzbgeek.info/covers/music/.jpg" />
|
<newznab:attr name="coverurl" value="https://api.nzbgeek.info/covers/music/.jpg" />
|
||||||
<newznab:attr name="genre" value="Hard Rock & Metal" />
|
<newznab:attr name="genre" value="Hard Rock & Metal" />
|
||||||
@@ -2052,8 +2052,8 @@
|
|||||||
<newznab:attr name="category" value="3010" />
|
<newznab:attr name="category" value="3010" />
|
||||||
<newznab:attr name="size" value="721704000" />
|
<newznab:attr name="size" value="721704000" />
|
||||||
<newznab:attr name="guid" value="10e3b9bc3c73702d3e1be80bdaceba5c" />
|
<newznab:attr name="guid" value="10e3b9bc3c73702d3e1be80bdaceba5c" />
|
||||||
<newznab:attr name="album" value="Berlin Deep House 20161" />
|
<newznab:attr name="book" value="Berlin Deep House 20161" />
|
||||||
<newznab:attr name="artist" value="Various Artists" />
|
<newznab:attr name="author" value="Various Authors" />
|
||||||
<newznab:attr name="genre" value="House, Club House, Deep House" />
|
<newznab:attr name="genre" value="House, Club House, Deep House" />
|
||||||
<newznab:attr name="year" value="2016" />
|
<newznab:attr name="year" value="2016" />
|
||||||
<newznab:attr name="grabs" value="6" />
|
<newznab:attr name="grabs" value="6" />
|
||||||
@@ -2072,8 +2072,8 @@
|
|||||||
<newznab:attr name="category" value="3010" />
|
<newznab:attr name="category" value="3010" />
|
||||||
<newznab:attr name="size" value="1544589000" />
|
<newznab:attr name="size" value="1544589000" />
|
||||||
<newznab:attr name="guid" value="d62c60cd848b93d55d44266338f2918b" />
|
<newznab:attr name="guid" value="d62c60cd848b93d55d44266338f2918b" />
|
||||||
<newznab:attr name="album" value="Tech House Masters Fresh" />
|
<newznab:attr name="book" value="Tech House Masters Fresh" />
|
||||||
<newznab:attr name="artist" value="Derek Howell" />
|
<newznab:attr name="author" value="Derek Howell" />
|
||||||
<newznab:attr name="genre" value="Electronic" />
|
<newznab:attr name="genre" value="Electronic" />
|
||||||
<newznab:attr name="year" value="2016" />
|
<newznab:attr name="year" value="2016" />
|
||||||
<newznab:attr name="grabs" value="5" />
|
<newznab:attr name="grabs" value="5" />
|
||||||
@@ -2092,8 +2092,8 @@
|
|||||||
<newznab:attr name="category" value="3010" />
|
<newznab:attr name="category" value="3010" />
|
||||||
<newznab:attr name="size" value="1470081000" />
|
<newznab:attr name="size" value="1470081000" />
|
||||||
<newznab:attr name="guid" value="792c03529273a5f8fe44cd29c177ce22" />
|
<newznab:attr name="guid" value="792c03529273a5f8fe44cd29c177ce22" />
|
||||||
<newznab:attr name="album" value="EDM Essentials Future Banging Concert" />
|
<newznab:attr name="book" value="EDM Essentials Future Banging Concert" />
|
||||||
<newznab:attr name="artist" value="Hardwell amp Armin van Buuren" />
|
<newznab:attr name="author" value="Hardwell amp Armin van Buuren" />
|
||||||
<newznab:attr name="label" value="DO IT YOURSELF" />
|
<newznab:attr name="label" value="DO IT YOURSELF" />
|
||||||
<newznab:attr name="genre" value="House" />
|
<newznab:attr name="genre" value="House" />
|
||||||
<newznab:attr name="year" value="2016" />
|
<newznab:attr name="year" value="2016" />
|
||||||
@@ -2113,8 +2113,8 @@
|
|||||||
<newznab:attr name="category" value="3010" />
|
<newznab:attr name="category" value="3010" />
|
||||||
<newznab:attr name="size" value="619827000" />
|
<newznab:attr name="size" value="619827000" />
|
||||||
<newznab:attr name="guid" value="a98724fb81f939a0c7b8b5a9852ea731" />
|
<newznab:attr name="guid" value="a98724fb81f939a0c7b8b5a9852ea731" />
|
||||||
<newznab:attr name="album" value="Dance 2016" />
|
<newznab:attr name="book" value="Dance 2016" />
|
||||||
<newznab:attr name="artist" value="Sigala featuring Bryn Christopher" />
|
<newznab:attr name="author" value="Sigala featuring Bryn Christopher" />
|
||||||
<newznab:attr name="genre" value="Dance" />
|
<newznab:attr name="genre" value="Dance" />
|
||||||
<newznab:attr name="year" value="2016" />
|
<newznab:attr name="year" value="2016" />
|
||||||
<newznab:attr name="grabs" value="5" />
|
<newznab:attr name="grabs" value="5" />
|
||||||
@@ -2133,8 +2133,8 @@
|
|||||||
<newznab:attr name="category" value="3040" />
|
<newznab:attr name="category" value="3040" />
|
||||||
<newznab:attr name="size" value="302517000" />
|
<newznab:attr name="size" value="302517000" />
|
||||||
<newznab:attr name="guid" value="184ba8c920c587da880b55bacb3d43c6" />
|
<newznab:attr name="guid" value="184ba8c920c587da880b55bacb3d43c6" />
|
||||||
<newznab:attr name="album" value="Leave Me Alone" />
|
<newznab:attr name="book" value="Leave Me Alone" />
|
||||||
<newznab:attr name="artist" value="Hinds" />
|
<newznab:attr name="author" value="Hinds" />
|
||||||
<newznab:attr name="label" value="Mom amp Pop Music" />
|
<newznab:attr name="label" value="Mom amp Pop Music" />
|
||||||
<newznab:attr name="coverurl" value="https://api.nzbgeek.info/covers/music/.jpg" />
|
<newznab:attr name="coverurl" value="https://api.nzbgeek.info/covers/music/.jpg" />
|
||||||
<newznab:attr name="genre" value="Alternative Rock" />
|
<newznab:attr name="genre" value="Alternative Rock" />
|
||||||
|
|||||||
@@ -8,12 +8,12 @@
|
|||||||
<copyright>Copyright 2009 Waffles</copyright>
|
<copyright>Copyright 2009 Waffles</copyright>
|
||||||
<webMaster>waffles@waffles.ch</webMaster>
|
<webMaster>waffles@waffles.ch</webMaster>
|
||||||
<image>
|
<image>
|
||||||
<title>artist:coldplay</title>
|
<title>author:coldplay</title>
|
||||||
<url>https://waffles.ch/favicon.ico</url>
|
<url>https://waffles.ch/favicon.ico</url>
|
||||||
<link>https://waffles.ch/browse.php?c0=1&q=artist%3Acoldplay&limit=50</link>
|
<link>https://waffles.ch/browse.php?c0=1&q=author%3Acoldplay&limit=50</link>
|
||||||
<width>16</width>
|
<width>16</width>
|
||||||
<height>16</height>
|
<height>16</height>
|
||||||
<description>artist:coldplay</description>
|
<description>author:coldplay</description>
|
||||||
</image>
|
</image>
|
||||||
<item>
|
<item>
|
||||||
<title>Coldplay - Kaleidoscope EP (FLAC HD) [2017-Web-FLAC-Lossless]</title>
|
<title>Coldplay - Kaleidoscope EP (FLAC HD) [2017-Web-FLAC-Lossless]</title>
|
||||||
@@ -81,7 +81,7 @@
|
|||||||
<br />
|
<br />
|
||||||
<b>Total length:</b> 24:56<br />
|
<b>Total length:</b> 24:56<br />
|
||||||
<br />
|
<br />
|
||||||
More information: <a href="https://anon.click/https://itunes.apple.com/us/album/kaleidoscope-ep/id1248904974?uo=4" target="_blank">https://itunes.apple.com/us/album/kaleidoscope-ep/id1248904974?uo=4</a>
|
More information: <a href="https://anon.click/https://itunes.apple.com/us/book/kaleidoscope-ep/id1248904974?uo=4" target="_blank">https://itunes.apple.com/us/book/kaleidoscope-ep/id1248904974?uo=4</a>
|
||||||
</description>
|
</description>
|
||||||
<link>https://waffles.ch/download.php/xxx/1166785/Coldplay%20-%20Kaleidoscope%20EP%20%5B2017-Web-MP3-320%5D.torrent?passkey=123456789&uid=xxx&rss=1</link>
|
<link>https://waffles.ch/download.php/xxx/1166785/Coldplay%20-%20Kaleidoscope%20EP%20%5B2017-Web-MP3-320%5D.torrent?passkey=123456789&uid=xxx&rss=1</link>
|
||||||
<comments>https://waffles.ch/details.php?id=1166785&hit=1</comments>
|
<comments>https://waffles.ch/details.php?id=1166785&hit=1</comments>
|
||||||
@@ -156,7 +156,7 @@
|
|||||||
<br />
|
<br />
|
||||||
<b>Total length:</b> 24:56<br />
|
<b>Total length:</b> 24:56<br />
|
||||||
<br />
|
<br />
|
||||||
More information: <a href="https://anon.click/https://itunes.apple.com/us/album/kaleidoscope-ep/id1248904974?uo=4" target="_blank">https://itunes.apple.com/us/album/kaleidoscope-ep/id1248904974?uo=4</a>
|
More information: <a href="https://anon.click/https://itunes.apple.com/us/book/kaleidoscope-ep/id1248904974?uo=4" target="_blank">https://itunes.apple.com/us/book/kaleidoscope-ep/id1248904974?uo=4</a>
|
||||||
</description>
|
</description>
|
||||||
<link>https://waffles.ch/download.php/xxx/1166765/Coldplay%20-%20Kaleidoscope%20EP%20%5B2017-Web-MP3-V0%28VBR%29%5D.torrent?passkey=123456789&uid=xxx&rss=1</link>
|
<link>https://waffles.ch/download.php/xxx/1166765/Coldplay%20-%20Kaleidoscope%20EP%20%5B2017-Web-MP3-V0%28VBR%29%5D.torrent?passkey=123456789&uid=xxx&rss=1</link>
|
||||||
<comments>https://waffles.ch/details.php?id=1166765&hit=1</comments>
|
<comments>https://waffles.ch/details.php?id=1166765&hit=1</comments>
|
||||||
@@ -224,7 +224,7 @@
|
|||||||
<b>Country:</b> UK<br />
|
<b>Country:</b> UK<br />
|
||||||
<b>Year:</b> 2000<br />
|
<b>Year:</b> 2000<br />
|
||||||
<b>Genre:</b> Alternative Rock, Britpop<br />
|
<b>Genre:</b> Alternative Rock, Britpop<br />
|
||||||
<b>Format:</b> WEB, Album<br />
|
<b>Format:</b> WEB, Book<br />
|
||||||
<br />
|
<br />
|
||||||
<b>Tracklist</b><br />
|
<b>Tracklist</b><br />
|
||||||
<br />
|
<br />
|
||||||
@@ -546,7 +546,7 @@
|
|||||||
Bitrate: Lossless<br/>
|
Bitrate: Lossless<br/>
|
||||||
</tr></td></table><br/>
|
</tr></td></table><br/>
|
||||||
Year: 2017<br />
|
Year: 2017<br />
|
||||||
Artist: The Chainsmokers &amp; Coldplay<br />
|
Author: The Chainsmokers &amp; Coldplay<br />
|
||||||
Source: WEB <br />
|
Source: WEB <br />
|
||||||
Quality: FLAC<br />
|
Quality: FLAC<br />
|
||||||
<br />
|
<br />
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
nin.* in this directory are re-encodes of nin.mp3
|
nin.* in this directory are re-encodes of nin.mp3
|
||||||
|
|
||||||
title : 999,999
|
title : 999,999
|
||||||
artist : Nine Inch Nails
|
author : Nine Inch Nails
|
||||||
track : 1
|
track : 1
|
||||||
album : The Slip
|
book : The Slip
|
||||||
copyright : Attribution-Noncommercial-Share Alike 3.0 United States: http://creativecommons.org/licenses/by-nc-sa/3.0/us/
|
copyright : Attribution-Noncommercial-Share Alike 3.0 United States: http://creativecommons.org/licenses/by-nc-sa/3.0/us/
|
||||||
comment : URL: http://freemusicarchive.org/music/Nine_Inch_Nails/The_Slip/999999
|
comment : URL: http://freemusicarchive.org/music/Nine_Inch_Nails/The_Slip/999999
|
||||||
: Comments: http://freemusicarchive.org/
|
: Comments: http://freemusicarchive.org/
|
||||||
|
|||||||
@@ -20,12 +20,12 @@ namespace NzbDrone.Core.Test.HealthCheck.Checks
|
|||||||
public class DeleteBadMediaCoversFixture : CoreTest<DeleteBadMediaCovers>
|
public class DeleteBadMediaCoversFixture : CoreTest<DeleteBadMediaCovers>
|
||||||
{
|
{
|
||||||
private List<MetadataFile> _metadata;
|
private List<MetadataFile> _metadata;
|
||||||
private List<Author> _artist;
|
private List<Author> _author;
|
||||||
|
|
||||||
[SetUp]
|
[SetUp]
|
||||||
public void Setup()
|
public void Setup()
|
||||||
{
|
{
|
||||||
_artist = Builder<Author>.CreateListOfSize(1)
|
_author = Builder<Author>.CreateListOfSize(1)
|
||||||
.All()
|
.All()
|
||||||
.With(c => c.Path = "C:\\Music\\".AsOsAgnostic())
|
.With(c => c.Path = "C:\\Music\\".AsOsAgnostic())
|
||||||
.Build().ToList();
|
.Build().ToList();
|
||||||
@@ -33,12 +33,12 @@ namespace NzbDrone.Core.Test.HealthCheck.Checks
|
|||||||
_metadata = Builder<MetadataFile>.CreateListOfSize(1)
|
_metadata = Builder<MetadataFile>.CreateListOfSize(1)
|
||||||
.Build().ToList();
|
.Build().ToList();
|
||||||
|
|
||||||
Mocker.GetMock<IArtistService>()
|
Mocker.GetMock<IAuthorService>()
|
||||||
.Setup(c => c.AllArtistPaths())
|
.Setup(c => c.AllAuthorPaths())
|
||||||
.Returns(_artist.ToDictionary(x => x.Id, x => x.Path));
|
.Returns(_author.ToDictionary(x => x.Id, x => x.Path));
|
||||||
|
|
||||||
Mocker.GetMock<IMetadataFileService>()
|
Mocker.GetMock<IMetadataFileService>()
|
||||||
.Setup(c => c.GetFilesByAuthor(_artist.First().Id))
|
.Setup(c => c.GetFilesByAuthor(_author.First().Id))
|
||||||
.Returns(_metadata);
|
.Returns(_metadata);
|
||||||
|
|
||||||
Mocker.GetMock<IConfigService>().SetupGet(c => c.CleanupMetadataImages).Returns(true);
|
Mocker.GetMock<IConfigService>().SetupGet(c => c.CleanupMetadataImages).Returns(true);
|
||||||
@@ -47,7 +47,7 @@ namespace NzbDrone.Core.Test.HealthCheck.Checks
|
|||||||
[Test]
|
[Test]
|
||||||
public void should_not_process_non_image_files()
|
public void should_not_process_non_image_files()
|
||||||
{
|
{
|
||||||
_metadata.First().RelativePath = "album\\file.xml".AsOsAgnostic();
|
_metadata.First().RelativePath = "book\\file.xml".AsOsAgnostic();
|
||||||
_metadata.First().Type = MetadataType.BookMetadata;
|
_metadata.First().Type = MetadataType.BookMetadata;
|
||||||
|
|
||||||
Subject.Clean();
|
Subject.Clean();
|
||||||
@@ -73,7 +73,7 @@ namespace NzbDrone.Core.Test.HealthCheck.Checks
|
|||||||
Subject.Clean();
|
Subject.Clean();
|
||||||
|
|
||||||
Mocker.GetMock<IConfigService>().VerifySet(c => c.CleanupMetadataImages = true, Times.Never());
|
Mocker.GetMock<IConfigService>().VerifySet(c => c.CleanupMetadataImages = true, Times.Never());
|
||||||
Mocker.GetMock<IArtistService>().Verify(c => c.GetAllAuthors(), Times.Never());
|
Mocker.GetMock<IAuthorService>().Verify(c => c.GetAllAuthors(), Times.Never());
|
||||||
|
|
||||||
AssertImageWasNotRemoved();
|
AssertImageWasNotRemoved();
|
||||||
}
|
}
|
||||||
@@ -91,9 +91,9 @@ namespace NzbDrone.Core.Test.HealthCheck.Checks
|
|||||||
[Test]
|
[Test]
|
||||||
public void should_delete_html_images()
|
public void should_delete_html_images()
|
||||||
{
|
{
|
||||||
var imagePath = "C:\\Music\\Album\\image.jpg".AsOsAgnostic();
|
var imagePath = "C:\\Music\\Book\\image.jpg".AsOsAgnostic();
|
||||||
_metadata.First().LastUpdated = new DateTime(2014, 12, 29);
|
_metadata.First().LastUpdated = new DateTime(2014, 12, 29);
|
||||||
_metadata.First().RelativePath = "Album\\image.jpg".AsOsAgnostic();
|
_metadata.First().RelativePath = "Book\\image.jpg".AsOsAgnostic();
|
||||||
_metadata.First().Type = MetadataType.AuthorImage;
|
_metadata.First().Type = MetadataType.AuthorImage;
|
||||||
|
|
||||||
Mocker.GetMock<IDiskProvider>()
|
Mocker.GetMock<IDiskProvider>()
|
||||||
@@ -109,10 +109,10 @@ namespace NzbDrone.Core.Test.HealthCheck.Checks
|
|||||||
[Test]
|
[Test]
|
||||||
public void should_delete_empty_images()
|
public void should_delete_empty_images()
|
||||||
{
|
{
|
||||||
var imagePath = "C:\\Music\\Album\\image.jpg".AsOsAgnostic();
|
var imagePath = "C:\\Music\\Book\\image.jpg".AsOsAgnostic();
|
||||||
_metadata.First().LastUpdated = new DateTime(2014, 12, 29);
|
_metadata.First().LastUpdated = new DateTime(2014, 12, 29);
|
||||||
_metadata.First().Type = MetadataType.BookImage;
|
_metadata.First().Type = MetadataType.BookImage;
|
||||||
_metadata.First().RelativePath = "Album\\image.jpg".AsOsAgnostic();
|
_metadata.First().RelativePath = "Book\\image.jpg".AsOsAgnostic();
|
||||||
|
|
||||||
Mocker.GetMock<IDiskProvider>()
|
Mocker.GetMock<IDiskProvider>()
|
||||||
.Setup(c => c.OpenReadStream(imagePath))
|
.Setup(c => c.OpenReadStream(imagePath))
|
||||||
@@ -127,9 +127,9 @@ namespace NzbDrone.Core.Test.HealthCheck.Checks
|
|||||||
[Test]
|
[Test]
|
||||||
public void should_not_delete_non_html_files()
|
public void should_not_delete_non_html_files()
|
||||||
{
|
{
|
||||||
var imagePath = "C:\\Music\\Album\\image.jpg".AsOsAgnostic();
|
var imagePath = "C:\\Music\\Book\\image.jpg".AsOsAgnostic();
|
||||||
_metadata.First().LastUpdated = new DateTime(2014, 12, 29);
|
_metadata.First().LastUpdated = new DateTime(2014, 12, 29);
|
||||||
_metadata.First().RelativePath = "Album\\image.jpg".AsOsAgnostic();
|
_metadata.First().RelativePath = "Book\\image.jpg".AsOsAgnostic();
|
||||||
|
|
||||||
Mocker.GetMock<IDiskProvider>()
|
Mocker.GetMock<IDiskProvider>()
|
||||||
.Setup(c => c.OpenReadStream(imagePath))
|
.Setup(c => c.OpenReadStream(imagePath))
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ namespace NzbDrone.Core.Test.HealthCheck.Checks
|
|||||||
{
|
{
|
||||||
private void GivenMissingRootFolder()
|
private void GivenMissingRootFolder()
|
||||||
{
|
{
|
||||||
var artist = Builder<Author>.CreateListOfSize(1)
|
var author = Builder<Author>.CreateListOfSize(1)
|
||||||
.Build()
|
.Build()
|
||||||
.ToList();
|
.ToList();
|
||||||
|
|
||||||
@@ -26,14 +26,14 @@ namespace NzbDrone.Core.Test.HealthCheck.Checks
|
|||||||
|
|
||||||
Mocker.GetMock<IAuthorService>()
|
Mocker.GetMock<IAuthorService>()
|
||||||
.Setup(s => s.AllAuthorPaths())
|
.Setup(s => s.AllAuthorPaths())
|
||||||
.Returns(artist.ToDictionary(x => x.Id, x => x.Path));
|
.Returns(author.ToDictionary(x => x.Id, x => x.Path));
|
||||||
|
|
||||||
Mocker.GetMock<IImportListFactory>()
|
Mocker.GetMock<IImportListFactory>()
|
||||||
.Setup(s => s.All())
|
.Setup(s => s.All())
|
||||||
.Returns(importList);
|
.Returns(importList);
|
||||||
|
|
||||||
Mocker.GetMock<IDiskProvider>()
|
Mocker.GetMock<IDiskProvider>()
|
||||||
.Setup(s => s.GetParentFolder(artist.First().Path))
|
.Setup(s => s.GetParentFolder(author.First().Path))
|
||||||
.Returns(@"C:\Music");
|
.Returns(@"C:\Music");
|
||||||
|
|
||||||
Mocker.GetMock<IDiskProvider>()
|
Mocker.GetMock<IDiskProvider>()
|
||||||
@@ -42,7 +42,7 @@ namespace NzbDrone.Core.Test.HealthCheck.Checks
|
|||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void should_not_return_error_when_no_artist()
|
public void should_not_return_error_when_no_author()
|
||||||
{
|
{
|
||||||
Mocker.GetMock<IAuthorService>()
|
Mocker.GetMock<IAuthorService>()
|
||||||
.Setup(s => s.AllAuthorPaths())
|
.Setup(s => s.AllAuthorPaths())
|
||||||
@@ -56,7 +56,7 @@ namespace NzbDrone.Core.Test.HealthCheck.Checks
|
|||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void should_return_error_if_artist_parent_is_missing()
|
public void should_return_error_if_author_parent_is_missing()
|
||||||
{
|
{
|
||||||
GivenMissingRootFolder();
|
GivenMissingRootFolder();
|
||||||
|
|
||||||
|
|||||||
@@ -42,17 +42,17 @@ namespace NzbDrone.Core.Test.HistoryTests
|
|||||||
[Test]
|
[Test]
|
||||||
public void should_use_file_name_for_source_title_if_scene_name_is_null()
|
public void should_use_file_name_for_source_title_if_scene_name_is_null()
|
||||||
{
|
{
|
||||||
var artist = Builder<Author>.CreateNew().Build();
|
var author = Builder<Author>.CreateNew().Build();
|
||||||
var trackFile = Builder<BookFile>.CreateNew()
|
var trackFile = Builder<BookFile>.CreateNew()
|
||||||
.With(f => f.SceneName = null)
|
.With(f => f.SceneName = null)
|
||||||
.With(f => f.Author = artist)
|
.With(f => f.Author = author)
|
||||||
.Build();
|
.Build();
|
||||||
|
|
||||||
var localTrack = new LocalBook
|
var localTrack = new LocalBook
|
||||||
{
|
{
|
||||||
Author = artist,
|
Author = author,
|
||||||
Book = new Book(),
|
Book = new Book(),
|
||||||
Path = @"C:\Test\Unsorted\Artist.01.Hymn.mp3"
|
Path = @"C:\Test\Unsorted\Author.01.Hymn.mp3"
|
||||||
};
|
};
|
||||||
|
|
||||||
var downloadClientItem = new DownloadClientItem
|
var downloadClientItem = new DownloadClientItem
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ namespace NzbDrone.Core.Test.Housekeeping.Housekeepers
|
|||||||
public class CleanupDuplicateMetadataFilesFixture : DbTest<CleanupDuplicateMetadataFiles, MetadataFile>
|
public class CleanupDuplicateMetadataFilesFixture : DbTest<CleanupDuplicateMetadataFiles, MetadataFile>
|
||||||
{
|
{
|
||||||
[Test]
|
[Test]
|
||||||
public void should_not_delete_metadata_files_when_they_are_for_the_same_artist_but_different_consumers()
|
public void should_not_delete_metadata_files_when_they_are_for_the_same_author_but_different_consumers()
|
||||||
{
|
{
|
||||||
var files = Builder<MetadataFile>.CreateListOfSize(2)
|
var files = Builder<MetadataFile>.CreateListOfSize(2)
|
||||||
.All()
|
.All()
|
||||||
@@ -26,7 +26,7 @@ namespace NzbDrone.Core.Test.Housekeeping.Housekeepers
|
|||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void should_not_delete_metadata_files_for_different_artist()
|
public void should_not_delete_metadata_files_for_different_author()
|
||||||
{
|
{
|
||||||
var files = Builder<MetadataFile>.CreateListOfSize(2)
|
var files = Builder<MetadataFile>.CreateListOfSize(2)
|
||||||
.All()
|
.All()
|
||||||
@@ -40,7 +40,7 @@ namespace NzbDrone.Core.Test.Housekeeping.Housekeepers
|
|||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void should_delete_metadata_files_when_they_are_for_the_same_artist_and_consumer()
|
public void should_delete_metadata_files_when_they_are_for_the_same_author_and_consumer()
|
||||||
{
|
{
|
||||||
var files = Builder<MetadataFile>.CreateListOfSize(2)
|
var files = Builder<MetadataFile>.CreateListOfSize(2)
|
||||||
.All()
|
.All()
|
||||||
@@ -55,7 +55,7 @@ namespace NzbDrone.Core.Test.Housekeeping.Housekeepers
|
|||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void should_not_delete_metadata_files_when_there_is_only_one_for_that_artist_and_consumer()
|
public void should_not_delete_metadata_files_when_there_is_only_one_for_that_author_and_consumer()
|
||||||
{
|
{
|
||||||
var file = Builder<MetadataFile>.CreateNew()
|
var file = Builder<MetadataFile>.CreateNew()
|
||||||
.BuildNew();
|
.BuildNew();
|
||||||
@@ -66,7 +66,7 @@ namespace NzbDrone.Core.Test.Housekeeping.Housekeepers
|
|||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void should_not_delete_metadata_files_when_they_are_for_the_same_album_but_different_consumers()
|
public void should_not_delete_metadata_files_when_they_are_for_the_same_book_but_different_consumers()
|
||||||
{
|
{
|
||||||
var files = Builder<MetadataFile>.CreateListOfSize(2)
|
var files = Builder<MetadataFile>.CreateListOfSize(2)
|
||||||
.All()
|
.All()
|
||||||
@@ -81,7 +81,7 @@ namespace NzbDrone.Core.Test.Housekeeping.Housekeepers
|
|||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void should_not_delete_metadata_files_for_different_album()
|
public void should_not_delete_metadata_files_for_different_book()
|
||||||
{
|
{
|
||||||
var files = Builder<MetadataFile>.CreateListOfSize(2)
|
var files = Builder<MetadataFile>.CreateListOfSize(2)
|
||||||
.All()
|
.All()
|
||||||
@@ -96,7 +96,7 @@ namespace NzbDrone.Core.Test.Housekeeping.Housekeepers
|
|||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void should_delete_metadata_files_when_they_are_for_the_same_album_and_consumer()
|
public void should_delete_metadata_files_when_they_are_for_the_same_book_and_consumer()
|
||||||
{
|
{
|
||||||
var files = Builder<MetadataFile>.CreateListOfSize(2)
|
var files = Builder<MetadataFile>.CreateListOfSize(2)
|
||||||
.All()
|
.All()
|
||||||
@@ -112,7 +112,7 @@ namespace NzbDrone.Core.Test.Housekeeping.Housekeepers
|
|||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void should_not_delete_metadata_files_when_there_is_only_one_for_that_album_and_consumer()
|
public void should_not_delete_metadata_files_when_there_is_only_one_for_that_book_and_consumer()
|
||||||
{
|
{
|
||||||
var file = Builder<MetadataFile>.CreateNew()
|
var file = Builder<MetadataFile>.CreateNew()
|
||||||
.BuildNew();
|
.BuildNew();
|
||||||
|
|||||||
@@ -29,14 +29,14 @@ namespace NzbDrone.Core.Test.Housekeeping.Housekeepers
|
|||||||
[Test]
|
[Test]
|
||||||
public void should_not_delete_unorphaned_blacklist_items()
|
public void should_not_delete_unorphaned_blacklist_items()
|
||||||
{
|
{
|
||||||
var artist = Builder<Author>.CreateNew().BuildNew();
|
var author = Builder<Author>.CreateNew().BuildNew();
|
||||||
|
|
||||||
Db.Insert(artist);
|
Db.Insert(author);
|
||||||
|
|
||||||
var blacklist = Builder<Blacklist>.CreateNew()
|
var blacklist = Builder<Blacklist>.CreateNew()
|
||||||
.With(h => h.BookIds = new List<int>())
|
.With(h => h.BookIds = new List<int>())
|
||||||
.With(h => h.Quality = new QualityModel())
|
.With(h => h.Quality = new QualityModel())
|
||||||
.With(b => b.AuthorId = artist.Id)
|
.With(b => b.AuthorId = author.Id)
|
||||||
.BuildNew();
|
.BuildNew();
|
||||||
|
|
||||||
Db.Insert(blacklist);
|
Db.Insert(blacklist);
|
||||||
|
|||||||
@@ -11,34 +11,34 @@ namespace NzbDrone.Core.Test.Housekeeping.Housekeepers
|
|||||||
public class CleanupOrphanedBooksFixture : DbTest<CleanupOrphanedBooks, Book>
|
public class CleanupOrphanedBooksFixture : DbTest<CleanupOrphanedBooks, Book>
|
||||||
{
|
{
|
||||||
[Test]
|
[Test]
|
||||||
public void should_delete_orphaned_albums()
|
public void should_delete_orphaned_books()
|
||||||
{
|
{
|
||||||
var album = Builder<Book>.CreateNew()
|
var book = Builder<Book>.CreateNew()
|
||||||
.BuildNew();
|
.BuildNew();
|
||||||
|
|
||||||
Db.Insert(album);
|
Db.Insert(book);
|
||||||
Subject.Clean();
|
Subject.Clean();
|
||||||
AllStoredModels.Should().BeEmpty();
|
AllStoredModels.Should().BeEmpty();
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void should_not_delete_unorphaned_albums()
|
public void should_not_delete_unorphaned_books()
|
||||||
{
|
{
|
||||||
var artist = Builder<Author>.CreateNew()
|
var author = Builder<Author>.CreateNew()
|
||||||
.With(e => e.Metadata = new AuthorMetadata { Id = 1 })
|
.With(e => e.Metadata = new AuthorMetadata { Id = 1 })
|
||||||
.BuildNew();
|
.BuildNew();
|
||||||
|
|
||||||
Db.Insert(artist);
|
Db.Insert(author);
|
||||||
|
|
||||||
var albums = Builder<Book>.CreateListOfSize(2)
|
var books = Builder<Book>.CreateListOfSize(2)
|
||||||
.TheFirst(1)
|
.TheFirst(1)
|
||||||
.With(e => e.AuthorMetadataId = artist.Metadata.Value.Id)
|
.With(e => e.AuthorMetadataId = author.Metadata.Value.Id)
|
||||||
.BuildListOfNew();
|
.BuildListOfNew();
|
||||||
|
|
||||||
Db.InsertMany(albums);
|
Db.InsertMany(books);
|
||||||
Subject.Clean();
|
Subject.Clean();
|
||||||
AllStoredModels.Should().HaveCount(1);
|
AllStoredModels.Should().HaveCount(1);
|
||||||
AllStoredModels.Should().Contain(e => e.AuthorMetadataId == artist.Metadata.Value.Id);
|
AllStoredModels.Should().Contain(e => e.AuthorMetadataId == author.Metadata.Value.Id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,37 +11,37 @@ namespace NzbDrone.Core.Test.Housekeeping.Housekeepers
|
|||||||
[TestFixture]
|
[TestFixture]
|
||||||
public class CleanupOrphanedHistoryItemsFixture : DbTest<CleanupOrphanedHistoryItems, History.History>
|
public class CleanupOrphanedHistoryItemsFixture : DbTest<CleanupOrphanedHistoryItems, History.History>
|
||||||
{
|
{
|
||||||
private Author _artist;
|
private Author _author;
|
||||||
private Book _album;
|
private Book _book;
|
||||||
|
|
||||||
[SetUp]
|
[SetUp]
|
||||||
public void Setup()
|
public void Setup()
|
||||||
{
|
{
|
||||||
_artist = Builder<Author>.CreateNew()
|
_author = Builder<Author>.CreateNew()
|
||||||
.BuildNew();
|
.BuildNew();
|
||||||
|
|
||||||
_album = Builder<Book>.CreateNew()
|
_book = Builder<Book>.CreateNew()
|
||||||
.BuildNew();
|
.BuildNew();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void GivenArtist()
|
private void GivenAuthor()
|
||||||
{
|
{
|
||||||
Db.Insert(_artist);
|
Db.Insert(_author);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void GivenAlbum()
|
private void GivenBook()
|
||||||
{
|
{
|
||||||
Db.Insert(_album);
|
Db.Insert(_book);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void should_delete_orphaned_items_by_artist()
|
public void should_delete_orphaned_items_by_author()
|
||||||
{
|
{
|
||||||
GivenAlbum();
|
GivenBook();
|
||||||
|
|
||||||
var history = Builder<History.History>.CreateNew()
|
var history = Builder<History.History>.CreateNew()
|
||||||
.With(h => h.Quality = new QualityModel())
|
.With(h => h.Quality = new QualityModel())
|
||||||
.With(h => h.BookId = _album.Id)
|
.With(h => h.BookId = _book.Id)
|
||||||
.BuildNew();
|
.BuildNew();
|
||||||
Db.Insert(history);
|
Db.Insert(history);
|
||||||
|
|
||||||
@@ -50,13 +50,13 @@ namespace NzbDrone.Core.Test.Housekeeping.Housekeepers
|
|||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void should_delete_orphaned_items_by_album()
|
public void should_delete_orphaned_items_by_book()
|
||||||
{
|
{
|
||||||
GivenArtist();
|
GivenAuthor();
|
||||||
|
|
||||||
var history = Builder<History.History>.CreateNew()
|
var history = Builder<History.History>.CreateNew()
|
||||||
.With(h => h.Quality = new QualityModel())
|
.With(h => h.Quality = new QualityModel())
|
||||||
.With(h => h.AuthorId = _artist.Id)
|
.With(h => h.AuthorId = _author.Id)
|
||||||
.BuildNew();
|
.BuildNew();
|
||||||
Db.Insert(history);
|
Db.Insert(history);
|
||||||
|
|
||||||
@@ -65,45 +65,45 @@ namespace NzbDrone.Core.Test.Housekeeping.Housekeepers
|
|||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void should_not_delete_unorphaned_data_by_artist()
|
public void should_not_delete_unorphaned_data_by_author()
|
||||||
{
|
{
|
||||||
GivenArtist();
|
GivenAuthor();
|
||||||
GivenAlbum();
|
GivenBook();
|
||||||
|
|
||||||
var history = Builder<History.History>.CreateListOfSize(2)
|
var history = Builder<History.History>.CreateListOfSize(2)
|
||||||
.All()
|
.All()
|
||||||
.With(h => h.Quality = new QualityModel())
|
.With(h => h.Quality = new QualityModel())
|
||||||
.With(h => h.BookId = _album.Id)
|
.With(h => h.BookId = _book.Id)
|
||||||
.TheFirst(1)
|
.TheFirst(1)
|
||||||
.With(h => h.AuthorId = _artist.Id)
|
.With(h => h.AuthorId = _author.Id)
|
||||||
.BuildListOfNew();
|
.BuildListOfNew();
|
||||||
|
|
||||||
Db.InsertMany(history);
|
Db.InsertMany(history);
|
||||||
|
|
||||||
Subject.Clean();
|
Subject.Clean();
|
||||||
AllStoredModels.Should().HaveCount(1);
|
AllStoredModels.Should().HaveCount(1);
|
||||||
AllStoredModels.Should().Contain(h => h.AuthorId == _artist.Id);
|
AllStoredModels.Should().Contain(h => h.AuthorId == _author.Id);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void should_not_delete_unorphaned_data_by_album()
|
public void should_not_delete_unorphaned_data_by_book()
|
||||||
{
|
{
|
||||||
GivenArtist();
|
GivenAuthor();
|
||||||
GivenAlbum();
|
GivenBook();
|
||||||
|
|
||||||
var history = Builder<History.History>.CreateListOfSize(2)
|
var history = Builder<History.History>.CreateListOfSize(2)
|
||||||
.All()
|
.All()
|
||||||
.With(h => h.Quality = new QualityModel())
|
.With(h => h.Quality = new QualityModel())
|
||||||
.With(h => h.AuthorId = _artist.Id)
|
.With(h => h.AuthorId = _author.Id)
|
||||||
.TheFirst(1)
|
.TheFirst(1)
|
||||||
.With(h => h.BookId = _album.Id)
|
.With(h => h.BookId = _book.Id)
|
||||||
.BuildListOfNew();
|
.BuildListOfNew();
|
||||||
|
|
||||||
Db.InsertMany(history);
|
Db.InsertMany(history);
|
||||||
|
|
||||||
Subject.Clean();
|
Subject.Clean();
|
||||||
AllStoredModels.Should().HaveCount(1);
|
AllStoredModels.Should().HaveCount(1);
|
||||||
AllStoredModels.Should().Contain(h => h.BookId == _album.Id);
|
AllStoredModels.Should().Contain(h => h.BookId == _book.Id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ namespace NzbDrone.Core.Test.Housekeeping.Housekeepers
|
|||||||
public class CleanupOrphanedMetadataFilesFixture : DbTest<CleanupOrphanedMetadataFiles, MetadataFile>
|
public class CleanupOrphanedMetadataFilesFixture : DbTest<CleanupOrphanedMetadataFiles, MetadataFile>
|
||||||
{
|
{
|
||||||
[Test]
|
[Test]
|
||||||
public void should_delete_metadata_files_that_dont_have_a_coresponding_artist()
|
public void should_delete_metadata_files_that_dont_have_a_coresponding_author()
|
||||||
{
|
{
|
||||||
var metadataFile = Builder<MetadataFile>.CreateNew()
|
var metadataFile = Builder<MetadataFile>.CreateNew()
|
||||||
.With(m => m.BookFileId = null)
|
.With(m => m.BookFileId = null)
|
||||||
@@ -27,15 +27,15 @@ namespace NzbDrone.Core.Test.Housekeeping.Housekeepers
|
|||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void should_delete_metadata_files_that_dont_have_a_coresponding_album()
|
public void should_delete_metadata_files_that_dont_have_a_coresponding_book()
|
||||||
{
|
{
|
||||||
var artist = Builder<Author>.CreateNew()
|
var author = Builder<Author>.CreateNew()
|
||||||
.BuildNew();
|
.BuildNew();
|
||||||
|
|
||||||
Db.Insert(artist);
|
Db.Insert(author);
|
||||||
|
|
||||||
var metadataFile = Builder<MetadataFile>.CreateNew()
|
var metadataFile = Builder<MetadataFile>.CreateNew()
|
||||||
.With(m => m.AuthorId = artist.Id)
|
.With(m => m.AuthorId = author.Id)
|
||||||
.With(m => m.BookFileId = null)
|
.With(m => m.BookFileId = null)
|
||||||
.BuildNew();
|
.BuildNew();
|
||||||
|
|
||||||
@@ -45,15 +45,15 @@ namespace NzbDrone.Core.Test.Housekeeping.Housekeepers
|
|||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void should_not_delete_metadata_files_that_have_a_coresponding_artist()
|
public void should_not_delete_metadata_files_that_have_a_coresponding_author()
|
||||||
{
|
{
|
||||||
var artist = Builder<Author>.CreateNew()
|
var author = Builder<Author>.CreateNew()
|
||||||
.BuildNew();
|
.BuildNew();
|
||||||
|
|
||||||
Db.Insert(artist);
|
Db.Insert(author);
|
||||||
|
|
||||||
var metadataFile = Builder<MetadataFile>.CreateNew()
|
var metadataFile = Builder<MetadataFile>.CreateNew()
|
||||||
.With(m => m.AuthorId = artist.Id)
|
.With(m => m.AuthorId = author.Id)
|
||||||
.With(m => m.BookId = null)
|
.With(m => m.BookId = null)
|
||||||
.With(m => m.BookFileId = null)
|
.With(m => m.BookFileId = null)
|
||||||
.BuildNew();
|
.BuildNew();
|
||||||
@@ -65,20 +65,20 @@ namespace NzbDrone.Core.Test.Housekeeping.Housekeepers
|
|||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void should_not_delete_metadata_files_that_have_a_coresponding_album()
|
public void should_not_delete_metadata_files_that_have_a_coresponding_book()
|
||||||
{
|
{
|
||||||
var artist = Builder<Author>.CreateNew()
|
var author = Builder<Author>.CreateNew()
|
||||||
.BuildNew();
|
.BuildNew();
|
||||||
|
|
||||||
var album = Builder<Book>.CreateNew()
|
var book = Builder<Book>.CreateNew()
|
||||||
.BuildNew();
|
.BuildNew();
|
||||||
|
|
||||||
Db.Insert(artist);
|
Db.Insert(author);
|
||||||
Db.Insert(album);
|
Db.Insert(book);
|
||||||
|
|
||||||
var metadataFile = Builder<MetadataFile>.CreateNew()
|
var metadataFile = Builder<MetadataFile>.CreateNew()
|
||||||
.With(m => m.AuthorId = artist.Id)
|
.With(m => m.AuthorId = author.Id)
|
||||||
.With(m => m.BookId = album.Id)
|
.With(m => m.BookId = book.Id)
|
||||||
.With(m => m.BookFileId = null)
|
.With(m => m.BookFileId = null)
|
||||||
.BuildNew();
|
.BuildNew();
|
||||||
|
|
||||||
@@ -90,18 +90,18 @@ namespace NzbDrone.Core.Test.Housekeeping.Housekeepers
|
|||||||
[Test]
|
[Test]
|
||||||
public void should_delete_metadata_files_that_dont_have_a_coresponding_track_file()
|
public void should_delete_metadata_files_that_dont_have_a_coresponding_track_file()
|
||||||
{
|
{
|
||||||
var artist = Builder<Author>.CreateNew()
|
var author = Builder<Author>.CreateNew()
|
||||||
.BuildNew();
|
.BuildNew();
|
||||||
|
|
||||||
var album = Builder<Book>.CreateNew()
|
var book = Builder<Book>.CreateNew()
|
||||||
.BuildNew();
|
.BuildNew();
|
||||||
|
|
||||||
Db.Insert(artist);
|
Db.Insert(author);
|
||||||
Db.Insert(album);
|
Db.Insert(book);
|
||||||
|
|
||||||
var metadataFile = Builder<MetadataFile>.CreateNew()
|
var metadataFile = Builder<MetadataFile>.CreateNew()
|
||||||
.With(m => m.AuthorId = artist.Id)
|
.With(m => m.AuthorId = author.Id)
|
||||||
.With(m => m.BookId = album.Id)
|
.With(m => m.BookId = book.Id)
|
||||||
.With(m => m.BookFileId = 10)
|
.With(m => m.BookFileId = 10)
|
||||||
.BuildNew();
|
.BuildNew();
|
||||||
|
|
||||||
@@ -113,23 +113,23 @@ namespace NzbDrone.Core.Test.Housekeeping.Housekeepers
|
|||||||
[Test]
|
[Test]
|
||||||
public void should_not_delete_metadata_files_that_have_a_coresponding_track_file()
|
public void should_not_delete_metadata_files_that_have_a_coresponding_track_file()
|
||||||
{
|
{
|
||||||
var artist = Builder<Author>.CreateNew()
|
var author = Builder<Author>.CreateNew()
|
||||||
.BuildNew();
|
.BuildNew();
|
||||||
|
|
||||||
var album = Builder<Book>.CreateNew()
|
var book = Builder<Book>.CreateNew()
|
||||||
.BuildNew();
|
.BuildNew();
|
||||||
|
|
||||||
var trackFile = Builder<BookFile>.CreateNew()
|
var trackFile = Builder<BookFile>.CreateNew()
|
||||||
.With(h => h.Quality = new QualityModel())
|
.With(h => h.Quality = new QualityModel())
|
||||||
.BuildNew();
|
.BuildNew();
|
||||||
|
|
||||||
Db.Insert(artist);
|
Db.Insert(author);
|
||||||
Db.Insert(album);
|
Db.Insert(book);
|
||||||
Db.Insert(trackFile);
|
Db.Insert(trackFile);
|
||||||
|
|
||||||
var metadataFile = Builder<MetadataFile>.CreateNew()
|
var metadataFile = Builder<MetadataFile>.CreateNew()
|
||||||
.With(m => m.AuthorId = artist.Id)
|
.With(m => m.AuthorId = author.Id)
|
||||||
.With(m => m.BookId = album.Id)
|
.With(m => m.BookId = book.Id)
|
||||||
.With(m => m.BookFileId = trackFile.Id)
|
.With(m => m.BookFileId = trackFile.Id)
|
||||||
.BuildNew();
|
.BuildNew();
|
||||||
|
|
||||||
@@ -139,15 +139,15 @@ namespace NzbDrone.Core.Test.Housekeeping.Housekeepers
|
|||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void should_delete_album_metadata_files_that_have_albumid_of_zero()
|
public void should_delete_book_metadata_files_that_have_bookid_of_zero()
|
||||||
{
|
{
|
||||||
var artist = Builder<Author>.CreateNew()
|
var author = Builder<Author>.CreateNew()
|
||||||
.BuildNew();
|
.BuildNew();
|
||||||
|
|
||||||
Db.Insert(artist);
|
Db.Insert(author);
|
||||||
|
|
||||||
var metadataFile = Builder<MetadataFile>.CreateNew()
|
var metadataFile = Builder<MetadataFile>.CreateNew()
|
||||||
.With(m => m.AuthorId = artist.Id)
|
.With(m => m.AuthorId = author.Id)
|
||||||
.With(m => m.Type = MetadataType.BookMetadata)
|
.With(m => m.Type = MetadataType.BookMetadata)
|
||||||
.With(m => m.BookId = 0)
|
.With(m => m.BookId = 0)
|
||||||
.With(m => m.BookFileId = null)
|
.With(m => m.BookFileId = null)
|
||||||
@@ -159,15 +159,15 @@ namespace NzbDrone.Core.Test.Housekeeping.Housekeepers
|
|||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void should_delete_album_image_files_that_have_albumid_of_zero()
|
public void should_delete_book_image_files_that_have_bookid_of_zero()
|
||||||
{
|
{
|
||||||
var artist = Builder<Author>.CreateNew()
|
var author = Builder<Author>.CreateNew()
|
||||||
.BuildNew();
|
.BuildNew();
|
||||||
|
|
||||||
Db.Insert(artist);
|
Db.Insert(author);
|
||||||
|
|
||||||
var metadataFile = Builder<MetadataFile>.CreateNew()
|
var metadataFile = Builder<MetadataFile>.CreateNew()
|
||||||
.With(m => m.AuthorId = artist.Id)
|
.With(m => m.AuthorId = author.Id)
|
||||||
.With(m => m.Type = MetadataType.BookImage)
|
.With(m => m.Type = MetadataType.BookImage)
|
||||||
.With(m => m.BookId = 0)
|
.With(m => m.BookId = 0)
|
||||||
.With(m => m.BookFileId = null)
|
.With(m => m.BookFileId = null)
|
||||||
@@ -181,13 +181,13 @@ namespace NzbDrone.Core.Test.Housekeeping.Housekeepers
|
|||||||
[Test]
|
[Test]
|
||||||
public void should_delete_track_metadata_files_that_have_trackfileid_of_zero()
|
public void should_delete_track_metadata_files_that_have_trackfileid_of_zero()
|
||||||
{
|
{
|
||||||
var artist = Builder<Author>.CreateNew()
|
var author = Builder<Author>.CreateNew()
|
||||||
.BuildNew();
|
.BuildNew();
|
||||||
|
|
||||||
Db.Insert(artist);
|
Db.Insert(author);
|
||||||
|
|
||||||
var metadataFile = Builder<MetadataFile>.CreateNew()
|
var metadataFile = Builder<MetadataFile>.CreateNew()
|
||||||
.With(m => m.AuthorId = artist.Id)
|
.With(m => m.AuthorId = author.Id)
|
||||||
.With(m => m.Type = MetadataType.BookMetadata)
|
.With(m => m.Type = MetadataType.BookMetadata)
|
||||||
.With(m => m.BookFileId = 0)
|
.With(m => m.BookFileId = 0)
|
||||||
.BuildNew();
|
.BuildNew();
|
||||||
|
|||||||
@@ -28,12 +28,12 @@ namespace NzbDrone.Core.Test.Housekeeping.Housekeepers
|
|||||||
[Test]
|
[Test]
|
||||||
public void should_not_delete_unorphaned_pending_items()
|
public void should_not_delete_unorphaned_pending_items()
|
||||||
{
|
{
|
||||||
var artist = Builder<Author>.CreateNew().BuildNew();
|
var author = Builder<Author>.CreateNew().BuildNew();
|
||||||
|
|
||||||
Db.Insert(artist);
|
Db.Insert(author);
|
||||||
|
|
||||||
var pendingRelease = Builder<PendingRelease>.CreateNew()
|
var pendingRelease = Builder<PendingRelease>.CreateNew()
|
||||||
.With(h => h.AuthorId = artist.Id)
|
.With(h => h.AuthorId = author.Id)
|
||||||
.With(h => h.ParsedBookInfo = new ParsedBookInfo())
|
.With(h => h.ParsedBookInfo = new ParsedBookInfo())
|
||||||
.With(h => h.Release = new ReleaseInfo())
|
.With(h => h.Release = new ReleaseInfo())
|
||||||
.BuildNew();
|
.BuildNew();
|
||||||
|
|||||||
@@ -13,14 +13,14 @@ namespace NzbDrone.Core.Test.Housekeeping.Housekeepers
|
|||||||
[Test]
|
[Test]
|
||||||
public void should_update_clean_title()
|
public void should_update_clean_title()
|
||||||
{
|
{
|
||||||
var artist = Builder<Author>.CreateNew()
|
var author = Builder<Author>.CreateNew()
|
||||||
.With(s => s.Name = "Full Name")
|
.With(s => s.Name = "Full Name")
|
||||||
.With(s => s.CleanName = "unclean")
|
.With(s => s.CleanName = "unclean")
|
||||||
.Build();
|
.Build();
|
||||||
|
|
||||||
Mocker.GetMock<IAuthorRepository>()
|
Mocker.GetMock<IAuthorRepository>()
|
||||||
.Setup(s => s.All())
|
.Setup(s => s.All())
|
||||||
.Returns(new[] { artist });
|
.Returns(new[] { author });
|
||||||
|
|
||||||
Subject.Clean();
|
Subject.Clean();
|
||||||
|
|
||||||
@@ -31,14 +31,14 @@ namespace NzbDrone.Core.Test.Housekeeping.Housekeepers
|
|||||||
[Test]
|
[Test]
|
||||||
public void should_not_update_unchanged_title()
|
public void should_not_update_unchanged_title()
|
||||||
{
|
{
|
||||||
var artist = Builder<Author>.CreateNew()
|
var author = Builder<Author>.CreateNew()
|
||||||
.With(s => s.Name = "Full Name")
|
.With(s => s.Name = "Full Name")
|
||||||
.With(s => s.CleanName = "fullname")
|
.With(s => s.CleanName = "fullname")
|
||||||
.Build();
|
.Build();
|
||||||
|
|
||||||
Mocker.GetMock<IAuthorRepository>()
|
Mocker.GetMock<IAuthorRepository>()
|
||||||
.Setup(s => s.All())
|
.Setup(s => s.All())
|
||||||
.Returns(new[] { artist });
|
.Returns(new[] { author });
|
||||||
|
|
||||||
Subject.Clean();
|
Subject.Clean();
|
||||||
|
|
||||||
|
|||||||
@@ -73,7 +73,7 @@ namespace NzbDrone.Core.Test.ImportListTests
|
|||||||
.Returns<List<Author>, bool>((x, y) => x);
|
.Returns<List<Author>, bool>((x, y) => x);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void WithAlbum()
|
private void WithBook()
|
||||||
{
|
{
|
||||||
_importListReports.First().Book = "Meteora";
|
_importListReports.First().Book = "Meteora";
|
||||||
}
|
}
|
||||||
@@ -88,21 +88,21 @@ namespace NzbDrone.Core.Test.ImportListTests
|
|||||||
_importListReports.First().EditionGoodreadsId = "1234";
|
_importListReports.First().EditionGoodreadsId = "1234";
|
||||||
}
|
}
|
||||||
|
|
||||||
private void WithExistingArtist()
|
private void WithExistingAuthor()
|
||||||
{
|
{
|
||||||
Mocker.GetMock<IAuthorService>()
|
Mocker.GetMock<IAuthorService>()
|
||||||
.Setup(v => v.FindById(_importListReports.First().AuthorGoodreadsId))
|
.Setup(v => v.FindById(_importListReports.First().AuthorGoodreadsId))
|
||||||
.Returns(new Author { ForeignAuthorId = _importListReports.First().AuthorGoodreadsId });
|
.Returns(new Author { ForeignAuthorId = _importListReports.First().AuthorGoodreadsId });
|
||||||
}
|
}
|
||||||
|
|
||||||
private void WithExistingAlbum()
|
private void WithExistingBook()
|
||||||
{
|
{
|
||||||
Mocker.GetMock<IBookService>()
|
Mocker.GetMock<IBookService>()
|
||||||
.Setup(v => v.FindById(_importListReports.First().EditionGoodreadsId))
|
.Setup(v => v.FindById(_importListReports.First().EditionGoodreadsId))
|
||||||
.Returns(new Book { ForeignBookId = _importListReports.First().EditionGoodreadsId });
|
.Returns(new Book { ForeignBookId = _importListReports.First().EditionGoodreadsId });
|
||||||
}
|
}
|
||||||
|
|
||||||
private void WithExcludedArtist()
|
private void WithExcludedAuthor()
|
||||||
{
|
{
|
||||||
Mocker.GetMock<IImportListExclusionService>()
|
Mocker.GetMock<IImportListExclusionService>()
|
||||||
.Setup(v => v.All())
|
.Setup(v => v.All())
|
||||||
@@ -115,7 +115,7 @@ namespace NzbDrone.Core.Test.ImportListTests
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private void WithExcludedAlbum()
|
private void WithExcludedBook()
|
||||||
{
|
{
|
||||||
Mocker.GetMock<IImportListExclusionService>()
|
Mocker.GetMock<IImportListExclusionService>()
|
||||||
.Setup(v => v.All())
|
.Setup(v => v.All())
|
||||||
@@ -136,7 +136,7 @@ namespace NzbDrone.Core.Test.ImportListTests
|
|||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void should_search_if_artist_title_and_no_artist_id()
|
public void should_search_if_author_title_and_no_author_id()
|
||||||
{
|
{
|
||||||
Subject.Execute(new ImportListSyncCommand());
|
Subject.Execute(new ImportListSyncCommand());
|
||||||
|
|
||||||
@@ -145,7 +145,7 @@ namespace NzbDrone.Core.Test.ImportListTests
|
|||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void should_not_search_if_artist_title_and_artist_id()
|
public void should_not_search_if_author_title_and_author_id()
|
||||||
{
|
{
|
||||||
WithAuthorId();
|
WithAuthorId();
|
||||||
Subject.Execute(new ImportListSyncCommand());
|
Subject.Execute(new ImportListSyncCommand());
|
||||||
@@ -155,9 +155,9 @@ namespace NzbDrone.Core.Test.ImportListTests
|
|||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void should_search_if_album_title_and_no_album_id()
|
public void should_search_if_book_title_and_no_book_id()
|
||||||
{
|
{
|
||||||
WithAlbum();
|
WithBook();
|
||||||
Subject.Execute(new ImportListSyncCommand());
|
Subject.Execute(new ImportListSyncCommand());
|
||||||
|
|
||||||
Mocker.GetMock<ISearchForNewBook>()
|
Mocker.GetMock<ISearchForNewBook>()
|
||||||
@@ -165,7 +165,7 @@ namespace NzbDrone.Core.Test.ImportListTests
|
|||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void should_not_search_if_album_title_and_album_id()
|
public void should_not_search_if_book_title_and_book_id()
|
||||||
{
|
{
|
||||||
WithAuthorId();
|
WithAuthorId();
|
||||||
WithBookId();
|
WithBookId();
|
||||||
@@ -179,7 +179,7 @@ namespace NzbDrone.Core.Test.ImportListTests
|
|||||||
public void should_not_search_if_all_info()
|
public void should_not_search_if_all_info()
|
||||||
{
|
{
|
||||||
WithAuthorId();
|
WithAuthorId();
|
||||||
WithAlbum();
|
WithBook();
|
||||||
WithBookId();
|
WithBookId();
|
||||||
Subject.Execute(new ImportListSyncCommand());
|
Subject.Execute(new ImportListSyncCommand());
|
||||||
|
|
||||||
@@ -191,10 +191,10 @@ namespace NzbDrone.Core.Test.ImportListTests
|
|||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void should_not_add_if_existing_artist()
|
public void should_not_add_if_existing_author()
|
||||||
{
|
{
|
||||||
WithAuthorId();
|
WithAuthorId();
|
||||||
WithExistingArtist();
|
WithExistingAuthor();
|
||||||
|
|
||||||
Subject.Execute(new ImportListSyncCommand());
|
Subject.Execute(new ImportListSyncCommand());
|
||||||
|
|
||||||
@@ -203,10 +203,10 @@ namespace NzbDrone.Core.Test.ImportListTests
|
|||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void should_not_add_if_existing_album()
|
public void should_not_add_if_existing_book()
|
||||||
{
|
{
|
||||||
WithBookId();
|
WithBookId();
|
||||||
WithExistingAlbum();
|
WithExistingBook();
|
||||||
|
|
||||||
Subject.Execute(new ImportListSyncCommand());
|
Subject.Execute(new ImportListSyncCommand());
|
||||||
|
|
||||||
@@ -215,10 +215,10 @@ namespace NzbDrone.Core.Test.ImportListTests
|
|||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void should_add_if_existing_artist_but_new_album()
|
public void should_add_if_existing_author_but_new_book()
|
||||||
{
|
{
|
||||||
WithBookId();
|
WithBookId();
|
||||||
WithExistingArtist();
|
WithExistingAuthor();
|
||||||
|
|
||||||
Subject.Execute(new ImportListSyncCommand());
|
Subject.Execute(new ImportListSyncCommand());
|
||||||
|
|
||||||
@@ -229,7 +229,7 @@ namespace NzbDrone.Core.Test.ImportListTests
|
|||||||
[TestCase(ImportListMonitorType.None, false)]
|
[TestCase(ImportListMonitorType.None, false)]
|
||||||
[TestCase(ImportListMonitorType.SpecificBook, true)]
|
[TestCase(ImportListMonitorType.SpecificBook, true)]
|
||||||
[TestCase(ImportListMonitorType.EntireAuthor, true)]
|
[TestCase(ImportListMonitorType.EntireAuthor, true)]
|
||||||
public void should_add_if_not_existing_artist(ImportListMonitorType monitor, bool expectedArtistMonitored)
|
public void should_add_if_not_existing_author(ImportListMonitorType monitor, bool expectedAuthorMonitored)
|
||||||
{
|
{
|
||||||
WithAuthorId();
|
WithAuthorId();
|
||||||
WithMonitorType(monitor);
|
WithMonitorType(monitor);
|
||||||
@@ -237,13 +237,13 @@ namespace NzbDrone.Core.Test.ImportListTests
|
|||||||
Subject.Execute(new ImportListSyncCommand());
|
Subject.Execute(new ImportListSyncCommand());
|
||||||
|
|
||||||
Mocker.GetMock<IAddAuthorService>()
|
Mocker.GetMock<IAddAuthorService>()
|
||||||
.Verify(v => v.AddAuthors(It.Is<List<Author>>(t => t.Count == 1 && t.First().Monitored == expectedArtistMonitored), false));
|
.Verify(v => v.AddAuthors(It.Is<List<Author>>(t => t.Count == 1 && t.First().Monitored == expectedAuthorMonitored), false));
|
||||||
}
|
}
|
||||||
|
|
||||||
[TestCase(ImportListMonitorType.None, false)]
|
[TestCase(ImportListMonitorType.None, false)]
|
||||||
[TestCase(ImportListMonitorType.SpecificBook, true)]
|
[TestCase(ImportListMonitorType.SpecificBook, true)]
|
||||||
[TestCase(ImportListMonitorType.EntireAuthor, true)]
|
[TestCase(ImportListMonitorType.EntireAuthor, true)]
|
||||||
public void should_add_if_not_existing_album(ImportListMonitorType monitor, bool expectedAlbumMonitored)
|
public void should_add_if_not_existing_book(ImportListMonitorType monitor, bool expectedBookMonitored)
|
||||||
{
|
{
|
||||||
WithBookId();
|
WithBookId();
|
||||||
WithMonitorType(monitor);
|
WithMonitorType(monitor);
|
||||||
@@ -251,14 +251,14 @@ namespace NzbDrone.Core.Test.ImportListTests
|
|||||||
Subject.Execute(new ImportListSyncCommand());
|
Subject.Execute(new ImportListSyncCommand());
|
||||||
|
|
||||||
Mocker.GetMock<IAddBookService>()
|
Mocker.GetMock<IAddBookService>()
|
||||||
.Verify(v => v.AddBooks(It.Is<List<Book>>(t => t.Count == 1 && t.First().Monitored == expectedAlbumMonitored), false));
|
.Verify(v => v.AddBooks(It.Is<List<Book>>(t => t.Count == 1 && t.First().Monitored == expectedBookMonitored), false));
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void should_not_add_artist_if_excluded_artist()
|
public void should_not_add_author_if_excluded_author()
|
||||||
{
|
{
|
||||||
WithAuthorId();
|
WithAuthorId();
|
||||||
WithExcludedArtist();
|
WithExcludedAuthor();
|
||||||
|
|
||||||
Subject.Execute(new ImportListSyncCommand());
|
Subject.Execute(new ImportListSyncCommand());
|
||||||
|
|
||||||
@@ -267,10 +267,10 @@ namespace NzbDrone.Core.Test.ImportListTests
|
|||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void should_not_add_album_if_excluded_album()
|
public void should_not_add_book_if_excluded_book()
|
||||||
{
|
{
|
||||||
WithBookId();
|
WithBookId();
|
||||||
WithExcludedAlbum();
|
WithExcludedBook();
|
||||||
|
|
||||||
Subject.Execute(new ImportListSyncCommand());
|
Subject.Execute(new ImportListSyncCommand());
|
||||||
|
|
||||||
@@ -279,11 +279,11 @@ namespace NzbDrone.Core.Test.ImportListTests
|
|||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void should_not_add_album_if_excluded_artist()
|
public void should_not_add_book_if_excluded_author()
|
||||||
{
|
{
|
||||||
WithBookId();
|
WithBookId();
|
||||||
WithAuthorId();
|
WithAuthorId();
|
||||||
WithExcludedArtist();
|
WithExcludedAuthor();
|
||||||
|
|
||||||
Subject.Execute(new ImportListSyncCommand());
|
Subject.Execute(new ImportListSyncCommand());
|
||||||
|
|
||||||
|
|||||||
@@ -12,21 +12,21 @@ using NzbDrone.Core.Test.Framework;
|
|||||||
namespace NzbDrone.Core.Test.IndexerSearchTests
|
namespace NzbDrone.Core.Test.IndexerSearchTests
|
||||||
{
|
{
|
||||||
[TestFixture]
|
[TestFixture]
|
||||||
public class ArtistSearchServiceFixture : CoreTest<AuthorSearchService>
|
public class AuthorSearchServiceFixture : CoreTest<AuthorSearchService>
|
||||||
{
|
{
|
||||||
private Author _artist;
|
private Author _author;
|
||||||
|
|
||||||
[SetUp]
|
[SetUp]
|
||||||
public void Setup()
|
public void Setup()
|
||||||
{
|
{
|
||||||
_artist = new Author();
|
_author = new Author();
|
||||||
|
|
||||||
Mocker.GetMock<IAuthorService>()
|
Mocker.GetMock<IAuthorService>()
|
||||||
.Setup(s => s.GetAuthor(It.IsAny<int>()))
|
.Setup(s => s.GetAuthor(It.IsAny<int>()))
|
||||||
.Returns(_artist);
|
.Returns(_author);
|
||||||
|
|
||||||
Mocker.GetMock<ISearchForNzb>()
|
Mocker.GetMock<ISearchForNzb>()
|
||||||
.Setup(s => s.AuthorSearch(_artist.Id, false, true, false))
|
.Setup(s => s.AuthorSearch(_author.Id, false, true, false))
|
||||||
.Returns(new List<DownloadDecision>());
|
.Returns(new List<DownloadDecision>());
|
||||||
|
|
||||||
Mocker.GetMock<IProcessDownloadDecisions>()
|
Mocker.GetMock<IProcessDownloadDecisions>()
|
||||||
@@ -35,19 +35,19 @@ namespace NzbDrone.Core.Test.IndexerSearchTests
|
|||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void should_only_include_monitored_albums()
|
public void should_only_include_monitored_books()
|
||||||
{
|
{
|
||||||
_artist.Books = new List<Book>
|
_author.Books = new List<Book>
|
||||||
{
|
{
|
||||||
new Book { Monitored = false },
|
new Book { Monitored = false },
|
||||||
new Book { Monitored = true }
|
new Book { Monitored = true }
|
||||||
};
|
};
|
||||||
|
|
||||||
Subject.Execute(new AuthorSearchCommand { AuthorId = _artist.Id, Trigger = CommandTrigger.Manual });
|
Subject.Execute(new AuthorSearchCommand { AuthorId = _author.Id, Trigger = CommandTrigger.Manual });
|
||||||
|
|
||||||
Mocker.GetMock<ISearchForNzb>()
|
Mocker.GetMock<ISearchForNzb>()
|
||||||
.Verify(v => v.AuthorSearch(_artist.Id, false, true, false),
|
.Verify(v => v.AuthorSearch(_author.Id, false, true, false),
|
||||||
Times.Exactly(_artist.Books.Value.Count(s => s.Monitored)));
|
Times.Exactly(_author.Books.Value.Count(s => s.Monitored)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,13 +6,13 @@ using NzbDrone.Core.Test.Framework;
|
|||||||
|
|
||||||
namespace NzbDrone.Core.Test.IndexerSearchTests
|
namespace NzbDrone.Core.Test.IndexerSearchTests
|
||||||
{
|
{
|
||||||
public class AlbumSearchDefinitionFixture : CoreTest<BookSearchCriteria>
|
public class BookSearchDefinitionFixture : CoreTest<BookSearchCriteria>
|
||||||
{
|
{
|
||||||
[TestCase("Mötley Crüe", "Motley+Crue")]
|
[TestCase("Mötley Crüe", "Motley+Crue")]
|
||||||
[TestCase("방탄소년단", "방탄소년단")]
|
[TestCase("방탄소년단", "방탄소년단")]
|
||||||
public void should_replace_some_special_characters_artist(string artist, string expected)
|
public void should_replace_some_special_characters_author(string author, string expected)
|
||||||
{
|
{
|
||||||
Subject.Author = new Author { Name = artist };
|
Subject.Author = new Author { Name = author };
|
||||||
Subject.AuthorQuery.Should().Be(expected);
|
Subject.AuthorQuery.Should().Be(expected);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -22,16 +22,16 @@ namespace NzbDrone.Core.Test.IndexerSearchTests
|
|||||||
[TestCase("¿Quién sabe?", "Quien+sabe")]
|
[TestCase("¿Quién sabe?", "Quien+sabe")]
|
||||||
[TestCase("Seal the Deal & Let’s Boogie", "Seal+the+Deal+Let’s+Boogie")]
|
[TestCase("Seal the Deal & Let’s Boogie", "Seal+the+Deal+Let’s+Boogie")]
|
||||||
[TestCase("Section.80", "Section+80")]
|
[TestCase("Section.80", "Section+80")]
|
||||||
public void should_replace_some_special_characters(string album, string expected)
|
public void should_replace_some_special_characters(string book, string expected)
|
||||||
{
|
{
|
||||||
Subject.BookTitle = album;
|
Subject.BookTitle = book;
|
||||||
Subject.BookQuery.Should().Be(expected);
|
Subject.BookQuery.Should().Be(expected);
|
||||||
}
|
}
|
||||||
|
|
||||||
[TestCase("+", "+")]
|
[TestCase("+", "+")]
|
||||||
public void should_not_replace_some_special_characters_if_result_empty_string(string album, string expected)
|
public void should_not_replace_some_special_characters_if_result_empty_string(string book, string expected)
|
||||||
{
|
{
|
||||||
Subject.BookTitle = album;
|
Subject.BookTitle = book;
|
||||||
Subject.BookQuery.Should().Be(expected);
|
Subject.BookQuery.Should().Be(expected);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -14,14 +14,14 @@ namespace NzbDrone.Core.Test.IndexerTests.IntegrationTests
|
|||||||
[IntegrationTest]
|
[IntegrationTest]
|
||||||
public class IndexerIntegrationTests : CoreTest
|
public class IndexerIntegrationTests : CoreTest
|
||||||
{
|
{
|
||||||
private BookSearchCriteria _albumSearchCriteria;
|
private BookSearchCriteria _bookSearchCriteria;
|
||||||
|
|
||||||
[SetUp]
|
[SetUp]
|
||||||
public void SetUp()
|
public void SetUp()
|
||||||
{
|
{
|
||||||
UseRealHttp();
|
UseRealHttp();
|
||||||
|
|
||||||
_albumSearchCriteria = new BookSearchCriteria()
|
_bookSearchCriteria = new BookSearchCriteria()
|
||||||
{
|
{
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ namespace NzbDrone.Core.Test.IndexerTests.NewznabTests
|
|||||||
{
|
{
|
||||||
public class NewznabRequestGeneratorFixture : CoreTest<NewznabRequestGenerator>
|
public class NewznabRequestGeneratorFixture : CoreTest<NewznabRequestGenerator>
|
||||||
{
|
{
|
||||||
private BookSearchCriteria _singleAlbumSearchCriteria;
|
private BookSearchCriteria _singleBookSearchCriteria;
|
||||||
private NewznabCapabilities _capabilities;
|
private NewznabCapabilities _capabilities;
|
||||||
|
|
||||||
[SetUp]
|
[SetUp]
|
||||||
@@ -23,7 +23,7 @@ namespace NzbDrone.Core.Test.IndexerTests.NewznabTests
|
|||||||
ApiKey = "abcd",
|
ApiKey = "abcd",
|
||||||
};
|
};
|
||||||
|
|
||||||
_singleAlbumSearchCriteria = new BookSearchCriteria
|
_singleBookSearchCriteria = new BookSearchCriteria
|
||||||
{
|
{
|
||||||
Author = new Books.Author { Name = "Alien Ant Farm" },
|
Author = new Books.Author { Name = "Alien Ant Farm" },
|
||||||
BookTitle = "TruANT"
|
BookTitle = "TruANT"
|
||||||
@@ -50,11 +50,11 @@ namespace NzbDrone.Core.Test.IndexerTests.NewznabTests
|
|||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
[Ignore("Disabled since no usenet indexers seem to support it")]
|
[Ignore("Disabled since no usenet indexers seem to support it")]
|
||||||
public void should_search_by_artist_and_album_if_supported()
|
public void should_search_by_author_and_book_if_supported()
|
||||||
{
|
{
|
||||||
_capabilities.SupportedBookSearchParameters = new[] { "q", "author", "title" };
|
_capabilities.SupportedBookSearchParameters = new[] { "q", "author", "title" };
|
||||||
|
|
||||||
var results = Subject.GetSearchRequests(_singleAlbumSearchCriteria);
|
var results = Subject.GetSearchRequests(_singleBookSearchCriteria);
|
||||||
results.GetTier(0).Should().HaveCount(1);
|
results.GetTier(0).Should().HaveCount(1);
|
||||||
|
|
||||||
var page = results.GetAllTiers().First().First();
|
var page = results.GetAllTiers().First().First();
|
||||||
|
|||||||
@@ -98,7 +98,7 @@ namespace NzbDrone.Core.Test.MediaCoverTests
|
|||||||
|
|
||||||
[TestCase(".png")]
|
[TestCase(".png")]
|
||||||
[TestCase(".jpg")]
|
[TestCase(".jpg")]
|
||||||
public void should_convert_album_cover_urls_to_local(string extension)
|
public void should_convert_book_cover_urls_to_local(string extension)
|
||||||
{
|
{
|
||||||
var covers = new List<MediaCover.MediaCover>
|
var covers = new List<MediaCover.MediaCover>
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -78,7 +78,7 @@ namespace NzbDrone.Core.Test.MediaFiles.AudioTagServiceFixture
|
|||||||
.With(x => x.OriginalReleaseDate = new DateTime(2009, 4, 1))
|
.With(x => x.OriginalReleaseDate = new DateTime(2009, 4, 1))
|
||||||
.With(x => x.OriginalYear = 2009)
|
.With(x => x.OriginalYear = 2009)
|
||||||
.With(x => x.Performers = new[] { "Performer1" })
|
.With(x => x.Performers = new[] { "Performer1" })
|
||||||
.With(x => x.AlbumArtists = new[] { "방탄소년단" })
|
.With(x => x.BookAuthors = new[] { "방탄소년단" })
|
||||||
.With(x => x.Genres = new[] { "Genre1", "Genre2" })
|
.With(x => x.Genres = new[] { "Genre1", "Genre2" })
|
||||||
.With(x => x.ImageFile = imageFile)
|
.With(x => x.ImageFile = imageFile)
|
||||||
.With(x => x.ImageSize = imageSize)
|
.With(x => x.ImageSize = imageSize)
|
||||||
@@ -209,7 +209,7 @@ namespace NzbDrone.Core.Test.MediaFiles.AudioTagServiceFixture
|
|||||||
var expected = new AudioTag()
|
var expected = new AudioTag()
|
||||||
{
|
{
|
||||||
Performers = new string[0],
|
Performers = new string[0],
|
||||||
AlbumArtists = new string[0],
|
BookAuthors = new string[0],
|
||||||
Genres = new string[0]
|
Genres = new string[0]
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -307,21 +307,21 @@ namespace NzbDrone.Core.Test.MediaFiles.AudioTagServiceFixture
|
|||||||
private BookFile GivenPopulatedTrackfile(int mediumOffset)
|
private BookFile GivenPopulatedTrackfile(int mediumOffset)
|
||||||
{
|
{
|
||||||
var meta = Builder<AuthorMetadata>.CreateNew().Build();
|
var meta = Builder<AuthorMetadata>.CreateNew().Build();
|
||||||
var artist = Builder<Author>.CreateNew()
|
var author = Builder<Author>.CreateNew()
|
||||||
.With(x => x.Metadata = meta)
|
.With(x => x.Metadata = meta)
|
||||||
.Build();
|
.Build();
|
||||||
|
|
||||||
var album = Builder<Book>.CreateNew()
|
var book = Builder<Book>.CreateNew()
|
||||||
.With(x => x.Author = artist)
|
.With(x => x.Author = author)
|
||||||
.Build();
|
.Build();
|
||||||
|
|
||||||
var edition = Builder<Edition>.CreateNew()
|
var edition = Builder<Edition>.CreateNew()
|
||||||
.With(x => x.Book = album)
|
.With(x => x.Book = book)
|
||||||
.Build();
|
.Build();
|
||||||
|
|
||||||
var file = Builder<BookFile>.CreateNew()
|
var file = Builder<BookFile>.CreateNew()
|
||||||
.With(x => x.Edition = edition)
|
.With(x => x.Edition = edition)
|
||||||
.With(x => x.Author = artist)
|
.With(x => x.Author = author)
|
||||||
.Build();
|
.Build();
|
||||||
|
|
||||||
return file;
|
return file;
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ using FluentAssertions;
|
|||||||
using Moq;
|
using Moq;
|
||||||
using NUnit.Framework;
|
using NUnit.Framework;
|
||||||
using NzbDrone.Common.Disk;
|
using NzbDrone.Common.Disk;
|
||||||
|
using NzbDrone.Core.Books;
|
||||||
using NzbDrone.Core.DecisionEngine;
|
using NzbDrone.Core.DecisionEngine;
|
||||||
using NzbDrone.Core.MediaFiles;
|
using NzbDrone.Core.MediaFiles;
|
||||||
using NzbDrone.Core.MediaFiles.BookImport;
|
using NzbDrone.Core.MediaFiles.BookImport;
|
||||||
@@ -31,11 +32,11 @@ namespace NzbDrone.Core.Test.MediaFiles.DiskScanServiceTests
|
|||||||
public void Setup()
|
public void Setup()
|
||||||
{
|
{
|
||||||
_rootFolder = @"C:\Test\Music".AsOsAgnostic();
|
_rootFolder = @"C:\Test\Music".AsOsAgnostic();
|
||||||
_otherAuthorFolder = @"C:\Test\Music\OtherArtist".AsOsAgnostic();
|
_otherAuthorFolder = @"C:\Test\Music\OtherAuthor".AsOsAgnostic();
|
||||||
var artistFolder = @"C:\Test\Music\Artist".AsOsAgnostic();
|
var authorFolder = @"C:\Test\Music\Author".AsOsAgnostic();
|
||||||
|
|
||||||
_author = Builder<Author>.CreateNew()
|
_author = Builder<Author>.CreateNew()
|
||||||
.With(s => s.Path = artistFolder)
|
.With(s => s.Path = authorFolder)
|
||||||
.Build();
|
.Build();
|
||||||
|
|
||||||
Mocker.GetMock<IRootFolderService>()
|
Mocker.GetMock<IRootFolderService>()
|
||||||
@@ -73,7 +74,7 @@ namespace NzbDrone.Core.Test.MediaFiles.DiskScanServiceTests
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void GivenArtistFolder()
|
private void GivenAuthorFolder()
|
||||||
{
|
{
|
||||||
GivenRootFolder(_author.Path);
|
GivenRootFolder(_author.Path);
|
||||||
}
|
}
|
||||||
@@ -161,9 +162,9 @@ namespace NzbDrone.Core.Test.MediaFiles.DiskScanServiceTests
|
|||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void should_find_files_at_root_of_artist_folder()
|
public void should_find_files_at_root_of_author_folder()
|
||||||
{
|
{
|
||||||
GivenArtistFolder();
|
GivenAuthorFolder();
|
||||||
|
|
||||||
GivenFiles(new List<string>
|
GivenFiles(new List<string>
|
||||||
{
|
{
|
||||||
@@ -180,7 +181,7 @@ namespace NzbDrone.Core.Test.MediaFiles.DiskScanServiceTests
|
|||||||
[Test]
|
[Test]
|
||||||
public void should_not_scan_extras_subfolder()
|
public void should_not_scan_extras_subfolder()
|
||||||
{
|
{
|
||||||
GivenArtistFolder();
|
GivenAuthorFolder();
|
||||||
|
|
||||||
GivenFiles(new List<string>
|
GivenFiles(new List<string>
|
||||||
{
|
{
|
||||||
@@ -200,7 +201,7 @@ namespace NzbDrone.Core.Test.MediaFiles.DiskScanServiceTests
|
|||||||
[Test]
|
[Test]
|
||||||
public void should_not_scan_AppleDouble_subfolder()
|
public void should_not_scan_AppleDouble_subfolder()
|
||||||
{
|
{
|
||||||
GivenArtistFolder();
|
GivenAuthorFolder();
|
||||||
|
|
||||||
GivenFiles(new List<string>
|
GivenFiles(new List<string>
|
||||||
{
|
{
|
||||||
@@ -216,11 +217,11 @@ namespace NzbDrone.Core.Test.MediaFiles.DiskScanServiceTests
|
|||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void should_scan_extras_artist_and_subfolders()
|
public void should_scan_extras_author_and_subfolders()
|
||||||
{
|
{
|
||||||
_author.Path = @"C:\Test\Music\Extras".AsOsAgnostic();
|
_author.Path = @"C:\Test\Music\Extras".AsOsAgnostic();
|
||||||
|
|
||||||
GivenArtistFolder();
|
GivenAuthorFolder();
|
||||||
|
|
||||||
GivenFiles(new List<string>
|
GivenFiles(new List<string>
|
||||||
{
|
{
|
||||||
@@ -241,11 +242,11 @@ namespace NzbDrone.Core.Test.MediaFiles.DiskScanServiceTests
|
|||||||
[Test]
|
[Test]
|
||||||
public void should_scan_files_that_start_with_period()
|
public void should_scan_files_that_start_with_period()
|
||||||
{
|
{
|
||||||
GivenArtistFolder();
|
GivenAuthorFolder();
|
||||||
|
|
||||||
GivenFiles(new List<string>
|
GivenFiles(new List<string>
|
||||||
{
|
{
|
||||||
Path.Combine(_author.Path, "Album 1", ".t01.mobi")
|
Path.Combine(_author.Path, "Book 1", ".t01.mobi")
|
||||||
});
|
});
|
||||||
|
|
||||||
Subject.Scan(new List<string> { _author.Path });
|
Subject.Scan(new List<string> { _author.Path });
|
||||||
@@ -257,7 +258,7 @@ namespace NzbDrone.Core.Test.MediaFiles.DiskScanServiceTests
|
|||||||
[Test]
|
[Test]
|
||||||
public void should_not_scan_subfolders_that_start_with_period()
|
public void should_not_scan_subfolders_that_start_with_period()
|
||||||
{
|
{
|
||||||
GivenArtistFolder();
|
GivenAuthorFolder();
|
||||||
|
|
||||||
GivenFiles(new List<string>
|
GivenFiles(new List<string>
|
||||||
{
|
{
|
||||||
@@ -276,7 +277,7 @@ namespace NzbDrone.Core.Test.MediaFiles.DiskScanServiceTests
|
|||||||
[Test]
|
[Test]
|
||||||
public void should_not_scan_subfolder_of_season_folder_that_starts_with_a_period()
|
public void should_not_scan_subfolder_of_season_folder_that_starts_with_a_period()
|
||||||
{
|
{
|
||||||
GivenArtistFolder();
|
GivenAuthorFolder();
|
||||||
|
|
||||||
GivenFiles(new List<string>
|
GivenFiles(new List<string>
|
||||||
{
|
{
|
||||||
@@ -296,7 +297,7 @@ namespace NzbDrone.Core.Test.MediaFiles.DiskScanServiceTests
|
|||||||
[Test]
|
[Test]
|
||||||
public void should_not_scan_Synology_eaDir()
|
public void should_not_scan_Synology_eaDir()
|
||||||
{
|
{
|
||||||
GivenArtistFolder();
|
GivenAuthorFolder();
|
||||||
|
|
||||||
GivenFiles(new List<string>
|
GivenFiles(new List<string>
|
||||||
{
|
{
|
||||||
@@ -313,7 +314,7 @@ namespace NzbDrone.Core.Test.MediaFiles.DiskScanServiceTests
|
|||||||
[Test]
|
[Test]
|
||||||
public void should_not_scan_thumb_folder()
|
public void should_not_scan_thumb_folder()
|
||||||
{
|
{
|
||||||
GivenArtistFolder();
|
GivenAuthorFolder();
|
||||||
|
|
||||||
GivenFiles(new List<string>
|
GivenFiles(new List<string>
|
||||||
{
|
{
|
||||||
@@ -332,7 +333,7 @@ namespace NzbDrone.Core.Test.MediaFiles.DiskScanServiceTests
|
|||||||
{
|
{
|
||||||
_author.Path = @"C:\Test\Music\.hack".AsOsAgnostic();
|
_author.Path = @"C:\Test\Music\.hack".AsOsAgnostic();
|
||||||
|
|
||||||
GivenArtistFolder();
|
GivenAuthorFolder();
|
||||||
|
|
||||||
GivenFiles(new List<string>
|
GivenFiles(new List<string>
|
||||||
{
|
{
|
||||||
@@ -349,7 +350,7 @@ namespace NzbDrone.Core.Test.MediaFiles.DiskScanServiceTests
|
|||||||
[Test]
|
[Test]
|
||||||
public void should_exclude_osx_metadata_files()
|
public void should_exclude_osx_metadata_files()
|
||||||
{
|
{
|
||||||
GivenArtistFolder();
|
GivenAuthorFolder();
|
||||||
|
|
||||||
GivenFiles(new List<string>
|
GivenFiles(new List<string>
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ using NzbDrone.Test.Common;
|
|||||||
namespace NzbDrone.Core.Test.MediaFiles
|
namespace NzbDrone.Core.Test.MediaFiles
|
||||||
{
|
{
|
||||||
[TestFixture]
|
[TestFixture]
|
||||||
public class DownloadedAlbumsCommandServiceFixture : FileSystemTest<DownloadedBooksCommandService>
|
public class DownloadedBooksCommandServiceFixture : FileSystemTest<DownloadedBooksCommandService>
|
||||||
{
|
{
|
||||||
private string _downloadFolder = "c:\\drop_other\\Show.S01E01\\".AsOsAgnostic();
|
private string _downloadFolder = "c:\\drop_other\\Show.S01E01\\".AsOsAgnostic();
|
||||||
private string _downloadFile = "c:\\drop_other\\Show.S01E01.mkv".AsOsAgnostic();
|
private string _downloadFile = "c:\\drop_other\\Show.S01E01.mkv".AsOsAgnostic();
|
||||||
|
|||||||
@@ -69,10 +69,10 @@ namespace NzbDrone.Core.Test.MediaFiles
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void GivenValidArtist()
|
private void GivenValidAuthor()
|
||||||
{
|
{
|
||||||
Mocker.GetMock<IParsingService>()
|
Mocker.GetMock<IParsingService>()
|
||||||
.Setup(s => s.GetArtist(It.IsAny<string>()))
|
.Setup(s => s.GetAuthor(It.IsAny<string>()))
|
||||||
.Returns(Builder<Author>.CreateNew().Build());
|
.Returns(Builder<Author>.CreateNew().Build());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -100,17 +100,17 @@ namespace NzbDrone.Core.Test.MediaFiles
|
|||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void should_search_for_artist_using_folder_name()
|
public void should_search_for_author_using_folder_name()
|
||||||
{
|
{
|
||||||
Subject.ProcessRootFolder(DiskProvider.GetDirectoryInfo(_droneFactory));
|
Subject.ProcessRootFolder(DiskProvider.GetDirectoryInfo(_droneFactory));
|
||||||
|
|
||||||
Mocker.GetMock<IParsingService>().Verify(c => c.GetArtist("foldername"), Times.Once());
|
Mocker.GetMock<IParsingService>().Verify(c => c.GetAuthor("foldername"), Times.Once());
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void should_skip_if_file_is_in_use_by_another_process()
|
public void should_skip_if_file_is_in_use_by_another_process()
|
||||||
{
|
{
|
||||||
GivenValidArtist();
|
GivenValidAuthor();
|
||||||
|
|
||||||
foreach (var file in _audioFiles)
|
foreach (var file in _audioFiles)
|
||||||
{
|
{
|
||||||
@@ -123,9 +123,9 @@ namespace NzbDrone.Core.Test.MediaFiles
|
|||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void should_skip_if_no_artist_found()
|
public void should_skip_if_no_author_found()
|
||||||
{
|
{
|
||||||
Mocker.GetMock<IParsingService>().Setup(c => c.GetArtist("foldername")).Returns((Author)null);
|
Mocker.GetMock<IParsingService>().Setup(c => c.GetAuthor("foldername")).Returns((Author)null);
|
||||||
|
|
||||||
Subject.ProcessRootFolder(DiskProvider.GetDirectoryInfo(_droneFactory));
|
Subject.ProcessRootFolder(DiskProvider.GetDirectoryInfo(_droneFactory));
|
||||||
|
|
||||||
@@ -137,9 +137,9 @@ namespace NzbDrone.Core.Test.MediaFiles
|
|||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void should_not_import_if_folder_is_a_artist_path()
|
public void should_not_import_if_folder_is_a_author_path()
|
||||||
{
|
{
|
||||||
GivenValidArtist();
|
GivenValidAuthor();
|
||||||
|
|
||||||
Mocker.GetMock<IAuthorService>()
|
Mocker.GetMock<IAuthorService>()
|
||||||
.Setup(s => s.AuthorPathExists(It.IsAny<string>()))
|
.Setup(s => s.AuthorPathExists(It.IsAny<string>()))
|
||||||
@@ -173,7 +173,7 @@ namespace NzbDrone.Core.Test.MediaFiles
|
|||||||
[Test]
|
[Test]
|
||||||
public void should_not_delete_folder_if_files_were_imported_and_audio_files_remain()
|
public void should_not_delete_folder_if_files_were_imported_and_audio_files_remain()
|
||||||
{
|
{
|
||||||
GivenValidArtist();
|
GivenValidAuthor();
|
||||||
|
|
||||||
var localTrack = new LocalBook();
|
var localTrack = new LocalBook();
|
||||||
|
|
||||||
@@ -206,14 +206,14 @@ namespace NzbDrone.Core.Test.MediaFiles
|
|||||||
Subject.ProcessRootFolder(DiskProvider.GetDirectoryInfo(_droneFactory));
|
Subject.ProcessRootFolder(DiskProvider.GetDirectoryInfo(_droneFactory));
|
||||||
|
|
||||||
Mocker.GetMock<IParsingService>()
|
Mocker.GetMock<IParsingService>()
|
||||||
.Verify(v => v.GetArtist(folderName), Times.Once());
|
.Verify(v => v.GetAuthor(folderName), Times.Once());
|
||||||
|
|
||||||
Mocker.GetMock<IParsingService>()
|
Mocker.GetMock<IParsingService>()
|
||||||
.Verify(v => v.GetArtist(It.Is<string>(s => s.StartsWith(prefix))), Times.Never());
|
.Verify(v => v.GetAuthor(It.Is<string>(s => s.StartsWith(prefix))), Times.Never());
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void should_return_importresult_on_unknown_artist()
|
public void should_return_importresult_on_unknown_author()
|
||||||
{
|
{
|
||||||
var fileName = @"C:\folder\file.mkv".AsOsAgnostic();
|
var fileName = @"C:\folder\file.mkv".AsOsAgnostic();
|
||||||
FileSystem.AddFile(fileName, new MockFileData(string.Empty));
|
FileSystem.AddFile(fileName, new MockFileData(string.Empty));
|
||||||
@@ -230,7 +230,7 @@ namespace NzbDrone.Core.Test.MediaFiles
|
|||||||
[Test]
|
[Test]
|
||||||
public void should_not_delete_if_there_is_large_rar_file()
|
public void should_not_delete_if_there_is_large_rar_file()
|
||||||
{
|
{
|
||||||
GivenValidArtist();
|
GivenValidAuthor();
|
||||||
|
|
||||||
var localTrack = new LocalBook();
|
var localTrack = new LocalBook();
|
||||||
|
|
||||||
@@ -262,7 +262,7 @@ namespace NzbDrone.Core.Test.MediaFiles
|
|||||||
Subject.ProcessPath(folderName).Should().BeEmpty();
|
Subject.ProcessPath(folderName).Should().BeEmpty();
|
||||||
|
|
||||||
Mocker.GetMock<IParsingService>()
|
Mocker.GetMock<IParsingService>()
|
||||||
.Verify(v => v.GetArtist(It.IsAny<string>()), Times.Never());
|
.Verify(v => v.GetAuthor(It.IsAny<string>()), Times.Never());
|
||||||
|
|
||||||
ExceptionVerification.ExpectedErrors(1);
|
ExceptionVerification.ExpectedErrors(1);
|
||||||
}
|
}
|
||||||
@@ -270,7 +270,7 @@ namespace NzbDrone.Core.Test.MediaFiles
|
|||||||
[Test]
|
[Test]
|
||||||
public void should_not_delete_if_no_files_were_imported()
|
public void should_not_delete_if_no_files_were_imported()
|
||||||
{
|
{
|
||||||
GivenValidArtist();
|
GivenValidAuthor();
|
||||||
|
|
||||||
var localTrack = new LocalBook();
|
var localTrack = new LocalBook();
|
||||||
|
|
||||||
@@ -296,7 +296,7 @@ namespace NzbDrone.Core.Test.MediaFiles
|
|||||||
[Test]
|
[Test]
|
||||||
public void should_not_delete_folder_after_import()
|
public void should_not_delete_folder_after_import()
|
||||||
{
|
{
|
||||||
GivenValidArtist();
|
GivenValidAuthor();
|
||||||
|
|
||||||
GivenSuccessfulImport();
|
GivenSuccessfulImport();
|
||||||
|
|
||||||
@@ -310,7 +310,7 @@ namespace NzbDrone.Core.Test.MediaFiles
|
|||||||
[Test]
|
[Test]
|
||||||
public void should_delete_folder_if_importmode_move()
|
public void should_delete_folder_if_importmode_move()
|
||||||
{
|
{
|
||||||
GivenValidArtist();
|
GivenValidAuthor();
|
||||||
|
|
||||||
GivenSuccessfulImport();
|
GivenSuccessfulImport();
|
||||||
|
|
||||||
@@ -324,7 +324,7 @@ namespace NzbDrone.Core.Test.MediaFiles
|
|||||||
[Test]
|
[Test]
|
||||||
public void should_not_delete_folder_if_importmode_copy()
|
public void should_not_delete_folder_if_importmode_copy()
|
||||||
{
|
{
|
||||||
GivenValidArtist();
|
GivenValidAuthor();
|
||||||
|
|
||||||
GivenSuccessfulImport();
|
GivenSuccessfulImport();
|
||||||
|
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user