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.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/cockatrice_feeder.rb +32 -39
  3. metadata +5 -19
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b8351da4a5eff2051048c3b0c0610167361f97ee
4
- data.tar.gz: 56f2632308cd7bd822a9daab16741d247fbbd274
3
+ metadata.gz: b5240773a3d354704315fc39c1849dca7b5b340e
4
+ data.tar.gz: 841cec3ad20d2ccea73ef3034f03fbf7aca2e8a4
5
5
  SHA512:
6
- metadata.gz: dd03bf14ebbdf4731c7acb48147dd786c87668737e06f867d1048ff2241a79b39a34deb14f806ed1abb283a0c2d479a62d176f6f5124f90e6558ff5ad3688cb9
7
- data.tar.gz: 4777f537c2a521625396116ee1b6bb9860f62d482c6e9e61815b39cdf5996fd2df7e43979656040250435e481ab791c3616dcf45df7a94853df6b450c64f698d
6
+ metadata.gz: c3e20b320975dc4cb933ff8999b40dd82dc008123e6b03ef99d47e4146947bd9c2322ad42cc73e846f106aaf3ee147bfc24608441419ce64786a331277c3f519
7
+ data.tar.gz: e7b518285b7fd5e7441d0a269fd693aac5b49909e49d6ca61fad3b1b1095507f9b42f5c2ec0de13cb6aabc0d4ed20fc263345e5e817995930ecc71241c4b62c0
@@ -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 = "nil", pages = (1..1), order = "likes,desc", price_min = "", price_max = "")
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(order)}",
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] = doc.css(".deck_overview_price").first.content.gsub("$","").strip.split(".").first
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
- decks << {
374
- name: "", # r.css("td")[1].css("a")[0].content,
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: r.css("td")[6].css("strong")[0].content.
377
- gsub("<span class=\"hidden-xs\">","").
378
- gsub("</span>","").gsub(/\s+/, ""),
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 < 0
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 < 0
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.3
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-10 00:00:00.000000000 Z
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
- - !ruby/object:Gem::Dependency
42
- name: descriptive_statistics
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: []