Zabaware Forums > General Discussion
Old School hal plugins
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