Home
Softono

Anki Apkg Export

Open source JavaScript
178
Stars
44
Forks
17
Issues
8
Watchers
3 years
Last Commit

 About Anki Apkg Export

:book: Generate decks for Anki (spaced repetition software)

Platforms

Web Self-hosted

Languages

JavaScript

Links

Need Help Installing Anki Apkg Export?

We provide expert installation service for this software. Our team will install, configure, and secure Anki Apkg Export on your server. plans start at just $30.

Anki Apkg Export

View on GitHub

anki-apkg-export

Build Status

Universal module for generating decks for Anki.

Port of the Ruby gem https://github.com/albertzak/anki2

Install

$ npm install anki-apkg-export --save

Usage

server

const fs = require('fs');
const AnkiExport = require('anki-apkg-export').default;

const apkg = new AnkiExport('deck-name');

apkg.addMedia('anki.png', fs.readFileSync('anki.png'));

apkg.addCard('card #1 front', 'card #1 back');
apkg.addCard('card #2 front', 'card #2 back', { tags: ['nice', 'better card'] });
apkg.addCard('card #3 with image <img src="https://raw.githubusercontent.com/repeat-space/anki-apkg-export/master/anki.png" />', 'card #3 back');

apkg
  .save()
  .then(zip => {
    fs.writeFileSync('./output.apkg', zip, 'binary');
    console.log(`Package has been generated: output.pkg`);
  })
  .catch(err => console.log(err.stack || err));

browser

Intended to be used with webpack

const webpack = require('webpack');

module.exports = {
  entry: './index.js',
  module: {
    loaders: [
      {
        test: /\.js$/,
        exclude: /node_modules/,
        loader: 'babel'
      },
    ]
  },
  plugins: [
    new webpack.DefinePlugin({
      'process.env': {
        NODE_ENV: JSON.stringify(process.env.NODE_ENV || 'development')
      },
    })
  ],
  output: {
    path: __dirname,
    filename: 'bundle.js'
  }
};

Required loaders:

import { saveAs } from 'file-saver';
import AnkiExport from 'anki-apkg-export';

const apkg = new AnkiExport('deck-name');

// could be a File from <input /> or a Blob from fetch
// take a look at the example folder for a complete overview
apkg.addMedia('anki.png', file);

apkg.addCard('card #1 front', 'card #1 back');
apkg.addCard('card #2 front', 'card #2 back', { tags: ['nice', 'better card'] });
apkg.addCard('card #3 with image <img src="https://raw.githubusercontent.com/repeat-space/anki-apkg-export/master/anki.png" />', 'card #3 back');

apkg
  .save()
  .then(zip => {
    saveAs(zip, 'output.apkg');
  })
  .catch(err => console.log(err.stack || err));

Examples

Changelog

  • v4.0.0 - expose template variables (frontside, backside and css)
  • v3.1.0 - make setting APP_ENV optional
  • v3.0.0 - add tags, ES6 refactor (breaking)
  • v2.0.0 - add media support, update jszip dependency (breaking)
  • v1.0.0 - initial rewrite

Tips

  • issue#25 - Dealing with sql.js memory limits

Related

License

MIT © ewnd9