Способы сделать существующую колоду Anki подколодой другой колоды

Чтобы сделать существующую колоду Anki частью другой существующей колоды Anki, вы можете использовать API AnkiConnect, который обеспечивает программное управление Anki посредством HTTP-запросов. Вот несколько методов, которые вы можете использовать, а также примеры кода:

Метод 1: использование AnkiConnect и функции deckRename

import requests
import json
def make_subdeck(parent_deck_name, subdeck_name):
    url = 'http://localhost:8765'
    headers = {'Content-Type': 'application/json'}

    # Rename the existing subdeck to include the parent deck name
    payload = {
        'action': 'deckRename',
        'version': 6,
        'params': {
            'currentName': subdeck_name,
            'newName': f'{parent_deck_name}::{subdeck_name}'
        }
    }

    response = requests.post(url, headers=headers, data=json.dumps(payload))
    print(response.text)

Метод 2: использование AnkiConnect и функции deckConfigId

import requests
import json
def make_subdeck(parent_deck_name, subdeck_name):
    url = 'http://localhost:8765'
    headers = {'Content-Type': 'application/json'}
    # Get the config ID of the parent deck
    payload = {
        'action': 'deckConfigId',
        'version': 6,
        'params': {
            'deck': parent_deck_name
        }
    }
    response = requests.post(url, headers=headers, data=json.dumps(payload))
    config_id = response.json()['result']
    # Update the existing subdeck's configuration to use the parent deck's config ID
    payload = {
        'action': 'deckUpdateConfigs',
        'version': 6,
        'params': {
            'decks': [subdeck_name],
            'configId': config_id
        }
    }
    response = requests.post(url, headers=headers, data=json.dumps(payload))
    print(response.text)

Метод 3: использование AnkiConnect и функции deckSetParent

import requests
import json
def make_subdeck(parent_deck_name, subdeck_name):
    url = 'http://localhost:8765'
    headers = {'Content-Type': 'application/json'}
    # Set the parent deck for the existing subdeck
    payload = {
        'action': 'deckSetParent',
        'version': 6,
        'params': {
            'deck': subdeck_name,
            'parent': parent_deck_name
        }
    }
    response = requests.post(url, headers=headers, data=json.dumps(payload))
    print(response.text)

Чтобы использовать любой из этих методов, вам необходимо установить и запустить AnkiConnect. В примерах предполагается, что AnkiConnect работает локально на порту по умолчанию (8765). При необходимости измените URL-адрес.