artbase 0.2.0 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1d2702ba1ca72c303474ee868074e5fc244d1a510d240cb7b533813b85f07bdd
4
- data.tar.gz: 46591b009738fc8c45bd777b56b74dab8195f2fee6f967efa3a05b1c5efbe92b
3
+ metadata.gz: 549b31d6f628fcb714c22fd03f179b75fd9b99e9c2bbe8532b1e79660e4f1ade
4
+ data.tar.gz: aadb6b67430375da20a83e94362562405dfca370dac2b8cfe514086a926ff2df
5
5
  SHA512:
6
- metadata.gz: 7a1a11ce316e7de3ec11b001262eb614b34cb0b53f9237357c60026fabddafd8b38839ba1ab77221f5062044aced9df44d082fe7146e68dc9dca4ee40dc5d1d0
7
- data.tar.gz: 12dacbd59d727be09dbb626156a79e54dbc10a52ed13ed9b3963ee731dffcad45c08d23b812494780ff86bba51ea34fb3205258663759835ce94384229229b76
6
+ metadata.gz: c7d1a745322df0250841c03975135d35f0f4ab4a9b8258e36482258e14b1847cece236b09755fd8962b6e942b21ed1ee5b28449c0d0b4d32f9f3c7c08e508533
7
+ data.tar.gz: 735c9079a101dd5aea55d5cb8458256082864e07bcaef81dff178cdeabb583df381ff9880d6aca7871c094a7f529342a9a206f4a4d877efe9c9b6b6b2600c27f
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # artbase ("right-clicker") command line tool & scripts - download complete pixel art collections - yes, you can! - automate "right-click 'n' download" and much more
1
+ # artbase ("right-clicker") command line tool & scripts - download complete pixel art collections - yes, you can! - automate "right-click 'n' save" and much more
2
2
 
3
3
  * home :: [github.com/pixelartexchange/artbase](https://github.com/pixelartexchange/artbase)
4
4
  * bugs :: [github.com/pixelartexchange/artbase/issues](https://github.com/pixelartexchange/artbase/issues)
@@ -43,7 +43,7 @@ meta_slugify: /^Blocky Doge #(?<num>[0-9]+)$/,
43
43
  ```
44
44
 
45
45
  Sorry for the "magic" config format for now -
46
- see the [**opensea.sandbox**](https://github.com/pixelartexchange/opensea.sandbox) for many more "real-world" examples.
46
+ see the [**artbase.sandbox**](https://github.com/pixelartexchange/artbase.sandbox) for many more "real-world" examples.
47
47
 
48
48
 
49
49
 
@@ -66,11 +66,11 @@ Let's try:
66
66
  $ artbase blockydoge meta
67
67
  ```
68
68
 
69
- Note: All meta data files get stored by convention in `blockydoge/meta`.
69
+ Note: All token meta data files get stored by convention in `blockydoge/token`.
70
70
  Resulting in a file tree like:
71
71
 
72
72
  ```
73
- blockydoge/meta/
73
+ blockydoge/token/
74
74
  0.json
75
75
  1.json
76
76
  2.json
@@ -87,20 +87,18 @@ blockydoge/meta/
87
87
  ...
88
88
  ```
89
89
 
90
- Example - `blockydoge/meta/0.json`:
90
+ Example - `blockydoge/token/0.json`:
91
91
 
92
92
  ``` json
93
93
  {
94
94
  "id": 52224520,
95
95
  "token_id": "154226446513437...7290852067901441",
96
- "num_sales": 1,
97
96
  "image_url": "https://lh3.googleusercontent.com/fIQQ0A7...gTlbgMTQ",
98
97
  "image_preview_url": "https://lh3.googleusercontent.com/fIQQ0A7...gTlbgMTQ=s250",
99
98
  "image_thumbnail_url": "https://lh3.googleusercontent.com/fIQQ0A7...gTlbgMTQ=s128",
100
99
  "image_original_url": null,
101
100
  "name": "Blocky Doge #1",
102
101
  "description": "Blocky Doge ... 100 unique pixelated Doge avatars...",
103
- "external_link": null,
104
102
 
105
103
  ...
106
104
 
@@ -116,7 +114,7 @@ Example - `blockydoge/meta/0.json`:
116
114
 
117
115
 
118
116
 
119
- ### Download all referenced images in the meta data file
117
+ ### Download all referenced images in the token meta data file
120
118
 
121
119
  Let's try:
122
120
 
@@ -125,11 +123,11 @@ $ artbase blockydoge img
125
123
  ```
126
124
 
127
125
  Note: All referenced images (in the source format e.g. 512x512)
128
- get stored by convention in `blockydoge/i`.
126
+ get stored by convention in `blockydoge/token-i`.
129
127
  Resulting in a file tree like:
130
128
 
131
129
  ```
132
- blockydoge/i/
130
+ blockydoge/token-i/
133
131
  0.png
134
132
  1.png
135
133
  2.png
@@ -146,7 +144,7 @@ blockydoge/i/
146
144
  ...
147
145
  ```
148
146
 
149
- Example - `blockydoge/i/0.png` (512x512):
147
+ Example - `blockydoge/token-i/0.png` (512x512):
150
148
 
151
149
  ![](i/blockydoge0-512x512.png)
152
150
 
@@ -163,29 +161,29 @@ $ artbase blockydoge px
163
161
  ```
164
162
 
165
163
  Note: All referenced images pixelated down to the orginal format (e.g. 60x60)
166
- get stored by convention in `blockydoge/ii`.
164
+ get stored by convention in `blockydoge/60x60`.
167
165
  Resulting in a tree like:
168
166
 
169
167
  ```
170
- blockydoge/ii/
171
- 000001.png
172
- 000002.png
173
- 000003.png
174
- 000004.png
175
- 000005.png
176
- 000006.png
177
- 000007.png
178
- 000008.png
179
- 000009.png
180
- 000010.png
181
- 000011.png
182
- 000012.png
183
- 000013.png
168
+ blockydoge/60x60/
169
+ 1.png
170
+ 2.png
171
+ 3.png
172
+ 4.png
173
+ 5.png
174
+ 6.png
175
+ 7.png
176
+ 8.png
177
+ 9.png
178
+ 10.png
179
+ 11.png
180
+ 12.png
181
+ 13.png
184
182
  ...
185
183
  ```
186
184
 
187
185
 
188
- Example - `blockydoge/ii/000001.png` to `000013.png` (60x60):
186
+ Example - `blockydoge/60x60/1.png` to `13.png`:
189
187
 
190
188
  ![](i/blockydoge000001.png)
191
189
  ![](i/blockydoge000002.png)
@@ -271,4 +269,4 @@ Use it as you please with no restrictions whatsoever.
271
269
 
272
270
  ## Questions? Comments?
273
271
 
274
- Post them on the [CryptoPunksDev reddit](https://old.reddit.com/r/CryptoPunksDev). Thanks.
272
+ Post them on the [D.I.Y. Punk (Pixel) Art reddit](https://old.reddit.com/r/DIYPunkArt). Thanks.
data/Rakefile CHANGED
@@ -26,7 +26,9 @@ Hoe.spec 'artbase' do
26
26
  self.history_file = 'CHANGELOG.md'
27
27
 
28
28
  self.extra_deps = [
29
+ ['cocos', '>= 0.1.2'],
29
30
  ['webclient', '>= 0.2.2'],
31
+ ['pixelart', '>= 1.3.6'],
30
32
  ]
31
33
 
32
34
  self.licenses = ['Public Domain']
@@ -3,6 +3,36 @@ module Artbase
3
3
  class Base ## "abstract" Base collection - check -use a different name - why? why not?
4
4
 
5
5
 
6
+ def convert_images( overwrite: )
7
+ image_dir = "./#{slug}/token-i"
8
+ Image.convert( image_dir, from: 'jpg', to: 'png', overwrite: overwrite )
9
+ Image.convert( image_dir, from: 'gif', to: 'png', overwrite: overwrite )
10
+ Image.convert( image_dir, from: 'svg', to: 'png', overwrite: overwrite )
11
+ end
12
+
13
+
14
+
15
+ def make_strip
16
+ composite_count = @count - @excludes.size
17
+
18
+ composite = ImageComposite.new( 9, 1,
19
+ width: @width,
20
+ height: @height )
21
+
22
+ i = 0
23
+ each_image do |img, id|
24
+ puts "==> [#{i+1}/9] #{id}"
25
+ composite << img
26
+
27
+ i += 1
28
+ break if i >= 9
29
+ end
30
+
31
+
32
+ composite.save( "./#{@slug}/tmp/#{@slug}-strip.png" )
33
+ end
34
+
35
+
6
36
 
7
37
  def make_composite
8
38
  ### use well-known / pre-defined (default) grids
@@ -16,14 +46,22 @@ def make_composite
16
46
  when 314 then [15, 21]
17
47
  when 500 then [25, 20]
18
48
  when 1000 then [25, 40]
49
+ when 2200 then [50, 44]
50
+ when 2222 then [50, 45]
51
+ when 2469 then [50, 50]
19
52
  when 3000 then [100, 30] ## or use 50*60 - why? why not?
20
53
  when 3500 then [100, 35] ## or use 50*x ??
21
54
  when 3979 then [100, 40]
22
55
  when 4000 then [100, 40] ## or use 50x80 - why? why not?
56
+ when 4444 then [100, 45] ## or use 50x??
23
57
  when 5000 then [100, 50] ## or use 50x100 - why? why not?
24
58
  when 5555 then [100, 56] # 5600 (45 left empty)
59
+ when 6666 then [100, 67] # 6700 (34 left empty)
60
+ when 6688 then [100, 67] # 6700 (12 left empty)
25
61
  when 6969 then [100, 70] # 7000 (31 left empty)
26
- when 10000 then [100, 100]
62
+ when 8888 then [100, 89]
63
+ when 9969 then [100,100]
64
+ when 10000 then [100,100]
27
65
  else
28
66
  raise ArgumentError, "sorry - unknown composite count #{composite_count}/#{@count} for now"
29
67
  end
@@ -17,9 +17,13 @@ class Meta
17
17
 
18
18
 
19
19
  def name
20
- @name ||= _normalize( @data['name'] )
20
+ ## note: name might be an integer number e.g. 0/1/2 etc.
21
+ ## e.g. see crypto pudgy punks and others?
22
+ ## always auto-convert to string
23
+ @name ||= _normalize( @data['name'].to_s )
21
24
  end
22
25
 
26
+
23
27
  def description
24
28
  @description ||= _normalize( @data['description'] )
25
29
  end
@@ -323,19 +327,25 @@ end
323
327
 
324
328
  ## note: default to direct true if image_base present/availabe
325
329
  ## otherwise to false
330
+ ## todo/check: change/rename force para to overwrite - why? why not?
326
331
  def download_images( range=_range, force: false,
327
332
  direct: @image_base ? true : false )
328
333
  start = Time.now
329
334
  delay_in_s = 0.3
330
335
 
331
336
  range.each do |id|
332
- ## note: for now assumes only .png format!!!
333
- ## todo - check for more format - why? why not?
334
- outpath = "./#{@slug}/token-i/#{id}.png"
335
- if !force && File.exist?( outpath )
336
- next ## note: skip if file already exists
337
- end
338
337
 
338
+ ## note: skip if (downloaded) file already exists
339
+ skip = false
340
+ if !force
341
+ ['png', 'gif', 'jgp', 'svg'].each do |format|
342
+ if File.exist?( "./#{@slug}/token-i/#{id}.#{format}" )
343
+ skip = true
344
+ break
345
+ end
346
+ end
347
+ end
348
+ next if skip
339
349
 
340
350
  image_src = image_url( id: id, direct: direct )
341
351
 
@@ -10,7 +10,8 @@ end
10
10
 
11
11
 
12
12
 
13
-
13
+ =begin
14
+ moved/ use Image.convert !!! remove here
14
15
  def convert_images( collection, from: 'jpg',
15
16
  to: 'png',
16
17
  dir: 'i',
@@ -45,7 +46,7 @@ def convert_images( collection, from: 'jpg',
45
46
  end
46
47
  end
47
48
  end
48
-
49
+ =end
49
50
 
50
51
 
51
52
 
data/lib/artbase/tool.rb CHANGED
@@ -93,12 +93,16 @@ class Tool
93
93
  download_meta( offset: options[ :offset] )
94
94
  elsif ['i', 'img', 'image', 'images'].include?( command )
95
95
  download_images( offset: options[ :offset] )
96
+ elsif ['conv', 'convert'].include?( command )
97
+ convert_images
96
98
  elsif ['a', 'attr', 'attributes'].include?( command )
97
99
  dump_attributes
98
100
  elsif ['x', 'exp', 'export'].include?( command )
99
101
  export_attributes
100
102
  elsif ['c', 'composite'].include?( command )
101
103
  make_composite
104
+ elsif ['strip'].include?( command )
105
+ make_strip
102
106
  elsif ['t', 'test'].include?( command )
103
107
  puts " testing, testing, testing"
104
108
  else
@@ -113,6 +117,18 @@ class Tool
113
117
  @collection.make_composite
114
118
  end
115
119
 
120
+ def self.convert_images
121
+ puts "==> convert images"
122
+ @collection.convert_images( overwrite: false )
123
+ end
124
+
125
+
126
+ def self.make_strip
127
+ puts "==> make strip"
128
+ @collection.make_strip
129
+ end
130
+
131
+
116
132
  def self.dump_attributes
117
133
  puts "==> dump attributes"
118
134
  @collection.dump_attributes
@@ -1,10 +1,9 @@
1
1
 
2
2
 
3
3
  module Artbase
4
-
5
4
  MAJOR = 0
6
5
  MINOR = 2
7
- PATCH = 0
6
+ PATCH = 1
8
7
  VERSION = [MAJOR,MINOR,PATCH].join('.')
9
8
 
10
9
  def self.version
data/lib/artbase.rb CHANGED
@@ -1,42 +1,16 @@
1
- require 'pp'
2
- require 'time'
3
- require 'date'
1
+ require 'cocos'
4
2
 
5
- require 'uri'
6
- require 'net/http'
7
- require 'net/https'
8
- require 'cgi'
9
- require 'fileutils'
10
3
 
11
- require 'json'
12
4
 
13
- require 'optparse'
14
-
15
-
16
-
17
-
18
- ##################
19
- #### commons convenience helpers
20
- ### - move read_json( path ) to shared commons/prolog/... or such - why? why not?
21
-
22
- def read_json( path )
23
- txt = File.open( path, 'r:utf-8' ) { |f| f.read }
24
- data = JSON.parse( txt )
25
- data
26
- end
27
-
28
-
29
-
30
-
31
- ## our own gems
5
+ ## 3rd party gems
32
6
  require 'pixelart'
33
7
 
34
8
 
35
9
 
36
10
 
37
-
38
11
  ## our own code
39
- require 'artbase/version' # note: let version always go first
12
+ require_relative 'artbase/version' # note: let version always go first
13
+
40
14
 
41
15
  ### add (shared) "global" config
42
16
  module Artbase
@@ -60,17 +34,18 @@ def self.config() @config ||= Configuration.new; end
60
34
  end # module Artbase
61
35
 
62
36
 
63
- require 'artbase/image'
37
+ require_relative 'artbase/image'
38
+
64
39
 
40
+ require_relative 'artbase/helper'
41
+ require_relative 'artbase/retry' ## (global) retry_on_error helper
65
42
 
66
- require 'artbase/helper'
67
- require 'artbase/retry' ## (global) retry_on_error helper
43
+ require_relative 'artbase/collection'
44
+ require_relative 'artbase/attributes'
68
45
 
69
- require 'artbase/collection'
70
- require 'artbase/attributes'
71
46
 
47
+ require_relative 'artbase/tool'
72
48
 
73
- require 'artbase/tool'
74
49
 
75
50
 
76
51
  ######
metadata CHANGED
@@ -1,15 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: artbase
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gerald Bauer
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-06-26 00:00:00.000000000 Z
11
+ date: 2022-08-22 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: cocos
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: 0.1.2
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: 0.1.2
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: webclient
15
29
  requirement: !ruby/object:Gem::Requirement
@@ -24,6 +38,20 @@ dependencies:
24
38
  - - ">="
25
39
  - !ruby/object:Gem::Version
26
40
  version: 0.2.2
41
+ - !ruby/object:Gem::Dependency
42
+ name: pixelart
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: 1.3.6
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: 1.3.6
27
55
  - !ruby/object:Gem::Dependency
28
56
  name: rdoc
29
57
  requirement: !ruby/object:Gem::Requirement