Module: AnkiConnect::Client::Statistics

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

Overview

Methods to query review counts, retrieve review history, and access collection statistics.

Instance Method Summary collapse

Instance Method Details

#cards_reviewed_by_dayArray<Array>

Gets review counts by day.

Returns:

  • (Array<Array>)

    Array of [dateString, count] pairs



19
20
21
# File 'lib/anki_connect/statistics.rb', line 19

def cards_reviewed_by_day
  request(:getNumCardsReviewedByDay)
end

#cards_reviewed_todayInteger

Gets count of cards reviewed today. “Today” uses day start time as configured in Anki.

Returns:

  • (Integer)

    Count of cards reviewed today



12
13
14
# File 'lib/anki_connect/statistics.rb', line 12

def cards_reviewed_today
  request(:getNumCardsReviewedToday)
end

#collection_stats_html(whole_collection: true) ⇒ String

Gets collection statistics report as HTML.

Parameters:

  • whole_collection (Boolean) (defaults to: true)

    Whether to get stats for whole collection (default: true)

Returns:

  • (String)

    HTML string



27
28
29
# File 'lib/anki_connect/statistics.rb', line 27

def collection_stats_html(whole_collection: true)
  request(:getCollectionStatsHTML, wholeCollection: whole_collection)
end

#get_reviews(deck_name, after:) ⇒ Array<Array>

Gets all card reviews for a deck after a certain time.

Parameters:

  • deck_name (String)

    Deck name

  • after (Integer)

    Unix timestamp (reviews after this time, exclusive)

Returns:

  • (Array<Array>)

    Array of 9-tuples: (reviewTime, cardID, usn, buttonPressed, newInterval, previousInterval, newFactor, reviewDuration, reviewType)



36
37
38
# File 'lib/anki_connect/statistics.rb', line 36

def get_reviews(deck_name, after:)
  request(:cardReviews, deck: deck_name, startID: after)
end

#get_reviews_for_cards(card_ids) ⇒ Hash

Gets all reviews for specific cards.

Parameters:

  • card_ids (Array<Integer>)

    Array of card IDs

Returns:

  • (Hash)

    Dictionary mapping card IDs to arrays of review objects with id, usn, ease, ivl, lastIvl, factor, time, type



44
45
46
# File 'lib/anki_connect/statistics.rb', line 44

def get_reviews_for_cards(card_ids)
  request(:getReviewsOfCards, cards: card_ids)
end

#insert_reviews(reviews) ⇒ nil

Inserts review records into database.

Parameters:

  • reviews (Array<Array>)

    Array of 9-tuples (same format as get_reviews output)

Returns:

  • (nil)


60
61
62
# File 'lib/anki_connect/statistics.rb', line 60

def insert_reviews(reviews)
  request(:insertReviews, reviews: reviews)
end

#latest_review_time(deck_name) ⇒ Integer

Gets unix time of latest review for a deck.

Parameters:

  • deck_name (String)

    Deck name

Returns:

  • (Integer)

    Unix timestamp, or 0 if no reviews



52
53
54
# File 'lib/anki_connect/statistics.rb', line 52

def latest_review_time(deck_name)
  request(:getLatestReviewID, deck: deck_name)
end