Refactor: standardize namespace and using directive style
Refactored all C# test files to use explicit namespace declarations and moved all using directives inside the namespace block for consistency. Updated assembly info and cache files to reflect the new build. Adjusted MvcTestingAppManifest.json to use fully qualified assembly names. No functional changes; all updates are related to code style, organization, and project metadata.
This commit is contained in:
@@ -0,0 +1 @@
|
|||||||
|
# EditorConfig for MediaBrowser.Model# https://EditorConfig.orgroot = true[*]charset = utf-8insert_final_newline = truetrim_trailing_whitespace = true[*.cs]indent_size = 4indent_style = spacedotnet_sort_system_directives_first = truedotnet_separate_import_directive_groups = false# StyleCop Analyzer Rules - Disabled for project consistencydotnet_diagnostic.SA1101.severity = nonedotnet_diagnostic.SA1309.severity = nonedotnet_diagnostic.SA1204.severity = nonedotnet_diagnostic.SA1202.severity = nonedotnet_diagnostic.SA1135.severity = nonedotnet_diagnostic.SA1600.severity = suggestion# StyleCop Analyzer Rules - Keep enableddotnet_diagnostic.SA1413.severity = warningdotnet_diagnostic.SA1515.severity = warningdotnet_diagnostic.SA1518.severity = warning
|
||||||
@@ -3,3 +3,4 @@
|
|||||||
################################################################################
|
################################################################################
|
||||||
|
|
||||||
/.vs/Jellyfin
|
/.vs/Jellyfin
|
||||||
|
/.vs
|
||||||
|
|||||||
@@ -0,0 +1,377 @@
|
|||||||
|
#!/usr/bin/env pwsh
|
||||||
|
<#
|
||||||
|
.SYNOPSIS
|
||||||
|
Converts C# files from block-scoped to file-scoped namespaces and fixes System namespace conflicts.
|
||||||
|
|
||||||
|
.DESCRIPTION
|
||||||
|
This script converts all C# files in MediaBrowser.Model from block-scoped namespaces
|
||||||
|
to file-scoped namespaces, and replaces System using directives with global::System
|
||||||
|
to resolve conflicts with MediaBrowser.Model.System namespace.
|
||||||
|
|
||||||
|
.PARAMETER Path
|
||||||
|
The root path to search for C# files. Defaults to "MediaBrowser.Model"
|
||||||
|
|
||||||
|
.PARAMETER DryRun
|
||||||
|
If specified, shows what would be changed without actually modifying files
|
||||||
|
|
||||||
|
.PARAMETER Verbose
|
||||||
|
Shows detailed processing information
|
||||||
|
|
||||||
|
.PARAMETER BackupFiles
|
||||||
|
Creates .bak files before conversion
|
||||||
|
|
||||||
|
.EXAMPLE
|
||||||
|
.\ConvertToFileScopedNamespaces.ps1 -DryRun
|
||||||
|
|
||||||
|
.EXAMPLE
|
||||||
|
.\ConvertToFileScopedNamespaces.ps1 -BackupFiles
|
||||||
|
|
||||||
|
.EXAMPLE
|
||||||
|
.\ConvertToFileScopedNamespaces.ps1 -Path "MediaBrowser.Model\Dlna" -Verbose
|
||||||
|
#>
|
||||||
|
|
||||||
|
param(
|
||||||
|
[string]$Path = "MediaBrowser.Model",
|
||||||
|
[switch]$DryRun,
|
||||||
|
[switch]$BackupFiles
|
||||||
|
)
|
||||||
|
|
||||||
|
$ErrorActionPreference = "Stop"
|
||||||
|
$VerbosePreference = if ($PSBoundParameters.ContainsKey('Verbose')) { 'Continue' } else { 'SilentlyContinue' }
|
||||||
|
|
||||||
|
function Get-IndentString {
|
||||||
|
param([string]$Line)
|
||||||
|
|
||||||
|
if ($Line -match '^(\s+)') {
|
||||||
|
return $Matches[1]
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
function Get-IndentLevel {
|
||||||
|
param([string]$IndentString)
|
||||||
|
|
||||||
|
# Count spaces (4 spaces = 1 level) or tabs (1 tab = 1 level)
|
||||||
|
$spaces = ($IndentString.ToCharArray() | Where-Object { $_ -eq ' ' }).Count
|
||||||
|
$tabs = ($IndentString.ToCharArray() | Where-Object { $_ -eq "`t" }).Count
|
||||||
|
|
||||||
|
return [Math]::Max($tabs, [Math]::Floor($spaces / 4))
|
||||||
|
}
|
||||||
|
|
||||||
|
function Remove-OneIndentLevel {
|
||||||
|
param([string]$Line, [ref]$IndentChar, [ref]$IndentSize)
|
||||||
|
|
||||||
|
if ([string]::IsNullOrWhiteSpace($Line)) {
|
||||||
|
return $Line
|
||||||
|
}
|
||||||
|
|
||||||
|
$indent = Get-IndentString -Line $Line
|
||||||
|
|
||||||
|
if ($indent.Length -eq 0) {
|
||||||
|
return $Line
|
||||||
|
}
|
||||||
|
|
||||||
|
# Detect indent character and size on first indented line
|
||||||
|
if ($IndentChar.Value -eq $null) {
|
||||||
|
if ($indent[0] -eq "`t") {
|
||||||
|
$IndentChar.Value = "`t"
|
||||||
|
$IndentSize.Value = 1
|
||||||
|
} else {
|
||||||
|
$IndentChar.Value = ' '
|
||||||
|
# Detect indent size (usually 4 spaces)
|
||||||
|
$IndentSize.Value = 4
|
||||||
|
if ($indent.Length -ge 2) {
|
||||||
|
# Try to detect actual indent size
|
||||||
|
for ($i = 1; $i -le 8; $i++) {
|
||||||
|
if ($indent.Length % $i -eq 0) {
|
||||||
|
$IndentSize.Value = $i
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Write-Verbose "Detected indent: '$($IndentChar.Value)' x $($IndentSize.Value)"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Remove one level of indentation
|
||||||
|
if ($IndentChar.Value -eq "`t") {
|
||||||
|
if ($Line -match '^\t(.*)') {
|
||||||
|
return $Matches[1]
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$pattern = "^" + (' ' * $IndentSize.Value) + '(.*)'
|
||||||
|
if ($Line -match $pattern) {
|
||||||
|
return $Matches[1]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $Line
|
||||||
|
}
|
||||||
|
|
||||||
|
function Test-FileScopedNamespace {
|
||||||
|
param([string]$Content)
|
||||||
|
|
||||||
|
# Check if already using file-scoped namespace (semicolon after namespace declaration)
|
||||||
|
return $Content -match 'namespace\s+[\w\.]+\s*;'
|
||||||
|
}
|
||||||
|
|
||||||
|
function Test-BlockScopedNamespace {
|
||||||
|
param([string]$Content)
|
||||||
|
|
||||||
|
# Check for block-scoped namespace
|
||||||
|
return $Content -match 'namespace\s+[\w\.]+\s*\r?\n?\s*\{'
|
||||||
|
}
|
||||||
|
|
||||||
|
function Add-GlobalPrefix {
|
||||||
|
param([string]$Content)
|
||||||
|
|
||||||
|
# System namespaces to prefix (ordered from most specific to least)
|
||||||
|
$systemNamespaces = @(
|
||||||
|
'System\.Xml\.Serialization',
|
||||||
|
'System\.ComponentModel\.DataAnnotations',
|
||||||
|
'System\.ComponentModel',
|
||||||
|
'System\.Collections\.Generic',
|
||||||
|
'System\.Collections\.Concurrent',
|
||||||
|
'System\.Collections',
|
||||||
|
'System\.Diagnostics\.CodeAnalysis',
|
||||||
|
'System\.Diagnostics',
|
||||||
|
'System\.Globalization',
|
||||||
|
'System\.Linq',
|
||||||
|
'System\.Text\.RegularExpressions',
|
||||||
|
'System\.Text',
|
||||||
|
'System\.Threading\.Tasks',
|
||||||
|
'System\.Threading',
|
||||||
|
'System\.IO',
|
||||||
|
'System\.Net',
|
||||||
|
'System\.Runtime',
|
||||||
|
'System' # Must be last to avoid partial matches
|
||||||
|
)
|
||||||
|
|
||||||
|
foreach ($ns in $systemNamespaces) {
|
||||||
|
# Don't add global:: if it's already there
|
||||||
|
# Match: "using System.X" but not "using global::System.X"
|
||||||
|
$pattern = '(\s+using\s+)(?!global::)(' + $ns + ')(\s|;)'
|
||||||
|
$replacement = '${1}global::${2}${3}'
|
||||||
|
$Content = $Content -replace $pattern, $replacement
|
||||||
|
}
|
||||||
|
|
||||||
|
return $Content
|
||||||
|
}
|
||||||
|
|
||||||
|
function Convert-ToFileScopedNamespace {
|
||||||
|
param(
|
||||||
|
[string]$FilePath,
|
||||||
|
[switch]$DryRun,
|
||||||
|
[switch]$CreateBackup
|
||||||
|
)
|
||||||
|
|
||||||
|
$content = Get-Content -Path $FilePath -Raw
|
||||||
|
$originalContent = $content
|
||||||
|
$modified = $false
|
||||||
|
|
||||||
|
# Check current state
|
||||||
|
$hasFileScopedNS = Test-FileScopedNamespace -Content $content
|
||||||
|
$hasBlockScopedNS = Test-BlockScopedNamespace -Content $content
|
||||||
|
|
||||||
|
if ($hasFileScopedNS) {
|
||||||
|
Write-Verbose " Already using file-scoped namespace"
|
||||||
|
|
||||||
|
# But still add global:: prefixes if needed
|
||||||
|
$contentWithGlobal = Add-GlobalPrefix -Content $content
|
||||||
|
if ($contentWithGlobal -ne $content) {
|
||||||
|
$content = $contentWithGlobal
|
||||||
|
$modified = $true
|
||||||
|
Write-Host " [UPDATED] Added global:: prefixes" -ForegroundColor Yellow
|
||||||
|
} else {
|
||||||
|
Write-Host " [SKIP] Already correct" -ForegroundColor Gray
|
||||||
|
return $false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
elseif (-not $hasBlockScopedNS) {
|
||||||
|
Write-Host " [SKIP] No namespace found" -ForegroundColor Gray
|
||||||
|
return $false
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
Write-Verbose " Converting block-scoped to file-scoped namespace"
|
||||||
|
|
||||||
|
# Extract namespace name and line
|
||||||
|
if ($content -match 'namespace\s+([\w\.]+)\s*\r?\n?\s*\{') {
|
||||||
|
$namespaceName = $Matches[1]
|
||||||
|
Write-Verbose " Namespace: $namespaceName"
|
||||||
|
} else {
|
||||||
|
Write-Warning " Could not parse namespace"
|
||||||
|
return $false
|
||||||
|
}
|
||||||
|
|
||||||
|
# Step 1: Convert namespace declaration to file-scoped
|
||||||
|
$content = $content -replace '(namespace\s+[\w\.]+)\s*\r?\n?\s*\{', '$1;'
|
||||||
|
$modified = $true
|
||||||
|
|
||||||
|
# Step 2: Add global:: prefixes to System using directives
|
||||||
|
$content = Add-GlobalPrefix -Content $content
|
||||||
|
|
||||||
|
# Step 3: Parse into lines for indentation removal
|
||||||
|
$lines = $content -split '\r?\n'
|
||||||
|
$hasWindowsLineEndings = $originalContent -match '\r\n'
|
||||||
|
|
||||||
|
# Find namespace declaration line
|
||||||
|
$namespaceLineIndex = -1
|
||||||
|
for ($i = 0; $i -lt $lines.Length; $i++) {
|
||||||
|
if ($lines[$i] -match '^namespace\s+[\w\.]+\s*;') {
|
||||||
|
$namespaceLineIndex = $i
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($namespaceLineIndex -lt 0) {
|
||||||
|
Write-Warning " Could not find namespace declaration after conversion"
|
||||||
|
return $false
|
||||||
|
}
|
||||||
|
|
||||||
|
# Step 4: Remove one level of indentation from all lines after namespace
|
||||||
|
$indentChar = $null
|
||||||
|
$indentSize = 4
|
||||||
|
$indentCharRef = [ref]$indentChar
|
||||||
|
$indentSizeRef = [ref]$indentSize
|
||||||
|
|
||||||
|
for ($i = $namespaceLineIndex + 1; $i -lt $lines.Length; $i++) {
|
||||||
|
$lines[$i] = Remove-OneIndentLevel -Line $lines[$i] -IndentChar $indentCharRef -IndentSize $indentSizeRef
|
||||||
|
}
|
||||||
|
|
||||||
|
# Step 5: Remove the closing brace of the namespace
|
||||||
|
# Find the last non-empty, non-whitespace line that's just a closing brace
|
||||||
|
$closingBraceIndex = -1
|
||||||
|
for ($i = $lines.Length - 1; $i -gt $namespaceLineIndex; $i--) {
|
||||||
|
$trimmed = $lines[$i].Trim()
|
||||||
|
if ($trimmed -eq '}') {
|
||||||
|
$closingBraceIndex = $i
|
||||||
|
break
|
||||||
|
}
|
||||||
|
elseif ($trimmed -ne '' -and $trimmed -ne '}') {
|
||||||
|
# Found non-brace content, stop looking
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($closingBraceIndex -ge 0) {
|
||||||
|
Write-Verbose " Removing closing brace at line $closingBraceIndex"
|
||||||
|
$lines = $lines[0..($closingBraceIndex-1)] + $lines[($closingBraceIndex+1)..($lines.Length-1)]
|
||||||
|
}
|
||||||
|
|
||||||
|
# Step 6: Rejoin lines
|
||||||
|
$lineEnding = if ($hasWindowsLineEndings) { "`r`n" } else { "`n" }
|
||||||
|
$content = ($lines | Where-Object { $_ -ne $null }) -join $lineEnding
|
||||||
|
|
||||||
|
# Step 7: Clean up trailing whitespace and ensure single newline at end
|
||||||
|
$content = $content.TrimEnd()
|
||||||
|
$content += $lineEnding
|
||||||
|
|
||||||
|
Write-Host " [CONVERTED] Block-scoped → File-scoped" -ForegroundColor Green
|
||||||
|
}
|
||||||
|
|
||||||
|
# Apply changes
|
||||||
|
if ($modified -and $content -ne $originalContent) {
|
||||||
|
if ($DryRun) {
|
||||||
|
Write-Host " [DRY-RUN] Would save changes" -ForegroundColor Cyan
|
||||||
|
return $true
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($CreateBackup) {
|
||||||
|
$backupPath = "$FilePath.bak"
|
||||||
|
Copy-Item -Path $FilePath -Destination $backupPath -Force
|
||||||
|
Write-Verbose " Created backup: $backupPath"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Write with correct encoding (UTF-8 without BOM for .cs files)
|
||||||
|
[System.IO.File]::WriteAllText($FilePath, $content, [System.Text.UTF8Encoding]::new($false))
|
||||||
|
return $true
|
||||||
|
}
|
||||||
|
|
||||||
|
return $false
|
||||||
|
}
|
||||||
|
|
||||||
|
# Main script
|
||||||
|
Write-Host "=" * 80 -ForegroundColor Cyan
|
||||||
|
Write-Host "C# File-Scoped Namespace Converter" -ForegroundColor Cyan
|
||||||
|
Write-Host "Fixes MediaBrowser.Model.System namespace conflicts" -ForegroundColor Cyan
|
||||||
|
Write-Host "=" * 80 -ForegroundColor Cyan
|
||||||
|
Write-Host
|
||||||
|
|
||||||
|
if ($DryRun) {
|
||||||
|
Write-Host "🔍 DRY RUN MODE - No files will be modified" -ForegroundColor Yellow
|
||||||
|
Write-Host
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($BackupFiles) {
|
||||||
|
Write-Host "💾 Backup mode enabled - .bak files will be created" -ForegroundColor Yellow
|
||||||
|
Write-Host
|
||||||
|
}
|
||||||
|
|
||||||
|
if (-not (Test-Path $Path)) {
|
||||||
|
Write-Error "❌ Path not found: $Path"
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
# Find all C# files
|
||||||
|
$files = Get-ChildItem -Path $Path -Filter "*.cs" -Recurse | Where-Object {
|
||||||
|
$_.FullName -notmatch "\\obj\\" -and
|
||||||
|
$_.FullName -notmatch "\\bin\\" -and
|
||||||
|
$_.FullName -notmatch "\\Properties\\AssemblyInfo\.cs$"
|
||||||
|
}
|
||||||
|
|
||||||
|
Write-Host "Found $($files.Count) C# files in $Path" -ForegroundColor Cyan
|
||||||
|
Write-Host
|
||||||
|
|
||||||
|
$convertedCount = 0
|
||||||
|
$skippedCount = 0
|
||||||
|
$errorCount = 0
|
||||||
|
$updatedCount = 0
|
||||||
|
|
||||||
|
foreach ($file in $files) {
|
||||||
|
$relativePath = $file.FullName.Replace((Get-Location).Path, "").TrimStart([char]92, [char]47)
|
||||||
|
Write-Host "📄 $relativePath" -ForegroundColor White
|
||||||
|
|
||||||
|
try {
|
||||||
|
$result = Convert-ToFileScopedNamespace -FilePath $file.FullName -DryRun:$DryRun -CreateBackup:$BackupFiles
|
||||||
|
|
||||||
|
if ($result) {
|
||||||
|
if ($result -eq "updated") {
|
||||||
|
$updatedCount++
|
||||||
|
} else {
|
||||||
|
$convertedCount++
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$skippedCount++
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch {
|
||||||
|
Write-Host " [ERROR] $_" -ForegroundColor Red
|
||||||
|
Write-Verbose $_.ScriptStackTrace
|
||||||
|
$errorCount++
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Write-Host
|
||||||
|
Write-Host "=" * 80 -ForegroundColor Cyan
|
||||||
|
Write-Host "Summary:" -ForegroundColor Cyan
|
||||||
|
Write-Host "=" * 80 -ForegroundColor Cyan
|
||||||
|
Write-Host " 📊 Total files: $($files.Count)" -ForegroundColor White
|
||||||
|
Write-Host " ✅ Converted: $convertedCount" -ForegroundColor Green
|
||||||
|
Write-Host " 🔄 Updated (global::): $updatedCount" -ForegroundColor Yellow
|
||||||
|
Write-Host " ⏭️ Skipped: $skippedCount" -ForegroundColor Gray
|
||||||
|
Write-Host " ❌ Errors: $errorCount" -ForegroundColor Red
|
||||||
|
|
||||||
|
if ($DryRun) {
|
||||||
|
Write-Host
|
||||||
|
Write-Host "This was a DRY RUN. Run without -DryRun to apply changes." -ForegroundColor Yellow
|
||||||
|
} elseif ($convertedCount -gt 0 -or $updatedCount -gt 0) {
|
||||||
|
Write-Host
|
||||||
|
Write-Host "✨ Conversion complete! Next steps:" -ForegroundColor Green
|
||||||
|
Write-Host " 1. Review changes with: git diff" -ForegroundColor White
|
||||||
|
Write-Host " 2. Build project: dotnet build MediaBrowser.Model\MediaBrowser.Model.csproj" -ForegroundColor White
|
||||||
|
Write-Host " 3. If successful: git add . && git commit -m `"Convert to file-scoped namespaces`"" -ForegroundColor White
|
||||||
|
}
|
||||||
|
|
||||||
|
Write-Host "=" * 80 -ForegroundColor Cyan
|
||||||
|
|
||||||
|
exit $errorCount
|
||||||
@@ -0,0 +1,388 @@
|
|||||||
|
#!/usr/bin/env pwsh
|
||||||
|
<#
|
||||||
|
.SYNOPSIS
|
||||||
|
Converts C# files from block-scoped to file-scoped namespaces and fixes System namespace conflicts.
|
||||||
|
|
||||||
|
.DESCRIPTION
|
||||||
|
This script converts all C# files in MediaBrowser.Model from block-scoped namespaces
|
||||||
|
to file-scoped namespaces, and replaces System using directives with global::System
|
||||||
|
to resolve conflicts with MediaBrowser.Model.System namespace.
|
||||||
|
|
||||||
|
.PARAMETER Path
|
||||||
|
The root path to search for C# files. Defaults to "MediaBrowser.Model"
|
||||||
|
|
||||||
|
.PARAMETER DryRun
|
||||||
|
If specified, shows what would be changed without actually modifying files
|
||||||
|
|
||||||
|
.PARAMETER Verbose
|
||||||
|
Shows detailed processing information
|
||||||
|
|
||||||
|
.PARAMETER BackupFiles
|
||||||
|
Creates .bak files before conversion
|
||||||
|
|
||||||
|
.EXAMPLE
|
||||||
|
.\ConvertToFileScopedNamespaces.ps1 -DryRun
|
||||||
|
|
||||||
|
.EXAMPLE
|
||||||
|
.\ConvertToFileScopedNamespaces.ps1 -BackupFiles
|
||||||
|
|
||||||
|
.EXAMPLE
|
||||||
|
.\ConvertToFileScopedNamespaces.ps1 -Path "MediaBrowser.Model\Dlna" -Verbose
|
||||||
|
#>
|
||||||
|
|
||||||
|
param(
|
||||||
|
[string]$Path = "MediaBrowser.Model",
|
||||||
|
[switch]$DryRun,
|
||||||
|
[switch]$BackupFiles
|
||||||
|
)
|
||||||
|
|
||||||
|
$ErrorActionPreference = "Stop"
|
||||||
|
$VerbosePreference = if ($PSBoundParameters.ContainsKey('Verbose')) { 'Continue' } else { 'SilentlyContinue' }
|
||||||
|
|
||||||
|
function Get-IndentString {
|
||||||
|
param([string]$Line)
|
||||||
|
|
||||||
|
if ($Line -match '^(\s+)') {
|
||||||
|
return $Matches[1]
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
function Get-IndentLevel {
|
||||||
|
param([string]$IndentString)
|
||||||
|
|
||||||
|
# Count spaces (4 spaces = 1 level) or tabs (1 tab = 1 level)
|
||||||
|
$spaces = ($IndentString.ToCharArray() | Where-Object { $_ -eq ' ' }).Count
|
||||||
|
$tabs = ($IndentString.ToCharArray() | Where-Object { $_ -eq "`t" }).Count
|
||||||
|
|
||||||
|
return [Math]::Max($tabs, [Math]::Floor($spaces / 4))
|
||||||
|
}
|
||||||
|
|
||||||
|
function Remove-OneIndentLevel {
|
||||||
|
param([string]$Line, [ref]$IndentChar, [ref]$IndentSize)
|
||||||
|
|
||||||
|
if ([string]::IsNullOrWhiteSpace($Line)) {
|
||||||
|
return $Line
|
||||||
|
}
|
||||||
|
|
||||||
|
$indent = Get-IndentString -Line $Line
|
||||||
|
|
||||||
|
if ($indent.Length -eq 0) {
|
||||||
|
return $Line
|
||||||
|
}
|
||||||
|
|
||||||
|
# Detect indent character and size on first indented line
|
||||||
|
if ($IndentChar.Value -eq $null) {
|
||||||
|
if ($indent[0] -eq "`t") {
|
||||||
|
$IndentChar.Value = "`t"
|
||||||
|
$IndentSize.Value = 1
|
||||||
|
} else {
|
||||||
|
$IndentChar.Value = ' '
|
||||||
|
# Detect indent size (usually 4 spaces)
|
||||||
|
$IndentSize.Value = 4
|
||||||
|
if ($indent.Length -ge 2) {
|
||||||
|
# Try to detect actual indent size
|
||||||
|
for ($i = 1; $i -le 8; $i++) {
|
||||||
|
if ($indent.Length % $i -eq 0) {
|
||||||
|
$IndentSize.Value = $i
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Write-Verbose "Detected indent: '$($IndentChar.Value)' x $($IndentSize.Value)"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Remove one level of indentation
|
||||||
|
if ($IndentChar.Value -eq "`t") {
|
||||||
|
if ($Line -match '^\t(.*)') {
|
||||||
|
return $Matches[1]
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$pattern = "^" + (' ' * $IndentSize.Value) + '(.*)'
|
||||||
|
if ($Line -match $pattern) {
|
||||||
|
return $Matches[1]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $Line
|
||||||
|
}
|
||||||
|
|
||||||
|
function Test-FileScopedNamespace {
|
||||||
|
param([string]$Content)
|
||||||
|
|
||||||
|
# Check if already using file-scoped namespace (semicolon after namespace declaration)
|
||||||
|
return $Content -match 'namespace\s+[\w\.]+\s*;'
|
||||||
|
}
|
||||||
|
|
||||||
|
function Test-BlockScopedNamespace {
|
||||||
|
param([string]$Content)
|
||||||
|
|
||||||
|
# Check for block-scoped namespace
|
||||||
|
return $Content -match 'namespace\s+[\w\.]+\s*\r?\n?\s*\{'
|
||||||
|
}
|
||||||
|
|
||||||
|
function Add-GlobalPrefix {
|
||||||
|
param([string]$Content)
|
||||||
|
|
||||||
|
# System namespaces to prefix (ordered from most specific to least)
|
||||||
|
$systemNamespaces = @(
|
||||||
|
'System\.Xml\.Serialization',
|
||||||
|
'System\.ComponentModel\.DataAnnotations',
|
||||||
|
'System\.ComponentModel',
|
||||||
|
'System\.Collections\.Generic',
|
||||||
|
'System\.Collections\.Concurrent',
|
||||||
|
'System\.Collections',
|
||||||
|
'System\.Diagnostics\.CodeAnalysis',
|
||||||
|
'System\.Diagnostics',
|
||||||
|
'System\.Globalization',
|
||||||
|
'System\.Linq\.Expressions',
|
||||||
|
'System\.Linq',
|
||||||
|
'System\.Text\.Json\.Serialization',
|
||||||
|
'System\.Text\.Json',
|
||||||
|
'System\.Text\.RegularExpressions',
|
||||||
|
'System\.Text',
|
||||||
|
'System\.Threading\.Tasks',
|
||||||
|
'System\.Threading',
|
||||||
|
'System\.Runtime\.Serialization',
|
||||||
|
'System\.Runtime\.CompilerServices',
|
||||||
|
'System\.Runtime',
|
||||||
|
'System\.Net\.Http',
|
||||||
|
'System\.Net\.Sockets',
|
||||||
|
'System\.Net\.WebSockets',
|
||||||
|
'System\.Net\.Mime',
|
||||||
|
'System\.Net',
|
||||||
|
'System\.IO\.Compression',
|
||||||
|
'System\.IO',
|
||||||
|
'System\.Security',
|
||||||
|
'System' # Must be last to avoid partial matches
|
||||||
|
)
|
||||||
|
|
||||||
|
foreach ($ns in $systemNamespaces) {
|
||||||
|
# Don't add global:: if it's already there
|
||||||
|
# Match: "using System.X" but not "using global::System.X"
|
||||||
|
$pattern = '(\s+using\s+)(?!global::)(' + $ns + ')(\s|;)'
|
||||||
|
$replacement = '${1}global::${2}${3}'
|
||||||
|
$Content = $Content -replace $pattern, $replacement
|
||||||
|
}
|
||||||
|
|
||||||
|
return $Content
|
||||||
|
}
|
||||||
|
|
||||||
|
function Convert-ToFileScopedNamespace {
|
||||||
|
param(
|
||||||
|
[string]$FilePath,
|
||||||
|
[switch]$DryRun,
|
||||||
|
[switch]$CreateBackup
|
||||||
|
)
|
||||||
|
|
||||||
|
$content = Get-Content -Path $FilePath -Raw
|
||||||
|
$originalContent = $content
|
||||||
|
$modified = $false
|
||||||
|
|
||||||
|
# Check current state
|
||||||
|
$hasFileScopedNS = Test-FileScopedNamespace -Content $content
|
||||||
|
$hasBlockScopedNS = Test-BlockScopedNamespace -Content $content
|
||||||
|
|
||||||
|
if ($hasFileScopedNS) {
|
||||||
|
Write-Verbose " Already using file-scoped namespace"
|
||||||
|
|
||||||
|
# But still add global:: prefixes if needed
|
||||||
|
$contentWithGlobal = Add-GlobalPrefix -Content $content
|
||||||
|
if ($contentWithGlobal -ne $content) {
|
||||||
|
$content = $contentWithGlobal
|
||||||
|
$modified = $true
|
||||||
|
Write-Host " [UPDATED] Added global:: prefixes" -ForegroundColor Yellow
|
||||||
|
} else {
|
||||||
|
Write-Host " [SKIP] Already correct" -ForegroundColor Gray
|
||||||
|
return $false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
elseif (-not $hasBlockScopedNS) {
|
||||||
|
Write-Host " [SKIP] No namespace found" -ForegroundColor Gray
|
||||||
|
return $false
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
Write-Verbose " Converting block-scoped to file-scoped namespace"
|
||||||
|
|
||||||
|
# Extract namespace name and line
|
||||||
|
if ($content -match 'namespace\s+([\w\.]+)\s*\r?\n?\s*\{') {
|
||||||
|
$namespaceName = $Matches[1]
|
||||||
|
Write-Verbose " Namespace: $namespaceName"
|
||||||
|
} else {
|
||||||
|
Write-Warning " Could not parse namespace"
|
||||||
|
return $false
|
||||||
|
}
|
||||||
|
|
||||||
|
# Step 1: Convert namespace declaration to file-scoped
|
||||||
|
$content = $content -replace '(namespace\s+[\w\.]+)\s*\r?\n?\s*\{', '$1;'
|
||||||
|
$modified = $true
|
||||||
|
|
||||||
|
# Step 2: Add global:: prefixes to System using directives
|
||||||
|
$content = Add-GlobalPrefix -Content $content
|
||||||
|
|
||||||
|
# Step 3: Parse into lines for indentation removal
|
||||||
|
$lines = $content -split '\r?\n'
|
||||||
|
$hasWindowsLineEndings = $originalContent -match '\r\n'
|
||||||
|
|
||||||
|
# Find namespace declaration line
|
||||||
|
$namespaceLineIndex = -1
|
||||||
|
for ($i = 0; $i -lt $lines.Length; $i++) {
|
||||||
|
if ($lines[$i] -match '^namespace\s+[\w\.]+\s*;') {
|
||||||
|
$namespaceLineIndex = $i
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($namespaceLineIndex -lt 0) {
|
||||||
|
Write-Warning " Could not find namespace declaration after conversion"
|
||||||
|
return $false
|
||||||
|
}
|
||||||
|
|
||||||
|
# Step 4: Remove one level of indentation from all lines after namespace
|
||||||
|
$indentChar = $null
|
||||||
|
$indentSize = 4
|
||||||
|
$indentCharRef = [ref]$indentChar
|
||||||
|
$indentSizeRef = [ref]$indentSize
|
||||||
|
|
||||||
|
for ($i = $namespaceLineIndex + 1; $i -lt $lines.Length; $i++) {
|
||||||
|
$lines[$i] = Remove-OneIndentLevel -Line $lines[$i] -IndentChar $indentCharRef -IndentSize $indentSizeRef
|
||||||
|
}
|
||||||
|
|
||||||
|
# Step 5: Remove the closing brace of the namespace
|
||||||
|
# Find the last non-empty, non-whitespace line that's just a closing brace
|
||||||
|
$closingBraceIndex = -1
|
||||||
|
for ($i = $lines.Length - 1; $i -gt $namespaceLineIndex; $i--) {
|
||||||
|
$trimmed = $lines[$i].Trim()
|
||||||
|
if ($trimmed -eq '}') {
|
||||||
|
$closingBraceIndex = $i
|
||||||
|
break
|
||||||
|
}
|
||||||
|
elseif ($trimmed -ne '' -and $trimmed -ne '}') {
|
||||||
|
# Found non-brace content, stop looking
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($closingBraceIndex -ge 0) {
|
||||||
|
Write-Verbose " Removing closing brace at line $closingBraceIndex"
|
||||||
|
$lines = $lines[0..($closingBraceIndex-1)] + $lines[($closingBraceIndex+1)..($lines.Length-1)]
|
||||||
|
}
|
||||||
|
|
||||||
|
# Step 6: Rejoin lines
|
||||||
|
$lineEnding = if ($hasWindowsLineEndings) { "`r`n" } else { "`n" }
|
||||||
|
$content = ($lines | Where-Object { $_ -ne $null }) -join $lineEnding
|
||||||
|
|
||||||
|
# Step 7: Clean up trailing whitespace and ensure single newline at end
|
||||||
|
$content = $content.TrimEnd()
|
||||||
|
$content += $lineEnding
|
||||||
|
|
||||||
|
Write-Host " [CONVERTED] Block-scoped → File-scoped" -ForegroundColor Green
|
||||||
|
}
|
||||||
|
|
||||||
|
# Apply changes
|
||||||
|
if ($modified -and $content -ne $originalContent) {
|
||||||
|
if ($DryRun) {
|
||||||
|
Write-Host " [DRY-RUN] Would save changes" -ForegroundColor Cyan
|
||||||
|
return $true
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($CreateBackup) {
|
||||||
|
$backupPath = "$FilePath.bak"
|
||||||
|
Copy-Item -Path $FilePath -Destination $backupPath -Force
|
||||||
|
Write-Verbose " Created backup: $backupPath"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Write with correct encoding (UTF-8 without BOM for .cs files)
|
||||||
|
[System.IO.File]::WriteAllText($FilePath, $content, [System.Text.UTF8Encoding]::new($false))
|
||||||
|
return $true
|
||||||
|
}
|
||||||
|
|
||||||
|
return $false
|
||||||
|
}
|
||||||
|
|
||||||
|
# Main script
|
||||||
|
Write-Host ("=" * 80) -ForegroundColor Cyan
|
||||||
|
Write-Host "C# File-Scoped Namespace Converter" -ForegroundColor Cyan
|
||||||
|
Write-Host "Fixes MediaBrowser.Model.System namespace conflicts" -ForegroundColor Cyan
|
||||||
|
Write-Host ("=" * 80) -ForegroundColor Cyan
|
||||||
|
Write-Host
|
||||||
|
|
||||||
|
if ($DryRun) {
|
||||||
|
Write-Host "DRY RUN MODE - No files will be modified" -ForegroundColor Yellow
|
||||||
|
Write-Host
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($BackupFiles) {
|
||||||
|
Write-Host "Backup mode enabled - .bak files will be created" -ForegroundColor Yellow
|
||||||
|
Write-Host
|
||||||
|
}
|
||||||
|
|
||||||
|
if (-not (Test-Path $Path)) {
|
||||||
|
Write-Error "❌ Path not found: $Path"
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
# Find all C# files
|
||||||
|
$files = Get-ChildItem -Path $Path -Filter "*.cs" -Recurse | Where-Object {
|
||||||
|
$_.FullName -notmatch "\\obj\\" -and
|
||||||
|
$_.FullName -notmatch "\\bin\\" -and
|
||||||
|
$_.FullName -notmatch "\\Properties\\AssemblyInfo\.cs$"
|
||||||
|
}
|
||||||
|
|
||||||
|
Write-Host "Found $($files.Count) C# files in $Path" -ForegroundColor Cyan
|
||||||
|
Write-Host
|
||||||
|
|
||||||
|
$convertedCount = 0
|
||||||
|
$skippedCount = 0
|
||||||
|
$errorCount = 0
|
||||||
|
$updatedCount = 0
|
||||||
|
|
||||||
|
foreach ($file in $files) {
|
||||||
|
$relativePath = $file.FullName.Replace((Get-Location).Path, "").TrimStart([char]92, [char]47)
|
||||||
|
Write-Host "[Processing] $relativePath" -ForegroundColor White
|
||||||
|
|
||||||
|
try {
|
||||||
|
$result = Convert-ToFileScopedNamespace -FilePath $file.FullName -DryRun:$DryRun -CreateBackup:$BackupFiles
|
||||||
|
|
||||||
|
if ($result) {
|
||||||
|
if ($result -eq "updated") {
|
||||||
|
$updatedCount++
|
||||||
|
} else {
|
||||||
|
$convertedCount++
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$skippedCount++
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch {
|
||||||
|
Write-Host " [ERROR] $_" -ForegroundColor Red
|
||||||
|
Write-Verbose $_.ScriptStackTrace
|
||||||
|
$errorCount++
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Write-Host
|
||||||
|
Write-Host ("=" * 80) -ForegroundColor Cyan
|
||||||
|
Write-Host "Summary:" -ForegroundColor Cyan
|
||||||
|
Write-Host ("=" * 80) -ForegroundColor Cyan
|
||||||
|
Write-Host " Total files: $($files.Count)" -ForegroundColor White
|
||||||
|
Write-Host " Converted: $convertedCount" -ForegroundColor Green
|
||||||
|
Write-Host " Updated (global::): $updatedCount" -ForegroundColor Yellow
|
||||||
|
Write-Host " Skipped: $skippedCount" -ForegroundColor Gray
|
||||||
|
Write-Host " Errors: $errorCount" -ForegroundColor Red
|
||||||
|
|
||||||
|
if ($DryRun) {
|
||||||
|
Write-Host
|
||||||
|
Write-Host "This was a DRY RUN. Run without -DryRun to apply changes." -ForegroundColor Yellow
|
||||||
|
} elseif ($convertedCount -gt 0 -or $updatedCount -gt 0) {
|
||||||
|
Write-Host
|
||||||
|
Write-Host "Conversion complete! Next steps:" -ForegroundColor Green
|
||||||
|
Write-Host " 1. Review changes with: git diff" -ForegroundColor White
|
||||||
|
Write-Host " 2. Build project: dotnet build MediaBrowser.Model\MediaBrowser.Model.csproj" -ForegroundColor White
|
||||||
|
Write-Host " 3. If successful: git add . && git commit -m `"Convert to file-scoped namespaces`"" -ForegroundColor White
|
||||||
|
}
|
||||||
|
|
||||||
|
Write-Host ("=" * 80) -ForegroundColor Cyan
|
||||||
|
|
||||||
|
exit $errorCount
|
||||||
@@ -2,15 +2,15 @@
|
|||||||
// Copyright (c) PlaceholderCompany. All rights reserved.
|
// Copyright (c) PlaceholderCompany. All rights reserved.
|
||||||
// </copyright>
|
// </copyright>
|
||||||
|
|
||||||
using System;
|
|
||||||
using System.Globalization;
|
|
||||||
using System.IO;
|
|
||||||
using System.Text.RegularExpressions;
|
|
||||||
using Emby.Naming.Common;
|
|
||||||
using Jellyfin.Extensions;
|
|
||||||
|
|
||||||
namespace Emby.Naming.Audio
|
namespace Emby.Naming.Audio
|
||||||
{
|
{
|
||||||
|
using System;
|
||||||
|
using System.Globalization;
|
||||||
|
using System.IO;
|
||||||
|
using System.Text.RegularExpressions;
|
||||||
|
using Emby.Naming.Common;
|
||||||
|
using Jellyfin.Extensions;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Helper class to determine if Album is multipart.
|
/// Helper class to determine if Album is multipart.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -2,13 +2,13 @@
|
|||||||
// Copyright (c) PlaceholderCompany. All rights reserved.
|
// Copyright (c) PlaceholderCompany. All rights reserved.
|
||||||
// </copyright>
|
// </copyright>
|
||||||
|
|
||||||
using System;
|
|
||||||
using System.IO;
|
|
||||||
using Emby.Naming.Common;
|
|
||||||
using Jellyfin.Extensions;
|
|
||||||
|
|
||||||
namespace Emby.Naming.Audio
|
namespace Emby.Naming.Audio
|
||||||
{
|
{
|
||||||
|
using System;
|
||||||
|
using System.IO;
|
||||||
|
using Emby.Naming.Common;
|
||||||
|
using Jellyfin.Extensions;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Static helper class to determine if file at path is audio file.
|
/// Static helper class to determine if file at path is audio file.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -2,10 +2,10 @@
|
|||||||
// Copyright (c) PlaceholderCompany. All rights reserved.
|
// Copyright (c) PlaceholderCompany. All rights reserved.
|
||||||
// </copyright>
|
// </copyright>
|
||||||
|
|
||||||
using System;
|
|
||||||
|
|
||||||
namespace Emby.Naming.AudioBook
|
namespace Emby.Naming.AudioBook
|
||||||
{
|
{
|
||||||
|
using System;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Represents a single video file.
|
/// Represents a single video file.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -2,13 +2,13 @@
|
|||||||
// Copyright (c) PlaceholderCompany. All rights reserved.
|
// Copyright (c) PlaceholderCompany. All rights reserved.
|
||||||
// </copyright>
|
// </copyright>
|
||||||
|
|
||||||
using System.Globalization;
|
|
||||||
using System.IO;
|
|
||||||
using System.Text.RegularExpressions;
|
|
||||||
using Emby.Naming.Common;
|
|
||||||
|
|
||||||
namespace Emby.Naming.AudioBook
|
namespace Emby.Naming.AudioBook
|
||||||
{
|
{
|
||||||
|
using System.Globalization;
|
||||||
|
using System.IO;
|
||||||
|
using System.Text.RegularExpressions;
|
||||||
|
using Emby.Naming.Common;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Parser class to extract part and/or chapter number from audiobook filename.
|
/// Parser class to extract part and/or chapter number from audiobook filename.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -2,10 +2,10 @@
|
|||||||
// Copyright (c) PlaceholderCompany. All rights reserved.
|
// Copyright (c) PlaceholderCompany. All rights reserved.
|
||||||
// </copyright>
|
// </copyright>
|
||||||
|
|
||||||
using System.Collections.Generic;
|
|
||||||
|
|
||||||
namespace Emby.Naming.AudioBook
|
namespace Emby.Naming.AudioBook
|
||||||
{
|
{
|
||||||
|
using System.Collections.Generic;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Represents a complete video, including all parts and subtitles.
|
/// Represents a complete video, including all parts and subtitles.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -2,16 +2,16 @@
|
|||||||
// Copyright (c) PlaceholderCompany. All rights reserved.
|
// Copyright (c) PlaceholderCompany. All rights reserved.
|
||||||
// </copyright>
|
// </copyright>
|
||||||
|
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.IO;
|
|
||||||
using System.Linq;
|
|
||||||
using Emby.Naming.Common;
|
|
||||||
using Emby.Naming.Video;
|
|
||||||
using MediaBrowser.Model.IO;
|
|
||||||
|
|
||||||
namespace Emby.Naming.AudioBook
|
namespace Emby.Naming.AudioBook
|
||||||
{
|
{
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.IO;
|
||||||
|
using System.Linq;
|
||||||
|
using Emby.Naming.Common;
|
||||||
|
using Emby.Naming.Video;
|
||||||
|
using MediaBrowser.Model.IO;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Class used to resolve Name, Year, alternative files and extras from stack of files.
|
/// Class used to resolve Name, Year, alternative files and extras from stack of files.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -2,12 +2,12 @@
|
|||||||
// Copyright (c) PlaceholderCompany. All rights reserved.
|
// Copyright (c) PlaceholderCompany. All rights reserved.
|
||||||
// </copyright>
|
// </copyright>
|
||||||
|
|
||||||
using System.Globalization;
|
|
||||||
using System.Text.RegularExpressions;
|
|
||||||
using Emby.Naming.Common;
|
|
||||||
|
|
||||||
namespace Emby.Naming.AudioBook
|
namespace Emby.Naming.AudioBook
|
||||||
{
|
{
|
||||||
|
using System.Globalization;
|
||||||
|
using System.Text.RegularExpressions;
|
||||||
|
using Emby.Naming.Common;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Helper class to retrieve name and year from audiobook previously retrieved name.
|
/// Helper class to retrieve name and year from audiobook previously retrieved name.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -2,13 +2,13 @@
|
|||||||
// Copyright (c) PlaceholderCompany. All rights reserved.
|
// Copyright (c) PlaceholderCompany. All rights reserved.
|
||||||
// </copyright>
|
// </copyright>
|
||||||
|
|
||||||
using System;
|
|
||||||
using System.IO;
|
|
||||||
using Emby.Naming.Common;
|
|
||||||
using Jellyfin.Extensions;
|
|
||||||
|
|
||||||
namespace Emby.Naming.AudioBook
|
namespace Emby.Naming.AudioBook
|
||||||
{
|
{
|
||||||
|
using System;
|
||||||
|
using System.IO;
|
||||||
|
using Emby.Naming.Common;
|
||||||
|
using Jellyfin.Extensions;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Resolve specifics (path, container, partNumber, chapterNumber) about audiobook file.
|
/// Resolve specifics (path, container, partNumber, chapterNumber) about audiobook file.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -2,10 +2,10 @@
|
|||||||
// Copyright (c) PlaceholderCompany. All rights reserved.
|
// Copyright (c) PlaceholderCompany. All rights reserved.
|
||||||
// </copyright>
|
// </copyright>
|
||||||
|
|
||||||
using System.Text.RegularExpressions;
|
|
||||||
|
|
||||||
namespace Emby.Naming.Book
|
namespace Emby.Naming.Book
|
||||||
{
|
{
|
||||||
|
using System.Text.RegularExpressions;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Helper class to retrieve basic metadata from a book filename.
|
/// Helper class to retrieve basic metadata from a book filename.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -2,10 +2,10 @@
|
|||||||
// Copyright (c) PlaceholderCompany. All rights reserved.
|
// Copyright (c) PlaceholderCompany. All rights reserved.
|
||||||
// </copyright>
|
// </copyright>
|
||||||
|
|
||||||
using System;
|
|
||||||
|
|
||||||
namespace Emby.Naming.Book
|
namespace Emby.Naming.Book
|
||||||
{
|
{
|
||||||
|
using System;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Data object used to pass metadata parsed from a book filename.
|
/// Data object used to pass metadata parsed from a book filename.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -2,11 +2,11 @@
|
|||||||
// Copyright (c) PlaceholderCompany. All rights reserved.
|
// Copyright (c) PlaceholderCompany. All rights reserved.
|
||||||
// </copyright>
|
// </copyright>
|
||||||
|
|
||||||
using System;
|
|
||||||
using System.Text.RegularExpressions;
|
|
||||||
|
|
||||||
namespace Emby.Naming.Common
|
namespace Emby.Naming.Common
|
||||||
{
|
{
|
||||||
|
using System;
|
||||||
|
using System.Text.RegularExpressions;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Regular expressions for parsing TV Episodes.
|
/// Regular expressions for parsing TV Episodes.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -2,16 +2,16 @@
|
|||||||
// Copyright (c) PlaceholderCompany. All rights reserved.
|
// Copyright (c) PlaceholderCompany. All rights reserved.
|
||||||
// </copyright>
|
// </copyright>
|
||||||
|
|
||||||
using System;
|
|
||||||
using System.IO;
|
|
||||||
using System.Linq;
|
|
||||||
using Emby.Naming.Common;
|
|
||||||
using Jellyfin.Extensions;
|
|
||||||
using MediaBrowser.Model.Dlna;
|
|
||||||
using MediaBrowser.Model.Globalization;
|
|
||||||
|
|
||||||
namespace Emby.Naming.ExternalFiles
|
namespace Emby.Naming.ExternalFiles
|
||||||
{
|
{
|
||||||
|
using System;
|
||||||
|
using System.IO;
|
||||||
|
using System.Linq;
|
||||||
|
using Emby.Naming.Common;
|
||||||
|
using Jellyfin.Extensions;
|
||||||
|
using MediaBrowser.Model.Dlna;
|
||||||
|
using MediaBrowser.Model.Globalization;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// External media file parser class.
|
/// External media file parser class.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -2,14 +2,14 @@
|
|||||||
// Copyright (c) PlaceholderCompany. All rights reserved.
|
// Copyright (c) PlaceholderCompany. All rights reserved.
|
||||||
// </copyright>
|
// </copyright>
|
||||||
|
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Globalization;
|
|
||||||
using System.Linq;
|
|
||||||
using Emby.Naming.Common;
|
|
||||||
|
|
||||||
namespace Emby.Naming.TV
|
namespace Emby.Naming.TV
|
||||||
{
|
{
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Globalization;
|
||||||
|
using System.Linq;
|
||||||
|
using Emby.Naming.Common;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Used to parse information about episode from path.
|
/// Used to parse information about episode from path.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -2,14 +2,14 @@
|
|||||||
// Copyright (c) PlaceholderCompany. All rights reserved.
|
// Copyright (c) PlaceholderCompany. All rights reserved.
|
||||||
// </copyright>
|
// </copyright>
|
||||||
|
|
||||||
using System;
|
|
||||||
using System.IO;
|
|
||||||
using Emby.Naming.Common;
|
|
||||||
using Emby.Naming.Video;
|
|
||||||
using Jellyfin.Extensions;
|
|
||||||
|
|
||||||
namespace Emby.Naming.TV
|
namespace Emby.Naming.TV
|
||||||
{
|
{
|
||||||
|
using System;
|
||||||
|
using System.IO;
|
||||||
|
using Emby.Naming.Common;
|
||||||
|
using Emby.Naming.Video;
|
||||||
|
using Jellyfin.Extensions;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Used to resolve information about episode from path.
|
/// Used to resolve information about episode from path.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -2,13 +2,13 @@
|
|||||||
// Copyright (c) PlaceholderCompany. All rights reserved.
|
// Copyright (c) PlaceholderCompany. All rights reserved.
|
||||||
// </copyright>
|
// </copyright>
|
||||||
|
|
||||||
using System;
|
|
||||||
using System.Globalization;
|
|
||||||
using System.IO;
|
|
||||||
using System.Text.RegularExpressions;
|
|
||||||
|
|
||||||
namespace Emby.Naming.TV
|
namespace Emby.Naming.TV
|
||||||
{
|
{
|
||||||
|
using System;
|
||||||
|
using System.Globalization;
|
||||||
|
using System.IO;
|
||||||
|
using System.Text.RegularExpressions;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Class to parse season paths.
|
/// Class to parse season paths.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -1,11 +1,7 @@
|
|||||||
// <copyright file="SeriesPathParser.cs" company="PlaceholderCompany">
|
|
||||||
// Copyright (c) PlaceholderCompany. All rights reserved.
|
|
||||||
// </copyright>
|
|
||||||
|
|
||||||
using Emby.Naming.Common;
|
|
||||||
|
|
||||||
namespace Emby.Naming.TV
|
namespace Emby.Naming.TV
|
||||||
{
|
{
|
||||||
|
using Emby.Naming.Common;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Used to parse information about series from paths containing more information that only the series name.
|
/// Used to parse information about series from paths containing more information that only the series name.
|
||||||
/// Uses the same regular expressions as the EpisodePathParser but have different success criteria.
|
/// Uses the same regular expressions as the EpisodePathParser but have different success criteria.
|
||||||
|
|||||||
@@ -2,12 +2,12 @@
|
|||||||
// Copyright (c) PlaceholderCompany. All rights reserved.
|
// Copyright (c) PlaceholderCompany. All rights reserved.
|
||||||
// </copyright>
|
// </copyright>
|
||||||
|
|
||||||
using System.IO;
|
|
||||||
using System.Text.RegularExpressions;
|
|
||||||
using Emby.Naming.Common;
|
|
||||||
|
|
||||||
namespace Emby.Naming.TV
|
namespace Emby.Naming.TV
|
||||||
{
|
{
|
||||||
|
using System.IO;
|
||||||
|
using System.Text.RegularExpressions;
|
||||||
|
using Emby.Naming.Common;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Used to resolve information about series from path.
|
/// Used to resolve information about series from path.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -2,12 +2,12 @@
|
|||||||
// Copyright (c) PlaceholderCompany. All rights reserved.
|
// Copyright (c) PlaceholderCompany. All rights reserved.
|
||||||
// </copyright>
|
// </copyright>
|
||||||
|
|
||||||
|
namespace Emby.Naming.TV;
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using MediaBrowser.Model.Entities;
|
using MediaBrowser.Model.Entities;
|
||||||
|
|
||||||
namespace Emby.Naming.TV;
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Helper class for TV metadata parsing.
|
/// Helper class for TV metadata parsing.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -1,13 +1,9 @@
|
|||||||
// <copyright file="CleanDateTimeParser.cs" company="PlaceholderCompany">
|
|
||||||
// Copyright (c) PlaceholderCompany. All rights reserved.
|
|
||||||
// </copyright>
|
|
||||||
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Globalization;
|
|
||||||
using System.Text.RegularExpressions;
|
|
||||||
|
|
||||||
namespace Emby.Naming.Video
|
namespace Emby.Naming.Video
|
||||||
{
|
{
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Globalization;
|
||||||
|
using System.Text.RegularExpressions;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// <see href="http://kodi.wiki/view/Advancedsettings.xml#video" />.
|
/// <see href="http://kodi.wiki/view/Advancedsettings.xml#video" />.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -1,13 +1,9 @@
|
|||||||
// <copyright file="CleanStringParser.cs" company="PlaceholderCompany">
|
|
||||||
// Copyright (c) PlaceholderCompany. All rights reserved.
|
|
||||||
// </copyright>
|
|
||||||
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Diagnostics.CodeAnalysis;
|
|
||||||
using System.Text.RegularExpressions;
|
|
||||||
|
|
||||||
namespace Emby.Naming.Video
|
namespace Emby.Naming.Video
|
||||||
{
|
{
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Diagnostics.CodeAnalysis;
|
||||||
|
using System.Text.RegularExpressions;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// <see href="http://kodi.wiki/view/Advancedsettings.xml#video" />.
|
/// <see href="http://kodi.wiki/view/Advancedsettings.xml#video" />.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -1,11 +1,7 @@
|
|||||||
// <copyright file="ExtraResult.cs" company="PlaceholderCompany">
|
|
||||||
// Copyright (c) PlaceholderCompany. All rights reserved.
|
|
||||||
// </copyright>
|
|
||||||
|
|
||||||
using MediaBrowser.Model.Entities;
|
|
||||||
|
|
||||||
namespace Emby.Naming.Video
|
namespace Emby.Naming.Video
|
||||||
{
|
{
|
||||||
|
using MediaBrowser.Model.Entities;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Holder object for passing results from ExtraResolver.
|
/// Holder object for passing results from ExtraResolver.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -1,12 +1,8 @@
|
|||||||
// <copyright file="ExtraRule.cs" company="PlaceholderCompany">
|
|
||||||
// Copyright (c) PlaceholderCompany. All rights reserved.
|
|
||||||
// </copyright>
|
|
||||||
|
|
||||||
using MediaBrowser.Model.Entities;
|
|
||||||
using MediaType = Emby.Naming.Common.MediaType;
|
|
||||||
|
|
||||||
namespace Emby.Naming.Video
|
namespace Emby.Naming.Video
|
||||||
{
|
{
|
||||||
|
using MediaBrowser.Model.Entities;
|
||||||
|
using MediaType = Emby.Naming.Common.MediaType;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// A rule used to match a file path with an <see cref="MediaBrowser.Model.Entities.ExtraType"/>.
|
/// A rule used to match a file path with an <see cref="MediaBrowser.Model.Entities.ExtraType"/>.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -2,14 +2,14 @@
|
|||||||
// Copyright (c) PlaceholderCompany. All rights reserved.
|
// Copyright (c) PlaceholderCompany. All rights reserved.
|
||||||
// </copyright>
|
// </copyright>
|
||||||
|
|
||||||
using System;
|
|
||||||
using System.IO;
|
|
||||||
using System.Text.RegularExpressions;
|
|
||||||
using Emby.Naming.Audio;
|
|
||||||
using Emby.Naming.Common;
|
|
||||||
|
|
||||||
namespace Emby.Naming.Video
|
namespace Emby.Naming.Video
|
||||||
{
|
{
|
||||||
|
using System;
|
||||||
|
using System.IO;
|
||||||
|
using System.Text.RegularExpressions;
|
||||||
|
using Emby.Naming.Audio;
|
||||||
|
using Emby.Naming.Common;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Resolve if file is extra for video.
|
/// Resolve if file is extra for video.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -2,12 +2,12 @@
|
|||||||
// Copyright (c) PlaceholderCompany. All rights reserved.
|
// Copyright (c) PlaceholderCompany. All rights reserved.
|
||||||
// </copyright>
|
// </copyright>
|
||||||
|
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using Jellyfin.Extensions;
|
|
||||||
|
|
||||||
namespace Emby.Naming.Video
|
namespace Emby.Naming.Video
|
||||||
{
|
{
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using Jellyfin.Extensions;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Object holding list of files paths with additional information.
|
/// Object holding list of files paths with additional information.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -1,12 +1,8 @@
|
|||||||
// <copyright file="FileStackRule.cs" company="PlaceholderCompany">
|
namespace Emby.Naming.Video;
|
||||||
// Copyright (c) PlaceholderCompany. All rights reserved.
|
|
||||||
// </copyright>
|
|
||||||
|
|
||||||
using System.Diagnostics.CodeAnalysis;
|
using System.Diagnostics.CodeAnalysis;
|
||||||
using System.Text.RegularExpressions;
|
using System.Text.RegularExpressions;
|
||||||
|
|
||||||
namespace Emby.Naming.Video;
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Regex based rule for file stacking (eg. disc1, disc2).
|
/// Regex based rule for file stacking (eg. disc1, disc2).
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -2,11 +2,11 @@
|
|||||||
// Copyright (c) PlaceholderCompany. All rights reserved.
|
// Copyright (c) PlaceholderCompany. All rights reserved.
|
||||||
// </copyright>
|
// </copyright>
|
||||||
|
|
||||||
using System;
|
|
||||||
using Emby.Naming.Common;
|
|
||||||
|
|
||||||
namespace Emby.Naming.Video
|
namespace Emby.Naming.Video
|
||||||
{
|
{
|
||||||
|
using System;
|
||||||
|
using Emby.Naming.Common;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Parse 3D format related flags.
|
/// Parse 3D format related flags.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -2,16 +2,16 @@
|
|||||||
// Copyright (c) PlaceholderCompany. All rights reserved.
|
// Copyright (c) PlaceholderCompany. All rights reserved.
|
||||||
// </copyright>
|
// </copyright>
|
||||||
|
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.IO;
|
|
||||||
using System.Linq;
|
|
||||||
using Emby.Naming.AudioBook;
|
|
||||||
using Emby.Naming.Common;
|
|
||||||
using MediaBrowser.Model.IO;
|
|
||||||
|
|
||||||
namespace Emby.Naming.Video
|
namespace Emby.Naming.Video
|
||||||
{
|
{
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.IO;
|
||||||
|
using System.Linq;
|
||||||
|
using Emby.Naming.AudioBook;
|
||||||
|
using Emby.Naming.Common;
|
||||||
|
using MediaBrowser.Model.IO;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Resolve <see cref="FileStack"/> from list of paths.
|
/// Resolve <see cref="FileStack"/> from list of paths.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -2,13 +2,13 @@
|
|||||||
// Copyright (c) PlaceholderCompany. All rights reserved.
|
// Copyright (c) PlaceholderCompany. All rights reserved.
|
||||||
// </copyright>
|
// </copyright>
|
||||||
|
|
||||||
using System;
|
|
||||||
using System.IO;
|
|
||||||
using Emby.Naming.Common;
|
|
||||||
using Jellyfin.Extensions;
|
|
||||||
|
|
||||||
namespace Emby.Naming.Video
|
namespace Emby.Naming.Video
|
||||||
{
|
{
|
||||||
|
using System;
|
||||||
|
using System.IO;
|
||||||
|
using Emby.Naming.Common;
|
||||||
|
using Jellyfin.Extensions;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Resolve if file is stub (.disc).
|
/// Resolve if file is stub (.disc).
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -2,11 +2,11 @@
|
|||||||
// Copyright (c) PlaceholderCompany. All rights reserved.
|
// Copyright (c) PlaceholderCompany. All rights reserved.
|
||||||
// </copyright>
|
// </copyright>
|
||||||
|
|
||||||
using System;
|
|
||||||
using MediaBrowser.Model.Entities;
|
|
||||||
|
|
||||||
namespace Emby.Naming.Video
|
namespace Emby.Naming.Video
|
||||||
{
|
{
|
||||||
|
using System;
|
||||||
|
using MediaBrowser.Model.Entities;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Represents a single video file.
|
/// Represents a single video file.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -2,12 +2,12 @@
|
|||||||
// Copyright (c) PlaceholderCompany. All rights reserved.
|
// Copyright (c) PlaceholderCompany. All rights reserved.
|
||||||
// </copyright>
|
// </copyright>
|
||||||
|
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using MediaBrowser.Model.Entities;
|
|
||||||
|
|
||||||
namespace Emby.Naming.Video
|
namespace Emby.Naming.Video
|
||||||
{
|
{
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using MediaBrowser.Model.Entities;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Represents a complete video, including all parts and subtitles.
|
/// Represents a complete video, including all parts and subtitles.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -2,18 +2,18 @@
|
|||||||
// Copyright (c) PlaceholderCompany. All rights reserved.
|
// Copyright (c) PlaceholderCompany. All rights reserved.
|
||||||
// </copyright>
|
// </copyright>
|
||||||
|
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Globalization;
|
|
||||||
using System.IO;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text.RegularExpressions;
|
|
||||||
using Emby.Naming.Common;
|
|
||||||
using Jellyfin.Extensions;
|
|
||||||
using MediaBrowser.Model.IO;
|
|
||||||
|
|
||||||
namespace Emby.Naming.Video
|
namespace Emby.Naming.Video
|
||||||
{
|
{
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Globalization;
|
||||||
|
using System.IO;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text.RegularExpressions;
|
||||||
|
using Emby.Naming.Common;
|
||||||
|
using Jellyfin.Extensions;
|
||||||
|
using MediaBrowser.Model.IO;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Resolves alternative versions and extras from list of video files.
|
/// Resolves alternative versions and extras from list of video files.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -2,14 +2,14 @@
|
|||||||
// Copyright (c) PlaceholderCompany. All rights reserved.
|
// Copyright (c) PlaceholderCompany. All rights reserved.
|
||||||
// </copyright>
|
// </copyright>
|
||||||
|
|
||||||
using System;
|
|
||||||
using System.Diagnostics.CodeAnalysis;
|
|
||||||
using System.IO;
|
|
||||||
using Emby.Naming.Common;
|
|
||||||
using Jellyfin.Extensions;
|
|
||||||
|
|
||||||
namespace Emby.Naming.Video
|
namespace Emby.Naming.Video
|
||||||
{
|
{
|
||||||
|
using System;
|
||||||
|
using System.Diagnostics.CodeAnalysis;
|
||||||
|
using System.IO;
|
||||||
|
using Emby.Naming.Common;
|
||||||
|
using Jellyfin.Extensions;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Resolves <see cref="VideoFileInfo"/> from file path.
|
/// Resolves <see cref="VideoFileInfo"/> from file path.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
Binary file not shown.
@@ -2,6 +2,8 @@
|
|||||||
// Copyright (c) PlaceholderCompany. All rights reserved.
|
// Copyright (c) PlaceholderCompany. All rights reserved.
|
||||||
// </copyright>
|
// </copyright>
|
||||||
|
|
||||||
|
namespace Emby.Photos;
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
@@ -20,8 +22,6 @@ using TagLib.IFD;
|
|||||||
using TagLib.IFD.Entries;
|
using TagLib.IFD.Entries;
|
||||||
using TagLib.IFD.Tags;
|
using TagLib.IFD.Tags;
|
||||||
|
|
||||||
namespace Emby.Photos;
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Metadata provider for photos.
|
/// Metadata provider for photos.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
Binary file not shown.
@@ -2,15 +2,15 @@
|
|||||||
// Copyright (c) PlaceholderCompany. All rights reserved.
|
// Copyright (c) PlaceholderCompany. All rights reserved.
|
||||||
// </copyright>
|
// </copyright>
|
||||||
|
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.IO;
|
|
||||||
using System.Linq;
|
|
||||||
using Jellyfin.Extensions;
|
|
||||||
using MediaBrowser.Common.Configuration;
|
|
||||||
|
|
||||||
namespace Emby.Server.Implementations.AppBase
|
namespace Emby.Server.Implementations.AppBase
|
||||||
{
|
{
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.IO;
|
||||||
|
using System.Linq;
|
||||||
|
using Jellyfin.Extensions;
|
||||||
|
using MediaBrowser.Common.Configuration;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Provides a base class to hold common application paths used by both the UI and Server.
|
/// Provides a base class to hold common application paths used by both the UI and Server.
|
||||||
/// This can be subclassed to add application-specific paths.
|
/// This can be subclassed to add application-specific paths.
|
||||||
|
|||||||
@@ -2,22 +2,22 @@
|
|||||||
// Copyright (c) PlaceholderCompany. All rights reserved.
|
// Copyright (c) PlaceholderCompany. All rights reserved.
|
||||||
// </copyright>
|
// </copyright>
|
||||||
|
|
||||||
using System;
|
|
||||||
using System.Collections.Concurrent;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Globalization;
|
|
||||||
using System.IO;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Threading;
|
|
||||||
using MediaBrowser.Common.Configuration;
|
|
||||||
using MediaBrowser.Common.Events;
|
|
||||||
using MediaBrowser.Common.Extensions;
|
|
||||||
using MediaBrowser.Model.Configuration;
|
|
||||||
using MediaBrowser.Model.Serialization;
|
|
||||||
using Microsoft.Extensions.Logging;
|
|
||||||
|
|
||||||
namespace Emby.Server.Implementations.AppBase
|
namespace Emby.Server.Implementations.AppBase
|
||||||
{
|
{
|
||||||
|
using System;
|
||||||
|
using System.Collections.Concurrent;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Globalization;
|
||||||
|
using System.IO;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Threading;
|
||||||
|
using MediaBrowser.Common.Configuration;
|
||||||
|
using MediaBrowser.Common.Events;
|
||||||
|
using MediaBrowser.Common.Extensions;
|
||||||
|
using MediaBrowser.Model.Configuration;
|
||||||
|
using MediaBrowser.Model.Serialization;
|
||||||
|
using Microsoft.Extensions.Logging;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Class BaseConfigurationManager.
|
/// Class BaseConfigurationManager.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -2,12 +2,12 @@
|
|||||||
// Copyright (c) PlaceholderCompany. All rights reserved.
|
// Copyright (c) PlaceholderCompany. All rights reserved.
|
||||||
// </copyright>
|
// </copyright>
|
||||||
|
|
||||||
using System;
|
|
||||||
using System.IO;
|
|
||||||
using MediaBrowser.Model.Serialization;
|
|
||||||
|
|
||||||
namespace Emby.Server.Implementations.AppBase
|
namespace Emby.Server.Implementations.AppBase
|
||||||
{
|
{
|
||||||
|
using System;
|
||||||
|
using System.IO;
|
||||||
|
using MediaBrowser.Model.Serialization;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Class ConfigurationHelper.
|
/// Class ConfigurationHelper.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -2,12 +2,12 @@
|
|||||||
// Copyright (c) PlaceholderCompany. All rights reserved.
|
// Copyright (c) PlaceholderCompany. All rights reserved.
|
||||||
// </copyright>
|
// </copyright>
|
||||||
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using MediaBrowser.Common.Configuration;
|
|
||||||
using MediaBrowser.Model.Branding;
|
|
||||||
|
|
||||||
namespace Emby.Server.Implementations.Branding
|
namespace Emby.Server.Implementations.Branding
|
||||||
{
|
{
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using MediaBrowser.Common.Configuration;
|
||||||
|
using MediaBrowser.Model.Branding;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// A configuration factory for <see cref="BrandingOptions"/>.
|
/// A configuration factory for <see cref="BrandingOptions"/>.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -2,6 +2,8 @@
|
|||||||
// Copyright (c) PlaceholderCompany. All rights reserved.
|
// Copyright (c) PlaceholderCompany. All rights reserved.
|
||||||
// </copyright>
|
// </copyright>
|
||||||
|
|
||||||
|
namespace Emby.Server.Implementations.Chapters;
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
@@ -23,8 +25,6 @@ using MediaBrowser.Model.IO;
|
|||||||
using MediaBrowser.Model.MediaInfo;
|
using MediaBrowser.Model.MediaInfo;
|
||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
|
|
||||||
namespace Emby.Server.Implementations.Chapters;
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The chapter manager.
|
/// The chapter manager.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -2,21 +2,21 @@
|
|||||||
// Copyright (c) PlaceholderCompany. All rights reserved.
|
// Copyright (c) PlaceholderCompany. All rights reserved.
|
||||||
// </copyright>
|
// </copyright>
|
||||||
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using Emby.Server.Implementations.Images;
|
|
||||||
using MediaBrowser.Common.Configuration;
|
|
||||||
using MediaBrowser.Controller.Drawing;
|
|
||||||
using MediaBrowser.Controller.Entities;
|
|
||||||
using MediaBrowser.Controller.Entities.Audio;
|
|
||||||
using MediaBrowser.Controller.Entities.Movies;
|
|
||||||
using MediaBrowser.Controller.Entities.TV;
|
|
||||||
using MediaBrowser.Controller.Providers;
|
|
||||||
using MediaBrowser.Model.Entities;
|
|
||||||
using MediaBrowser.Model.IO;
|
|
||||||
|
|
||||||
namespace Emby.Server.Implementations.Collections
|
namespace Emby.Server.Implementations.Collections
|
||||||
{
|
{
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using Emby.Server.Implementations.Images;
|
||||||
|
using MediaBrowser.Common.Configuration;
|
||||||
|
using MediaBrowser.Controller.Drawing;
|
||||||
|
using MediaBrowser.Controller.Entities;
|
||||||
|
using MediaBrowser.Controller.Entities.Audio;
|
||||||
|
using MediaBrowser.Controller.Entities.Movies;
|
||||||
|
using MediaBrowser.Controller.Entities.TV;
|
||||||
|
using MediaBrowser.Controller.Providers;
|
||||||
|
using MediaBrowser.Model.Entities;
|
||||||
|
using MediaBrowser.Model.IO;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// A collection image provider.
|
/// A collection image provider.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -2,27 +2,27 @@
|
|||||||
// Copyright (c) PlaceholderCompany. All rights reserved.
|
// Copyright (c) PlaceholderCompany. All rights reserved.
|
||||||
// </copyright>
|
// </copyright>
|
||||||
|
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.IO;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Threading;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
using Jellyfin.Database.Implementations.Entities;
|
|
||||||
using MediaBrowser.Common.Configuration;
|
|
||||||
using MediaBrowser.Controller.Collections;
|
|
||||||
using MediaBrowser.Controller.Entities;
|
|
||||||
using MediaBrowser.Controller.Entities.Movies;
|
|
||||||
using MediaBrowser.Controller.Library;
|
|
||||||
using MediaBrowser.Controller.Providers;
|
|
||||||
using MediaBrowser.Model.Configuration;
|
|
||||||
using MediaBrowser.Model.Entities;
|
|
||||||
using MediaBrowser.Model.Globalization;
|
|
||||||
using MediaBrowser.Model.IO;
|
|
||||||
using Microsoft.Extensions.Logging;
|
|
||||||
|
|
||||||
namespace Emby.Server.Implementations.Collections
|
namespace Emby.Server.Implementations.Collections
|
||||||
{
|
{
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.IO;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Threading;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using Jellyfin.Database.Implementations.Entities;
|
||||||
|
using MediaBrowser.Common.Configuration;
|
||||||
|
using MediaBrowser.Controller.Collections;
|
||||||
|
using MediaBrowser.Controller.Entities;
|
||||||
|
using MediaBrowser.Controller.Entities.Movies;
|
||||||
|
using MediaBrowser.Controller.Library;
|
||||||
|
using MediaBrowser.Controller.Providers;
|
||||||
|
using MediaBrowser.Model.Configuration;
|
||||||
|
using MediaBrowser.Model.Entities;
|
||||||
|
using MediaBrowser.Model.Globalization;
|
||||||
|
using MediaBrowser.Model.IO;
|
||||||
|
using Microsoft.Extensions.Logging;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The collection manager.
|
/// The collection manager.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -2,20 +2,20 @@
|
|||||||
// Copyright (c) PlaceholderCompany. All rights reserved.
|
// Copyright (c) PlaceholderCompany. All rights reserved.
|
||||||
// </copyright>
|
// </copyright>
|
||||||
|
|
||||||
using System;
|
|
||||||
using System.Globalization;
|
|
||||||
using System.IO;
|
|
||||||
using Emby.Server.Implementations.AppBase;
|
|
||||||
using Jellyfin.Data.Events;
|
|
||||||
using MediaBrowser.Common.Configuration;
|
|
||||||
using MediaBrowser.Controller;
|
|
||||||
using MediaBrowser.Controller.Configuration;
|
|
||||||
using MediaBrowser.Model.Configuration;
|
|
||||||
using MediaBrowser.Model.Serialization;
|
|
||||||
using Microsoft.Extensions.Logging;
|
|
||||||
|
|
||||||
namespace Emby.Server.Implementations.Configuration
|
namespace Emby.Server.Implementations.Configuration
|
||||||
{
|
{
|
||||||
|
using System;
|
||||||
|
using System.Globalization;
|
||||||
|
using System.IO;
|
||||||
|
using Emby.Server.Implementations.AppBase;
|
||||||
|
using Jellyfin.Data.Events;
|
||||||
|
using MediaBrowser.Common.Configuration;
|
||||||
|
using MediaBrowser.Controller;
|
||||||
|
using MediaBrowser.Controller.Configuration;
|
||||||
|
using MediaBrowser.Model.Configuration;
|
||||||
|
using MediaBrowser.Model.Serialization;
|
||||||
|
using Microsoft.Extensions.Logging;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Class ServerConfigurationManager.
|
/// Class ServerConfigurationManager.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -1,12 +1,8 @@
|
|||||||
// <copyright file="ConfigurationOptions.cs" company="PlaceholderCompany">
|
|
||||||
// Copyright (c) PlaceholderCompany. All rights reserved.
|
|
||||||
// </copyright>
|
|
||||||
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using static MediaBrowser.Controller.Extensions.ConfigurationExtensions;
|
|
||||||
|
|
||||||
namespace Emby.Server.Implementations
|
namespace Emby.Server.Implementations
|
||||||
{
|
{
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using static MediaBrowser.Controller.Extensions.ConfigurationExtensions;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Static class containing the default configuration options for the web server.
|
/// Static class containing the default configuration options for the web server.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -2,15 +2,15 @@
|
|||||||
// Copyright (c) PlaceholderCompany. All rights reserved.
|
// Copyright (c) PlaceholderCompany. All rights reserved.
|
||||||
// </copyright>
|
// </copyright>
|
||||||
|
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Globalization;
|
|
||||||
using System.Security.Cryptography;
|
|
||||||
using MediaBrowser.Model.Cryptography;
|
|
||||||
using static MediaBrowser.Model.Cryptography.Constants;
|
|
||||||
|
|
||||||
namespace Emby.Server.Implementations.Cryptography
|
namespace Emby.Server.Implementations.Cryptography
|
||||||
{
|
{
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Globalization;
|
||||||
|
using System.Security.Cryptography;
|
||||||
|
using MediaBrowser.Model.Cryptography;
|
||||||
|
using static MediaBrowser.Model.Cryptography.Constants;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Class providing abstractions over cryptographic functions.
|
/// Class providing abstractions over cryptographic functions.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -2,6 +2,8 @@
|
|||||||
// Copyright (c) PlaceholderCompany. All rights reserved.
|
// Copyright (c) PlaceholderCompany. All rights reserved.
|
||||||
// </copyright>
|
// </copyright>
|
||||||
|
|
||||||
|
namespace Emby.Server.Implementations.Data;
|
||||||
|
|
||||||
using System.Collections.Frozen;
|
using System.Collections.Frozen;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Threading.Channels;
|
using System.Threading.Channels;
|
||||||
@@ -15,8 +17,6 @@ using MediaBrowser.Controller.LiveTv;
|
|||||||
using MediaBrowser.Controller.Persistence;
|
using MediaBrowser.Controller.Persistence;
|
||||||
using MediaBrowser.Controller.Playlists;
|
using MediaBrowser.Controller.Playlists;
|
||||||
|
|
||||||
namespace Emby.Server.Implementations.Data;
|
|
||||||
|
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
public class ItemTypeLookup : IItemTypeLookup
|
public class ItemTypeLookup : IItemTypeLookup
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,13 +1,9 @@
|
|||||||
// <copyright file="TypeMapper.cs" company="PlaceholderCompany">
|
|
||||||
// Copyright (c) PlaceholderCompany. All rights reserved.
|
|
||||||
// </copyright>
|
|
||||||
|
|
||||||
using System;
|
|
||||||
using System.Collections.Concurrent;
|
|
||||||
using System.Linq;
|
|
||||||
|
|
||||||
namespace Emby.Server.Implementations.Data
|
namespace Emby.Server.Implementations.Data
|
||||||
{
|
{
|
||||||
|
using System;
|
||||||
|
using System.Collections.Concurrent;
|
||||||
|
using System.Linq;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Class TypeMapper.
|
/// Class TypeMapper.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -2,6 +2,8 @@
|
|||||||
// Copyright (c) PlaceholderCompany. All rights reserved.
|
// Copyright (c) PlaceholderCompany. All rights reserved.
|
||||||
// </copyright>
|
// </copyright>
|
||||||
|
|
||||||
|
namespace Emby.Server.Implementations.EntryPoints;
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Concurrent;
|
using System.Collections.Concurrent;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
@@ -24,8 +26,6 @@ using MediaBrowser.Model.Session;
|
|||||||
using Microsoft.Extensions.Hosting;
|
using Microsoft.Extensions.Hosting;
|
||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
|
|
||||||
namespace Emby.Server.Implementations.EntryPoints;
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// A <see cref="IHostedService"/> responsible for notifying users when libraries are updated.
|
/// A <see cref="IHostedService"/> responsible for notifying users when libraries are updated.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -2,20 +2,20 @@
|
|||||||
// Copyright (c) PlaceholderCompany. All rights reserved.
|
// Copyright (c) PlaceholderCompany. All rights reserved.
|
||||||
// </copyright>
|
// </copyright>
|
||||||
|
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Threading;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
using MediaBrowser.Controller.Entities;
|
|
||||||
using MediaBrowser.Controller.Library;
|
|
||||||
using MediaBrowser.Controller.Session;
|
|
||||||
using MediaBrowser.Model.Entities;
|
|
||||||
using MediaBrowser.Model.Session;
|
|
||||||
using Microsoft.Extensions.Hosting;
|
|
||||||
|
|
||||||
namespace Emby.Server.Implementations.EntryPoints
|
namespace Emby.Server.Implementations.EntryPoints
|
||||||
{
|
{
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Threading;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using MediaBrowser.Controller.Entities;
|
||||||
|
using MediaBrowser.Controller.Library;
|
||||||
|
using MediaBrowser.Controller.Session;
|
||||||
|
using MediaBrowser.Model.Entities;
|
||||||
|
using MediaBrowser.Model.Session;
|
||||||
|
using Microsoft.Extensions.Hosting;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// <see cref="IHostedService"/> responsible for notifying users when associated item data is updated.
|
/// <see cref="IHostedService"/> responsible for notifying users when associated item data is updated.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -2,24 +2,24 @@
|
|||||||
// Copyright (c) PlaceholderCompany. All rights reserved.
|
// Copyright (c) PlaceholderCompany. All rights reserved.
|
||||||
// </copyright>
|
// </copyright>
|
||||||
|
|
||||||
using System;
|
|
||||||
using System.Buffers;
|
|
||||||
using System.IO.Pipelines;
|
|
||||||
using System.Net;
|
|
||||||
using System.Net.WebSockets;
|
|
||||||
using System.Text;
|
|
||||||
using System.Text.Json;
|
|
||||||
using System.Threading;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
using Jellyfin.Extensions.Json;
|
|
||||||
using MediaBrowser.Controller.Net;
|
|
||||||
using MediaBrowser.Controller.Net.WebSocketMessages;
|
|
||||||
using MediaBrowser.Controller.Net.WebSocketMessages.Outbound;
|
|
||||||
using MediaBrowser.Model.Session;
|
|
||||||
using Microsoft.Extensions.Logging;
|
|
||||||
|
|
||||||
namespace Emby.Server.Implementations.HttpServer
|
namespace Emby.Server.Implementations.HttpServer
|
||||||
{
|
{
|
||||||
|
using System;
|
||||||
|
using System.Buffers;
|
||||||
|
using System.IO.Pipelines;
|
||||||
|
using System.Net;
|
||||||
|
using System.Net.WebSockets;
|
||||||
|
using System.Text;
|
||||||
|
using System.Text.Json;
|
||||||
|
using System.Threading;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using Jellyfin.Extensions.Json;
|
||||||
|
using MediaBrowser.Controller.Net;
|
||||||
|
using MediaBrowser.Controller.Net.WebSocketMessages;
|
||||||
|
using MediaBrowser.Controller.Net.WebSocketMessages.Outbound;
|
||||||
|
using MediaBrowser.Model.Session;
|
||||||
|
using Microsoft.Extensions.Logging;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Class WebSocketConnection.
|
/// Class WebSocketConnection.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -2,22 +2,22 @@
|
|||||||
// Copyright (c) PlaceholderCompany. All rights reserved.
|
// Copyright (c) PlaceholderCompany. All rights reserved.
|
||||||
// </copyright>
|
// </copyright>
|
||||||
|
|
||||||
using System;
|
|
||||||
using System.Collections.Concurrent;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.IO;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
using Emby.Server.Implementations.Library;
|
|
||||||
using MediaBrowser.Controller.Configuration;
|
|
||||||
using MediaBrowser.Controller.Entities;
|
|
||||||
using MediaBrowser.Controller.Library;
|
|
||||||
using MediaBrowser.Model.IO;
|
|
||||||
using Microsoft.Extensions.Hosting;
|
|
||||||
using Microsoft.Extensions.Logging;
|
|
||||||
|
|
||||||
namespace Emby.Server.Implementations.IO
|
namespace Emby.Server.Implementations.IO
|
||||||
{
|
{
|
||||||
|
using System;
|
||||||
|
using System.Collections.Concurrent;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.IO;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using Emby.Server.Implementations.Library;
|
||||||
|
using MediaBrowser.Controller.Configuration;
|
||||||
|
using MediaBrowser.Controller.Entities;
|
||||||
|
using MediaBrowser.Controller.Library;
|
||||||
|
using MediaBrowser.Model.IO;
|
||||||
|
using Microsoft.Extensions.Hosting;
|
||||||
|
using Microsoft.Extensions.Logging;
|
||||||
|
|
||||||
/// <inheritdoc cref="ILibraryMonitor" />
|
/// <inheritdoc cref="ILibraryMonitor" />
|
||||||
public sealed class LibraryMonitor : ILibraryMonitor, IDisposable
|
public sealed class LibraryMonitor : ILibraryMonitor, IDisposable
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -2,20 +2,20 @@
|
|||||||
// Copyright (c) PlaceholderCompany. All rights reserved.
|
// Copyright (c) PlaceholderCompany. All rights reserved.
|
||||||
// </copyright>
|
// </copyright>
|
||||||
|
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Globalization;
|
|
||||||
using System.IO;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Security;
|
|
||||||
using Jellyfin.Extensions;
|
|
||||||
using MediaBrowser.Common.Configuration;
|
|
||||||
using MediaBrowser.Controller.IO;
|
|
||||||
using MediaBrowser.Model.IO;
|
|
||||||
using Microsoft.Extensions.Logging;
|
|
||||||
|
|
||||||
namespace Emby.Server.Implementations.IO
|
namespace Emby.Server.Implementations.IO
|
||||||
{
|
{
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Globalization;
|
||||||
|
using System.IO;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Security;
|
||||||
|
using Jellyfin.Extensions;
|
||||||
|
using MediaBrowser.Common.Configuration;
|
||||||
|
using MediaBrowser.Controller.IO;
|
||||||
|
using MediaBrowser.Model.IO;
|
||||||
|
using Microsoft.Extensions.Logging;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Class ManagedFileSystem.
|
/// Class ManagedFileSystem.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -1,7 +1,3 @@
|
|||||||
// <copyright file="FolderImageProvider.cs" company="PlaceholderCompany">
|
|
||||||
// Copyright (c) PlaceholderCompany. All rights reserved.
|
|
||||||
// </copyright>
|
|
||||||
|
|
||||||
#pragma warning disable CS1591
|
#pragma warning disable CS1591
|
||||||
|
|
||||||
using MediaBrowser.Common.Configuration;
|
using MediaBrowser.Common.Configuration;
|
||||||
|
|||||||
@@ -1,7 +1,3 @@
|
|||||||
// <copyright file="PhotoAlbumImageProvider.cs" company="PlaceholderCompany">
|
|
||||||
// Copyright (c) PlaceholderCompany. All rights reserved.
|
|
||||||
// </copyright>
|
|
||||||
|
|
||||||
#pragma warning disable CS1591
|
#pragma warning disable CS1591
|
||||||
|
|
||||||
using MediaBrowser.Common.Configuration;
|
using MediaBrowser.Common.Configuration;
|
||||||
|
|||||||
@@ -2,17 +2,17 @@
|
|||||||
// Copyright (c) PlaceholderCompany. All rights reserved.
|
// Copyright (c) PlaceholderCompany. All rights reserved.
|
||||||
// </copyright>
|
// </copyright>
|
||||||
|
|
||||||
using System;
|
|
||||||
using System.IO;
|
|
||||||
using Emby.Naming.Audio;
|
|
||||||
using Emby.Naming.Common;
|
|
||||||
using MediaBrowser.Controller;
|
|
||||||
using MediaBrowser.Controller.Entities;
|
|
||||||
using MediaBrowser.Controller.Resolvers;
|
|
||||||
using MediaBrowser.Model.IO;
|
|
||||||
|
|
||||||
namespace Emby.Server.Implementations.Library
|
namespace Emby.Server.Implementations.Library
|
||||||
{
|
{
|
||||||
|
using System;
|
||||||
|
using System.IO;
|
||||||
|
using Emby.Naming.Audio;
|
||||||
|
using Emby.Naming.Common;
|
||||||
|
using MediaBrowser.Controller;
|
||||||
|
using MediaBrowser.Controller.Entities;
|
||||||
|
using MediaBrowser.Controller.Resolvers;
|
||||||
|
using MediaBrowser.Model.IO;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Provides the core resolver ignore rules.
|
/// Provides the core resolver ignore rules.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -2,6 +2,8 @@
|
|||||||
// Copyright (c) PlaceholderCompany. All rights reserved.
|
// Copyright (c) PlaceholderCompany. All rights reserved.
|
||||||
// </copyright>
|
// </copyright>
|
||||||
|
|
||||||
|
namespace Emby.Server.Implementations.Library;
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Text.RegularExpressions;
|
using System.Text.RegularExpressions;
|
||||||
@@ -10,8 +12,6 @@ using MediaBrowser.Controller.IO;
|
|||||||
using MediaBrowser.Controller.Resolvers;
|
using MediaBrowser.Controller.Resolvers;
|
||||||
using MediaBrowser.Model.IO;
|
using MediaBrowser.Model.IO;
|
||||||
|
|
||||||
namespace Emby.Server.Implementations.Library;
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Resolver rule class for ignoring files via .ignore.
|
/// Resolver rule class for ignoring files via .ignore.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -2,6 +2,8 @@
|
|||||||
// Copyright (c) PlaceholderCompany. All rights reserved.
|
// Copyright (c) PlaceholderCompany. All rights reserved.
|
||||||
// </copyright>
|
// </copyright>
|
||||||
|
|
||||||
|
namespace Emby.Server.Implementations.Library;
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
@@ -14,8 +16,6 @@ using MediaBrowser.Controller.MediaSegments;
|
|||||||
using MediaBrowser.Controller.Trickplay;
|
using MediaBrowser.Controller.Trickplay;
|
||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
|
|
||||||
namespace Emby.Server.Implementations.Library;
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// IExternalDataManager implementation.
|
/// IExternalDataManager implementation.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -2,11 +2,11 @@
|
|||||||
// Copyright (c) PlaceholderCompany. All rights reserved.
|
// Copyright (c) PlaceholderCompany. All rights reserved.
|
||||||
// </copyright>
|
// </copyright>
|
||||||
|
|
||||||
using System;
|
|
||||||
using DotNet.Globbing;
|
|
||||||
|
|
||||||
namespace Emby.Server.Implementations.Library
|
namespace Emby.Server.Implementations.Library
|
||||||
{
|
{
|
||||||
|
using System;
|
||||||
|
using DotNet.Globbing;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Glob patterns for files to ignore.
|
/// Glob patterns for files to ignore.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -2,6 +2,8 @@
|
|||||||
// Copyright (c) PlaceholderCompany. All rights reserved.
|
// Copyright (c) PlaceholderCompany. All rights reserved.
|
||||||
// </copyright>
|
// </copyright>
|
||||||
|
|
||||||
|
namespace Emby.Server.Implementations.Library;
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
@@ -10,8 +12,6 @@ using Jellyfin.MediaEncoding.Keyframes;
|
|||||||
using MediaBrowser.Controller.IO;
|
using MediaBrowser.Controller.IO;
|
||||||
using MediaBrowser.Controller.Persistence;
|
using MediaBrowser.Controller.Persistence;
|
||||||
|
|
||||||
namespace Emby.Server.Implementations.Library;
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Manager for Keyframe data.
|
/// Manager for Keyframe data.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -2,13 +2,13 @@
|
|||||||
// Copyright (c) PlaceholderCompany. All rights reserved.
|
// Copyright (c) PlaceholderCompany. All rights reserved.
|
||||||
// </copyright>
|
// </copyright>
|
||||||
|
|
||||||
using System;
|
|
||||||
using System.Diagnostics.CodeAnalysis;
|
|
||||||
using System.IO;
|
|
||||||
using MediaBrowser.Common.Providers;
|
|
||||||
|
|
||||||
namespace Emby.Server.Implementations.Library
|
namespace Emby.Server.Implementations.Library
|
||||||
{
|
{
|
||||||
|
using System;
|
||||||
|
using System.Diagnostics.CodeAnalysis;
|
||||||
|
using System.IO;
|
||||||
|
using MediaBrowser.Common.Providers;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Class providing extension methods for working with paths.
|
/// Class providing extension methods for working with paths.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -2,6 +2,8 @@
|
|||||||
// Copyright (c) PlaceholderCompany. All rights reserved.
|
// Copyright (c) PlaceholderCompany. All rights reserved.
|
||||||
// </copyright>
|
// </copyright>
|
||||||
|
|
||||||
|
namespace Emby.Server.Implementations.Library;
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Globalization;
|
using System.Globalization;
|
||||||
@@ -11,8 +13,6 @@ using MediaBrowser.Controller.Configuration;
|
|||||||
using MediaBrowser.Controller.Entities;
|
using MediaBrowser.Controller.Entities;
|
||||||
using MediaBrowser.Controller.IO;
|
using MediaBrowser.Controller.IO;
|
||||||
|
|
||||||
namespace Emby.Server.Implementations.Library;
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// IPathManager implementation.
|
/// IPathManager implementation.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -2,16 +2,16 @@
|
|||||||
// Copyright (c) PlaceholderCompany. All rights reserved.
|
// Copyright (c) PlaceholderCompany. All rights reserved.
|
||||||
// </copyright>
|
// </copyright>
|
||||||
|
|
||||||
using System;
|
|
||||||
using System.IO;
|
|
||||||
using System.Linq;
|
|
||||||
using MediaBrowser.Controller.Entities;
|
|
||||||
using MediaBrowser.Controller.Library;
|
|
||||||
using MediaBrowser.Controller.Providers;
|
|
||||||
using MediaBrowser.Model.IO;
|
|
||||||
|
|
||||||
namespace Emby.Server.Implementations.Library
|
namespace Emby.Server.Implementations.Library
|
||||||
{
|
{
|
||||||
|
using System;
|
||||||
|
using System.IO;
|
||||||
|
using System.Linq;
|
||||||
|
using MediaBrowser.Controller.Entities;
|
||||||
|
using MediaBrowser.Controller.Library;
|
||||||
|
using MediaBrowser.Controller.Providers;
|
||||||
|
using MediaBrowser.Model.IO;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Class ResolverHelper.
|
/// Class ResolverHelper.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -2,26 +2,26 @@
|
|||||||
// Copyright (c) PlaceholderCompany. All rights reserved.
|
// Copyright (c) PlaceholderCompany. All rights reserved.
|
||||||
// </copyright>
|
// </copyright>
|
||||||
|
|
||||||
#nullable disable
|
|
||||||
|
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.IO;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Threading;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
using Emby.Naming.Audio;
|
|
||||||
using Emby.Naming.Common;
|
|
||||||
using Jellyfin.Data.Enums;
|
|
||||||
using MediaBrowser.Controller.Entities.Audio;
|
|
||||||
using MediaBrowser.Controller.Library;
|
|
||||||
using MediaBrowser.Controller.Providers;
|
|
||||||
using MediaBrowser.Controller.Resolvers;
|
|
||||||
using MediaBrowser.Model.IO;
|
|
||||||
using Microsoft.Extensions.Logging;
|
|
||||||
|
|
||||||
namespace Emby.Server.Implementations.Library.Resolvers.Audio
|
namespace Emby.Server.Implementations.Library.Resolvers.Audio
|
||||||
{
|
{
|
||||||
|
#nullable disable
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.IO;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Threading;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using Emby.Naming.Audio;
|
||||||
|
using Emby.Naming.Common;
|
||||||
|
using Jellyfin.Data.Enums;
|
||||||
|
using MediaBrowser.Controller.Entities.Audio;
|
||||||
|
using MediaBrowser.Controller.Library;
|
||||||
|
using MediaBrowser.Controller.Providers;
|
||||||
|
using MediaBrowser.Controller.Resolvers;
|
||||||
|
using MediaBrowser.Model.IO;
|
||||||
|
using Microsoft.Extensions.Logging;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The music album resolver.
|
/// The music album resolver.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -2,23 +2,23 @@
|
|||||||
// Copyright (c) PlaceholderCompany. All rights reserved.
|
// Copyright (c) PlaceholderCompany. All rights reserved.
|
||||||
// </copyright>
|
// </copyright>
|
||||||
|
|
||||||
#nullable disable
|
|
||||||
|
|
||||||
using System;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
using Emby.Naming.Audio;
|
|
||||||
using Emby.Naming.Common;
|
|
||||||
using Jellyfin.Data.Enums;
|
|
||||||
using MediaBrowser.Controller.Entities.Audio;
|
|
||||||
using MediaBrowser.Controller.Library;
|
|
||||||
using MediaBrowser.Controller.Providers;
|
|
||||||
using MediaBrowser.Controller.Resolvers;
|
|
||||||
using MediaBrowser.Model.Entities;
|
|
||||||
using Microsoft.Extensions.Logging;
|
|
||||||
|
|
||||||
namespace Emby.Server.Implementations.Library.Resolvers.Audio
|
namespace Emby.Server.Implementations.Library.Resolvers.Audio
|
||||||
{
|
{
|
||||||
|
#nullable disable
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using Emby.Naming.Audio;
|
||||||
|
using Emby.Naming.Common;
|
||||||
|
using Jellyfin.Data.Enums;
|
||||||
|
using MediaBrowser.Controller.Entities.Audio;
|
||||||
|
using MediaBrowser.Controller.Library;
|
||||||
|
using MediaBrowser.Controller.Providers;
|
||||||
|
using MediaBrowser.Controller.Resolvers;
|
||||||
|
using MediaBrowser.Model.Entities;
|
||||||
|
using Microsoft.Extensions.Logging;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The music artist resolver.
|
/// The music artist resolver.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -2,21 +2,21 @@
|
|||||||
// Copyright (c) PlaceholderCompany. All rights reserved.
|
// Copyright (c) PlaceholderCompany. All rights reserved.
|
||||||
// </copyright>
|
// </copyright>
|
||||||
|
|
||||||
using System;
|
|
||||||
using System.Diagnostics.CodeAnalysis;
|
|
||||||
using System.IO;
|
|
||||||
using Emby.Naming.Common;
|
|
||||||
using Emby.Naming.Video;
|
|
||||||
using MediaBrowser.Controller.Entities;
|
|
||||||
using MediaBrowser.Controller.Library;
|
|
||||||
using MediaBrowser.Controller.Providers;
|
|
||||||
using MediaBrowser.Controller.Resolvers;
|
|
||||||
using MediaBrowser.Model.Entities;
|
|
||||||
using Microsoft.Extensions.Logging;
|
|
||||||
using static Emby.Naming.Video.ExtraRuleResolver;
|
|
||||||
|
|
||||||
namespace Emby.Server.Implementations.Library.Resolvers
|
namespace Emby.Server.Implementations.Library.Resolvers
|
||||||
{
|
{
|
||||||
|
using System;
|
||||||
|
using System.Diagnostics.CodeAnalysis;
|
||||||
|
using System.IO;
|
||||||
|
using Emby.Naming.Common;
|
||||||
|
using Emby.Naming.Video;
|
||||||
|
using MediaBrowser.Controller.Entities;
|
||||||
|
using MediaBrowser.Controller.Library;
|
||||||
|
using MediaBrowser.Controller.Providers;
|
||||||
|
using MediaBrowser.Controller.Resolvers;
|
||||||
|
using MediaBrowser.Model.Entities;
|
||||||
|
using Microsoft.Extensions.Logging;
|
||||||
|
using static Emby.Naming.Video.ExtraRuleResolver;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Resolves a Path into a Video or Video subclass.
|
/// Resolves a Path into a Video or Video subclass.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -1,15 +1,11 @@
|
|||||||
// <copyright file="FolderResolver.cs" company="PlaceholderCompany">
|
|
||||||
// Copyright (c) PlaceholderCompany. All rights reserved.
|
|
||||||
// </copyright>
|
|
||||||
|
|
||||||
#nullable disable
|
|
||||||
|
|
||||||
using MediaBrowser.Controller.Entities;
|
|
||||||
using MediaBrowser.Controller.Library;
|
|
||||||
using MediaBrowser.Controller.Resolvers;
|
|
||||||
|
|
||||||
namespace Emby.Server.Implementations.Library.Resolvers
|
namespace Emby.Server.Implementations.Library.Resolvers
|
||||||
{
|
{
|
||||||
|
#nullable disable
|
||||||
|
|
||||||
|
using MediaBrowser.Controller.Entities;
|
||||||
|
using MediaBrowser.Controller.Library;
|
||||||
|
using MediaBrowser.Controller.Resolvers;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Class FolderResolver.
|
/// Class FolderResolver.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -1,15 +1,11 @@
|
|||||||
// <copyright file="GenericFolderResolver.cs" company="PlaceholderCompany">
|
|
||||||
// Copyright (c) PlaceholderCompany. All rights reserved.
|
|
||||||
// </copyright>
|
|
||||||
|
|
||||||
#nullable disable
|
|
||||||
|
|
||||||
using MediaBrowser.Controller.Entities;
|
|
||||||
using MediaBrowser.Controller.Library;
|
|
||||||
using MediaBrowser.Controller.Resolvers;
|
|
||||||
|
|
||||||
namespace Emby.Server.Implementations.Library.Resolvers
|
namespace Emby.Server.Implementations.Library.Resolvers
|
||||||
{
|
{
|
||||||
|
#nullable disable
|
||||||
|
|
||||||
|
using MediaBrowser.Controller.Entities;
|
||||||
|
using MediaBrowser.Controller.Library;
|
||||||
|
using MediaBrowser.Controller.Resolvers;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Class FolderResolver.
|
/// Class FolderResolver.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -1,16 +1,12 @@
|
|||||||
// <copyright file="GenericVideoResolver.cs" company="PlaceholderCompany">
|
|
||||||
// Copyright (c) PlaceholderCompany. All rights reserved.
|
|
||||||
// </copyright>
|
|
||||||
|
|
||||||
#nullable disable
|
|
||||||
|
|
||||||
using Emby.Naming.Common;
|
|
||||||
using MediaBrowser.Controller.Entities;
|
|
||||||
using MediaBrowser.Controller.Providers;
|
|
||||||
using Microsoft.Extensions.Logging;
|
|
||||||
|
|
||||||
namespace Emby.Server.Implementations.Library.Resolvers
|
namespace Emby.Server.Implementations.Library.Resolvers
|
||||||
{
|
{
|
||||||
|
#nullable disable
|
||||||
|
|
||||||
|
using Emby.Naming.Common;
|
||||||
|
using MediaBrowser.Controller.Entities;
|
||||||
|
using MediaBrowser.Controller.Providers;
|
||||||
|
using Microsoft.Extensions.Logging;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Resolves a Path into an instance of the <see cref="Video"/> class.
|
/// Resolves a Path into an instance of the <see cref="Video"/> class.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -2,17 +2,17 @@
|
|||||||
// Copyright (c) PlaceholderCompany. All rights reserved.
|
// Copyright (c) PlaceholderCompany. All rights reserved.
|
||||||
// </copyright>
|
// </copyright>
|
||||||
|
|
||||||
#nullable disable
|
|
||||||
|
|
||||||
using System;
|
|
||||||
using System.IO;
|
|
||||||
using MediaBrowser.Controller.Entities;
|
|
||||||
using MediaBrowser.Controller.Entities.Movies;
|
|
||||||
using MediaBrowser.Controller.Library;
|
|
||||||
using MediaBrowser.Model.Entities;
|
|
||||||
|
|
||||||
namespace Emby.Server.Implementations.Library.Resolvers.Movies
|
namespace Emby.Server.Implementations.Library.Resolvers.Movies
|
||||||
{
|
{
|
||||||
|
#nullable disable
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.IO;
|
||||||
|
using MediaBrowser.Controller.Entities;
|
||||||
|
using MediaBrowser.Controller.Entities.Movies;
|
||||||
|
using MediaBrowser.Controller.Library;
|
||||||
|
using MediaBrowser.Model.Entities;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Class BoxSetResolver.
|
/// Class BoxSetResolver.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -2,30 +2,30 @@
|
|||||||
// Copyright (c) PlaceholderCompany. All rights reserved.
|
// Copyright (c) PlaceholderCompany. All rights reserved.
|
||||||
// </copyright>
|
// </copyright>
|
||||||
|
|
||||||
#nullable disable
|
|
||||||
|
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.IO;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text.RegularExpressions;
|
|
||||||
using Emby.Naming.Common;
|
|
||||||
using Emby.Naming.Video;
|
|
||||||
using Jellyfin.Data.Enums;
|
|
||||||
using Jellyfin.Extensions;
|
|
||||||
using MediaBrowser.Controller.Drawing;
|
|
||||||
using MediaBrowser.Controller.Entities;
|
|
||||||
using MediaBrowser.Controller.Entities.Movies;
|
|
||||||
using MediaBrowser.Controller.Entities.TV;
|
|
||||||
using MediaBrowser.Controller.Library;
|
|
||||||
using MediaBrowser.Controller.Providers;
|
|
||||||
using MediaBrowser.Controller.Resolvers;
|
|
||||||
using MediaBrowser.Model.Entities;
|
|
||||||
using MediaBrowser.Model.IO;
|
|
||||||
using Microsoft.Extensions.Logging;
|
|
||||||
|
|
||||||
namespace Emby.Server.Implementations.Library.Resolvers.Movies
|
namespace Emby.Server.Implementations.Library.Resolvers.Movies
|
||||||
{
|
{
|
||||||
|
#nullable disable
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.IO;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text.RegularExpressions;
|
||||||
|
using Emby.Naming.Common;
|
||||||
|
using Emby.Naming.Video;
|
||||||
|
using Jellyfin.Data.Enums;
|
||||||
|
using Jellyfin.Extensions;
|
||||||
|
using MediaBrowser.Controller.Drawing;
|
||||||
|
using MediaBrowser.Controller.Entities;
|
||||||
|
using MediaBrowser.Controller.Entities.Movies;
|
||||||
|
using MediaBrowser.Controller.Entities.TV;
|
||||||
|
using MediaBrowser.Controller.Library;
|
||||||
|
using MediaBrowser.Controller.Providers;
|
||||||
|
using MediaBrowser.Controller.Resolvers;
|
||||||
|
using MediaBrowser.Model.Entities;
|
||||||
|
using MediaBrowser.Model.IO;
|
||||||
|
using Microsoft.Extensions.Logging;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Class MovieResolver.
|
/// Class MovieResolver.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -2,19 +2,19 @@
|
|||||||
// Copyright (c) PlaceholderCompany. All rights reserved.
|
// Copyright (c) PlaceholderCompany. All rights reserved.
|
||||||
// </copyright>
|
// </copyright>
|
||||||
|
|
||||||
#nullable disable
|
|
||||||
|
|
||||||
using System;
|
|
||||||
using Emby.Naming.Common;
|
|
||||||
using Jellyfin.Data.Enums;
|
|
||||||
using MediaBrowser.Controller.Drawing;
|
|
||||||
using MediaBrowser.Controller.Entities;
|
|
||||||
using MediaBrowser.Controller.Library;
|
|
||||||
using MediaBrowser.Controller.Resolvers;
|
|
||||||
using MediaBrowser.Model.Entities;
|
|
||||||
|
|
||||||
namespace Emby.Server.Implementations.Library.Resolvers
|
namespace Emby.Server.Implementations.Library.Resolvers
|
||||||
{
|
{
|
||||||
|
#nullable disable
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using Emby.Naming.Common;
|
||||||
|
using Jellyfin.Data.Enums;
|
||||||
|
using MediaBrowser.Controller.Drawing;
|
||||||
|
using MediaBrowser.Controller.Entities;
|
||||||
|
using MediaBrowser.Controller.Library;
|
||||||
|
using MediaBrowser.Controller.Resolvers;
|
||||||
|
using MediaBrowser.Model.Entities;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Class PhotoAlbumResolver.
|
/// Class PhotoAlbumResolver.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -2,22 +2,22 @@
|
|||||||
// Copyright (c) PlaceholderCompany. All rights reserved.
|
// Copyright (c) PlaceholderCompany. All rights reserved.
|
||||||
// </copyright>
|
// </copyright>
|
||||||
|
|
||||||
using System;
|
|
||||||
using System.IO;
|
|
||||||
using System.Linq;
|
|
||||||
using Emby.Naming.Common;
|
|
||||||
using Emby.Naming.Video;
|
|
||||||
using Jellyfin.Data.Enums;
|
|
||||||
using Jellyfin.Extensions;
|
|
||||||
using MediaBrowser.Controller.Drawing;
|
|
||||||
using MediaBrowser.Controller.Entities;
|
|
||||||
using MediaBrowser.Controller.Library;
|
|
||||||
using MediaBrowser.Controller.Providers;
|
|
||||||
using MediaBrowser.Controller.Resolvers;
|
|
||||||
using MediaBrowser.Model.Entities;
|
|
||||||
|
|
||||||
namespace Emby.Server.Implementations.Library.Resolvers
|
namespace Emby.Server.Implementations.Library.Resolvers
|
||||||
{
|
{
|
||||||
|
using System;
|
||||||
|
using System.IO;
|
||||||
|
using System.Linq;
|
||||||
|
using Emby.Naming.Common;
|
||||||
|
using Emby.Naming.Video;
|
||||||
|
using Jellyfin.Data.Enums;
|
||||||
|
using Jellyfin.Extensions;
|
||||||
|
using MediaBrowser.Controller.Drawing;
|
||||||
|
using MediaBrowser.Controller.Entities;
|
||||||
|
using MediaBrowser.Controller.Library;
|
||||||
|
using MediaBrowser.Controller.Providers;
|
||||||
|
using MediaBrowser.Controller.Resolvers;
|
||||||
|
using MediaBrowser.Model.Entities;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Class PhotoResolver.
|
/// Class PhotoResolver.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -2,20 +2,20 @@
|
|||||||
// Copyright (c) PlaceholderCompany. All rights reserved.
|
// Copyright (c) PlaceholderCompany. All rights reserved.
|
||||||
// </copyright>
|
// </copyright>
|
||||||
|
|
||||||
#nullable disable
|
|
||||||
|
|
||||||
using System;
|
|
||||||
using System.IO;
|
|
||||||
using System.Linq;
|
|
||||||
using Jellyfin.Data.Enums;
|
|
||||||
using Jellyfin.Extensions;
|
|
||||||
using MediaBrowser.Controller.Library;
|
|
||||||
using MediaBrowser.Controller.Playlists;
|
|
||||||
using MediaBrowser.Controller.Resolvers;
|
|
||||||
using MediaBrowser.LocalMetadata.Savers;
|
|
||||||
|
|
||||||
namespace Emby.Server.Implementations.Library.Resolvers
|
namespace Emby.Server.Implementations.Library.Resolvers
|
||||||
{
|
{
|
||||||
|
#nullable disable
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.IO;
|
||||||
|
using System.Linq;
|
||||||
|
using Jellyfin.Data.Enums;
|
||||||
|
using Jellyfin.Extensions;
|
||||||
|
using MediaBrowser.Controller.Library;
|
||||||
|
using MediaBrowser.Controller.Playlists;
|
||||||
|
using MediaBrowser.Controller.Resolvers;
|
||||||
|
using MediaBrowser.LocalMetadata.Savers;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// <see cref="IItemResolver"/> for <see cref="Playlist"/> library items.
|
/// <see cref="IItemResolver"/> for <see cref="Playlist"/> library items.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -2,20 +2,20 @@
|
|||||||
// Copyright (c) PlaceholderCompany. All rights reserved.
|
// Copyright (c) PlaceholderCompany. All rights reserved.
|
||||||
// </copyright>
|
// </copyright>
|
||||||
|
|
||||||
#nullable disable
|
|
||||||
|
|
||||||
using System;
|
|
||||||
using System.Linq;
|
|
||||||
using Emby.Naming.Common;
|
|
||||||
using Jellyfin.Data.Enums;
|
|
||||||
using MediaBrowser.Controller.Entities.TV;
|
|
||||||
using MediaBrowser.Controller.Library;
|
|
||||||
using MediaBrowser.Controller.Providers;
|
|
||||||
using MediaBrowser.Model.Entities;
|
|
||||||
using Microsoft.Extensions.Logging;
|
|
||||||
|
|
||||||
namespace Emby.Server.Implementations.Library.Resolvers.TV
|
namespace Emby.Server.Implementations.Library.Resolvers.TV
|
||||||
{
|
{
|
||||||
|
#nullable disable
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Linq;
|
||||||
|
using Emby.Naming.Common;
|
||||||
|
using Jellyfin.Data.Enums;
|
||||||
|
using MediaBrowser.Controller.Entities.TV;
|
||||||
|
using MediaBrowser.Controller.Library;
|
||||||
|
using MediaBrowser.Controller.Providers;
|
||||||
|
using MediaBrowser.Model.Entities;
|
||||||
|
using Microsoft.Extensions.Logging;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Class EpisodeResolver.
|
/// Class EpisodeResolver.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -2,18 +2,18 @@
|
|||||||
// Copyright (c) PlaceholderCompany. All rights reserved.
|
// Copyright (c) PlaceholderCompany. All rights reserved.
|
||||||
// </copyright>
|
// </copyright>
|
||||||
|
|
||||||
#nullable disable
|
|
||||||
|
|
||||||
using System.Globalization;
|
|
||||||
using Emby.Naming.Common;
|
|
||||||
using Emby.Naming.TV;
|
|
||||||
using MediaBrowser.Controller.Entities.TV;
|
|
||||||
using MediaBrowser.Controller.Library;
|
|
||||||
using MediaBrowser.Model.Globalization;
|
|
||||||
using Microsoft.Extensions.Logging;
|
|
||||||
|
|
||||||
namespace Emby.Server.Implementations.Library.Resolvers.TV
|
namespace Emby.Server.Implementations.Library.Resolvers.TV
|
||||||
{
|
{
|
||||||
|
#nullable disable
|
||||||
|
|
||||||
|
using System.Globalization;
|
||||||
|
using Emby.Naming.Common;
|
||||||
|
using Emby.Naming.TV;
|
||||||
|
using MediaBrowser.Controller.Entities.TV;
|
||||||
|
using MediaBrowser.Controller.Library;
|
||||||
|
using MediaBrowser.Model.Globalization;
|
||||||
|
using Microsoft.Extensions.Logging;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Class SeasonResolver.
|
/// Class SeasonResolver.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -2,6 +2,8 @@
|
|||||||
// Copyright (c) PlaceholderCompany. All rights reserved.
|
// Copyright (c) PlaceholderCompany. All rights reserved.
|
||||||
// </copyright>
|
// </copyright>
|
||||||
|
|
||||||
|
namespace Emby.Server.Implementations.Library;
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
@@ -17,8 +19,6 @@ using MediaBrowser.Controller.Persistence;
|
|||||||
using MediaBrowser.Model.Entities;
|
using MediaBrowser.Model.Entities;
|
||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
|
|
||||||
namespace Emby.Server.Implementations.Library;
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The splashscreen post scan task.
|
/// The splashscreen post scan task.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -2,6 +2,8 @@
|
|||||||
// Copyright (c) PlaceholderCompany. All rights reserved.
|
// Copyright (c) PlaceholderCompany. All rights reserved.
|
||||||
// </copyright>
|
// </copyright>
|
||||||
|
|
||||||
|
namespace Emby.Server.Implementations.Library.Validators;
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
@@ -9,8 +11,6 @@ using MediaBrowser.Controller.Library;
|
|||||||
using MediaBrowser.Controller.Persistence;
|
using MediaBrowser.Controller.Persistence;
|
||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
|
|
||||||
namespace Emby.Server.Implementations.Library.Validators;
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Class ArtistsPostScanTask.
|
/// Class ArtistsPostScanTask.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -2,6 +2,8 @@
|
|||||||
// Copyright (c) PlaceholderCompany. All rights reserved.
|
// Copyright (c) PlaceholderCompany. All rights reserved.
|
||||||
// </copyright>
|
// </copyright>
|
||||||
|
|
||||||
|
namespace Emby.Server.Implementations.Library.Validators;
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
using System.Globalization;
|
using System.Globalization;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
@@ -14,8 +16,6 @@ using MediaBrowser.Controller.Library;
|
|||||||
using MediaBrowser.Controller.Persistence;
|
using MediaBrowser.Controller.Persistence;
|
||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
|
|
||||||
namespace Emby.Server.Implementations.Library.Validators;
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Class ArtistsValidator.
|
/// Class ArtistsValidator.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -2,6 +2,8 @@
|
|||||||
// Copyright (c) PlaceholderCompany. All rights reserved.
|
// Copyright (c) PlaceholderCompany. All rights reserved.
|
||||||
// </copyright>
|
// </copyright>
|
||||||
|
|
||||||
|
namespace Emby.Server.Implementations.Library.Validators;
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
@@ -15,8 +17,6 @@ using MediaBrowser.Controller.Entities.Movies;
|
|||||||
using MediaBrowser.Controller.Library;
|
using MediaBrowser.Controller.Library;
|
||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
|
|
||||||
namespace Emby.Server.Implementations.Library.Validators;
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Class CollectionPostScanTask.
|
/// Class CollectionPostScanTask.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -2,6 +2,8 @@
|
|||||||
// Copyright (c) PlaceholderCompany. All rights reserved.
|
// Copyright (c) PlaceholderCompany. All rights reserved.
|
||||||
// </copyright>
|
// </copyright>
|
||||||
|
|
||||||
|
namespace Emby.Server.Implementations.Library.Validators;
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
@@ -9,8 +11,6 @@ using MediaBrowser.Controller.Library;
|
|||||||
using MediaBrowser.Controller.Persistence;
|
using MediaBrowser.Controller.Persistence;
|
||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
|
|
||||||
namespace Emby.Server.Implementations.Library.Validators;
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Class GenresPostScanTask.
|
/// Class GenresPostScanTask.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -2,6 +2,8 @@
|
|||||||
// Copyright (c) PlaceholderCompany. All rights reserved.
|
// Copyright (c) PlaceholderCompany. All rights reserved.
|
||||||
// </copyright>
|
// </copyright>
|
||||||
|
|
||||||
|
namespace Emby.Server.Implementations.Library.Validators;
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
using System.Globalization;
|
using System.Globalization;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
@@ -12,8 +14,6 @@ using MediaBrowser.Controller.Library;
|
|||||||
using MediaBrowser.Controller.Persistence;
|
using MediaBrowser.Controller.Persistence;
|
||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
|
|
||||||
namespace Emby.Server.Implementations.Library.Validators;
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Class GenresValidator.
|
/// Class GenresValidator.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -2,6 +2,8 @@
|
|||||||
// Copyright (c) PlaceholderCompany. All rights reserved.
|
// Copyright (c) PlaceholderCompany. All rights reserved.
|
||||||
// </copyright>
|
// </copyright>
|
||||||
|
|
||||||
|
namespace Emby.Server.Implementations.Library.Validators;
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
@@ -9,8 +11,6 @@ using MediaBrowser.Controller.Library;
|
|||||||
using MediaBrowser.Controller.Persistence;
|
using MediaBrowser.Controller.Persistence;
|
||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
|
|
||||||
namespace Emby.Server.Implementations.Library.Validators;
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Class MusicGenresPostScanTask.
|
/// Class MusicGenresPostScanTask.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -2,6 +2,8 @@
|
|||||||
// Copyright (c) PlaceholderCompany. All rights reserved.
|
// Copyright (c) PlaceholderCompany. All rights reserved.
|
||||||
// </copyright>
|
// </copyright>
|
||||||
|
|
||||||
|
namespace Emby.Server.Implementations.Library.Validators;
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
@@ -9,8 +11,6 @@ using MediaBrowser.Controller.Library;
|
|||||||
using MediaBrowser.Controller.Persistence;
|
using MediaBrowser.Controller.Persistence;
|
||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
|
|
||||||
namespace Emby.Server.Implementations.Library.Validators;
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Class MusicGenresValidator.
|
/// Class MusicGenresValidator.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -2,6 +2,8 @@
|
|||||||
// Copyright (c) PlaceholderCompany. All rights reserved.
|
// Copyright (c) PlaceholderCompany. All rights reserved.
|
||||||
// </copyright>
|
// </copyright>
|
||||||
|
|
||||||
|
namespace Emby.Server.Implementations.Library.Validators;
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
@@ -13,8 +15,6 @@ using MediaBrowser.Controller.Providers;
|
|||||||
using MediaBrowser.Model.IO;
|
using MediaBrowser.Model.IO;
|
||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
|
|
||||||
namespace Emby.Server.Implementations.Library.Validators;
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Class PeopleValidator.
|
/// Class PeopleValidator.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -2,6 +2,8 @@
|
|||||||
// Copyright (c) PlaceholderCompany. All rights reserved.
|
// Copyright (c) PlaceholderCompany. All rights reserved.
|
||||||
// </copyright>
|
// </copyright>
|
||||||
|
|
||||||
|
namespace Emby.Server.Implementations.Library.Validators;
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
@@ -9,8 +11,6 @@ using MediaBrowser.Controller.Library;
|
|||||||
using MediaBrowser.Controller.Persistence;
|
using MediaBrowser.Controller.Persistence;
|
||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
|
|
||||||
namespace Emby.Server.Implementations.Library.Validators;
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Class MusicGenresPostScanTask.
|
/// Class MusicGenresPostScanTask.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -2,6 +2,8 @@
|
|||||||
// Copyright (c) PlaceholderCompany. All rights reserved.
|
// Copyright (c) PlaceholderCompany. All rights reserved.
|
||||||
// </copyright>
|
// </copyright>
|
||||||
|
|
||||||
|
namespace Emby.Server.Implementations.Library.Validators;
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
using System.Globalization;
|
using System.Globalization;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
@@ -12,8 +14,6 @@ using MediaBrowser.Controller.Library;
|
|||||||
using MediaBrowser.Controller.Persistence;
|
using MediaBrowser.Controller.Persistence;
|
||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
|
|
||||||
namespace Emby.Server.Implementations.Library.Validators;
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Class StudiosValidator.
|
/// Class StudiosValidator.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -2,25 +2,25 @@
|
|||||||
// Copyright (c) PlaceholderCompany. All rights reserved.
|
// Copyright (c) PlaceholderCompany. All rights reserved.
|
||||||
// </copyright>
|
// </copyright>
|
||||||
|
|
||||||
using System;
|
|
||||||
using System.Collections.Concurrent;
|
|
||||||
using System.Collections.Frozen;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Diagnostics.CodeAnalysis;
|
|
||||||
using System.IO;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Reflection;
|
|
||||||
using System.Text.Json;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
using Jellyfin.Extensions;
|
|
||||||
using Jellyfin.Extensions.Json;
|
|
||||||
using MediaBrowser.Controller.Configuration;
|
|
||||||
using MediaBrowser.Model.Entities;
|
|
||||||
using MediaBrowser.Model.Globalization;
|
|
||||||
using Microsoft.Extensions.Logging;
|
|
||||||
|
|
||||||
namespace Emby.Server.Implementations.Localization
|
namespace Emby.Server.Implementations.Localization
|
||||||
{
|
{
|
||||||
|
using System;
|
||||||
|
using System.Collections.Concurrent;
|
||||||
|
using System.Collections.Frozen;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Diagnostics.CodeAnalysis;
|
||||||
|
using System.IO;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Reflection;
|
||||||
|
using System.Text.Json;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using Jellyfin.Extensions;
|
||||||
|
using Jellyfin.Extensions.Json;
|
||||||
|
using MediaBrowser.Controller.Configuration;
|
||||||
|
using MediaBrowser.Model.Entities;
|
||||||
|
using MediaBrowser.Model.Globalization;
|
||||||
|
using Microsoft.Extensions.Logging;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Class LocalizationManager.
|
/// Class LocalizationManager.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -1,12 +1,8 @@
|
|||||||
// <copyright file="PluginLoadContext.cs" company="PlaceholderCompany">
|
namespace Emby.Server.Implementations.Plugins;
|
||||||
// Copyright (c) PlaceholderCompany. All rights reserved.
|
|
||||||
// </copyright>
|
|
||||||
|
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
using System.Runtime.Loader;
|
using System.Runtime.Loader;
|
||||||
|
|
||||||
namespace Emby.Server.Implementations.Plugins;
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// A custom <see cref="AssemblyLoadContext"/> for loading Jellyfin plugins.
|
/// A custom <see cref="AssemblyLoadContext"/> for loading Jellyfin plugins.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -2,34 +2,34 @@
|
|||||||
// Copyright (c) PlaceholderCompany. All rights reserved.
|
// Copyright (c) PlaceholderCompany. All rights reserved.
|
||||||
// </copyright>
|
// </copyright>
|
||||||
|
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Globalization;
|
|
||||||
using System.IO;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Net.Http;
|
|
||||||
using System.Reflection;
|
|
||||||
using System.Runtime.Loader;
|
|
||||||
using System.Text;
|
|
||||||
using System.Text.Json;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
using Emby.Server.Implementations.Library;
|
|
||||||
using Jellyfin.Extensions.Json;
|
|
||||||
using Jellyfin.Extensions.Json.Converters;
|
|
||||||
using MediaBrowser.Common.Extensions;
|
|
||||||
using MediaBrowser.Common.Net;
|
|
||||||
using MediaBrowser.Common.Plugins;
|
|
||||||
using MediaBrowser.Controller;
|
|
||||||
using MediaBrowser.Controller.Plugins;
|
|
||||||
using MediaBrowser.Model.Configuration;
|
|
||||||
using MediaBrowser.Model.IO;
|
|
||||||
using MediaBrowser.Model.Plugins;
|
|
||||||
using MediaBrowser.Model.Updates;
|
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
|
||||||
using Microsoft.Extensions.Logging;
|
|
||||||
|
|
||||||
namespace Emby.Server.Implementations.Plugins
|
namespace Emby.Server.Implementations.Plugins
|
||||||
{
|
{
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Globalization;
|
||||||
|
using System.IO;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Net.Http;
|
||||||
|
using System.Reflection;
|
||||||
|
using System.Runtime.Loader;
|
||||||
|
using System.Text;
|
||||||
|
using System.Text.Json;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using Emby.Server.Implementations.Library;
|
||||||
|
using Jellyfin.Extensions.Json;
|
||||||
|
using Jellyfin.Extensions.Json.Converters;
|
||||||
|
using MediaBrowser.Common.Extensions;
|
||||||
|
using MediaBrowser.Common.Net;
|
||||||
|
using MediaBrowser.Common.Plugins;
|
||||||
|
using MediaBrowser.Controller;
|
||||||
|
using MediaBrowser.Controller.Plugins;
|
||||||
|
using MediaBrowser.Model.Configuration;
|
||||||
|
using MediaBrowser.Model.IO;
|
||||||
|
using MediaBrowser.Model.Plugins;
|
||||||
|
using MediaBrowser.Model.Updates;
|
||||||
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
|
using Microsoft.Extensions.Logging;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Defines the <see cref="PluginManager" />.
|
/// Defines the <see cref="PluginManager" />.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -2,23 +2,23 @@
|
|||||||
// Copyright (c) PlaceholderCompany. All rights reserved.
|
// Copyright (c) PlaceholderCompany. All rights reserved.
|
||||||
// </copyright>
|
// </copyright>
|
||||||
|
|
||||||
using System;
|
|
||||||
using System.Collections.Concurrent;
|
|
||||||
using System.Globalization;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Security.Cryptography;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
using MediaBrowser.Common.Extensions;
|
|
||||||
using MediaBrowser.Controller.Authentication;
|
|
||||||
using MediaBrowser.Controller.Configuration;
|
|
||||||
using MediaBrowser.Controller.Net;
|
|
||||||
using MediaBrowser.Controller.QuickConnect;
|
|
||||||
using MediaBrowser.Controller.Session;
|
|
||||||
using MediaBrowser.Model.QuickConnect;
|
|
||||||
using Microsoft.Extensions.Logging;
|
|
||||||
|
|
||||||
namespace Emby.Server.Implementations.QuickConnect
|
namespace Emby.Server.Implementations.QuickConnect
|
||||||
{
|
{
|
||||||
|
using System;
|
||||||
|
using System.Collections.Concurrent;
|
||||||
|
using System.Globalization;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Security.Cryptography;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using MediaBrowser.Common.Extensions;
|
||||||
|
using MediaBrowser.Controller.Authentication;
|
||||||
|
using MediaBrowser.Controller.Configuration;
|
||||||
|
using MediaBrowser.Controller.Net;
|
||||||
|
using MediaBrowser.Controller.QuickConnect;
|
||||||
|
using MediaBrowser.Controller.Session;
|
||||||
|
using MediaBrowser.Model.QuickConnect;
|
||||||
|
using Microsoft.Extensions.Logging;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Quick connect implementation.
|
/// Quick connect implementation.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -2,6 +2,8 @@
|
|||||||
// Copyright (c) PlaceholderCompany. All rights reserved.
|
// Copyright (c) PlaceholderCompany. All rights reserved.
|
||||||
// </copyright>
|
// </copyright>
|
||||||
|
|
||||||
|
namespace Emby.Server.Implementations.ScheduledTasks;
|
||||||
|
|
||||||
#nullable disable
|
#nullable disable
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
@@ -20,8 +22,6 @@ using MediaBrowser.Common.Extensions;
|
|||||||
using MediaBrowser.Model.Tasks;
|
using MediaBrowser.Model.Tasks;
|
||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
|
|
||||||
namespace Emby.Server.Implementations.ScheduledTasks;
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Class ScheduledTaskWorker.
|
/// Class ScheduledTaskWorker.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -2,6 +2,8 @@
|
|||||||
// Copyright (c) PlaceholderCompany. All rights reserved.
|
// Copyright (c) PlaceholderCompany. All rights reserved.
|
||||||
// </copyright>
|
// </copyright>
|
||||||
|
|
||||||
|
namespace Emby.Server.Implementations.ScheduledTasks;
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Concurrent;
|
using System.Collections.Concurrent;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
@@ -12,8 +14,6 @@ using MediaBrowser.Common.Configuration;
|
|||||||
using MediaBrowser.Model.Tasks;
|
using MediaBrowser.Model.Tasks;
|
||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
|
|
||||||
namespace Emby.Server.Implementations.ScheduledTasks;
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Class TaskManager.
|
/// Class TaskManager.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -2,6 +2,8 @@
|
|||||||
// Copyright (c) PlaceholderCompany. All rights reserved.
|
// Copyright (c) PlaceholderCompany. All rights reserved.
|
||||||
// </copyright>
|
// </copyright>
|
||||||
|
|
||||||
|
namespace Emby.Server.Implementations.ScheduledTasks.Tasks;
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
@@ -23,8 +25,6 @@ using MediaBrowser.Model.Globalization;
|
|||||||
using MediaBrowser.Model.Tasks;
|
using MediaBrowser.Model.Tasks;
|
||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
|
|
||||||
namespace Emby.Server.Implementations.ScheduledTasks.Tasks;
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The audio normalization task.
|
/// The audio normalization task.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -2,6 +2,8 @@
|
|||||||
// Copyright (c) PlaceholderCompany. All rights reserved.
|
// Copyright (c) PlaceholderCompany. All rights reserved.
|
||||||
// </copyright>
|
// </copyright>
|
||||||
|
|
||||||
|
namespace Emby.Server.Implementations.ScheduledTasks.Tasks;
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
@@ -21,8 +23,6 @@ using MediaBrowser.Model.IO;
|
|||||||
using MediaBrowser.Model.Tasks;
|
using MediaBrowser.Model.Tasks;
|
||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
|
|
||||||
namespace Emby.Server.Implementations.ScheduledTasks.Tasks;
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Class ChapterImagesTask.
|
/// Class ChapterImagesTask.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -2,6 +2,8 @@
|
|||||||
// Copyright (c) PlaceholderCompany. All rights reserved.
|
// Copyright (c) PlaceholderCompany. All rights reserved.
|
||||||
// </copyright>
|
// </copyright>
|
||||||
|
|
||||||
|
namespace Emby.Server.Implementations.ScheduledTasks.Tasks;
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
@@ -11,8 +13,6 @@ using MediaBrowser.Model.Activity;
|
|||||||
using MediaBrowser.Model.Globalization;
|
using MediaBrowser.Model.Globalization;
|
||||||
using MediaBrowser.Model.Tasks;
|
using MediaBrowser.Model.Tasks;
|
||||||
|
|
||||||
namespace Emby.Server.Implementations.ScheduledTasks.Tasks;
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Deletes old activity log entries.
|
/// Deletes old activity log entries.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
+2
-2
@@ -2,6 +2,8 @@
|
|||||||
// Copyright (c) PlaceholderCompany. All rights reserved.
|
// Copyright (c) PlaceholderCompany. All rights reserved.
|
||||||
// </copyright>
|
// </copyright>
|
||||||
|
|
||||||
|
namespace Emby.Server.Implementations.ScheduledTasks.Tasks;
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
@@ -19,8 +21,6 @@ using MediaBrowser.Model.IO;
|
|||||||
using MediaBrowser.Model.Tasks;
|
using MediaBrowser.Model.Tasks;
|
||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
|
|
||||||
namespace Emby.Server.Implementations.ScheduledTasks.Tasks;
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Deletes path references from collections and playlists that no longer exists.
|
/// Deletes path references from collections and playlists that no longer exists.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user