ankirb 0.1.3 → 0.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +12 -3
- data/lib/ankirb/export/apkg.rb +13 -14
- data/lib/ankirb/util/media_manager.rb +1 -1
- data/lib/ankirb/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1e067d42f5f163a0c774309b1e50d79cc0a53c77
|
4
|
+
data.tar.gz: 611ebd148c7631dc737a39999b3db1fe8c23293e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b697663dbbcb09b0f2ddbe54e2b73ea3b65612c0607db83248517bcbd03030dd80f5553524fec5a2526e630db8ab7fb7f2762fcc84892a7d6af27dce45481ffc
|
7
|
+
data.tar.gz: 496c5c34f38826594377fc9403cecf2a87950c90f8224bc133a218d3b051193da119a63c48f09c56957a8dcce55899b83d0aa4ca6467f67134c0f87a89fb413a
|
data/README.md
CHANGED
@@ -25,16 +25,25 @@ Or install it yourself as:
|
|
25
25
|
```ruby
|
26
26
|
require 'ankirb'
|
27
27
|
|
28
|
-
|
28
|
+
#create a deck
|
29
29
|
deck = Anki::Deck.new 'FancyExampleDeck'
|
30
|
+
|
31
|
+
#create a basic card
|
32
|
+
card = Anki::Card.new(:front=>"What is the french for cheese omelette?", :back=>"Omelette au fromage")
|
33
|
+
|
34
|
+
#add audio to the back
|
35
|
+
card.back << "dexters_lab_omelette.wav"
|
36
|
+
|
37
|
+
#add card to the deck
|
30
38
|
deck.add_card card
|
31
39
|
|
32
|
-
|
40
|
+
#export to ~/Anki/Decks/FancyExampleDeck.apkg
|
41
|
+
Anki::apkg.export deck, "~/Anki/Decks"
|
33
42
|
```
|
34
43
|
|
35
44
|
## Contributing
|
36
45
|
|
37
|
-
Bug reports and pull requests are welcome on GitHub at https://github.com/
|
46
|
+
Bug reports and pull requests are welcome on GitHub at https://github.com/rkachowski/ankirb.
|
38
47
|
|
39
48
|
|
40
49
|
## License
|
data/lib/ankirb/export/apkg.rb
CHANGED
@@ -11,40 +11,39 @@ module Anki
|
|
11
11
|
|
12
12
|
def self.export deck, path
|
13
13
|
Dir.mktmpdir do |dir|
|
14
|
-
|
15
|
-
db = DB.create 'collection.anki2'
|
14
|
+
db = DB.create File.join(dir,'collection.anki2')
|
16
15
|
|
17
|
-
export_media deck
|
16
|
+
export_media deck, dir
|
18
17
|
export_deck deck, db
|
18
|
+
|
19
19
|
filename = deck.name + '.apkg'
|
20
|
-
archive = Zip::File.open(filename, Zip::File::CREATE)
|
20
|
+
archive = Zip::File.open(File.join(dir,filename), Zip::File::CREATE)
|
21
21
|
|
22
|
-
Dir.glob('*').each do |file|
|
23
|
-
archive.add(file,
|
22
|
+
Dir.glob(File.join(dir,'*')).each do |file|
|
23
|
+
archive.add( File.basename(file),file)
|
24
24
|
end
|
25
25
|
|
26
26
|
archive.close()
|
27
27
|
|
28
|
-
FileUtils.move(filename, path)
|
29
|
-
end
|
28
|
+
FileUtils.move(File.join(dir,filename), path)
|
30
29
|
end
|
31
30
|
end
|
32
31
|
|
33
32
|
private
|
34
|
-
def self.export_media deck
|
33
|
+
def self.export_media deck, path
|
35
34
|
media_cards = deck.cards.select{|c| c.has_media? }
|
36
35
|
faces_with_media = media_cards.reduce([]){|arr,c| arr.push(c.front,c.back)}.select{|f|!f.media.empty?}
|
37
36
|
media ={}
|
38
37
|
|
39
38
|
faces_with_media.each do |face|
|
40
39
|
face.media.each do |media_reference|
|
41
|
-
|
42
|
-
FileUtils.cp media_reference, media.length.to_s
|
40
|
+
face << MediaManager.get_tag_for(media_reference)
|
41
|
+
FileUtils.cp media_reference, File.join(path, media.length.to_s)
|
43
42
|
media[media.size.to_s] = File.basename(media_reference)
|
44
43
|
end
|
45
44
|
end
|
46
45
|
|
47
|
-
File.open('media', 'w'){|f| f << media.to_json }
|
46
|
+
File.open(File.join(path, 'media'), 'w'){|f| f << media.to_json }
|
48
47
|
end
|
49
48
|
|
50
49
|
def self.export_deck deck, db
|
@@ -72,8 +71,8 @@ module Anki
|
|
72
71
|
)"
|
73
72
|
|
74
73
|
deck.cards.each do |card|
|
75
|
-
#flds is front and back of card separated by \
|
76
|
-
flds_bytes = [card.front.content, card.back.content].map{|f|f.bytes}.insert(1, '
|
74
|
+
#flds is front and back of card separated by \x1f
|
75
|
+
flds_bytes = [card.front.content, card.back.content].map{|f|f.bytes}.insert(1, '1f'.hex)
|
77
76
|
flds = flds_bytes.flatten.pack('U*')
|
78
77
|
|
79
78
|
note = {
|
data/lib/ankirb/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ankirb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Donald Hutchison
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-02-
|
11
|
+
date: 2016-02-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -166,7 +166,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
166
166
|
version: '0'
|
167
167
|
requirements: []
|
168
168
|
rubyforge_project:
|
169
|
-
rubygems_version: 2.5.
|
169
|
+
rubygems_version: 2.5.2
|
170
170
|
signing_key:
|
171
171
|
specification_version: 4
|
172
172
|
summary: A gem to create Anki decks for loading in an Anki flashcard application
|