cockatrice_feeder 0.0.3 → 0.0.4
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 +32 -39
- metadata +5 -19
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b5240773a3d354704315fc39c1849dca7b5b340e
|
4
|
+
data.tar.gz: 841cec3ad20d2ccea73ef3034f03fbf7aca2e8a4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c3e20b320975dc4cb933ff8999b40dd82dc008123e6b03ef99d47e4146947bd9c2322ad42cc73e846f106aaf3ee147bfc24608441419ce64786a331277c3f519
|
7
|
+
data.tar.gz: e7b518285b7fd5e7441d0a269fd693aac5b49909e49d6ca61fad3b1b1095507f9b42f5c2ec0de13cb6aabc0d4ed20fc263345e5e817995930ecc71241c4b62c0
|
data/lib/cockatrice_feeder.rb
CHANGED
@@ -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 = "
|
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(
|
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] =
|
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
|
-
|
374
|
-
|
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:
|
377
|
-
|
378
|
-
|
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
|
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
|
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.
|
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-
|
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
|
-
|
42
|
-
|
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: []
|