ankirb 0.1.3 → 0.1.4
Sign up to get free protection for your applications and to get access to all the features.
- 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
|