cockatrice_feeder 0.0.4 → 0.0.5
Sign up to get free protection for your applications and to get access to all the features.
- 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()
|