Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Rem Type=Plugin
- Rem Name=MP4
- Rem Author=cyberjedi
- Rem Host=Assistant
- 'This sub setups the plug-ins option panel in Hal's options dialog
- Sub OptionsPanel()
- '------------------
- ' Define the Help
- '------------------
- lblPlugin(0).Caption = "Hal will be able to play your favourite movies. Click below for more info"
- lblPlugin(0).Move 120, 120, 3300, 1000
- lblPlugin(0).WordWrap = True
- lblPlugin(0).Visible = True
- cmdPlugin(0).Move 320, 650, 2100, 375
- cmdPlugin(0).Caption = "Help on this plugin"
- cmdPlugin(0).Visible = True
- '------------------
- ' Define the Musical Mood listbox
- '------------------
- lblPlugin(1).Caption = "Hal Movie Mood level"
- lblPlugin(1).Move 320, 1300, 4000, 1000
- lblPlugin(1).WordWrap = True
- lblPlugin(1).Visible = True
- cboPlugin(0).Move 320, 1600, 1800
- cboPlugin(0).AddItem "Very high"
- cboPlugin(0).AddItem "High"
- cboPlugin(0).AddItem "Average"
- cboPlugin(0).AddItem "Low"
- cboPlugin(0).AddItem "No Movie
- cboPlugin(0).Visible = True
- cmdPlugin(1).Caption = "Apply Changes"
- cmdPlugin(1).Move 320, 2100, 1600, 375
- cmdPlugin(1).Visible = True
- '------------------
- ' Update the listbox with the current value stored in the table
- '------------------
- If HalBrain.CheckTableExistence("vrParameter") = True Then
- vrMovieMood = HalBrain.TopicSearch("Movie", "vrParameter")
- If vrMovieMood = "" Then vrMovieMood = 1
- Select Case vrMovieMood
- Case 8
- cboPlugin(0).Text = "Very high"
- Case 5
- cboPlugin(0).Text = "High"
- Case 2
- cboPlugin(0).Text = "Average"
- Case 1
- cboPlugin(0).Text = "Low"
- Case 0
- cboPlugin(0).Text = "No movie"
- End Select
- End If
- End Sub
- Sub cmdPlugin_Click(Index)
- Dim vrTempQuery()
- Dim vrMovie, vrMovieMood
- Select Case Index
- Case 0
- HalMenu.HalCommand "<RUNPROG>vrMP4Help.html</RUNPROG>"
- Case 1
- '------------------
- ' Convert the listbox in a value
- '------------------
- Select Case cboPlugin(0).Text
- Case "Very high"
- vrMovieMood = 8
- Case "High"
- vrMovieMood = 5
- Case "Average"
- vrMovieMood = 2
- Case "Low"
- vrMovieMood = 1
- Case "No music"
- vrMovieMood = 0
- End Select
- '------------------
- ' If the Parameter table does not exist, I create it
- '------------------
- HalBrain.ReadOnlyMode = False
- vrTableName = "vrParameter"
- If HalBrain.CheckTableExistence(vrTableName) = False Then
- 'Create table if it doesn't exist
- HalBrain.CreateTable vrTableName, "TopicSearch", "miscData"
- End If
- '------------------
- ' Search if it contains the MovieMood parameter
- '------------------
- vrMovie = "MOVIE"
- If HalBrain.TopicSearch(vrMusic, vrTableName) = "" Then
- '------------------
- 'Creates the record storing the new value
- '------------------
- HalBrain.AddToTable vrTableName, "TopicSearch", vrMovie, vrMovieMood
- Else
- '------------------
- 'Updates the record storing the new value
- '------------------
- HalBrain.RunQuery "UPDATE " & vrTableName & " SET topic = " & vrMovieMood & " WHERE searchString = " & """" & vrMovie & """", vrTempQuery
- End If
- End Select
- End Sub
- Rem PLUGIN: PLUGINAREA1
- 'The comment above tells Ultra Hal Assistant to insert the following code
- 'on-the-fly into the main brain code in the section referenced.
- '------------------
- ' Check if the user asked for reorganizing the MP4 table
- '------------------
- vrMp4 = False
- If InStr(UserSentence, " INDEX ") <> 0 And InStr(UserSentence, " MP4 ") <> 0 Then vrMP4 = True
- If vrMP4 = True Then
- '------------------
- ' If the MP4 table does not exist, I create it
- '------------------
- HalBrain.ReadOnlyMode = False
- vrTableName = "vrMp4"
- If HalBrain.CheckTableExistence(vrTableName) = False Then
- ' Create table if it doesn't exist
- ' It must be of type Brain, to allow partial text search
- HalBrain.CreateTable vrTableName, "Brain", "miscData"
- Else
- ' The 260 parameter is 256 + 4 = Yes/No with Default = No
- vrAnswer = MsgBox("Shall I delete the existing index and recreate it from scratch?", 260, "MP4 Reindexing")
- If vrAnswer = 6 Then
- HalBrain.RunQuery "DELETE FROM " & vrTableName, vrTempQuery
- End If
- End If
- '------------------
- ' Ask which is the main MP4 folder
- '------------------
- vrMp4Folder = InputBox("Which main folder to you want to reindex?", "MP4 Reindexing", "c:\MP4")
- '------------------
- ' Read the main MP4 folder
- '------------------
- Set vrFso = CreateObject("Scripting.FileSystemObject")
- If vrFso.FolderExists(vrMp4Folder) Then
- GetResponse = "I have indexed all the MP4 files in the specified folder and subfolders. "
- HalBrain.ReadOnlyMode = False
- vrCurrentFolder = vrMp4Folder
- Call ReadFolder(vrCurrentFolder, vrMp4Folder)
- Else
- GetResponse = "The folder " & vrMp4Folder & " does not exist on your computer. "
- End If
- HalBrain.ReadOnlyMode = True
- End If
- '------------------
- ' Check if the user asked for playing a song
- '------------------
- vrMp4 = False
- vrToPlay = ""
- vrNameToPlay = ""
- vrToPlay = UCase(HalBrain.SearchPattern(UserSentence, "PLAY * MOVIE *", 2))
- If vrToPlay <> "" Then
- If HalBrain.CheckTableExistence("vrMp4") = False Then
- GetResponse = "I don't find any MP4 index in our brain. "
- Else
- vrNameToPlay = HalBrain.QABrain(vrToPlay, "vrMp4", 0)
- If vrNameToPlay <> "" Then
- GetResponse = " "
- HalCommands = HalCommands & "<RUNPROG>" & vrNameToPlay & "</RUNPROG>"
- End If
- End If
- HalBrain.ReadOnlyMode = True
- End If
- '------------------
- ' From time to time, Hal will play a movie, according to some word you say
- ' For example, you say: "I am going to California"
- ' Hal will play "California Dreaming"
- '------------------
- '------------------
- ' check the current movie mood factor
- '------------------
- vrMovieMood = HalBrain.TopicSearch("MOVIE", "vrParameter")
- If vrMovieMood = "" Then vrMovieMood = 0
- vrMovieMood = CInt(vrMovieMood)
- If vrMovieMood > 0 Then
- j = Int(Rnd * 10) ' generate a random integer between 0 and 9
- If j < vrMovieMood Then
- vrKeywords = HalBrain.RemoveExtraSpaces(HalBrain.ExtractKeywords(" " & UserSentence & " "))
- vrKeywordList = Split(vrKeywords, " ")
- For i = Ubound(vrKeywordList) To Lbound(vrKeywordList)
- vrNameToPlay = HalBrain.QABrain(vrKeywordList(i), "vrMp4", 0)
- If vrNameToPlay <> "" Then
- GetResponse = "You talked about " & vrKeywordList(i) & " and this reminds me this movie. "
- HalCommands = HalCommands & "<RUNPROG>" & vrNameToPlay & "</RUNPROG>"
- Exit For
- End If
- Next
- End If
- End If
- Rem PLUGIN: FUNCTIONS
- 'The preceding comment is actually a plug-in directive for
- 'the Ultra Hal host application. It allows for code snippets
- 'to be inserted here on-the-fly based on user configuration.
- Function ReadFolder(vrCurrentFolder, vrMp4Folder)
- Set vrFso = CreateObject("Scripting.FileSystemObject")
- Set vrFolder = vrFso.GetFolder(vrCurrentFolder)
- '------------------
- ' Read all the files in the current folder
- '------------------
- Set vrFiles = vrFolder.Files
- For Each vrFile in vrFiles
- '------------------
- ' It's an MP4 file; I add it to the table
- '------------------
- If UCase(Right(vrFile, 3)) = "MP4" Then
- vrSong = Ucase(vrFile)
- vrSong = Replace(vrSong, ".MP4", "")
- vrLen = Len(vrSong)
- vrPos = InStrRev(vrSong, "\")
- vrRight = vrLen - vrPos
- vrSong = LTrim(Right(vrSong, vrRight))
- HalBrain.AddToTable "vrMp4", "Brain", vrSong, vrFile
- End If
- Next
- '------------------
- ' Read all the subfolders in the current folder
- '------------------
- Set vrSubFolders = vrFolder.SubFolders
- For Each vrFolderObject in vrSubFolders
- '------------------
- ' Pay attetion here: This is recursive! We must be sure that it will get to an end
- ' Since we are reading directories on a hard disk, the number of recursions
- ' should never be infinite. However, a very big number of subfolders and files
- ' might lead to memory problems or to performances bottlenecks.
- ' I've tested it on a folder containing about 100 subfolders and 3.000 files,
- ' and got acceptable performances (less than 5 minutes)
- '------------------
- Call ReadFolder(vrFolderObject, vrMp4Folder)
- Next
- End Function
Add Comment
Please, Sign In to add comment