Module: AnkiConnect::Client::Media

Included in:
AnkiConnect::Client
Defined in:
lib/anki_connect/media.rb

Overview

Methods to store, retrieve, and manage media files.

Instance Method Summary collapse

Instance Method Details

#delete_media(filename) ⇒ nil

Deletes a media file.

Parameters:

  • filename (String) —

    File name

Returns:

  • (nil)


53
54
55
# File 'lib/anki_connect/media.rb', line 53

def delete_media(filename)
  request(:deleteMediaFile, filename: filename)
end

#media_directory ⇒ String

Gets the media folder path.

Returns:

  • (String) —

    Absolute path



45
46
47
# File 'lib/anki_connect/media.rb', line 45

def media_directory
  request(:getMediaDirPath)
end

#media_files(pattern: '*') ⇒ Array<String>

Lists media files matching a pattern.

Parameters:

  • pattern (String) (defaults to: '*') —

    Glob pattern

Returns:

  • (Array<String>) —

    Array of filenames



38
39
40
# File 'lib/anki_connect/media.rb', line 38

def media_files(pattern: '*')
  request(:getMediaFilesNames, pattern: pattern)
end

#retrieve_media(filename) ⇒ String, Boolean

Retrieves a media file's contents.

Parameters:

  • filename (String) —

    File name

Returns:

  • (String, Boolean) —

    Base64-encoded contents, or false if not found



30
31
32
# File 'lib/anki_connect/media.rb', line 30

def retrieve_media(filename)
  request(:retrieveMediaFile, filename: filename)
end

#store_media(filename, data: nil, path: nil, url: nil, skip_hash: nil, overwrite: true) ⇒ String?

Stores a file in the media folder.

Parameters:

  • filename (String) —

    File name (prefix with _ to prevent auto-deletion)

  • data (String, nil) (defaults to: nil) —

    Base64-encoded contents

  • path (String, nil) (defaults to: nil) —

    Absolute file path

  • url (String, nil) (defaults to: nil) —

    URL to download from

  • skip_hash (String, nil) (defaults to: nil) —

    MD5 hash that causes an identical upload to be skipped

  • overwrite (Boolean) (defaults to: true) —

    If true, overwrites existing file

Returns:

  • (String, nil) —

    Filename, or nil when skipped by hash

Raises:

  • (ArgumentError)


16
17
18
19
20
21
22
23
24
# File 'lib/anki_connect/media.rb', line 16

def store_media(filename, data: nil, path: nil, url: nil, skip_hash: nil, overwrite: true)
  sources = { data: data, path: path, url: url }.reject { |_key, value| value.nil? }
  raise ArgumentError, 'provide exactly one of data, path, or url' unless sources.one?

  params = { filename: filename, deleteExisting: overwrite }
  params.merge!(sources)
  params[:skipHash] = skip_hash unless skip_hash.nil?
  request(:storeMediaFile, **params)
end