# Ankimaker A CLI app to generate anki decks. Flashcards are a great tool for accelerating language learning. You can choose one from the many databases out there, developed by teachers and very conscientious people. It would be even better it is easy to create new flashcards to satisfy personalized needs. For instance, generating flashcards from your bookmarked words in google translator or dictionary add-on on your browser would be much more effective because you would focus in the words you actually are not familiar with including the ones that are more frequent in your professional or hobby contexts than in default common language use. # Usage ## csv From csv file, with configurable parameters and (media to be supported in the future). ```bash ankimaker csv -i file.csv -o deck.apkg --conf conf.yaml ``` #### Configuration File The configuration file required to convert csv can be generated manually or interactively with the following command: ```bash ankimaker make-csv-config -i sample-input.csv -o custon-conf.yaml ``` If you want to create the configuration manually, see instruction in `Manually create configuration file` section. ## Manually create configuration file ```yaml AnkimakerConfig: header: question_column: 'original' answer_column: 'translation' separators: \t filters: - - column: 'original language' values: Chinese - column: 'translation language' values: English - - column: 'original language' values: English - column: 'translation language' values: Chinese ``` Explaining the fields: * **header**: Row index to be used as column. Use null if nonexistent or just don't insert this field. * **question_column**: Name or index of column to be used as question. * **answer_column**: Name or index of the columns containing the answers. . Use null if nonexistent or just don't insert this field. * **separators**: Select the character that separates cells in your csv. * **filters**: This is a list of groups that will be present in your final deck. Each group is defined by a list of rules that must be fulfilled so the row will be part of the group. For instance, the following filter would keep only the rows whose 'original language' column value is Chinese. ```yaml filters: - - column: 'original language' values: Chinese ``` This other filer would keep only the rows that 'original language' column is Chinese and 'translation language' column value is any of English or French. ```yaml filters: - - column: 'original language' values: Chinese - column: 'translation language' values: [English, French] ``` The logic of the groups is that any row satisfying at least one group's rule will be present in the final deck. In short, they're reduced with `or` logic. In the example bellow any row that has 'original language' column value Chinese and any roll that has 'translation language' column value English will be in the final deck. ```yaml filters: - - column: 'original language' values: Chinese - - column: 'translation language' values: English ``` * * * This project is only possible because of the awesome work of genanki team.