artq 0.3.0 → 0.3.1

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d77ed6ab0733f84e19ecd4e1329f8edeea8c083dc773b0dd756182996fc81355
4
- data.tar.gz: dc91009707f3e4b70e5682a5c62cd310b8e20ffc47d730ecf3ce29fda65d4e17
3
+ metadata.gz: 173bf8cbe3bc0e9db811e19b585bd04bc23956b28b1b4cb055c1697288472d7e
4
+ data.tar.gz: 90c2751c1028ca2986e12825f83d8afbb9055ce864228f5a611a9110481f1439
5
5
  SHA512:
6
- metadata.gz: de74d73e5080ce66ca49444e857478b20b9f2705eb918375302a38b0a04f0bb56eab98d0b211ced60263fb4415699efa244770a3b0dc7c336bf9046258d3c9e1
7
- data.tar.gz: 6703ec538be7d9215b7b62a0b23d75297386e5065b2232982043a59d87346021073fae6f3f966fde77dd678b5ce267e80b7113086f7619afab1439d9660abb3b
6
+ metadata.gz: 339f0a49d30a544ce53892ec7f3c1a04a3ddb47d279ddc938d995ae8efc7c25356db9920a44f06d61a5d3482efe9975a965ba791ca6c6603cc427a6353914ab1
7
+ data.tar.gz: db571cdfcd4e29e3486199ac775a5494e1f4a42256d7d7449c8adbc3fdf7d4259356863dd3f440b60b94bcc30cf104c365c727965226eefe6a9e1ee849aa23da
data/README.md CHANGED
@@ -184,7 +184,7 @@ and inline svg images in the base64 format get "cut" from the metadata and "past
184
184
  ```
185
185
 
186
186
 
187
- #### Bonus - Case No. 3 - "On-Blockchain" Layers (Incl. Metadata & Images)
187
+ #### Case No. 3 - "On-Blockchain" Layers (Incl. Metadata & Images)
188
188
 
189
189
 
190
190
  Note: Some "on-blockchain" pixel art collections
@@ -339,7 +339,43 @@ such as
339
339
  and many more.
340
340
 
341
341
 
342
- Tip: For more art collections with "on-blockchain" layers see the [**Art Factory Sandbox »**](https://github.com/pixelartexchange/artfactory.sandbox)
342
+ Tip: For more art collections with "on-blockchain" layers see the [**Art Factory Sandbox »**](https://github.com/pixelartexchange/artfactory.sandbox)
343
+
344
+
345
+
346
+
347
+
348
+ ### Using the ArtQ Machinery in Your Own Scripts
349
+
350
+
351
+ Yes, you can. Let's try the (crypto) marcs:
352
+
353
+
354
+ ``` ruby
355
+ require 'artq'
356
+
357
+ marcs_eth = "0xe9b91d537c3aa5a3fa87275fbd2e4feaaed69bd0"
358
+
359
+ marcs = ArtQ::Contract.new( marcs_eth )
360
+
361
+ n = 0
362
+ m = 0
363
+ res = marcs.traitData( n, m ) ## note: return binary blob (for n,m-index)
364
+ pp res
365
+ #=> ["\x89PNG..."]
366
+
367
+ res = marcs.traitDetails( n, m ) ## note: returns tuple (name, mimetype, hide?)
368
+ pp res
369
+ #=> ["Zombie", "image/png", false]
370
+
371
+
372
+
373
+ ## or with convenience download_layers helper
374
+ ArtQ.download_layers( marcs_eth, outdir: './marcs' )
375
+ ```
376
+
377
+
378
+
343
379
 
344
380
 
345
381
 
data/lib/artq/layers.rb CHANGED
@@ -58,7 +58,7 @@ module ArtQ
58
58
  buf << "\n"
59
59
  end
60
60
 
61
- write_text( "#{outdir}/layers.csv", buf )
61
+ write_text( "#{outdir}/cache/layers.csv", buf )
62
62
 
63
63
  #####
64
64
  # try to download all images
@@ -71,13 +71,17 @@ module ArtQ
71
71
  basename = "#{n}_#{m}"
72
72
  if data.start_with?( PNGSIG )
73
73
  puts "BINGO!! it's a png blob - #{data.size} byte(s)"
74
- write_blob( "#{outdir}/#{basename}.png", data )
74
+ write_blob( "#{outdir}/cache/#{basename}.png", data )
75
75
  elsif data.start_with?( GIF87SIG ) || data.start_with?( GIF89SIG )
76
76
  puts "BINGO!! it's a gif blob - #{data.size} byte(s)"
77
- write_blob( "#{outdir}/#{basename}.gif", data )
77
+ write_blob( "#{outdir}/cache/#{basename}.gif", data )
78
78
  elsif data.start_with?( JPGSIG )
79
79
  puts "BINGO!! it's a jpg blob - #{data.size} byte(s)"
80
- write_blob( "#{outdir}/#{basename}.jpg", data )
80
+ write_blob( "#{outdir}/cache/#{basename}.jpg", data )
81
+ elsif data.index( /<svg[^>]*?>/i ) ## add more markers to find - why? why not?
82
+ puts "BINGO!! it's a svg (text) blob - #{data.size} byte(s)"
83
+ ## todo/check - save text as binary blob 1:1 - why? why not?
84
+ write_blob( "#{outdir}/cache/#{basename}.svg", data )
81
85
  else
82
86
  puts "!! ERROR - unknown image format; sorry"
83
87
  exit 1
data/lib/artq/version.rb CHANGED
@@ -1,7 +1,7 @@
1
1
 
2
2
 
3
3
  module ArtQ
4
- VERSION = '0.3.0'
4
+ VERSION = '0.3.1'
5
5
  end # module ArtQ
6
6
 
7
7
 
data/lib/artq.rb CHANGED
@@ -14,6 +14,17 @@ module ArtQ
14
14
 
15
15
  class Tool
16
16
 
17
+
18
+ def self.is_addr?( str )
19
+ ## e.g.
20
+ ## must for now start with 0x (or 0X)
21
+ ## and than 40 hexdigits (20 bytes)
22
+ ## e.g. 0xe21ebcd28d37a67757b9bc7b290f4c4928a430b1
23
+ str.match( /\A0x[0-9a-f]{40}\z/i )
24
+ end
25
+
26
+
27
+
17
28
  def self.main( args=ARGV )
18
29
  puts "==> welcome to artq tool with args:"
19
30
  pp args
@@ -47,16 +58,38 @@ class Tool
47
58
  exit
48
59
  end
49
60
 
50
- contract_address = args[0] ## todo/check - use collection_name/slug or such?
61
+
62
+ ## todo/check - use collection_name/slug or such?
63
+ contract_address = nil
64
+ outdir = nil
65
+
66
+ if is_addr?( args[0] ) ## do nothing; it's an address
67
+ contract_address = args[0]
68
+ outdir = "./tmp/#{contract_address}"
69
+ else ## try reading collection.yml config
70
+ config_path = "./#{args[0]}/collection.yml"
71
+ if File.exist?( config_path )
72
+ config = read_yaml( config_path )
73
+ contract_address = config['token']['contract']
74
+ outdir = "./#{args[0]}"
75
+ else
76
+ puts "!! ERROR - no config found for collection >#{contract_address}<; sorry"
77
+ exit 1
78
+ end
79
+ end
80
+
81
+
51
82
  command = args[1] || 'info'
52
83
 
53
84
 
54
85
  if ['i','inf','info'].include?( command )
55
86
  do_info( contract_address )
56
87
  elsif ['l', 'layer', 'layers'].include?( command )
57
- do_layers( contract_address )
88
+ ## note: outdir - save into cache for now
89
+ do_layers( contract_address, outdir: outdir )
58
90
  elsif ['t', 'token', 'tokens'].include?( command )
59
- do_tokens( contract_address )
91
+ ## note: outdir - saves into token (metadata) & token-i (images)
92
+ do_tokens( contract_address, outdir: outdir )
60
93
  else
61
94
  puts "!! ERROR - unknown command >#{command}<, sorry"
62
95
  end
@@ -105,17 +138,17 @@ class Tool
105
138
 
106
139
 
107
140
 
108
- def self.do_layers( contract_address )
141
+ def self.do_layers( contract_address, outdir: )
109
142
  puts "==> query layers for art collection contract @ >#{contract_address}<:"
110
143
 
111
144
  ArtQ.download_layers( contract_address,
112
- outdir: "./tmp/#{contract_address}" )
145
+ outdir: outdir )
113
146
  end
114
147
 
115
- def self.do_tokens( contract_address )
148
+ def self.do_tokens( contract_address, outdir: )
116
149
  puts "==> query inline 'on-blockchain' token metadata & images for art collection contract @ >#{contract_address}<:"
117
150
  ArtQ.download_tokens( contract_address,
118
- outdir: "./tmp/#{contract_address}" )
151
+ outdir: outdir )
119
152
  end
120
153
 
121
154
  end # class Tool
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: artq
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.3.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-11-24 00:00:00.000000000 Z
11
+ date: 2022-12-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ethlite