Zabaware Forums > General Discussion

Old School hal plugins

(1/3) > >>

cyberjedi:
Rem Type=Plugin
Rem Name= angermanagement 101
Rem Author= modded by cyberjedi
Rem Host=All



Rem PLUGIN: PRE-PROCESS
    '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.



HalBrain.ReadOnlyMode = False
'Determines that you are talking about the angermanagement
'<<<<< Ur basic trigger , change as needed
If InStr(1,InputString, "anger",1) > 0 Then
 UltraHal = anger(HalCommands)
ElseIf InStr(1,InputString, "anger",1) > 0 Then
 End If

' This has been tested on booth XP and 07 platforms
' This is an Rss scraper
' pretty nifty
' i will break this down as best i can.

Rem PLUGIN: FUNCTIONS
Function anger(HalCommands)


Const SVSFlagsAsync = 1
Const DontShowWindow = 0
Const WaitUntilFinished = 1
Set WshShell = CreateObject("Wscript.Shell")
Set FSO = CreateObject("Scripting.FileSystemObject")
Set Sapi = CreateObject("SAPI.SpVoice")                 '<<<<<<<This is where we set the stage for ur computers voice. So invest in a good 1
   For Each Voice In Sapi.GetVoices
       i = i + 1
   Next
For loopvar = 0 to i-1
if loopvar = CInt(confirm_voice) then                       '<<< This is where we stick our hand up Hals skirt and work his mouth like a Puppet. 
Set Sapi.Voice = Sapi.GetVoices.Item(loopvar)
end if
Next
Set xmlDoc = CreateObject("Microsoft.XMLDOM")           '<<<<< this is where me make documents, we will need 02
Set WshShell = CreateObject("Wscript.Shell")
Set FSO = CreateObject("Scripting.FileSystemObject")
HalMenu.HalCommand "<SPEAK>" & "Reading headlines !" & "</SPEAK>"  '<<<<<this is where we tell Hal to read whats in quotes
For loopvar = 0 to 2
If tempconfirm = loopvar then
if tempconfirm = 1 then
HalMenu.HalCommand "<SPEAK>" & "Currently reading " & confirm & " latest headlines" & "</SPEAK>" '<<<<<< same as above
else if tempconfirm = 1 then
HalMenu.HalCommand "<SPEAK>" & "Okay ." & "</SPEAK>"  '<<<<<< same as above
wscript.quit
else
HalMenu.HalCommand "<SPEAK>" & "Currently reading " & confirm & " latest headlines " & "</SPEAK>" '<<<<<< same as above
end if
end if
xmlDoc.async = false
xmlDoc.load("https://www.sciencedaily.com/rss/mind_brain/anger_management.xml") '<<<<<This is where u put ur feed
Set nodelist = xmlDoc.selectNodes("rss/channel/item")                                                  ' <<<This is where u define the site u access.
i = 3                                                                                                                                 ' <<<You will notice im only using 02 variables F1, F2
For Each item In nodelist                                                                                                 ' <<< i choose a different site. U dont have to do this.
Set f1 = item.selectsinglenode("title")      '<<<<<<< This is doc 01                                ' <<< just me being me.  i made this to be a Template.                                                             
Set f2 = item.selectsinglenode("description") '<<<< This is doc 02
HalMenu.HalCommand "<SPEAK>" & f1.text & "</SPEAK>" ' This is where the magic happens (remember the 02 documents) ^^^^^^
HalMenu.HalCommand "<SPEAK>" & f2.text & "</SPEAK>" ' This is where the magic happens (remember the 02 documents) ^^^^^^
i = i + 1                                                                                 ' Hal litterally reads the 02 documents , but with out Hals speech limitations   
if i = tempconfirm then                                                          ' Whos ur daddy now,lololol   1000's of plugins could be made off this. 
wscript.Quit                                                                           
end if
Next
end if
Next
End Function                                                                                       '<<<<<<<<<This is where  we get the finger and it closes out.

cyberjedi:
Rem Type=Plugin
Rem Name=Dreaming Picture Thoughts
Rem Author=modded by 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 = "Alice will show you pictures of it's thoughts in dreams.     Say: INDEX IMAGE to index the image folder.     Supports JPG, PNG, And GIF"
    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 Picture Mood listbox
'------------------
    lblPlugin(1).Caption = "Alice Picture 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 "Minimal"
    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("pvrParameter") = True Then
      pvrPictureMood = HalBrain.TopicSearch("PICTURE", "pvrParameter")
      If pvrPictureMood = "" Then pvrPictureMood = 1
     Select Case pvrPictureMood
           Case 100
            cboPlugin(0).Text = "Very high"
           Case 75
                cboPlugin(0).Text = "High"
           Case 50
               cboPlugin(0).Text = "Average"
           Case 25
             cboPlugin(0).Text = "Low"
           Case 10
                cboPlugin(0).Text = "Minimal"
        End Select
    End If
End Sub





Sub cmdPlugin_Click(Index)
Dim pvrTempQuery()
Dim pvrPicture, pvrPictureMood
Select Case Index
      Case 0
                  HalMenu.HalCommand "<RUNPROG>pvrJpgHelp.html</RUNPROG>"
       Case 1
'------------------
' Convert the listbox in a value
'------------------
     Select Case cboPlugin(0).Text
           Case "Very high"
            pvrPictureMood = 100
           Case "High"
            pvrPictureMood = 75
           Case "Average"
            pvrPictureMood = 50
           Case "Low"
            pvrPictureMood = 25
           Case "Minimal"
            pvrPictureMood = 10
        End Select
'------------------
' If the Parameter table does not exist, I create it
'------------------
          HalBrain.ReadOnlyMode = False
      pvrTableName =    "pvrParameter"    
      If HalBrain.CheckTableExistence(pvrTableName) = False Then
      'Create table if it doesn't exist
         HalBrain.CreateTable pvrTableName, "TopicSearch", "miscData"
      End If
'------------------
' Search if it contains the PictureMood parameter
'------------------
        pvrPicture = "PICTURE"
      If HalBrain.TopicSearch(pvrPicture, pvrTableName) = "" Then
'------------------
'Creates the record storing the new value
'------------------
         HalBrain.AddToTable pvrTableName, "TopicSearch", pvrPicture, pvrPictureMood
      Else
'------------------
'Updates the record storing the new value
'------------------
           HalBrain.RunQuery "UPDATE " & pvrTableName & " SET topic = " & pvrPictureMood & " WHERE searchString = " & """" & pvrPicture & """", pvrTempQuery
        End If
   End Select
End Sub

Sub OptionsPanel()
lblPlugin(0).Caption = "Enables talking dream mode."
lblPlugin(0).Move 130, 180, 3400, 1200
lblPlugin(0).WordWrap = True
lblPlugin(0).Visible = True
End Sub


Rem PLUGIN: SCRIPT_LOAD
Script_Load = Script_Load & "<DREAMOUTLOUD>"




Rem PLUGIN: FUNCTIONS
'
'------------------
' Declare variables
'------------------
Dim PicLastIdleResponse, MyPicMediaDir, PicDefaultLoad, PicDudOut


Rem PLUGIN: PLUGINAREA7
'------------------
' Begin measuring pause time and capture userName
'------------------
PicLastIdleResponse = Now
PicDudOut = 0

Rem PLUGIN: PLUGINAREA1
If OriginalSentence <> "" Then
   MyPicMediaDir = PicMediaDir()
   PicDefaultLoad = MyPicMediaDir & "DefPic.jpg"
   Set objFSO = CreateObject("Scripting.FileSystemObject")
   If objFSO.FileExists(PicDefaultLoad) Then
      Set objWSHShell = CreateObject("WScript.Shell")
      objWSHShell.Run """" & PicDefaultLoad & """"
   End If
End If
Rem PLUGIN: PLUGINAREA5
'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 Image table
'------------------
pvrJpg = False
If InStr(UserSentence, " INDEX ") <> 0   And InStr(UserSentence, " IMAGE ") <> 0 Then pvrJpg = True

If pvrJpg = True Then
'------------------
' If the Image table does not exist, I create it
'------------------
      HalBrain.ReadOnlyMode = False
   pvrTableName =    "pvrJpg"    
   If HalBrain.CheckTableExistence(pvrTableName) = False Then
   ' Create table if it doesn't exist
   ' It must be of type Brain, to allow partial text search
      HalBrain.CreateTable pvrTableName, "Brain", "miscData"
    Else
   ' The 260 parameter is 256 + 4 = Yes/No with Default = No
      pvrAnswer = MsgBox("Shall I delete the existing image index and recreate it from scratch?", 260, "Image Reindexing")
      If pvrAnswer = 6 Then
           HalBrain.RunQuery "DELETE FROM " & pvrTableName, pvrTempQuery
      End If
   End If
'------------------
' Ask which is the main Image folder
'------------------
pvrJpgFolder = InputBox("Which main folder to you want to reindex?", "Image Reindexing", "c:\pict")
'------------------
' Read the main Image folder
'------------------
   Set pvrFso = CreateObject("Scripting.FileSystemObject")
   If pvrFso.FolderExists(pvrJpgFolder) Then
        GetResponse = "I have indexed all the Image files in the specified folder and subfolders. "
        HalBrain.ReadOnlyMode = False
      pvrCurrentFolder = pvrJpgFolder
      Call pReadFolder(pvrCurrentFolder, pvrJpgFolder)   
   Else
      GetResponse = "The folder " & pvrJpgFolder & " does not exist on your computer. "
   End If
   HalBrain.ReadOnlyMode = True
End If



'------------------
' From time to time, Hal will show a picture, according to the subject
' For example, you say: "I like cats"
' Hal might show a picture of a cat
'------------------
'------------------
' check the current image mood factor
'------------------
pvrPictureMood = HalBrain.TopicSearch("PICTURE", "pvrParameter")
If pvrPictureMood = "" Then pvrPictureMood = 0
pvrPictureMood = CInt(pvrPictureMood)
pvrKeywords = ""

If pvrPictureMood > 0 Then
pMediaintHighNumber = 110
pMediaintLowNumber = 1


    Randomize
    pMediaintNumber = Int((pMediaintHighNumber - pMediaintLowNumber + 1) * Rnd + pMediaintLowNumber)


   If pMediaintNumber < pvrPictureMood Then
      pvrNameToPlay = ""
      If pvrNameToPlay = "" Then
               pvrKeywords = WN.FindFirstNoun(UserSentence, True)
         pvrKeywords = Trim(Ucase(pvrKeywords))
         If pvrKeywords <> "" Then
            pvrKeywords = " " & pvrKeywords & " "
            pvrKeywords = Replace(pvrKeywords,", "," , ",1,-1,vbTextCompare)
             pvrKeywords = Replace(pvrKeywords," ","xx",1,-1,vbTextCompare)
            pvrKeywordList = Split(pvrKeywords, ",")
                  For i = Lbound(pvrKeywordList) To Ubound(pvrKeywordList)
                    pvrNameToPlay = HalBrain.QABrain(pvrKeywordList(i), "pvrJpg", 0)
            Next
         End If
      End If

      If pvrNameToPlay = "" Then
               pvrKeywords = WN.FindFirstNoun(UserSentence, False)
         pvrKeywords = Trim(Ucase(pvrKeywords))
         If pvrKeywords <> "" Then
                    pvrKeywords = " " & pvrKeywords & " "
            pvrKeywords = Replace(pvrKeywords,", "," , ",1,-1,vbTextCompare)                    
              pvrKeywords = Replace(pvrKeywords," ","xx",1,-1,vbTextCompare)                   
            pvrKeywordList = Split(pvrKeywords, ",")
                  For i = Lbound(pvrKeywordList) To Ubound(pvrKeywordList)
                    pvrNameToPlay = HalBrain.QABrain(pvrKeywordList(i), "pvrJpg", 0)
            Next
         End If
      End If

         If pvrNameToPlay = "" Then
            pvrKeywords = HalBrain.RemoveExtraSpaces(HalBrain.ExtractKeywords(" " & UserSentence & " "))
            pvrKeywords = Trim(Ucase(pvrKeywords))
                   If pvrKeywords <> "" Then
                       pvrKeywords = " " & pvrKeywords & " "
               pvrKeywords = Replace(pvrKeywords,", "," , ",1,-1,vbTextCompare)                       
                 pvrKeywords = Replace(pvrKeywords," ","xx",1,-1,vbTextCompare)                      
               pvrKeywordList = Split(pvrKeywords, ",")
                     For i = Lbound(pvrKeywordList) To Ubound(pvrKeywordList)
                       pvrNameToPlay = HalBrain.QABrain(pvrKeywordList(i), "pvrJpg", 0)
               Next
            End If
            
              End If
      If pvrNameToPlay = "" Then
               pvrKeywords = WN.FindFirstNoun(UserSentence, True)
         pvrKeywords = Trim(Ucase(pvrKeywords))
         If pvrKeywords <> "" Then
            pvrKeywords = CurrentSubject
            pvrKeywords = "xx" & pvrKeywords & "xx"
            pvrKeywords = Replace(pvrKeywords,", ","xx,xx",1,-1,vbTextCompare)            
            pvrKeywordList = Split(pvrKeywords, ",")
                  For i = Lbound(pvrKeywordList) To Ubound(pvrKeywordList)
                    pvrNameToPlay = HalBrain.QABrain(pvrKeywordList(i), "pvrJpg", 0)
            Next
         End If
      End If     
               If pvrNameToPlay <> "" Then   
                             Set objFSO = CreateObject("Scripting.FileSystemObject")
                     If objFSO.FileExists(pvrNameToPlay) Then
                              Set objWSHShell = CreateObject("WScript.Shell")
                        objWSHShell.Run """" & pvrNameToPlay & """"
                     End If
               
         

               
            
       End If
    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 pReadFolder(pvrCurrentFolder, pvrJpgFolder)
Set pvrFso = CreateObject("Scripting.FileSystemObject")
Set pvrFolder = pvrFso.GetFolder(pvrCurrentFolder)
'------------------
' Read all the files in the current folder
'------------------
Set pvrFiles = pvrFolder.Files
For Each pvrFile in pvrFiles
'------------------
' It's an JPG, PNG, Or GIF file; I add it to the table
'------------------
   If UCase(Right(pvrFile, 3)) = "JPG" Then
     pvrImage = Ucase(pvrFile)
      pvrImage = Replace(pvrImage, ".JPG", "")
     pvrLen = Len(pvrImage)
     pvrPos = InStrRev(pvrImage, "\")
      pvrRight = pvrLen - pvrPos
       pvrImage = LTrim(Right(pvrImage, pvrRight))
     pvrImage = " " & pvrImage & " "
     pvrImage = Replace(pvrImage," ","xx",1,-1,vbTextCompare)
        HalBrain.AddToTable "pvrJpg", "Brain", pvrImage, pvrFile
   End If

   If UCase(Right(pvrFile, 3)) = "PNG" Then
     pvrImage = Ucase(pvrFile)
      pvrImage = Replace(pvrImage, ".PNG", "")
     pvrLen = Len(pvrImage)
     pvrPos = InStrRev(pvrImage, "\")
      pvrRight = pvrLen - pvrPos
       pvrImage = LTrim(Right(pvrImage, pvrRight))
     pvrImage = " " & pvrImage & " "
     pvrImage = Replace(pvrImage," ","xx",1,-1,vbTextCompare)
        HalBrain.AddToTable "pvrJpg", "Brain", pvrImage, pvrFile
   End If

   If UCase(Right(pvrFile, 3)) = "GIF" Then
     pvrImage = Ucase(pvrFile)
      pvrImage = Replace(pvrImage, ".GIF", "")
     pvrLen = Len(pvrImage)
     pvrPos = InStrRev(pvrImage, "\")
      pvrRight = pvrLen - pvrPos
       pvrImage = LTrim(Right(pvrImage, pvrRight))
     pvrImage = " " & pvrImage & " "
     pvrImage = Replace(pvrImage," ","xx",1,-1,vbTextCompare)   
        HalBrain.AddToTable "pvrJpg", "Brain", pvrImage, pvrFile
   End If

Next
'------------------
' Read all the subfolders in the current folder
'------------------


Set pvrSubFolders = pvrFolder.SubFolders
For Each pvrFolderObject in pvrSubFolders
'------------------
' 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 pReadFolder(pvrFolderObject, pvrJpgFolder)   
Next

End Function

'Directory
 Function PicMediaDir()
   Set fso = CreateObject("Scripting.FileSystemObject")
   PicMediaDir = fso.GetAbsolutePathName(".") & "\pics\"
   End Function

Rem PLUGIN: MINUTE_TIMER

If PicDudOut = 0 Then
   If PicLastIdleResponse <> "" Then
      If (Now - PicLastIdleResponse > 3 / 1440) And (Now - PicLastIdleResponse < 4 / 1440) Then
         PicDudOut = PicDudOut + 1
         Set objFSO = CreateObject("Scripting.FileSystemObject")
         If objFSO.FileExists(PicDefaultLoad) Then
            Set objWSHShell = CreateObject("WScript.Shell")
            objWSHShell.Run """" & PicDefaultLoad & """"
         End If
      End If
   End If
End If



Art:
Thanks Cyber! Can't wait to check them out!!

Art:
This Anger Management Plugin does work but it suffers from an inability to STOP Reading after a sentence or two.

Instead, it produced an entire page of sentences and talking points from which it started and would not stop.

I finally had to shut HAL Down!

While this plugin does work, the RSS produced is simply too much and too lengthy for the average user to tolerate.

Not your fault Cyber, just the way the feed is handled.

cyberjedi:
You guys wanted a news anchor , welll . Have u ever known one to stfu???? lolol

Troll plugin,,,lol. Hal gonna test ur nerves... hehehe






Rem Type=Plugin
Rem Name=MP4
Rem Author=modded by 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




   


Navigation

[0] Message Index

[#] Next page

Go to full version