TRIGGERcmd
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Search
    • Register
    • Login

    Search And Play A Movie By Title, Subtitle or Random

    Windows
    2
    2
    1.9k
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • A
      A McF
      last edited by Russ

      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
      
      RussR 1 Reply Last reply Reply Quote 0
      • RussR
        Russ @A McF
        last edited by Russ

        @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!

        Russell VanderMey

        1 Reply Last reply Reply Quote 0
        • First post
          Last post