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.
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