cockatrice_feeder 0.0.3 → 0.0.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/lib/cockatrice_feeder.rb +32 -39
- metadata +5 -19
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b5240773a3d354704315fc39c1849dca7b5b340e
|
4
|
+
data.tar.gz: 841cec3ad20d2ccea73ef3034f03fbf7aca2e8a4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c3e20b320975dc4cb933ff8999b40dd82dc008123e6b03ef99d47e4146947bd9c2322ad42cc73e846f106aaf3ee147bfc24608441419ce64786a331277c3f519
|
7
|
+
data.tar.gz: e7b518285b7fd5e7441d0a269fd693aac5b49909e49d6ca61fad3b1b1095507f9b42f5c2ec0de13cb6aabc0d4ed20fc263345e5e817995930ecc71241c4b62c0
|
data/lib/cockatrice_feeder.rb
CHANGED
@@ -2,7 +2,6 @@ module CockatriceFeeder
|
|
2
2
|
require 'httparty'
|
3
3
|
require 'nokogiri'
|
4
4
|
require 'fileutils'
|
5
|
-
require 'descriptive_statistics'
|
6
5
|
|
7
6
|
@@app_dir = Dir.pwd+"/"
|
8
7
|
@@deck_dir = @@app_dir+"decks/"
|
@@ -168,6 +167,17 @@ module CockatriceFeeder
|
|
168
167
|
JSON.parse(File.read(@@meta_dir+"tiers.json"))
|
169
168
|
end
|
170
169
|
|
170
|
+
def self.deck_obj(link = "", name = "", commanders = [], date = nil, price = nil)
|
171
|
+
{
|
172
|
+
link: link,
|
173
|
+
name: name,
|
174
|
+
commanders: commanders,
|
175
|
+
date: nil,
|
176
|
+
price: nil,
|
177
|
+
cardlist: []
|
178
|
+
}
|
179
|
+
end
|
180
|
+
|
171
181
|
def self.output_cod(deck, subfolder)
|
172
182
|
comments = [
|
173
183
|
deck[:name],
|
@@ -227,14 +237,7 @@ module CockatriceFeeder
|
|
227
237
|
doc.css(".deck-wide-header a").each do |a|
|
228
238
|
link = a.attribute("href").value
|
229
239
|
if link.include?("/mtg-decks/")
|
230
|
-
decks <<
|
231
|
-
name: link.split("/").last,
|
232
|
-
commanders: [],
|
233
|
-
link: "https://tappedout.net"+link,
|
234
|
-
date: nil,
|
235
|
-
price: nil,
|
236
|
-
cardlist: []
|
237
|
-
}
|
240
|
+
decks << deck_obj("https://tappedout.net"+link, link.split("/").last)
|
238
241
|
end
|
239
242
|
end
|
240
243
|
end
|
@@ -279,14 +282,7 @@ module CockatriceFeeder
|
|
279
282
|
|
280
283
|
def self.edhrecavg_decklist
|
281
284
|
commanders.map{|c| c["link"]}.map do |c|
|
282
|
-
{
|
283
|
-
name: c,
|
284
|
-
commanders: [c],
|
285
|
-
link: "https://edhrec-json.s3.amazonaws.com/en/decks/#{c}.json",
|
286
|
-
price: nil,
|
287
|
-
date: nil,
|
288
|
-
cardlist: []
|
289
|
-
}
|
285
|
+
deck_obj("https://edhrec-json.s3.amazonaws.com/en/decks/#{c}.json", c, [c])
|
290
286
|
end
|
291
287
|
end
|
292
288
|
|
@@ -300,7 +296,7 @@ module CockatriceFeeder
|
|
300
296
|
|
301
297
|
#order ["views,desc", "price,desc", "likes,desc", "updated,desc"]
|
302
298
|
#commander should be a name attribute from the commanders array of objects
|
303
|
-
def self.deckstats_decklist(commander = "
|
299
|
+
def self.deckstats_decklist(commander = "", pages = (1..1), order_by = "likes,desc", price_min = "", price_max = "")
|
304
300
|
decklist = []
|
305
301
|
pages.each do |page|
|
306
302
|
url = [
|
@@ -317,7 +313,7 @@ module CockatriceFeeder
|
|
317
313
|
"&search_number_cards_sideboard=",
|
318
314
|
"&search_cards%5B%5D=",
|
319
315
|
"&search_tags=",
|
320
|
-
"&search_order=#{URI.encode_www_form_component(
|
316
|
+
"&search_order=#{URI.encode_www_form_component(order_by)}",
|
321
317
|
"&utf8=%E2%9C%94",
|
322
318
|
"&page=#{page}"
|
323
319
|
].join("")
|
@@ -326,14 +322,7 @@ module CockatriceFeeder
|
|
326
322
|
|
327
323
|
doc.css(".deck_row").each do |dr|
|
328
324
|
link = dr.css("td")[1].css("a").first.attribute("href").value
|
329
|
-
decklist <<
|
330
|
-
link: link,
|
331
|
-
name: link.split("/")[-2],
|
332
|
-
commanders: [commander].reject(&:empty?),
|
333
|
-
price: nil,
|
334
|
-
date: nil,
|
335
|
-
cardlist: []
|
336
|
-
}
|
325
|
+
decklist << deck_obj(link,link.split("/")[-2],[commander].reject(&:empty?))
|
337
326
|
end
|
338
327
|
end
|
339
328
|
|
@@ -357,7 +346,11 @@ module CockatriceFeeder
|
|
357
346
|
sec["cards"].map{|c| "#{c["amount"]} #{c["name"]}"}
|
358
347
|
end.flatten
|
359
348
|
|
360
|
-
deck[:price] =
|
349
|
+
deck[:price] = (
|
350
|
+
!doc.css(".deck_overview_price").first.nil? ?
|
351
|
+
doc.css(".deck_overview_price").first.content.gsub("$","").strip.split(".").first
|
352
|
+
: nil
|
353
|
+
)
|
361
354
|
|
362
355
|
output_cod(deck,'deckstats')
|
363
356
|
end
|
@@ -370,16 +363,16 @@ module CockatriceFeeder
|
|
370
363
|
doc = Nokogiri::HTML(HTTParty.get("https://mtgdecks.net/Commander/decklists/page:#{page}").body)
|
371
364
|
doc.css(".decks tr.previewable").each do |r|
|
372
365
|
if r.css("td")[0].css(".label-danger").length == 0
|
373
|
-
|
374
|
-
|
366
|
+
date = r.css("td")[6].css("strong")[0].content.
|
367
|
+
gsub("<span class=\"hidden-xs\">","").
|
368
|
+
gsub("</span>","").gsub(/\s+/, "")
|
369
|
+
price = r.css("td")[7].css("span.paper")[0].content.gsub("$","").gsub(/\s+/, "")
|
370
|
+
|
371
|
+
decks << deck_objs(
|
375
372
|
link: "https://mtgdecks.net"+r.css("td")[1].css("a")[0].attribute("href").value,
|
376
|
-
date:
|
377
|
-
|
378
|
-
|
379
|
-
price: r.css("td")[7].css("span.paper")[0].content.gsub("$","").gsub(/\s+/, ""),
|
380
|
-
commanders: [],
|
381
|
-
cardlist: []
|
382
|
-
}
|
373
|
+
date: date,
|
374
|
+
price: price
|
375
|
+
)
|
383
376
|
end
|
384
377
|
end
|
385
378
|
end
|
@@ -435,7 +428,7 @@ module CockatriceFeeder
|
|
435
428
|
puts "#{decks.length} decks found."
|
436
429
|
decks.each {|d|
|
437
430
|
CockatriceFeeder.mtgdecks_deck(d)
|
438
|
-
if d[:cardlist].length
|
431
|
+
if d[:cardlist].length > 0
|
439
432
|
total_decks += 1
|
440
433
|
end
|
441
434
|
}
|
@@ -445,7 +438,7 @@ module CockatriceFeeder
|
|
445
438
|
puts "#{decks.length} decks found."
|
446
439
|
decks.each {|d|
|
447
440
|
CockatriceFeeder.deckstats_deck(d)
|
448
|
-
if d[:cardlist].length
|
441
|
+
if d[:cardlist].length > 0
|
449
442
|
total_decks += 1
|
450
443
|
end
|
451
444
|
}
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cockatrice_feeder
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Matthew Steinwachs
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-11-
|
11
|
+
date: 2020-11-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: nokogiri
|
@@ -38,22 +38,8 @@ dependencies:
|
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0.18'
|
41
|
-
|
42
|
-
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
44
|
-
requirements:
|
45
|
-
- - "~>"
|
46
|
-
- !ruby/object:Gem::Version
|
47
|
-
version: '2.5'
|
48
|
-
type: :runtime
|
49
|
-
prerelease: false
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
51
|
-
requirements:
|
52
|
-
- - "~>"
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: '2.5'
|
55
|
-
description: A tool to scrape MTG decks from the internet along with some meta information
|
56
|
-
and create Cockatrice compatible deck files.
|
41
|
+
description: A tool to scrape MTG EDH decks from the internet along with some meta
|
42
|
+
information and create Cockatrice compatible deck files.
|
57
43
|
email: matt.steinwachs@gmail.com
|
58
44
|
executables:
|
59
45
|
- gobble
|
@@ -85,5 +71,5 @@ rubyforge_project:
|
|
85
71
|
rubygems_version: 2.6.14
|
86
72
|
signing_key:
|
87
73
|
specification_version: 4
|
88
|
-
summary: Scrape and generate decks for cockatrice
|
74
|
+
summary: Scrape and generate MTG EDH decks for cockatrice
|
89
75
|
test_files: []
|