cockatrice_feeder 0.0.4 → 0.0.5
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 +80 -2
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1344e9e4810613fdf300d33c3183bf543bd84c0e
|
4
|
+
data.tar.gz: 5156acec829d0d5c9e212cdf7168c2f6b47f27f4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5413e83b1dc5aa68cbe5fdcc6727e9befceb40a96e39ff9f5613f18b2f9a70bdb1ca2de71e2b701187434139bbb38ad534ba3b86a9d4abc8f321b6ff90effc95
|
7
|
+
data.tar.gz: 442ddb3c9c1edf9998ba4a20d336ac1381c37a448f70294e848241b27f2c19a1b58a9cd3ab0e4005275f2e2de62ddf1b898ead98efe1aa1502ec2804612d6e96
|
data/lib/cockatrice_feeder.rb
CHANGED
@@ -54,7 +54,7 @@ module CockatriceFeeder
|
|
54
54
|
Dir.mkdir(@@deck_dir)
|
55
55
|
puts "Creating a folder at '#{@@deck_dir}' for generated decks."
|
56
56
|
|
57
|
-
folders = %w(edhrecavg mtgdecks tappedout deckstats)
|
57
|
+
folders = %w(edhrecavg mtgdecks tappedout deckstats archidekt)
|
58
58
|
|
59
59
|
folders.each do |folder|
|
60
60
|
unless File.directory?(@@deck_dir+folder)
|
@@ -356,6 +356,65 @@ module CockatriceFeeder
|
|
356
356
|
end
|
357
357
|
end
|
358
358
|
|
359
|
+
def self.archidekt_decklist(
|
360
|
+
colors = nil, commander = nil, formats = 3, orderBy = "-createdAt", size: 100, pageSize: 50
|
361
|
+
)
|
362
|
+
|
363
|
+
url = [
|
364
|
+
"https://www.archidekt.com/api/decks/cards/?",
|
365
|
+
[
|
366
|
+
(colors.nil? ? nil : "colors=#{URI.encode_www_form_component(colors)}"),
|
367
|
+
(commander.nil? ? nil : "commanders=#{URI.encode_www_form_component(commander)}")",
|
368
|
+
"formats=#{formats}",
|
369
|
+
"orderBy=#{orderBy}",
|
370
|
+
"size=#{size}",
|
371
|
+
"pageSize=#{pageSize}",
|
372
|
+
pageSize
|
373
|
+
|
374
|
+
].compact.join("&")
|
375
|
+
].join("")
|
376
|
+
|
377
|
+
JSON.parse(HTTParty.get(url).body)
|
378
|
+
end
|
379
|
+
|
380
|
+
# deck = CockatriceFeeder.deck_obj("https://www.archidekt.com/decks/992684#Rocking_that_equipment_Bro")
|
381
|
+
# CockatriceFeeder.archidekt_deck(deck)
|
382
|
+
def self.archidekt_deck(deck)
|
383
|
+
deck_id = deck[:link].split("/").last.split("#").first
|
384
|
+
|
385
|
+
api_url = "https://www.archidekt.com/api/decks/#{deck_id}/"
|
386
|
+
|
387
|
+
deck_data = JSON.parse(HTTParty.get(api_url).body)
|
388
|
+
|
389
|
+
included_categories = deck_data["categories"].select{|c| c["includedInDeck"]}.map{|c| c["name"] }
|
390
|
+
commander_categories = deck_data["categories"].select{|c| c["isPremier"]}.map{|c| c["name"] }
|
391
|
+
cardlist = []
|
392
|
+
deck_data["cards"].each do |card|
|
393
|
+
cname = card["card"]["oracleCard"]["name"]
|
394
|
+
|
395
|
+
if card["card"]["oracleCard"]["layout"] != "split"
|
396
|
+
cname = cname.split(" // ").first
|
397
|
+
end
|
398
|
+
|
399
|
+
if (included_categories & card["categories"]).length > 0
|
400
|
+
cardlist << "#{card["quantity"]} #{cname}"
|
401
|
+
end
|
402
|
+
|
403
|
+
if (commander_categories & card["categories"]).length > 0
|
404
|
+
deck[:commanders] << cname
|
405
|
+
end
|
406
|
+
end
|
407
|
+
deck[:cardlist] = cardlist
|
408
|
+
|
409
|
+
deck[:name] = deck_data["name"]
|
410
|
+
|
411
|
+
deck[:date] = deck_data["updatedAt"]
|
412
|
+
|
413
|
+
mtggoldfish_pricer(deck)
|
414
|
+
|
415
|
+
output_cod(deck,"archidekt")
|
416
|
+
end
|
417
|
+
|
359
418
|
def self.mtgdecks_decklist(pages = (1..1))
|
360
419
|
decks = []
|
361
420
|
pages.each do |page|
|
@@ -368,7 +427,7 @@ module CockatriceFeeder
|
|
368
427
|
gsub("</span>","").gsub(/\s+/, "")
|
369
428
|
price = r.css("td")[7].css("span.paper")[0].content.gsub("$","").gsub(/\s+/, "")
|
370
429
|
|
371
|
-
decks <<
|
430
|
+
decks << deck_obj(
|
372
431
|
link: "https://mtgdecks.net"+r.css("td")[1].css("a")[0].attribute("href").value,
|
373
432
|
date: date,
|
374
433
|
price: price
|
@@ -401,6 +460,25 @@ module CockatriceFeeder
|
|
401
460
|
output_cod(deck,"mtgdecks")
|
402
461
|
end
|
403
462
|
|
463
|
+
def self.mtggoldfish_pricer(deck)
|
464
|
+
doc = Nokogiri::HTML(HTTParty.get("https://www.mtggoldfish.com/tools/deck_pricer#paper"))
|
465
|
+
csrf_token = nil
|
466
|
+
doc.css("meta").each do |m|
|
467
|
+
if !m.attribute("name").nil? && m.attribute("name").value == "csrf-token"
|
468
|
+
csrf_token = m.attribute("content").value
|
469
|
+
end
|
470
|
+
end
|
471
|
+
doc2 = Nokogiri::HTML(HTTParty.post("https://www.mtggoldfish.com/tools/deck_pricer#paper", {
|
472
|
+
body: {
|
473
|
+
utf8: "✓",
|
474
|
+
authenticity_token: csrf_token,
|
475
|
+
deck: deck[:cardlist].join("\n")
|
476
|
+
}
|
477
|
+
}))
|
478
|
+
|
479
|
+
deck[:price] = doc2.css(".deck-price-v2.paper").first.content.strip.split(" ").last.split(".").first
|
480
|
+
end
|
481
|
+
|
404
482
|
def self.gobble
|
405
483
|
setup(skip_meta = true)
|
406
484
|
update_commanders()
|