slavetto / anki-cards-web-browser

Mikä tämä on?

Tämä dokumentti selittää, miten apkg-arkistojen käsittelyn tulisi toimia.

.apkg-tiedostojen rakenne

Anki.apkg-tiedostot ovat vain zip-arkistoja, jotka sisältävät seuraavat tiedostot:

  • collection.anki2: sqlite-tietokanta, joka sisältää kortit, muistiinpanot, muistiinpanomallit jne…
  • Tiedostot nimeltä 1,2,3,4…: Korttien käyttämät kuvat
  • media: Json-tiedosto, joka sisältää kuvien ja niiden alkuperäisten nimien väliset kartoitukset (esim. tiedosto 1 on itse asiassa nimeltään latex-96c15f8a1af25e7a2eec64f7c6fedafe12363352.png korteissa).

Kokoelman rakenne.anki2

Tämä on varsinainen tietokanta, joka sisältää kaikki muistiinpanot ja muut hyödylliset tiedot, joita käytämme katselukoneen luomiseen. Siitä, mitä tietokanta tarkalleen ottaen sisältää, on olemassa erittäin yksityiskohtainen opas.Tässä dokumentissa kuvaamme vain sen, mitä meidän täytyy poimia tietokannasta, jotta voimme luoda katselukoneen.

Muistiinpanojen hakeminen

Muistiinpanot tallennetaan notes-tauluun. Sarakkeet, joita tarvitsemme tuosta taulusta ovat:

  • id: Muistiinpanon yksilöllinen tunniste
  • mid: Korttimallin tunnus (kuvataan myöhemmin, miten se saadaan)
  • tags: Muistiinpanoon liittyvät tunnisteet
  • fld: Muistiinpanon kentät. Tämä on syötettävä korttimalliin korttien luomiseksi.Se sisältää kaikki kentät, jotka on erotettu 0x1f (31) -merkillä. Kenttien järjestyson täsmälleen sama kuin muistiinpanon mallissa esitetty.

Korttimallien hakeminen

Voidaksemme luoda kortit muistiinpanoista, meidän on haettava korttimalli. Malli kertoo, kuinka monta korttia yhdestä muistiinpanosta on luotava, mikä on muistiinpanoa ympäröivä HTML, miten notes.fld:n kentät on esitettävä.

Malli löytyy col-taulukon models-sarakkeesta. Huomaa, että col-taulukko sisältää aina vain yhden tietueen. Malli tallennetaan JSON-muodossa; tämä on esimerkki siitä, miltä mallin JSON näyttää kahdella mallilla:

{ "1471435193999": { "vers": , "name": "Istruzioni Assembly", "tags": , "did": 1493040141981, "usn": 625, "req": ], ] ], "flds": , "sticky": false, "rtl": false, "ord": 0, "font": "Arial", "size": 20 }, { "name": "Descrizione", "media": , "sticky": false, "rtl": false, "ord": 1, "font": "Arial", "size": 20 }, { "name": "Architettura", "media": , "sticky": true, "rtl": false, "ord": 2, "font": "Arial", "size": 20 } ], "sortf": 0, "tmpls": , "mod": 1493150692, "latexPost": "\end{document}", "type": 0, "id": "1471435193999", "css": ".card {\n font-family: arial;\n font-size: 20px;\n text-align: center;\n color: black;\n background-color: white;\n}\n", "latexPre": "\documentclass{article}\n\special{papersize=3in,5in}\n\usepackage{inputenc}\n\usepackage{amssymb,amsmath}\n\pagestyle{empty}\n\setlength{\parindent}{0in}\n\begin{document}\n" }, "1471435194000": { "vers": , "name": "Base (default)", "tags": , "did": 1492955368330, "usn": 668, "req": ] ], "flds": , "sticky": false, "rtl": false, "ord": 0, "font": "Arial", "size": 20 }, { "name": "Retro", "media": , "sticky": false, "rtl": false, "ord": 1, "font": "Arial", "size": 20 } ], "sortf": 0, "tmpls": , "mod": 1494091839, "latexPost": "\end{document}", "type": 0, "id": 1471435194000, "css": ".card {\n font-family: Arial;\n font-size: 20px;\n text-align: center;\n color: black;\n background-color: white;\n}\n\nimg {\n vertical-align: middle;\n padding-bottom: 7px;\n padding-right: 6px;\n padding-left: 6px\n}", "latexPre": "\documentclass{article}\n\special{papersize=3in,5in}\n\usepackage{inputenc}\n\usepackage{amssymb,amsmath}\n\pagestyle{empty}\n\setlength{\parindent}{0in}\n\begin{document}\n" }}

Samassa edellä mainitussa URL-osoitteessaon erittäin hieno kuvaus siitä, mitä mallin kukin kenttä tekee. Tässä kuvataan vain ne, joita tarvitsemme korttiselaimen luomiseen.

Objektin juuressa on "1471435193999" avain. Tämä avain on kyseisen mallin id.Tämä mainitaan notes-taulukon mid-sarakkeessa.

Tämän objektin sisällä on array, jonka avain on "flds". Tämä array sisältää kentät, jotka kortit määrittelevät muistiinpanoja luotaessa. Yleensä kenttiä on vain ”Front” ja ”Rear”, mutta mallista riippuen kenttiä voi olla enemmänkin. Kuten aiemmin mainittiin, muistiinpanot tallentavat nämä tiedot notes.fld-sarakkeeseen; sarakkeen kentät ovat samassa järjestyksessä kuin tämän array:n kenttämääritykset.

"tmpls"-olio sisältää muistiinpanojen mallit ja antaa tietoa korttien HTML-rakenteesta. Mallit, jotka määrittelevät useita malleja, luovat useita kortteja, yhden kutakin mallia kohti. Tässä objektissa on kaksi tärkeää kenttää:

  • "qfmt": Kortin etupuolen HTML
  • "afmt": Kortin takapuolen HTML
  • "ord": Mallin sijainti "tmpls"-joukossa. Tätä käytetään cards-taulukossa kortin tuottaneen mallin tunnistamiseen.

Nämä kentät voivat sisältää {{placeholders}}, jotka on korvattava niiden kenttien arvoilla, jotka kortit tallentavat notes.fld:een. Kentän sijainnin ja kentän nimen välinen assosiaatio on "flds":n objektien assosiaatio. Huomaa, että "afmt" voi sisältää erityisen paikanhaltijan nimeltä {{FrontSide}}; tämä on vain kätevä tapa näyttää kortin sisältö ilman, että korttimalleja luotaessa tarvitsee kopioida & liittää "qfmt" sisältö &.

Viimeinen kiinnostava kenttä on "css"; se sisältää CSS-koodin, jota on sovellettava korttiin.

Korttipakkojen tietojen hakeminen

Arkiston sisältämien korttipakkojen tiedot tallennetaan col.decks-sarakkeeseenJSON-muodossa. Tässä on esimerkki JSON:

{ "1": { "desc": "", "name": "Predefinito", "extendRev": 50, "usn": 0, "collapsed": false, "newToday": , "timeToday": , "dyn": 0, "extendNew": 10, "conf": 1, "revToday": , "lrnToday": , "id": 1, "mod": 1494099120 }, "1493040141981": { "extendRev": 50, "collapsed": false, "newToday": , "timeToday": , "dyn": 0, "extendNew": 10, "conf": 1, "revToday": , "lrnToday": , "id": 1493040141981, "mod": 1494073733, "name": "Universit\u00e0 - Calcolatori::Assembly", "usn": 661, "browserCollapsed": true, "mid": 1471435194000, "desc": "" }, "1492955368330": { "extendRev": 50, "collapsed": false, "newToday": , "timeToday": , "dyn": 0, "extendNew": 10, "conf": 1, "revToday": , "lrnToday": , "id": 1492955368330, "mod": 1494095504, "name": "Universit\u00e0 - Calcolatori", "usn": 671, "browserCollapsed": true, "mid": 1471435194000, "desc": "" }}

Joitakin huomioitavia kenttiä:

  • id: Kannen yksilöllinen id. Id:tä käytetään cards-taulukon did-sarakkeessa korttien ja pakkojen välisten assosiaatioiden määrittämiseen (selitetään myöhemmin). Huomaa, että oletuspakan id on aina 1.
  • name: Pakan nimi. Jos kyseessä on lapsipakka, nimi on muotoa ”Vanhemman pakan nimi::Lapsipakan nimi”

Korttien hakeminen

Korttien tiedot tallennetaan cards-tauluun. Sarakkeet, joita tarvitsemme tuosta taulusta, ovat:

  • id: kortin yksilöllinen tunniste
  • nid: kortin tuottaneen nuotin id
  • did: sen kannen id-tunniste, jossa tämä kortti on
  • ord: mallin mallin sijaintikenttä; se täsmää mallin ord-kentän kanssa.

Mediatiedoston rakenne

media on JSON-tiedosto, joka yhdistää kuvien koodinimet sen alkuperäisiin nimiin. Huomaa, että minkä tahansa kortin kenttä voi sisältää kuvia, mutta kuvat on linkitetty niiden täydelliseen nimeen. .apkg-tiedoston luomisen aikana anki pakkaa kuvien nimet (itse asiassa se vain nimeää ne etenevillä numeroilla), mutta kortit viittaavat kuitenkin edelleen alkuperäiseen nimeen. media-tiedoston tarkoituksena on saada meidät kykeneviksi kääntämään numeeriset nimet kuvien alkuperäisiin nimiin.

Tiedoston media rakenne on melko suoraviivainen:

Jätä kommentti