From a638c7d6a28adcf763ae6650551e9004b8d1ffa9 Mon Sep 17 00:00:00 2001 From: pcnick Date: Sun, 21 Nov 2021 20:37:30 +0800 Subject: [PATCH] Anime Link Libary: add Sub parameter, make subtitle hardlink MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 新增參數 Sub,忽略 json 文件季數設定並建立字幕檔連結 --- Animelibk.ps1 | 39 +++++++++++++++++++++++++-------------- 1 file changed, 25 insertions(+), 14 deletions(-) diff --git a/Animelibk.ps1 b/Animelibk.ps1 index 8fbd6dd..9ade618 100644 --- a/Animelibk.ps1 +++ b/Animelibk.ps1 @@ -1,12 +1,17 @@ param( $Path, $Index = "H:\AnimeLib", - [switch] $Single + [switch] $Single, + [switch] $Force, + [switch] $Sub ) #$TargetName = "俺だけ入れる隠しダンジョン〜こっそり鍛えて世界最強〜"; $TargetName = "" #$DestinName = "真の仲間" Write-Output $Path +#$Index = "L:\AnimeLib" +#$Path = "L:\Anime\202001 ネコぱら\[Nekomoe kissaten][Nekopara][01-12][BDRip][1080p][CHT]\[Nekomoe kissaten][Nekopara][12][1080p][CHT].mp4" +#$Path = "L:\Anime\202004 ストライク・ザ・ブラッド OVA IV\[Suzu-Kaze][Strike_the_Blood_IV_OVA][01-12FIN][BDRip_1080P][HEVC_YUV420P10]\[Suzu-Kaze] Strike the Blood IV 12FIN [BDRip 1920x1080 HEVC YUV420P10 FLAC].mkv" #$Path = "H:\Anime\201901 盾の勇者の成り上がり\[LKSUB][Tate no Yuusha no Nariagari][01-25][GB][720P][MP4]\[LKSUB][Tate no Yuusha no Nariagari][01][GB][720P].mp4" #$Path = "H:\Data\Downloads\因為不是真正的夥伴而被逐出勇者隊伍\[Shin no Nakama][01][BIG5][1080P].mp4" $JsonPath = $("$Index\Anime\* $TargetName", $($Path -replace '(.*\\[^\[\\\]]*)\\\[.*', '$1') | ? {Test-Path $_}) @@ -62,8 +67,10 @@ function Get-StandName { # 因應檔名不同而設定多組正規方式 $Result = @($( + #$($TestName[-1] -match "\[([^\]]*)\]\[(\d{1,2})\]") #$($File.Name -match "[\[\s]([^\]]*?)(?:[\]\[\-\s]+)(\d{1,2})[\]\s]") $($File.Name -match "[\[\s](?\b[^\]]*\b)(?:[\]\[\-\s]+)(?\d{1,2})(?:[vV]\d|FIN|END)?[\]\s]") + #$($TestName[-1] -match "[\[\s](?[^\]]*?)(?:[\]\[\-\s]+)(?\d{1,2})(?:[vV]\d)?[\]\s]") ) | % { if ($_) { $Matches }}) # 檔名分析測試用 @@ -94,7 +101,7 @@ function Get-StandName { $OutputData.newName = $Result.Name; $OutputData.Season = $WorkData.Season; $OutputData.Episode = [int] $Result.Episode; - $OutputData.newFullName = "{0} S{3:00}E{1}{2}" -f $Result.Name, $Result.Episode, $File.Extension, $WorkData.Season; + $OutputData.newFullName = "{0} S{3:00}E{1}{4}{2}" -f $Result.Name, $Result.Episode, $File.Extension, $WorkData.Season, $(if($Sub) {".default"}); #$OutputData | ConvertTo-Json; # Type 2,在輸出顯示上,此型態建立較傾向 Hash,而上面 select 建立的,較偏向 pscustomobject @@ -140,6 +147,9 @@ if ($Single) { $List = @(Get-Item -Path $($Path -replace '([\[\]])', '`$1')) $BuildList = $List | select $FileObj, $StructPathObj, $NewNameObj | ? {$_.NewName.Episode -notin $WorkData.Episode} #$BuildList | ? {$_.NewName.Episode -notin $WorkData.Episode} | Format-List +} elseif ($Sub) { + $List = @(Get-Item -Path $($Path -replace '([\[\]])', '`$1')) + $BuildList = $List | select $FileObj, $StructPathObj, $NewNameObj | ? {$_.File.Extension -in @(".ass", ".ssa")} } $ENDResult = $BuildList | % { @@ -149,15 +159,16 @@ $ENDResult = $BuildList | % { Target = $($_.File.Fullname -replace '([\[\]])', '`$1') } #try { - # 判斷 New-Item @Command 是否成功,將 NEWNAME 物件作為回傳值 - if (New-Item @Command) { $_.NewName } + if (New-Item @Command) { + Write-Host $_.NewName.newFullName + $_.NewName } #} catch { #} } #$ENDResult #$ENDResult.gettype(); -$ENDResult | % { if ($_.Episode) { $WorkData.Episode += $_.Episode }} +if (-not($Sub)) { $ENDResult | % { if ($_.Episode) { $WorkData.Episode += $_.Episode }}} $WorkData | ConvertTo-Json | Out-File -Encoding "UTF8" "$JsonPath\animelibk.json" exit 0; @@ -165,8 +176,8 @@ exit 0; # SIG # Begin signature block # MIIFxwYJKoZIhvcNAQcCoIIFuDCCBbQCAQExCzAJBgUrDgMCGgUAMGkGCisGAQQB # gjcCAQSgWzBZMDQGCisGAQQBgjcCAR4wJgIDAQAABBAfzDtgWUsITrck0sYpfvNR -# AgEAAgEAAgEAAgEAAgEAMCEwCQYFKw4DAhoFAAQUX9/yYsS2o/ap36sf/Bq1uDoj -# CIOgggNSMIIDTjCCAjagAwIBAgIQdMnAQ4BDAo9Lgfn+QeDdhjANBgkqhkiG9w0B +# AgEAAgEAAgEAAgEAAgEAMCEwCQYFKw4DAhoFAAQU8mPuUodwDIN2Q4E0vUnnZGUG +# r4GgggNSMIIDTjCCAjagAwIBAgIQdMnAQ4BDAo9Lgfn+QeDdhjANBgkqhkiG9w0B # AQUFADAqMRMwEQYDVQQDDApOaWNrIENoYW5nMRMwEQYDVQQKDAplYXJpY2sub3Jn # MB4XDTIxMTAzMTEwMDI1MVoXDTIyMTAzMTEwMjI1MVowMzEiMCAGCSqGSIb3DQEJ # ARYTcGNuaWNrMTAwQGdtYWlsLmNvbTENMAsGA1UEAwwETmljazCCASIwDQYJKoZI @@ -187,11 +198,11 @@ exit 0; # AgEBMD4wKjETMBEGA1UEAwwKTmljayBDaGFuZzETMBEGA1UECgwKZWFyaWNrLm9y # ZwIQdMnAQ4BDAo9Lgfn+QeDdhjAJBgUrDgMCGgUAoHgwGAYKKwYBBAGCNwIBDDEK # MAigAoAAoQKAADAZBgkqhkiG9w0BCQMxDAYKKwYBBAGCNwIBBDAcBgorBgEEAYI3 -# AgELMQ4wDAYKKwYBBAGCNwIBFTAjBgkqhkiG9w0BCQQxFgQUHXjy5RD0ZBMCmQ+P -# NgKY+6wL0OYwDQYJKoZIhvcNAQEBBQAEggEAsBGnRtXBwIvUcUY1RxSLZZRVziE+ -# ezXU4LASl87P/CLE+4mBZ5+XORU7Yxhz/m2VUpE+vwpct047OLSgZ0n+WcTSl8Iq -# p7ag+mwyKriRFz7iU3mb4VvS4xF7VZIAcIBhGUA5C90StqGxmX7iH0lQYhL9URu0 -# evAy2wL01WyIInXGfXgbS/Zr40fmlUlt3kHugrzgNiCLKZyLo1598Bsdda0+dpMf -# uobPwGbccM1w/40UYLh6LcIz+oVcH0PNncy63XBkqSKIrTNHgznoLCt8wnSLqfgq -# QZ+dgNGA+M8UvyFBLBxfUIvKfK8LAlmb8uHHHqGgw+dnZobDFvyNxgZrrg== +# AgELMQ4wDAYKKwYBBAGCNwIBFTAjBgkqhkiG9w0BCQQxFgQUs/WMayHdj7voQ+1i +# xWSLfdeejpcwDQYJKoZIhvcNAQEBBQAEggEAsgkEEH0srYtf8UzIuYMmWBaDEa2t +# xC3bcCkuP+FFqln47A8bA3zEMvp69Ox9+bJIzSDsoeT/lEqKxPYt/JS+JgIYg5op +# o1DjvzzTo6rGvpOW/cFTcoaP8tKoXWeRGjAD0lex06tiqMio49wOrsY/m4RGW13c +# tQvdLGJTFWD7ovFAfC14BE7Fl3WMLwljD70DuWistL7fYm3bspj2cJTFjiIDWmML +# xDCx7sVyGBF5krwJB3DefO5Dq006ANCMU94gpSwQzOUFN6ZYvufa8EniaHYUhI+9 +# 6Z+pEHvR+MOwT6LA6F0pe7Vel8O2bGmRTaH8+K9mj6r/JOky1ZcFebKDzg== # SIG # End signature block