From b29a1f6aedba588a820676c132f78b8ef49914ae Mon Sep 17 00:00:00 2001 From: pcnick Date: Tue, 23 Nov 2021 22:45:51 +0800 Subject: [PATCH 1/2] Anime Link Libary: feature modular function PathChar, replace special char in path string MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 功能函式模組化 * 取代路徑中特殊字元 --- PathChar.psd1 | Bin 0 -> 4738 bytes PathChar.psm1 | 41 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 41 insertions(+) create mode 100644 PathChar.psd1 create mode 100644 PathChar.psm1 diff --git a/PathChar.psd1 b/PathChar.psd1 new file mode 100644 index 0000000000000000000000000000000000000000..61ff9d323e5bf5a0fb54de1d67d806a85b7e3da6 GIT binary patch literal 4738 zcmcgwUrd`-6u%=u1_SXyx9rJpBXiwcp<{FErUo3tPT-dQVcoJy(?1_=p|oB9!Ekjj z8v+a?F_WQ-n)qf+jM2o0We@sb_OL{KGSO_&==S0gHPOsv2Jv^k%cWo8>nOn(^8Mj{ z=brOB=lssO_jci*23E&vSOZhow*I!9!gjK5=3{9VW`}Y4SP~-&%V+89)#;k4%GgIe zVuqZzJ@aU$a`Ygi5-h-CEQ0&MqE@|3mo0Xdq?(xp*Iw3yi|);ApH7-)w6K@85jnf+ z+}4>*-O~Eq?DaR}qxo!A;3mH^Ot?1tr+M>CmyO;p^jpIf7Mkf`ar~uO7w$opVNs^S z`m?xJ`q&8UDK-c^JBuunUDBG*T9bQ1-tjBLLbqP$G3ZTVb_8}}OBO7w5q>tV(AcE@ z8OUc9MA^xX09OPE#mv-V6cj{04lD^R4-w|qkQ>PhZ(5j%?J7cT%8c8ZdKf=`eutyr z0sVJnm?HB6>tRP(+Y(mFMl(AAdw%vb>tkl%@?nhL_T#w^ml^!#0QL@{LED*Eeh?mTSo-?K9N9}i=oBcobwrk8QL?^~hGY%Ysy3Fnl z-5M&T$DQ}sY6g;{5B3on(vyIOB;p?es`L^j6MWi*|0Gk3ncavlLQ{*sI#j#x7{6gV zkzu^bQ8Td1QDHH*-s1lzaLM+bV;;=?I`I4JgrEVM+JHR;dxRpf#0420V_odx*knG- zLiHXX!MqqU6K6xvL%gClVx$v3so+i&qmOvM3KD~*RU;{59^Vf^xz-PHZ-1R@@5ueE zTY)Qh+~cL z@d$I_tsP$kdxs#AMAuYsSJ^4(jA(B`jQGJ(1vA4KqYMv1R`xUEVsOA}ABnybzQccU z)`1a5xmDQTvwdUMWOc}@iVh~YNBxn*V%h-9e-{P9PQ5n(XT9U9z*42@C<3+ zlX#B-3q_UWO{mdM^l_@i|1&PaYB~PP?kXy>XZ(S5_}FKmYZ1b}?bHU#arDRoY=fm0 z9tH8Xf3Z_j^t<6x95JE#PigsY#YjNQa~h)oL?Wa4ZQKo-oT^>g?{d^GeCgddM`L08 z5AKiCuO1g`wyZe^H0pV!U%`k~v@Wh(NsMe%zpmQz*|yvrUP^bX=8+1YY3+(=9+qpt z z+<7>y_>D1?IhojE5UjIplk=LzS&+q}=dJxji z%87g_?CSJPOft0%S_7yA(j3>itLVSRj9A$Z#Yu#CyTNl~!sKRr=(P?``#@0@bUG^Z zC4DV)BJNZprFzj8$344|_I#GKQ+JR)v_lhRZ#9i$lb?3?&h+6-XLJ%Or}A6;`r7~E z^ksf^`Yr4qw$A+KoFDb_O6TLQA$xVG)SjcoZ_0G=to>W9dzkr|S7^RG{j_Pl%!i0v zpM5bFo)B@PRWX9y6!ke3Iix4ai1n#(E>ti^e{?QdT}nzfV21mIDf7peU~@jZwLf@< zJi5f`tvd99!{q)xSHm}r)O$bdHS_la+jEp#fllg?PtxZCz7TRNG3rlaQcgZeURdtn z6M>omibW6d)48~sNjdo>dCD`fGzJ?gq$xha)=pi&k~8E}SlZ~ZhCBEnbj?q4-;I=G zP3%hgVTn5CTCDxd!xPfC&F+Jz%dvJ8R_N5c7CSO?#A`a=sE9vBhC>r^Mx3K%9ORSY zQA)maG;^3mGmBX!_}ZO&&OSvz>nb(80_56zjUx*V~yy;BtyS|1hYre7Gu`e!a$wH2K3i3KW Date: Sat, 27 Nov 2021 18:11:20 +0800 Subject: [PATCH 2/2] Anime Link Libary: main program replace feature with function PathChar MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 主程式功能置換為 function PathChar --- Animelibk.ps1 | 36 ++++++++++++++++++++---------------- 1 file changed, 20 insertions(+), 16 deletions(-) diff --git a/Animelibk.ps1 b/Animelibk.ps1 index 9ade618..3527450 100644 --- a/Animelibk.ps1 +++ b/Animelibk.ps1 @@ -5,6 +5,8 @@ [switch] $Force, [switch] $Sub ) +Import-Module -Name ($PSScriptRoot + "\PathChar.psd1") +Edit-PathChar $Path #$TargetName = "俺だけ入れる隠しダンジョン〜こっそり鍛えて世界最強〜"; $TargetName = "" #$DestinName = "真の仲間" @@ -62,20 +64,22 @@ function Get-StandName { $File = $(if ($FileObj.GetType().Name -eq 'FileInfo') { $FileObj } else { - Get-Item -Path $($FileObj -replace '([\[\]])', '`$1') + Get-Item -Path $(Edit-PathChar $FileObj) }) # 因應檔名不同而設定多組正規方式 $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]") + #$($File.Name -match "[\[\s](?\b[^\]]*\b)(?:[\]\[\-\s]+)(?\d{1,2})(?:[vV]\d|FIN|END)?[\]\s]") + $($($File.Name -replace "\[(DVD|HDTV|BD)rip\]", '') -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 }}) # 檔名分析測試用 # $Pathes = @( -# "L:\Anime\200910 聖剣の刀鍛冶(聖劍鍛造師)\[DMG][The Sacred Blacksmith][01-12 END][848x480][BIG5]\[DMG][The Sacred Blacksmith][04V2][848x480][BIG5].rmvb" +# "L:\Anime\200910 聖剣の刀鍛冶(聖劍鍛造師)\[DMG][The Sacred Blacksmith][01-12 END][848x480][BIG5]\[DMG][The Sacred Blacksmith][04V2][848x480][BIG5].rmvb" +# "L:\Anime\201104 星空へ架かる橋(架向星空之橋)\[AngelSub][Hoshizora e Kakaru Hashi][BDRip][Vol.01][1920x1080][TW_BIG5][x264_FLAC]\[AngelSub][Hoshizora e Kakaru Hashi][BDRip][01][1920x1080][BIG5][x264_FLAC].mkv" # "H:\Anime\201901 盾の勇者の成り上がり\[LKSUB][Tate no Yuusha no Nariagari][01-25][GB][720P][MP4]\[LKSUB][Tate no Yuusha no Nariagari][01][GB][720P].mp4" # "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" # "L:\Anime\200910 アスラクライン II(機巧魔神)\[DMG][Asura Cryin2][01-13 END][848x480][BIG5][RMVB]\[DMG][Asura Cryin 2][01][848x480][Big5].rmvb" @@ -84,7 +88,7 @@ function Get-StandName { # $TestName = @($Pathes | % {$_.Split("\\")[-1]}) # $Result = @( $TestName | % { @( #$($_ -match "\[([^\]]*)\]\[(\d{1,2})\]") -# $($_ -match "[\[\s](?\b[^\]]*\b)(?:[\]\[\-\s]+)(?\d{1,2})(?:[vV]\d|FIN|END)?[\]\s]") +# $($($_ -replace "\[(DVD|HDTV|BD)rip\]", '') -match "[\[\s](?\b[^\]]*\b)(?:[\]\[\-\s]+)(?\d{1,2})(?:[vV]\d|FIN|END)?[\]\s]") # ) | % { if ($_) { $Matches }}}) # Write-Output $Result # $Matches @@ -144,11 +148,11 @@ $StructPathObj = @{ # 運作模式 if ($Single) { # 單集模式 - $List = @(Get-Item -Path $($Path -replace '([\[\]])', '`$1')) + $List = @(Get-Item -Path $(Edit-PathChar $Path)) $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')) + $List = @(Get-Item -Path $(Edit-PathChar $Path)) $BuildList = $List | select $FileObj, $StructPathObj, $NewNameObj | ? {$_.File.Extension -in @(".ass", ".ssa")} } @@ -156,7 +160,7 @@ $ENDResult = $BuildList | % { $Command = @{ ItemType = 'HardLink' Path = $("{0}\{1}" -f $_.StructPath, $_.NewName.newFullName) - Target = $($_.File.Fullname -replace '([\[\]])', '`$1') + Target = $(Edit-PathChar $_.File.Fullname) } #try { if (New-Item @Command) { @@ -176,8 +180,8 @@ exit 0; # SIG # Begin signature block # MIIFxwYJKoZIhvcNAQcCoIIFuDCCBbQCAQExCzAJBgUrDgMCGgUAMGkGCisGAQQB # gjcCAQSgWzBZMDQGCisGAQQBgjcCAR4wJgIDAQAABBAfzDtgWUsITrck0sYpfvNR -# AgEAAgEAAgEAAgEAAgEAMCEwCQYFKw4DAhoFAAQU8mPuUodwDIN2Q4E0vUnnZGUG -# r4GgggNSMIIDTjCCAjagAwIBAgIQdMnAQ4BDAo9Lgfn+QeDdhjANBgkqhkiG9w0B +# AgEAAgEAAgEAAgEAAgEAMCEwCQYFKw4DAhoFAAQUDqcimTh1uRkBM2wZ3oxWPCw2 +# SQ+gggNSMIIDTjCCAjagAwIBAgIQdMnAQ4BDAo9Lgfn+QeDdhjANBgkqhkiG9w0B # AQUFADAqMRMwEQYDVQQDDApOaWNrIENoYW5nMRMwEQYDVQQKDAplYXJpY2sub3Jn # MB4XDTIxMTAzMTEwMDI1MVoXDTIyMTAzMTEwMjI1MVowMzEiMCAGCSqGSIb3DQEJ # ARYTcGNuaWNrMTAwQGdtYWlsLmNvbTENMAsGA1UEAwwETmljazCCASIwDQYJKoZI @@ -198,11 +202,11 @@ exit 0; # AgEBMD4wKjETMBEGA1UEAwwKTmljayBDaGFuZzETMBEGA1UECgwKZWFyaWNrLm9y # ZwIQdMnAQ4BDAo9Lgfn+QeDdhjAJBgUrDgMCGgUAoHgwGAYKKwYBBAGCNwIBDDEK # MAigAoAAoQKAADAZBgkqhkiG9w0BCQMxDAYKKwYBBAGCNwIBBDAcBgorBgEEAYI3 -# AgELMQ4wDAYKKwYBBAGCNwIBFTAjBgkqhkiG9w0BCQQxFgQUs/WMayHdj7voQ+1i -# xWSLfdeejpcwDQYJKoZIhvcNAQEBBQAEggEAsgkEEH0srYtf8UzIuYMmWBaDEa2t -# xC3bcCkuP+FFqln47A8bA3zEMvp69Ox9+bJIzSDsoeT/lEqKxPYt/JS+JgIYg5op -# o1DjvzzTo6rGvpOW/cFTcoaP8tKoXWeRGjAD0lex06tiqMio49wOrsY/m4RGW13c -# tQvdLGJTFWD7ovFAfC14BE7Fl3WMLwljD70DuWistL7fYm3bspj2cJTFjiIDWmML -# xDCx7sVyGBF5krwJB3DefO5Dq006ANCMU94gpSwQzOUFN6ZYvufa8EniaHYUhI+9 -# 6Z+pEHvR+MOwT6LA6F0pe7Vel8O2bGmRTaH8+K9mj6r/JOky1ZcFebKDzg== +# AgELMQ4wDAYKKwYBBAGCNwIBFTAjBgkqhkiG9w0BCQQxFgQUZ98/I+dj0JylJtNV +# 6S37dg5/QPEwDQYJKoZIhvcNAQEBBQAEggEABCrG4XNbnCRBIlDyHFCXMJ4vucsD +# p4roqcdLmtM/g75EEus9h/qXMF/CLbc3BDbSEHGXnEk2OO3MN7+HWUudbAxvBfUE +# z8xTGSNCoNgWhPmEj859OOCu5i7Y1XIEkF89v5nPOzblTMesSdm44FQaBtrC1bHM +# z0dx+mnz0Zak7MzWkXUnyIeoKc2vM4eGlR/pBxXO7n5ycp70lL5rRWX9eVTT4r96 +# dW7ZUpL9Gwcq0PHLNg7rFgUmLSkMO3jUiIat0DBSJGkzUfVUhfpIPkG77auVLJKR +# YdfUqFL+zrq6GhSrKsD7cz5GC4I9RuaFuykGDqW6aZ93PSRlXxmw32GVvQ== # SIG # End signature block