JustPaste.it


#NoTrayIcon
#SingleInstance force

Loop, %0%
    P%A_INDEX% := %A_INDEX%

If (!P1)
{
    MsgBox,Kein Parameter!
    ExitApp
}

Clipboard := ""
Changed := 0
UmlautsFound := 0
OnClipboardChange("Changed")

Attrib := ""
OF := ""
OD := ""
OE := ""
ON := ""
ODRIVE := ""
Name := ""
Year := ""
POS := ""
S := ""

StringReplace,P1,P1,\\?\
FileGetAttrib,Attrib,%P1%

If InStr(Attrib, "D")
{
    Folder := P1
    
    SplitPath,Folder,Name

    StringReplace,Name,Name,%A_Space%,`%20,1
    StringReplace,Name,Name,.,%A_Space%,1
    
    Name := Umlaute(Name)
    Run,https://thetvdb.com/search?query=%Name%

    MsgBox, 262209,PlexMatch, 
    ( Ltrim
        Please copy TVDB ID in clipboard!
        
        Plexmatch file will be generated in
        
        %folder%
    )
        
    If (Changed=0) {
        IfMsgBox,Cancel
            ExitApp
    }
    
    FileDelete,%Folder%\.plexmatch
    ;FileAppend,tvdbid:%Clipboard%,%Folder%\.plexmatch,UTF-8
    FileAppend,tvdbid:%Clipboard%,%Folder%\.plexmatch,CP1252
    Send,!{tab}
    ExitApp
}

SplitPath,P1,OF,OD,OE,ON,ODRIVE

Name := OF
Year := ""

If (OE!="mkv") and (OE!=avi) and (OE!="p4") 
{
    MsgBox, Extension %OE% not supported.
    ExitApp
}

Loop,99
{
    S := SubStr("0" . A_Index,-1)
    If InStr(Name,"19" . S)
    {
        Year := "19" . S
        Break
    }
    If InStr(Name,"20" . S)
    {
        Year := "20" . S
        Break
    }        
    If InStr(Name,"2000")
    {
        Year := "2000"
        Break
    }            
}

If Year
{
    POS := InStr(name,Year)
    NameMsgBox := SubStr(Name,1,POS+3)
    Name := SubStr(Name,1,POS-1)
    ; Name := SubStr(Name,1,POS-1) . " " . Year

}
else
{
    NameMsgBox := Name
}

If (StrLen(NameMsgBox) > 45)
    NameMsgBox := SubStr(NameMsgBox,1,45) . "..."
    
StringReplace,NameMsgBox,NameMsgBox,.mkv,%A_Space%,1
StringReplace,NameMsgBox,NameMsgBox,.mp4,%A_Space%,1
StringReplace,NameMsgBox,NameMsgBox,.mpg,%A_Space%,1
StringReplace,NameMsgBox,NameMsgBox,.avi,%A_Space%,1
    
StringReplace,Name,Name,.uncut.,1
StringReplace,Name,Name,.remastered.,1
StringReplace,Name,Name,%A_Space%,+,1
StringReplace,Name,Name,.,+,1
Loop,5
    StringReplace,Name,Name,++,+,1
NameU := Trim(Umlaute(Name)) . "+"
StringReplace,NameU,NameU,++,,1

;Run,https://www.imdb.com/find/?q=%NameU%
;Run,https://thetvdb.com/search?query=%NameU%
If (Year)
    Run,https://www.themoviedb.org/search?query=%NameU%+y:%year%
else
    Run,https://www.themoviedb.org/search?query=%NameU%
    
    

SetTitleMatchMode,2

MsgBoxTitle := "PlexMatch - " . NameMsgBox
MsgBoxHeader := "Please copy TMDB URL in clipboard"

MovieRetry:
If (Year)
{
    MsgBoxText := "`n`nClick ""Try Again"" to search without year and umlaut conversion."
    MsgBoxID := 262214
}
else
{
    MsgBoxText := ""
    MsgBoxID := 262209
}

MsgBox,% MsgBoxID,% MsgBoxTitle,% MsgBoxHeader . MsgBoxText
If (Changed=0)
{
    IfMsgBox,Cancel
        ExitApp
    IfMsgBox,TryAgain 
    {
        ;Run,https://www.imdb.com/find/?q=%Name% %Year%
        ;Run, https://thetvdb.com/search?query=%Name%+%year%
        Run, https://www.themoviedb.org/search?query=%Name%
        Year := ""
        Goto, MovieRetry
    }
}

If !(InStr(Clipboard,"themoviedb.org/movie/"))
        Msgbox, Extracting TMDB URL from clipboard entry failed.`n`nClipboard: "%Clipboard%"
else
{
    ClipArray := StrSplit(Clipboard,"/")
    ClipArray2 := StrSplit(ClipArray[5],"-")
    tmbid := ClipArray2[1]
    Gosub,Rename
    FileMove,%OD%\%OF%,%OD%\%ON% {tmdb-%tmbid%}.%OE%
}
Send,!{tab}
ExitApp

Rename:
If InStr(OF,"{imdb-tt")
{
    POS := InStr(OF,"imdb-tt")
    ON := Trim(SubStr(OF,1,POS-2))
    FileMove,%OD%\%OF%,%OD%\%ON%.%OE%
    OF := ON . "." . OE
}

If InStr(OF,"{tmdb-")
{
    POS := InStr(OF,"tmdb-")
    ON := Trim(SubStr(OF,1,POS-2))
    FileMove,%OD%\%OF%,%OD%\%ON%.%OE%
    OF := ON . "." . OE
}

If InStr(OF,"{tvdb-")
{
    POS := InStr(OF,"tvdb-")
    ON := Trim(SubStr(OF,1,POS-2))
    FileMove,%OD%\%OF%,%OD%\%ON%.%OE%
    OF := ON . "." . OE
}
Return

Changed()
{
    Global Changed
    Changed := 1
    WinClose,% "PlexMatch"
    Return
}

Umlaute(a)
{
    Global UmlautsFound
    StringReplace,a,a,oe,ö,1
        UmlautsFound := ErrorLevel=1 ? UmlautsFound : 1
    StringReplace,a,a,ae,ä,1
            UmlautsFound := ErrorLevel=1 ? UmlautsFound : 1
    StringReplace,a,a,ue,ü,1
            UmlautsFound := ErrorLevel=1 ? UmlautsFound : 1
    Return a
}