Search And Play A Movie By Title, Subtitle or Random



  • My code formatting in this post apparently suck! Oops.

    I could say:
    ' Hey Google tell trigger command movie with parameter die hard' the movie should be found and played.

    {
      "trigger": "Movie",
      "command": "PlayMovie.vbs",
      "ground": "foreground",
      "voice": "movie",
      "allowParams": "true"
    }
    

    Create PlayMovie.vbs with these contents:

    '*****************************************************************************
     ' Author:   Allan McFarlane (2018)
     ' Purpose:  Locates And Play First Movie Whose Title Or
     '           SubTitle Matches The Passed Parameter(s).
     '           If There Is No Parameter A Random Movie Is Played.
     ' Inputs:   Complete Or Partial Movie Title Or SubTitle, Or None.
     ' Returns:  Message Box Will Be Shown If No Match Was Found.
     ' Notes:    I Use MediaPlayerLite As A Player, It's Installer Offers To Install
     '	     Crapware That Can Be Declined When Installing.
     '	     All Movies Are Stored In A Single Folder Called 'Movies'.
     '           Each Movie File Is Stored In It's Own Folder In The Movies Folder.
     '           Searching Is Based Only On The Folder Name.
     '           Movie Year Should Not Be A Parameter.
     '           The Words 'The' And 'A' Can Be Used, But, Will Be Internally Dropped.
     '           Only The 'MP4' Encoded Video File Types Are Played By This Script.
     '
     '           Movie Folders Follow The Following Naming Conventions:
     '           Butterfly Effect 2, The (2006)
     '           Catwoman (2004)
     '           Poison Ivy 4 _ The Secret Society (2008)
     '           Pirates of the Caribbean 1 _ The Curse of the Black Pearl (2003)
     '           RoboCop REMAKE (2014)
     '           Simple Plan, A (1998)
     '           Spider-Man 2 (2004)
     '           Nine And A Half Weeks (1986)
     '*****************************************************************************
     ' root needs to be set as the path to the 'Movies' folder
    root = "\\GOFLEX_HOME\GoFlex Home Public\Movies\"
    
    For Each a In WScript.Arguments
    	arg = arg & a & " "
    Next 'a 
    
    arg = LCase(Trim(arg))
    
    If Left(arg, 4) = "the " Then 'discard superfluous leading THE from parameter
        arg = Right(arg, Len(arg) - 4)
        padding2 = 5
    ElseIf Left(arg, 2) = "a " Then 'discard superfluous leading A from parameter
        arg = Right(arg, Len(arg) - 2)
        padding2 = 3
    End If
    
    Set fso = CreateObject("Scripting.FileSystemObject")
    
    Set oFolders = fso.GetFolder(root) 'main folder that contains all sub folders, which contain the actual movie
    success = 0
    If arg <> "" Then
        For Each oFolder In oFolders.SubFolders 'loop through sub folder list
            padding = padding2
            If padding = 0 Then 'account for lenght of possible trailing text THE or A
                If InStr(LCase(oFolder.Name), ", a") > 0 Then
                    padding = 3
                End If
                If InStr(LCase(oFolder.Name), ", the") > 0 Then
                    padding = 5
                End If
            End If
            
            If InStr(oFolder.Name, "(") > 0 Then 'prepare for exclusion of trying to match release year ie: (2006)
                padding = padding + 7
            End If
            
            subStart = 0
            subTitle = ""
            subStart = InStr(oFolder.Name, "_") 'test for existence of possible subtitle
            
            If subStart > 0 Then 'fetch simple title and subtitle if present
                Title = LCase(Left(oFolder.Name, subStart - 1))
                subTitle = LCase(Mid(oFolder.Name, subStart + 1, Len(oFolder.Name) - subStart - padding))
            Else
                Title = LCase(oFolder.Name)
            End If
            
             'does this folder's title or subtile contains a match to the parameter?
            If InStr(Title, arg) > 0 Or InStr(subTitle, arg) > 0 Then
                Set oFiles = oFolder.Files
                For Each oFile In oFiles 'loop through filenames to find my MP4 encoded movie
                    If InStr(LCase(oFile.Name), ".mp4") > 0 Then
                        arg = root & oFolder.Name & "\" & oFile.Name 'build path to movie file
                        'build string for specific executable with compatible command line arguments
                        success = 1
                        arg = Chr(34) & "C:\Program Files\MediaPlayerLite\mpl.exe " & Chr(34) & " " & Chr(34) & arg & Chr(34) & " /fullscreen"
                        CreateObject("Wscript.Shell").Run arg 'run it!
                        Exit For
                    End If
                Next
                Exit For
            End If
        Next
    Else
        'No movie to search for, so play a random movie
        folderCount = oFolders.SubFolders.Count
        Randomize
        folderNum = Int((folderCount - 1 + 1) * Rnd + 1)
        curFolderNum = 0
        
        For Each oFolder In oFolders.SubFolders 'loop through sub folder list
            curFolderNum = curFolderNum + 1
            If curFolderNum = folderNum Then
                Set oFiles = oFolder.Files
                For Each oFile In oFiles 'loop through filenames to find the MP4 encoded movie
                    If InStr(LCase(oFile.Name), ".mp4") > 0 Then
                        arg = root & oFolder.Name & "\" & oFile.Name 'build path to movie file
                        'build string for specific executable with compatible command line arguments
                        success = 1
                        arg = Chr(34) & "C:\Program Files\MediaPlayerLite\mpl.exe " & Chr(34) & " " & Chr(34) & arg & Chr(34) & " /fullscreen"
                        CreateObject("Wscript.Shell").Run arg 'run it!
                        Exit For
                    End If
                Next
                Exit For
            End If
        Next
    End If
    
    Set fso = Nothing
    
    If success = 0 Then
        WScript.Echo "No Match Found!" & vbCrLf & arg
    End If
    

  • administrators

    @a-mcf, I hope you don't mind. I re-formatted your post a little bit. I just added ``` before and after the big code block to make it look like code.

    Also, nice job on the movie player script!


Log in to reply
 

Looks like your connection to TRIGGERcmd Forum was lost, please wait while we try to reconnect.