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.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/cockatrice_feeder.rb +80 -2
  3. metadata +1 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b5240773a3d354704315fc39c1849dca7b5b340e
4
- data.tar.gz: 841cec3ad20d2ccea73ef3034f03fbf7aca2e8a4
3
+ metadata.gz: 1344e9e4810613fdf300d33c3183bf543bd84c0e
4
+ data.tar.gz: 5156acec829d0d5c9e212cdf7168c2f6b47f27f4
5
5
  SHA512:
6
- metadata.gz: c3e20b320975dc4cb933ff8999b40dd82dc008123e6b03ef99d47e4146947bd9c2322ad42cc73e846f106aaf3ee147bfc24608441419ce64786a331277c3f519
7
- data.tar.gz: e7b518285b7fd5e7441d0a269fd693aac5b49909e49d6ca61fad3b1b1095507f9b42f5c2ec0de13cb6aabc0d4ed20fc263345e5e817995930ecc71241c4b62c0
6
+ metadata.gz: 5413e83b1dc5aa68cbe5fdcc6727e9befceb40a96e39ff9f5613f18b2f9a70bdb1ca2de71e2b701187434139bbb38ad534ba3b86a9d4abc8f321b6ff90effc95
7
+ data.tar.gz: 442ddb3c9c1edf9998ba4a20d336ac1381c37a448f70294e848241b27f2c19a1b58a9cd3ab0e4005275f2e2de62ddf1b898ead98efe1aa1502ec2804612d6e96
@@ -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 << deck_objs(
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()
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cockatrice_feeder
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matthew Steinwachs