-
Notifications
You must be signed in to change notification settings - Fork 61
/
Get-JVAggregatedData.ps1
134 lines (127 loc) · 6.15 KB
/
Get-JVAggregatedData.ps1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
function Get-JVAggregatedData {
[CmdletBinding(DefaultParameterSetName = 'Pipeline')]
param (
[Parameter(Mandatory = $true, ValueFromPipelineByPropertyName = $true, ParameterSetName = 'Pipeline')]
[Parameter(Mandatory = $true, ParameterSetName = 'Setting')]
[PSObject]$Data,
[Parameter(Mandatory = $true, ValueFromPipelineByPropertyName = $true, ParameterSetName = 'Pipeline')]
[PSObject]$Settings,
[Parameter(ValueFromPipelineByPropertyName = $true, ParameterSetName = 'Setting')]
[Alias('sort.metadata.priority.actress')]
[Array]$ActressPriority,
[Parameter(ValueFromPipelineByPropertyName = $true, ParameterSetName = 'Setting')]
[Alias('sort.metadata.priority.alternatetitle')]
[Array]$AlternateTitlePriority,
[Parameter(ValueFromPipelineByPropertyName = $true, ParameterSetName = 'Setting')]
[Alias('sort.metadata.priority.coverurl')]
[Array]$CoverUrlPriority,
[Parameter(ValueFromPipelineByPropertyName = $true, ParameterSetName = 'Setting')]
[Alias('sort.metadata.priority.description')]
[Array]$DescriptionPriority,
[Parameter(ValueFromPipelineByPropertyName = $true, ParameterSetName = 'Setting')]
[Alias('sort.metadata.priority.director')]
[Array]$DirectorPriority,
[Parameter(ValueFromPipelineByPropertyName = $true, ParameterSetName = 'Setting')]
[Alias('sort.metadata.priority.genre')]
[Array]$GenrePriority,
[Parameter(ValueFromPipelineByPropertyName = $true, ParameterSetName = 'Setting')]
[Alias('sort.metadata.priority.id')]
[Array]$IdPriority,
[Parameter(ValueFromPipelineByPropertyName = $true, ParameterSetName = 'Setting')]
[Alias('sort.metadata.priority.label')]
[Array]$LabelPriority,
[Parameter(ValueFromPipelineByPropertyName = $true, ParameterSetName = 'Setting')]
[Alias('sort.metadata.priority.maker')]
[Array]$MakerPriority,
[Parameter(ValueFromPipelineByPropertyName = $true, ParameterSetName = 'Setting')]
[Alias('sort.metadata.priority.releasedate')]
[Array]$ReleaseDatePriority,
[Parameter(ValueFromPipelineByPropertyName = $true, ParameterSetName = 'Setting')]
[Alias('sort.metadata.priority.runtime')]
[Array]$RuntimePriority,
[Parameter(ValueFromPipelineByPropertyName = $true, ParameterSetName = 'Setting')]
[Alias('sort.metadata.priority.series')]
[Array]$SeriesPriority,
[Parameter(ValueFromPipelineByPropertyName = $true, ParameterSetName = 'Setting')]
[Alias('sort.metadata.priority.screenshoturl')]
[Array]$ScreenshotUrlPriority,
[Parameter(ValueFromPipelineByPropertyName = $true, ParameterSetName = 'Setting')]
[Alias('sort.metadata.priority.title')]
[Array]$TitlePriority,
[Parameter(ValueFromPipelineByPropertyName = $true, ParameterSetName = 'Setting')]
[Alias('sort.metadata.priority.trailerurl')]
[Array]$TrailerUrlPriority
)
process {
if ($Settings) {
$ActressPriority = $Settings.'sort.metadata.priority.actress'
$AlternateTitlePriority = $Settings.'sort.metadata.priority.alternatetitle'
$CoverUrlPriority = $Settings.'sort.metadata.priority.coverurl'
$DescriptionPriority = $Settings.'sort.metadata.priority.description'
$DirectorPriority = $Settings.'sort.metadata.priority.director'
$GenrePriority = $Settings.'sort.metadata.priority.genre'
$IdPriority = $Settings.'sort.metadata.priority.id'
$LabelPriority = $Settings.'sort.metadata.priority.label'
$MakerPriority = $Settings.'sort.metadata.priority.maker'
$ReleaseDatePriority = $Settings.'sort.metadata.priority.releasedate'
$RuntimePriority = $Settings.'sort.metadata.priority.runtime'
$SeriesPriority = $Settings.'sort.metadata.priority.series'
$ScreenshotUrlPriority = $Settings.'sort.metadata.priority.screenshoturl'
$TitlePriority = $Settings.'sort.metadata.priority.title'
$TrailerUrlPriority = $Settings.'sort.metadata.priority.trailerurl'
}
$aggregatedDataObject = [PSCustomObject]@{
Id = $null
Title = $null
AlternateTitle = $null
Description = $null
ReleaseDate = $null
Runtime = $null
Director = $null
Maker = $null
Label = $null
Series = $null
Actress = $null
Genre = $null
CoverUrl = $null
ScreenshotUrl = $null
TrailerUrl = $null
}
$metadataFields = @(
'Actress',
'AlternateTitle',
'CoverUrl',
'Description',
'Director',
'Genre',
'Id',
'Label',
'Maker',
'ReleaseDate',
'Runtime',
'Series',
'ScreenshotUrl',
'Title',
'TrailerUrl'
)
foreach ($field in $metadataFields) {
$metadataPriority = (Get-Variable -Name "$($field)Priority" -ValueOnly)
foreach ($priority in $metadataPriority) {
$sourceData = $Data | Where-Object { $_.Source -eq $priority }
if ($null -eq $aggregatedDataObject.$field) {
if ($field -eq 'AlternateTitle') {
$aggregatedDataObject.$field = $sourceData.Title
} else {
$aggregatedDataObject.$field = $sourceData.$field
}
Write-Debug "[$field] [$priority] Set to [$($sourceData.$field | ConvertTo-Json -Compress)]"
}
}
}
$dataObject = [PSCustomObject]@{
Data = $aggregatedDataObject
Settings = $Settings
}
Write-Output $dataObject
}
}