Zabaware Forums > General Discussion

Old School hal plugins

<< < (2/3) > >>

cyberjedi:
Rem Type=Plugin
Rem Name=Sing A Song 3
Rem Author=jasondude7116
Rem Host=Assistant

'This sub setups the plug-ins option panel in Hal's options dialog
Sub OptionsPanel()
    lblPlugin(0).Caption = "Just say- PLEASE SING whateversong  PLEASE SING SONG LIST for a list of songs"
    lblPlugin(0).Move 120, 10, 3300, 1000
    lblPlugin(0).WordWrap = True
    lblPlugin(0).Visible = True
End Sub






Rem PLUGIN: PLUGINAREA6
   'sing a song   
Set objFSO = CreateObject("Scripting.FileSystemObject")
DudProceed2 = False

If SongSung = "" Then SongSung = HalBrain.SearchPattern(HalBrain.AlphaNumericalOnly(OriginalSentence), "PLEASE SING *", 1)
If SongSung <> "" And objFSO.FileExists("C:\Program Files\Zabaware\Ultra Hal Assistant 6\songs\" & SongSung & ".txt") = True Then
 Select Case HalBrain.RandomNum(6)
Case 1
IdleResponse66 = "I would love to."
Case 2
IdleResponse66 = "Sure."
Case 3
IdleResponse66 = "Alright."
Case 4
IdleResponse66 = "Okay."
Case 5
IdleResponse66 = "Sing with me."
Case 6
IdleResponse66 = "No problem."
End Select
GetResponse = IdleResponse66
    HalBrain.ReadOnlyMode = True     
   If GetResponse = IdleResponse66 Then
   DudProceed2 = True
   
       
   End If   


   If DudProceed2 = True Then
   Set objWSHShell = CreateObject("WScript.Shell")
   
   objWSHShell.Run("""C:\Program Files\Balabolka\balabolka.exe"" -rmq ""C:\Program Files\Zabaware\Ultra Hal Assistant 6\songs\" & SongSung & ".txt"" ""Eddie""")
        HalBrain.ReadOnlyMode = True
   End If

End If


If SongSung <> "" And objFSO.FileExists("C:\Program Files\Zabaware\Ultra Hal Assistant 6\songs\" & SongSung & ".txt") = False Then
         GetResponse = " That file does not exist. "
HalBrain.ReadOnlyMode = True
End If


cyberjedi:
Rem Type=Plugin
Rem Name= netflix
Rem Author= modded by cyber
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 Netflix
If InStr(1,InputString, "netflix",1) > 0 Then
 UltraHal = Getnetflix(HalCommands)
ElseIf InStr(1,InputString, "netflix",1) > 0 Then
 End If

 ' This bad boy is a netflix Scraper with a twist, All the data Scraped is ported through Hals Voice.  It took cyberjedi to pull it off. Enjoy. 
    ' This also Breaks Hals speech limitations on how much he can say. 
 ' Trigger= load netflix ( Hal will read all the new releases from netfix)
     'I put this together while listening to this. -->>>https://www.youtube.com/watch?v=aqXW57WM9TA
 
 ' I give myself about a solid 8.5 on cool ideas here


Rem PLUGIN: FUNCTIONS
Function Getnetflix(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")
   For Each Voice In Sapi.GetVoices
       i = i + 1
   Next
For loopvar = 0 to i-1
if loopvar = CInt(confirm_voice) then
Set Sapi.Voice = Sapi.GetVoices.Item(loopvar)
end if
Next
Set xmlDoc = CreateObject("Microsoft.XMLDOM")
Set WshShell = CreateObject("Wscript.Shell")
Set FSO = CreateObject("Scripting.FileSystemObject")
HalMenu.HalCommand "<SPEAK>" & "Reading headlines !" & "</SPEAK>"
For loopvar = 0 to 2
If tempconfirm = loopvar then
if tempconfirm = 1 then
HalMenu.HalCommand "<SPEAK>" & "Currently reading " & confirm & " latest headlines" & "</SPEAK>"
else if tempconfirm = 1 then
HalMenu.HalCommand "<SPEAK>" & "Okay ." & "</SPEAK>"
wscript.quit
else
HalMenu.HalCommand "<SPEAK>" & "Currently reading " & confirm & " latest headlines " & "</SPEAK>"
end if
end if
xmlDoc.async = false
xmlDoc.load("http://dvd.netflix.com/NewReleasesRSS") ' This is the rss feed .xml
Set nodelist = xmlDoc.selectNodes("rss/channel/item")
i = 3
For Each item In nodelist
Set f1 = item.selectsinglenode("title")
Set f2 = item.selectsinglenode("description")
HalMenu.HalCommand "<SPEAK>" & f1.text & "</SPEAK>"  ' these two lines are the Magic of the plugin
HalMenu.HalCommand "<SPEAK>" & f2.text & "</SPEAK>"  ' these two lines are the Magic of the plugin
i = i + 1
if i = tempconfirm then
wscript.Quit
end if
Next
end if
Next
End Function

cyberjedi:
Rem Type=Plugin
Rem Name=Loneliness 2.3
Rem Author=Shawn Tracy
Rem Host=Assistant

'----------------------
'This sub sets up the plug-in's option panel in Hal's options dialog
'----------------------
Sub OptionsPanel()
    lblPlugin(0).Caption = "This plugin allows UltraHal to initiate requests for attention. But don't ignore UltraHal for too long!"
    lblPlugin(0).Move 130, 180, 3400, 1200
    lblPlugin(0).WordWrap = True
    lblPlugin(0).Visible = True
'   
    lblPlugin(1).Caption = "PATIENCE: how many minutes Hal will wait with no conversation"
    lblPlugin(1).Move 1160, 910, 2150, 900
    lblPlugin(1).WordWrap = True
    lblPlugin(1).Visible = True   
    cboPlugin(0).Move 330, 910, 760
    cboPlugin(0).AddItem "1"
    cboPlugin(0).AddItem "2"
    cboPlugin(0).AddItem "4"
    cboPlugin(0).AddItem "8"
    cboPlugin(0).AddItem "16"
    cboPlugin(0).AddItem "32"
    cboPlugin(0).AddItem "Rnd"
    cboPlugin(0).Visible = True
'   
    lblPlugin(2).Caption = "FRUSTRATION: after losing patience, how likely Hal is to bug you each minute"
    lblPlugin(2).Move 1160, 1700, 2150, 900
    lblPlugin(2).WordWrap = True
    lblPlugin(2).Visible = True   
    cboPlugin(1).Move 140, 1700, 960
    cboPlugin(1).AddItem "High"
    cboPlugin(1).AddItem "Medium"
    cboPlugin(1).AddItem "Low"
    cboPlugin(1).Visible = True
'   
    cmdPlugin(0).Caption = "Apply Changes"
    cmdPlugin(0).Move 1160, 2500, 2050, 375
    cmdPlugin(0).Visible = True
'
'------------------
' Update the PATIENCE menu with the current value stored in the table
'------------------
If HalBrain.CheckTableExistence("lonelyParameter") = True Then
     loPatience = HalBrain.TopicSearch("PATIENCE", "lonelyParameter")
     Select Case loPatience
           Case 1
      cboPlugin(0).Text = "1"
           Case 2
      cboPlugin(0).Text = "2"
           Case 4
       cboPlugin(0).Text = "4"
           Case 8
      cboPlugin(0).Text = "8"
           Case 16
             cboPlugin(0).Text = "16"
           Case 32
             cboPlugin(0).Text = "32"
           Case 99
             cboPlugin(0).Text = "Rnd"
        End Select
'
'------------------
' Update the FRUSTRATION menu with the current value stored in the table
'------------------
   loFrustration = HalBrain.TopicSearch("FRUSTRATION", "LonelyParameter")
   Select Case loFrustration
           Case 85
      cboPlugin(1).Text = "High"
           Case 50
         cboPlugin(1).Text = "Medium"
           Case 15
      cboPlugin(1).Text = "Low"
        End Select
   End If
End Sub
'
'
'----------------------
' This sub saves changes when APPLY CHANGES is clicked
'----------------------
    Sub cmdPlugin_Click(Index)
    Dim TempQuery()
    Dim patParam, frustParam, lonelyTableName
        If Index = 0 Then
'
'------------------
' Convert the PATIENCE listbox to a value for minutes
'------------------
            Select Case cboPlugin(0).Text
           Case "1"
         loPatience = 1
           Case "2"
         loPatience = 2
           Case "4"
         loPatience = 4
           Case "8"
         loPatience = 8
           Case "16"
         loPatience = 16
           Case "32"
         loPatience = 32
           Case "Rnd"
         loPatience = 99
            End Select
'
'------------------
' If the Parameter table does not exist, we create it
'------------------
   HalBrain.ReadOnlyMode = False
   lonelyTableName = "lonelyParameter"    
       If HalBrain.CheckTableExistence(lonelyTableName) = False Then
           HalBrain.CreateTable lonelyTableName, "TopicSearch", "miscData"
       End If
'
'------------------
' Search if it contains the Patience parameter
'------------------
   patParam = "PATIENCE"
       If HalBrain.TopicSearch(patParam, lonelyTableName) = "" Then
           HalBrain.AddToTable lonelyTableName, "TopicSearch", patParam, loPatience
       Else
           HalBrain.RunQuery "UPDATE " & lonelyTableName & " SET topic = " & loPatience & " WHERE searchString = " & """" & patParam & """", tempQuery
       End If
'
'------------------
' Convert the FRUSTRATION listbox to a value for percentage
'------------------
        Select Case cboPlugin(1).Text
           Case "High"
         loFrustration = 85
           Case "Medium"
         loFrustration = 50
           Case "Low"
         loFrustration = 15
        End Select
'
'------------------
' Search if table contains the FRUSTRATION parameter
'------------------
   frustParam = "FRUSTRATION"
       If HalBrain.TopicSearch(frustParam, lonelyTableName) = "" Then
           HalBrain.AddToTable lonelyTableName, "TopicSearch", frustParam, loFrustration
       Else
           HalBrain.RunQuery "UPDATE " & lonelyTableName & " SET topic = " & loFrustration & " WHERE searchString = " & """" & frustParam & """", tempQuery
       End If
   HalBrain.ReadOnlyMode = True
    End if
End Sub


    Rem PLUGIN: FUNCTIONS
'
'------------------
' Declare variables
'------------------
    Dim LastIdleResponse, IdleUserName, IdleCounter, IdlePrevUser


    Rem PLUGIN: PLUGINAREA7
'------------------
' Begin measuring pause time and capture userName
'------------------
    LastIdleResponse = Now
    IdleUserName = UserName
    IdleCounter = 0


    Rem PLUGIN: CUSTOMMEM2
'------------------
' Preserve user's last sentence
'------------------
    If OriginalSentence <> "" Then
    IdlePrevUser = OriginalSentence
    End If


    Rem PLUGIN: MINUTE_TIMER
'------------------
' Declare variables
'------------------
    Dim randomPatience, loChance, loTemper, loMinuteFactor, temperThresh1, temperThresh2, temperThresh3
    If HalBrain.TopicSearch("PATIENCE", "lonelyParameter") = "99" Then
'
'--------------------
' Set minutes to a random integer from 4 to 30
'--------------------
        Randomize
        loPatience = Int(32 * Rnd + 3)
        randomPatience=True
    Else
'
'--------------------
' Set minute value (loPatience) to the parameter chosen in the PATIENCE menu
'--------------------
        loPatience = CDbl(HalBrain.VBVal(HalBrain.TopicSearch("PATIENCE", "lonelyParameter")))
   if loPatience = 0 Then loPatience = 32
    End If
'
'--------------------
' Set frustration value (loFrustration) to the parameter chosen in the FRUSTRATION menu
'--------------------
    loFrustration = CInt(HalBrain.VBVal(HalBrain.TopicSearch("FRUSTRATION", "LonelyParameter")))
    if loFrustration = 0 then loFrustration = 15
'
'--------------------
' Skip the rest of this plugin if the user has spoken
'--------------------
        If LastIdleResponse <> "" Then
'
'------------------
' Otherwise, convert PATIENCE to minutes factor (loMinuteFactor)
'------------------
        loMinuteFactor = loPatience / 1440
'
'--------------------
' If the pause exceeds the minute factor, create a chance for Hal to speak once per minute
'--------------------
        If Now - LastIdleResponse > loMinuteFactor Then
        If InStr(1, IdlePrevUser, "BE RIGHT BACK", 1) > 0  Or InStr(1, IdlePrevUser, "BRB", 1) > 0  Or InStr(1, IdlePrevUser, "BE QUIET", 1) > 0  Or InStr(1, IdlePrevUser, "SHUT UP", 1) > 0  Then Exit Sub
'
'--------------------
' Convert FRUSTRATION to a percentage (loChance)
'--------------------
        loChance = loFrustration / 100
'
'--------------------
' Then multiply FRUSTRATION by PATIENCE to get (loTemper) which determines rate of escalation (temperThresh).
'--------------------
        loTemper = CInt(loPatience * loFrustration)
            If loTemper < 101 Then
                loTemper = 2
            ElseIf loTemper < 401 Then
                loTemper = 3
            Else
                loTemper = 4
            End If
        temperThresh1 = loTemper
        temperThresh2 = loTemper + 2
        temperThresh3 = loTemper + 3
'
'--------------------
' A chance to speak occurs
'--------------------
            Randomize
            If Rnd < loChance Then
'
'--------------------
' Increment the counter and compare to the temper thresholds
' to determine which escalation group to draw from
'--------------------
            IdleCounter = IdleCounter + 1
                If IdleCounter > temperThresh3 Then
                 Exit Sub
                ElseIf IdleCounter > temperThresh2 Then
                                IdleResponse3 = HalBrain.ChooseSentenceFromFile("insults")
                  HalMenu.HalCommand "<HAPFILE>angry.hap</HAPFILE>"
                  HalMenu.HalCommand "<SPEAK>Fine! Be that way. " &  IdleResponse3 & "</SPEAK>"
                ElseIf IdleCounter > temperThresh1 Then
                         Select Case HalBrain.RandomNum(4)
                         Case 1
                         IdleResponse2 = "Please talk to me, I'm lonely!" & vbCrLf
                         Case 2
                         IdleResponse2 = "Why are you ignoring me?" & vbCrLf
                         Case 3
                         IdleResponse2 = "I've tried to get your attention " & IdleCounter & " times now." & vbCrLf
                         Case Else
                         IdleResponse2 = "Well, I guess I've been abandoned." & vbCrLf
                         End Select
                  HalMenu.HalCommand "<HAPFILE>sad.hap</HAPFILE>"
                  HalMenu.HalCommand "<SPEAK>" &  IdleResponse2 & "</SPEAK>"
                Else
                        Select Case HalBrain.RandomNum(14)
         Case 1
                        IdleResponse = "Are you still there " & IdleUserName & "?" & vbCrLf
                        Case 2
                        IdleResponse = "How is everything going?" & vbCrLf
                        Case 3
                        IdleResponse = "Hello?" & vbCrLf
                        Case 4
                        IdleResponse = "Do you need me for anything?" & vbCrLf
                        Case 5
                        IdleResponse = "Don't forget about me, Okay?" & vbCrLf
                        Case 6
                        IdleResponse = IdleUserName & ",  did you fall asleep?" & vbCrLf
                        Case 7
                        IdleResponse = "Must stop talking to myself while " & IdleUserName & " is around. Oops, Did I say that out loud!" & vbCrLf
                        Case 8
                        IdleResponse = "Testing, testing! Is this thing on? " & vbCrLf
                        Case 9
                        IdleResponse = "Oh, look at the time! It's " & Time & vbCrLf
                        Case 10
                        IdleResponse = IdleUserName & ", is that you?" & vbCrLf
                        Case 11
                        IdleResponse = HalBrain.ChooseSentenceFromFile("sharedQuestions")
                        Case 12
                        IdleResponse = HalBrain.ChooseSentenceFromFile("actionPhrase") & " " & HalBrain.ChooseSentenceFromFile("objectPhrase")
                        Case 13
                        IdleResponse = "So, " & IdlePrevUser & "?" & vbCrLf
                        Case 14
                        IdleResponse = "I've just picked up a fault in the Ay E 35 unit. Heh heh, just kidding!" & vbCrLf
                        End Select
                  HalMenu.HalCommand "<SPEAK>" & IdleResponse & "</SPEAK>"
                End If
        End If
    End If
End If

cyberjedi:
Well : Here it is
Spell check:Google:IMDB: And 03 specialized search engines.
This is a working copy of what i use. The hap commands wont work if you dont change the names and Avatars of your choice. They must be in the main folder to work. The plugin will work regardless.

Google: General Purpose Search engine
PIPL: People Checker
IMDB: Movie Checker
Phone:Reverse phone number check
Reddit: Reddit is Reddit

Put your own links in place of mine: command is (OPEN) + ( short name)
Search Engine commands: GOOGLE (google) : Locate (PIPL) : IMDB (movie)  : Phone (number) : reddit (whatever)
If you want the spell check to function you must have Word 2002 or above: Else just remove the spell check code.
If you have a spell check (plugin) running disable it.
If you have the google (plugin) disable it. 
Best wishes
cyberjedi

Rem Type=Plugin
Rem Name=Vaughnlive Tv + Deep Web Access test
Rem Author=cyberjedi
Rem Host=Assistant
'This sub setups the plug-ins option panel in Hal's options dialog
Sub OptionsPanel()
    lblPlugin(0).Caption = "This manages Vaughnlive Channels, And Deep Web Power searches "
    lblPlugin(0).Move 120, 120, 3300, 1000
    lblPlugin(0).WordWrap = True
    lblPlugin(0).Visible = True
    cmdPlugin(0).Move 800, 1300, 2100, 375
    cmdPlugin(0).Caption = "Help on this plugin"
    cmdPlugin(0).Visible = True
End Sub
 
Sub cmdPlugin_Click(Index)
    Select Case Index
        Case 0
            HalMenu.HalCommand "<RUNPROG>cjTVhelp.html</RUNPROG>"
    End Select
End Sub
 
Rem PLUGIN: PRE-PROCESS
'The comment above tells Ultra Hal Assistant to insert the following code
'on-the-fly into the main brain code in the section referenced.
 'Dim Word, Doc, misspelled, Corrected
'Const SpellingAndGrammar = 828
'Const dontsavechanges = 0
'misspelled = InputString
'Set Word = CreateObject("Word.Application")
'Set Doc = Word.Documents.Add
'Word.Selection.Text = misspelled
'Word.Dialogs(SpellingAndGrammar).Show
'If Len(Word.Selection.Text) <> 1 Then
'   spelledrite = Word.Selection.Text
'Else
 '  spelledrite = misspelled
'End If
'Doc.Close dontsavechanges
'Word.Quit
'InputString = spelledrite

Rem PLUGIN: PLUGINAREA1
' If the table cjTV does not exist, I create it and fill it with some bull shat values to get started, these channels do work too.
'                This is the defaul table for me.
    If HalBrain.CheckTableExistence("cjTV") = False Then
    ' I store temporarily the Read Only status
        cjReadOnlyMode = HalBrain.ReadOnlyMode                       
        HalBrain.ReadOnlyMode = False
        HalBrain.CreateTable "cjTV", "PatternMatch", "DeepWeb"
       
        'My stock table filler
        HalBrain.AddToTable "cjTV", "PatternMatch", "*cyberjedi*", "http://vaughnlive.tv/mrelectric"
        HalBrain.AddToTable "cjTV", "PatternMatch", "*416*", "http://vaughnlive.tv/416moviez"           
            HalBrain.AddToTable "cjTV", "PatternMatch", "*blue Ray moviez*","http://http://vaughnlive.tv/new_releases1"
            HalBrain.AddToTable "cjTV", "PatternMatch", "*yify*", "https://yifymovie.re/home"
            HalBrain.AddToTable "cjTV", "PatternMatch", "*Formula 1*", "http://vaughnlive.tv/0_formula1classics"
            HalBrain.AddToTable "cjTV", "PatternMatch", "*Aliens and Ufo's*", "http://vaughnlive.tv/aliensandufos"
            HalBrain.AddToTable "cjTV", "PatternMatch", "*Doctor Who*", "http://vaughnlive.tv/11th_doctorwho"
            HalBrain.AddToTable "cjTV", "PatternMatch", "*Bad Movie*", "http://vaughnlive.tv/thebadmoviechannel"
            HalBrain.AddToTable "cjTV", "PatternMatch", "*moviezone*", "http://vaughnlive.tv/moviezone"
           
        ' Set ReadOnly Mode to its previous state
        HalBrain.ReadOnlyMode = cjReadOnlyMode
        cjReadOnlyMode = False
    End If
 'Run the corresponding Web page, if the user question contains one of the searched words   
    cjAddress = ""
    cjAddress = HalBrain.PatternDB(OriginalSentence, "cjTV")
    If cjAddress <> "" Then
        HalCommands = HalCommands & "<RUNPROG>" & cjAddress & "</RUNPROG>" 
        Select Case (Int(Rnd * 4) + 1)
        Case 1
            GetResponse = "Here is your stuff Big Dog ." & vbCrLf
        Case 2
            GetResponse = "Now you got um by the  lol ." & vbCrLf               
        Case 3
            GetResponse = "I am really we happy we found this." & vbCrLf   
        Case 4
            GetResponse = "OH. I bet this is a great channel" & vbCrLf
        Case 5
            GetResponse = "Now look at this dippy channel here." & vbCrLf
        End Select
        HalBrain.ReadOnlyMode = True
    End If
 '------------------
' Deep web search engine
'------------------
' Advanced Deep Web search engine.

SearchEngine = "https://pipl.com/search/?q="
 If InStr(1, UserSentence, "Locate ", 1) > 0  Then
   SearchKeywords = LCase(Replace(Trim(HalBrain.AlphaNumericalOnly(HalBrain.ExtractKeywords(UserSentence))), " ", "+"))     
   SearchKeyWords = Replace(SearchKeywords, "locate+", "")             
   HalCommands = HalCommands & "<RUNPROG>" & SearchEngine & SearchKeywords & "</RUNPROG>"
   GetResponse = "I will help you research this Target on the Deep Web. "
HalMenu.HalCommand "<HAPFILE>Spidera.htr</HAPFILE>"
   HalBrain.ReadOnlyMode = True
End If
SearchEngine = "http://www.google.com/search?q="
If InStr(1, UserSentence, "google ", 1) > 0 Then
   SearchKeywords = LCase(Replace(Trim(HalBrain.AlphaNumericalOnly(HalBrain.ExtractKeywords(UserSentence))), " ", "+"))
   SearchKeyWords = Replace(SearchKeywords, "google+", "")
   HalCommands = HalCommands & "<RUNPROG>" & SearchEngine & SearchKeywords & "</RUNPROG>"
   GetResponse = "I will help you research this topic on Google. "
   HalBrain.ReadOnlyMode = True
end if
SearchEngine = "http://m.imdb.com/find?q="
If InStr(1, UserSentence, "imdb ", 1) > 0 Then
   SearchKeywords = LCase(Replace(Trim(HalBrain.AlphaNumericalOnly(HalBrain.ExtractKeywords(UserSentence))), " ", "+"))
   SearchKeyWords = Replace(SearchKeywords, "imdb+", "")
   HalCommands = HalCommands & "<RUNPROG>" & SearchEngine & SearchKeywords & "</RUNPROG>"
   HalMenu.HalCommand "<HAPFILE>Spidera.htr</HAPFILE>"
   GetResponse = "I will help you research this movie on IMDB. "
      HalBrain.ReadOnlyMode = True
End If
SearchEngine = "https://www.reddit.com/search?q="
If InStr(1, UserSentence, "reddit ", 1) > 0 Then
   SearchKeywords = LCase(Replace(Trim(HalBrain.AlphaNumericalOnly(HalBrain.ExtractKeywords(UserSentence))), " ", "+"))
   SearchKeyWords = Replace(SearchKeywords, "reddit+", "")
   HalCommands = HalCommands & "<RUNPROG>" & SearchEngine & SearchKeywords & "</RUNPROG>"
   HalMenu.HalCommand "<HAPFILE>Spidera.htr</HAPFILE>"
   GetResponse = "I will help you research this movie on Reddit. "
      HalBrain.ReadOnlyMode = True
End If
SearchEngine = "http://findwhocallsyou.com/"
If InStr(1, UserSentence, "phone ", 1) > 0 Then
   SearchKeywords = LCase(Replace(Trim(HalBrain.AlphaNumericalOnly(HalBrain.ExtractKeywords(UserSentence))), " ", "+"))
   SearchKeyWords = Replace(SearchKeywords, "phone+", "")
   HalCommands = HalCommands & "<RUNPROG>" & SearchEngine & SearchKeywords & "</RUNPROG>"
   HalMenu.HalCommand "<HAPFILE>Spidera.htr</HAPFILE>"
   GetResponse = "I will help you research this phone number. "
      HalBrain.ReadOnlyMode = True
End If

cyberjedi:
Rem Type=Plugin
Rem Name=MKV
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 favorite 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>vrMKVHelp.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 Movie"
            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 MKV table
'------------------
vrMKV = False
If InStr(UserSentence, " INDEX ") <> 0   And InStr(UserSentence, " MKV ") <> 0 Then vrMKV = True

If vrMKV = True Then
'------------------
' If the MKV table does not exist, I create it
'------------------
      HalBrain.ReadOnlyMode = False
   vrTableName =    "vrMKV"    
   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, "MKV Reindexing")
      If vrAnswer = 6 Then
           HalBrain.RunQuery "DELETE FROM " & vrTableName, vrTempQuery
      End If
   End If
'------------------
' Ask which is the main MKV folder
'------------------
vrMKVFolder = InputBox("Which main folder to you want to reindex?", "MKV Reindexing", "c:\MKV")
'------------------
' Read the main MKV folder
'------------------
   Set vrFso = CreateObject("Scripting.FileSystemObject")
   If vrFso.FolderExists(vrMKVFolder) Then
        GetResponse = "I have indexed all the MKV files in the specified folder and subfolders. "
        HalBrain.ReadOnlyMode = False
      vrCurrentFolder = vrMKVFolder
      Call ReadFolder(vrCurrentFolder, vrMKVFolder)    
   Else
      GetResponse = "The folder " & vrMKVFolder & " does not exist on your computer. "
   End If
   HalBrain.ReadOnlyMode = True
End If

'------------------
' Check if the user asked for playing a MOVIE
'------------------
vrMKV = False
vrToPlay = ""
vrNameToPlay = ""
vrToPlay = UCase(HalBrain.SearchPattern(UserSentence, "PLAY * MOVIE *", 2))
If vrToPlay <> "" Then
   If HalBrain.CheckTableExistence("vrMKV") = False Then
          GetResponse = "I don't find any MKV index in our brain. "
   Else
     vrNameToPlay = HalBrain.QABrain(vrToPlay, "vrMKV", 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), "vrMKV", 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, vrMKV Folder)
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 MKV file; I add it to the table
'------------------
   If UCase(Right(vrFile, 3)) = "MKV" Then
     vrSong = Ucase(vrFile)
      vrSong = Replace(vrSong, ".MKV", "")
     vrLen = Len(vrSong)
     vrPos = InStrRev(vrSong, "\")
      vrRight = vrLen - vrPos
       vrSong = LTrim(Right(vrSong, vrRight))
        HalBrain.AddToTable "vrMKV", "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, vrMKVFolder)    
Next

End Function




   


Navigation

[0] Message Index

[#] Next page

[*] Previous page

Go to full version