Для редактирования командной строки Anki карточки в MySQL

1492
Léo Léopold Hertz 준영

Мне нужно внести небольшое изменение в карты памяти 77777 Anki, преимущественно программно, а не с помощью инструмента замены, которого недостаточно. Первоначально я импортировал данные в виде CSV-файлов, где данные легко изменить. Я получил ответ от их поддержки : они используют MySQL в качестве базы данных:

Ну, во-первых, я предполагаю, что нужно понимать чтение и запись в базу данных MySQL. Если это не то, что вы знаете, я бы просто остановился на этом.

Я хотел бы знать их схему базы данных, например. Пример псевдокоманды, которую я хотел бы запустить на одной колоде

sed s/;/1)/ [anki-deck's-cards] 

где сопоставляются только первые записи новых строк. На самом деле, требование состоит в том, чтобы сделать простую арифметику. Я не знаю деталей соединителя их MySQL. Я хотел бы получить обзор их деталей MySQL.

Как вы можете редактировать карты в колоде в Anki Flashcards?

3
Если изменение таково, что изменяется только одна сторона карты, то вы можете повторно импортировать обновленный файл CSV, убедившись, что карты с одинаковым содержимым на лицевой стороне (или на оборотной стороне) перезаписываются / обновляются, а не добавляются снова. Затем вы можете внести изменения на другой стороне, если это необходимо, и повторить. Это решит вашу проблему? musically_ut 8 лет назад 0

2 ответа на вопрос

2
hlovdal

Файлы apkg содержат встроенный файл базы данных sqlite. Например, колода « Столичные города Южной Америки» загружается как Capital_Cities_of_South_America.apkg, который на самом деле представляет собой zip-файл. Распакуйте это, чтобы извлечь несколько файлов

$ unzip ../Capital_Cities_of_South_America.apkg Archive: ../Capital_Cities_of_South_America.apkg inflating: collection.anki2  extracting: 0  extracting: 1  extracting: 2  extracting: 3  extracting: 4  extracting: 5  extracting: 6  extracting: 7  extracting: 8  extracting: 9  extracting: 10  extracting: 11  inflating: media  $ 

но интересным является collection.anki2, который является файлом sqlite.

$ sqlite3 collection.anki2  SQLite version 3.13.0 2016-05-18 10:57:30 Enter ".help" for usage hints. sqlite> .tables cards col graves notes revlog sqlite> .dump notes PRAGMA foreign_keys=OFF; BEGIN TRANSACTION; CREATE TABLE notes ( id integer primary key, /* 0 */ guid text not null, /* 1 */ mid integer not null, /* 2 */ mod integer not null, /* 3 */ usn integer not null, /* 4 */ tags text not null, /* 5 */ flds text not null, /* 6 */ sfld integer not null, /* 7 */ csum integer not null, /* 8 */ flags integer not null, /* 9 */ data text not null /* 10 */ ); INSERT INTO "notes" VALUES(1475868715241,'P1Dh$4r;;P',1475850444584,1476205558,13,' South_America capitals ','Capital of French Guiana?Cayenne<div><br /></div><div><img src="053_Hood_135.jpg" /></div>','Capital of French Guiana?',511387741,0,''); INSERT INTO "notes" VALUES(1476020723949,'D3h>i:~1(}',1475850444584,1476205484,13,' South_America capitals ','Capital of Brazil?Brasilia<div><br /></div><div><img src="brasilia-006.jpg" /></div>','Capital of Brazil?',139249191,0,''); INSERT INTO "notes" VALUES(1476020740304,'I=w5}vz;',1475850444584,1476205460,13,' South_America capitals ','Capital of Guyana?Georgetown<div><br /></div><div><img src="georgetown-guyana.jpg" /></div>','Capital of Guyana?',1383243232,0,''); INSERT INTO "notes" VALUES(1476021159549,'d_}(&UOcN0',1475850444584,1476205474,13,' South_America capitals ','Capital of Venezuela?Caracas<div><br /></div><div><img src="CaracasAvila.jpg" /></div>','Capital of Venezuela?',3460219780,0,''); INSERT INTO "notes" VALUES(1476021305082,'hF6^dUFOU_',1475850444584,1476205202,13,' South_America capitals ','Capital of Colombia?Bagota<div><br /></div><div><!--anki--><img src="asuncion-paraguay.jpg" /></div>','Capital of Colombia?',3745298320,0,''); INSERT INTO "notes" VALUES(1476021329578,'BF<CKCw&@X',1475850444584,1476021353,4,' South_America capitals ','Capital of Ecuador?Quito','Capital of Ecuador?',93805795,0,''); INSERT INTO "notes" VALUES(1476021353212,'s-x)P3;UJ+',1475850444584,1476205337,13,' South_America capitals ','Capital of Peru?Lima<div><br /></div><div><img src="lima-miraflores-rw.jpg" /></div>','Capital of Peru?',1899195448,0,''); INSERT INTO "notes" VALUES(1476021369814,'p~,SBD&um#',1475850444584,1476205352,13,' South_America capitals ','Capital of Bolivia?La Paz<div><br /></div><div><img src="La_Paz_Skyline.jpg" /></div>','Capital of Bolivia?',2475357406,0,''); INSERT INTO "notes" VALUES(1476021495601,'h(+l3fJs48',1475850444584,1476205311,13,' South_America capitals ','Capital of Uruguay?Montevideo<div><br /></div><div><img src="montevideo-uruguay.jpg" /></div><div><br /></div><div>[sound:rec1476205311.mp3]</div>','Capital of Uruguay?',3423412928,0,''); INSERT INTO "notes" VALUES(1476021520017,'g[QWvAO[:]',1475850444584,1476205181,13,' South_America capitals ','Capital of Paraguay?Asuncion<div><br /></div><div><img src="asuncion-paraguay.jpg" /></div><div><br /></div><div>[sound:rec1476205181.mp3]</div>','Capital of Paraguay?',3088135100,0,''); CREATE INDEX ix_notes_usn on notes (usn); CREATE INDEX ix_notes_csum on notes (csum); COMMIT; sqlite>  

На этом этапе вы можете обновить записи стандартными командами sql.

Было бы здорово иметь здесь несколько базовых примеров и т.д., чтобы заменить опечатку во всех ваших картах Anki. Léo Léopold Hertz 준영 7 лет назад 0
Для редактирования экспорта в JSON с помощью плагина [CrowdAnki] (https://ankiweb.net/shared/info/1788670778), вероятно, будет более простой путь. hlovdal 7 лет назад 1
0
fsalazar_sch

In the manual of anki there's a help, the anki cards are written in XML, and te template has a similat sintaxis http://ankisrs.net/docs/manual.html#cards-and-templates

Importing Anki can import text files, packaged Anki decks created by the export feature, Mnemosyne 2.0 .db files, and SuperMemo .xml files. To import a file, click the File menu and then "Import".

Они используют базу данных MySQL со своей системой. XML это отдельная история. Léo Léopold Hertz 준영 8 лет назад 1