Thinking of mindmanager macro to use AnkiConnect

hi,

turns out AI could help those knew programming save the time to re-learn a “grammar”.

i used AI to help write several mindmamager macros, one even use vba to call python.
just pass text and a token value. but let me know i can do it.

previously i asked here seems no one interested. but i am a die hard mm fans.

i think i will do it. just pass info to AnkiConnect.

If others have idea, wellcome to suggest

thanks.

regarding the old post:

now i am powered by gpt,

it used <1 min to teach me how to do that,
i’ll try and verify, and improve that.

gpt:

Sure, I would be happy to help you with that.

MindManager is a popular mind mapping software that allows users to visually organize their thoughts and ideas. WinWrap is a scripting engine that allows developers to add scripting capabilities to their applications. AnkiConnect is a web API that allows users to interact with the popular flashcard app, Anki.

To write a MindManager macro using WinWrap to send data to AnkiConnect, you would need to follow these general steps:

  1. Install WinWrap Basic for MindManager: You can download the WinWrap Basic for MindManager installer from the WinWrap website. Follow the installation instructions to install the software.

  2. Register for an AnkiConnect API key: To use AnkiConnect, you will need to register for an API key. You can do this by visiting the AnkiConnect website and following the instructions.

  3. Write the macro: Once you have installed WinWrap Basic for MindManager and registered for an AnkiConnect API key, you can start writing your macro. The macro should use WinWrap to send data to the AnkiConnect API. You can find the AnkiConnect API documentation on the AnkiConnect website.

Here’s an example of what the macro might look like:

Sub SendToAnkiConnect()

    ' Define variables
    Dim httpRequest As Object
    Dim response As String
    Dim data As String

    ' Set the data to send to AnkiConnect
    data = "{'action': 'addNote',
             'version': 6,
             'params': {
                 'note': {
                     'deckName': 'My Deck',
                     'modelName': 'Basic',
                     'fields': {
                         'Front': 'Question',
                         'Back': 'Answer'
                     },
                     'options': {
                         'allowDuplicate': False
                     },
                     'tags': [
                         'tag1',
                         'tag2'
                     ]
                 }
             }
         }"

    ' Create the HTTP request object
    Set httpRequest = CreateObject("WinHttp.WinHttpRequest.5.1")

    ' Set the request properties
    httpRequest.Open "POST", "http://localhost:8765", False
    httpRequest.setRequestHeader "Content-Type", "application/json"

    ' Send the request
    httpRequest.send data

    ' Get the response
    response = httpRequest.responseText

End Sub

This macro sends a request to the AnkiConnect API to add a new note to the “My Deck” deck with the “Basic” note type. The note has a front field with the value “Question” and a back field with the value “Answer”. It also sets the “allowDuplicate” option to false and adds two tags, “tag1” and “tag2”.

You will need to modify the macro to suit your specific requirements, such as changing the deck name, note type, and field values.

I hope this helps! Let me know if you haveany further questions or need more assistance.

hi, turns out gpt4 worked well.

here is a simple script that purely is VBA (no need pass info to python and pass to ankiconnect) that could add a card successfully despite it report error.

base on this i could easily add the other features i want.

Option Explicit

Sub AddCardToAnki(front As String, back As String) 
    Dim objRequest As Object
    Dim strUrl As String
    Dim strPayload As String
    Dim strResponse As String
    Dim blnSuccess As Boolean
    
    ' Set the AnkiConnect API URL
    strUrl = "http://localhost:8765"

    ' Prepare the JSON payload
    strPayload = "{""action"": ""addNote"", ""version"": 6, ""params"": {""note"": {""deckName"": ""Default"", ""modelName"": ""Basic"", ""fields"": {""Front"": """ & front & """, ""Back"": """ & back & """}, ""options"": {""allowDuplicate"": false}, ""tags"": []}}}"

    ' Create an HTTP request
    Set objRequest = CreateObject("MSXML2.ServerXMLHTTP")

    With objRequest
        .Open "POST", strUrl, False
        .setRequestHeader "Content-Type", "application/json"
        .send strPayload
        strResponse = .responseText
    End With

    ' Check the response for errors
    blnSuccess = InStr(1, strResponse, """error"":null") > 0

    ' Display a message based on the result
    If blnSuccess Then
        MsgBox "Card successfully added to Anki."
    Else
        MsgBox "Error adding card to Anki. Please ensure Anki is running with AnkiConnect installed."
    End If
End Sub

Sub Main()
    Dim strFront As String
    Dim strBack As String

    ' Set the front and back text for the card
    strFront = "front1"
    strBack = "back1"

    ' Add the card to Anki
    AddCardToAnki strFront, strBack
End Sub