Update scraper

This commit is contained in:
friarsol
2023-12-19 23:50:21 -05:00
committed by Chris H
parent 7b7aa72575
commit e273df2850
3 changed files with 292 additions and 341 deletions

View File

@@ -1,292 +1,291 @@
//Rank|Name|Rarity|Set
#1|Aclazotz, Deepest Betrayal|M|LCI #1|Aclazotz, Deepest Betrayal|M|LCI
#2|Bonehoard Dracosaur|M|LCI #2|Bonehoard Dracosaur|M|LCI
#3|Unstable Glyphbridge|R|LCI #3|Palani's Hatcher|R|LCI
#4|Palani's Hatcher|R|LCI #4|Sanguine Evangelist|R|LCI
#5|Kitesail Larcenist|R|LCI #5|Breeches, Eager Pillager|R|LCI
#6|Sanguine Evangelist|R|LCI #6|Huatli, Poet of Unity|M|LCI
#7|Breeches, Eager Pillager|R|LCI #7|Unstable Glyphbridge|R|LCI
#8|Huatli, Poet of Unity|M|LCI #8|Kitesail Larcenist|R|LCI
#9|Magmatic Galleon|R|LCI #9|Magmatic Galleon|R|LCI
#10|Pugnacious Hammerskull|R|LCI #10|Pugnacious Hammerskull|R|LCI
#11|Sentinel of the Nameless City|R|LCI #11|Sentinel of the Nameless City|R|LCI
#12|Trumpeting Carnosaur|R|LCI #12|Zoetic Glyph|U|LCI
#13|Spyglass Siren|U|LCI #13|Ojer Kaslem, Deepest Growth|M|LCI
#14|Quintorius Kand|M|LCI #14|Trumpeting Carnosaur|R|LCI
#15|Thousand Moons Smithy|R|LCI #15|Warden of the Inner Sky|R|LCI
#16|Zoetic Glyph|U|LCI #16|Spyglass Siren|U|LCI
#17|Ojer Kaslem, Deepest Growth|M|LCI #17|Quintorius Kand|M|LCI
#18|Warden of the Inner Sky|R|LCI #18|Preacher of the Schism|R|LCI
#19|Preacher of the Schism|R|LCI #19|Thousand Moons Smithy|R|LCI
#20|Akal Pakal, First Among Equals|R|LCI #20|Akal Pakal, First Among Equals|R|LCI
#21|Deep-Cavern Bat|U|LCI #21|Deep-Cavern Bat|U|LCI
#22|Resplendent Angel|M|LCI #22|The Skullspore Nexus|M|LCI
#23|Inti, Seneschal of the Sun|R|LCI #23|Resplendent Angel|M|LCI
#24|Subterranean Schooner|R|LCI #24|Inti, Seneschal of the Sun|R|LCI
#25|Chimil, the Inner Sun|M|LCI #25|Subterranean Schooner|R|LCI
#26|Anim Pakal, Thousandth Moon|R|LCI #26|Chimil, the Inner Sun|M|LCI
#27|Malcolm, Alluring Scoundrel|R|LCI #27|Anim Pakal, Thousandth Moon|R|LCI
#28|The Skullspore Nexus|M|LCI #28|Malcolm, Alluring Scoundrel|R|LCI
#29|Staunch Crewmate|U|LCI #29|Intrepid Paleontologist|R|LCI
#30|Ruin-Lurker Bat|U|LCI #30|Staunch Crewmate|U|LCI
#31|Intrepid Paleontologist|R|LCI #31|Ruin-Lurker Bat|U|LCI
#32|Itzquinth, Firstborn of Gishath|U|LCI #32|Itzquinth, Firstborn of Gishath|U|LCI
#33|Spring-Loaded Sawblades|U|LCI #33|Clay-Fired Bricks|U|LCI
#34|Geological Appraiser|U|LCI #34|Bedrock Tortoise|R|LCI
#35|Clay-Fired Bricks|U|LCI #35|Spring-Loaded Sawblades|U|LCI
#36|Ojer Pakpatiq, Deepest Epoch|M|LCI #36|Geological Appraiser|U|LCI
#37|Bedrock Tortoise|R|LCI #37|Ojer Pakpatiq, Deepest Epoch|M|LCI
#38|Restless Anchorage|R|LCI #38|Captain Storm, Cosmium Raider|U|LCI
#39|Deepfathom Echo|R|LCI #39|Chupacabra Echo|U|LCI
#40|Miner's Guidewing|C|LCI #40|Miner's Guidewing|C|LCI
#41|Oltec Cloud Guard|C|LCI #41|Oltec Cloud Guard|C|LCI
#42|Waterwind Scout|C|LCI #42|Waterwind Scout|C|LCI
#43|Kellan, Daring Traveler|R|LCI #43|Kellan, Daring Traveler|R|LCI
#44|Captain Storm, Cosmium Raider|U|LCI #44|Restless Anchorage|R|LCI
#45|The Everflowing Well|R|LCI #45|Restless Ridgeline|R|LCI
#46|Restless Ridgeline|R|LCI #46|Deepfathom Echo|R|LCI
#47|Chupacabra Echo|U|LCI #47|Jadelight Spelunker|R|LCI
#48|Jadelight Spelunker|R|LCI #48|Starving Revenant|R|LCI
#49|Poetic Ingenuity|R|LCI #49|Hulking Raptor|R|LCI
#50|Dusk Rose Reliquary|U|LCI #50|Oaken Siren|C|LCI
#51|Dire Flail|R|LCI #51|The Everflowing Well|R|LCI
#52|Cogwork Wrestler|C|LCI #52|Bringer of the Last Gift|R|LCI
#53|Lodestone Needle|U|LCI #53|Throne of the Grim Captain|R|LCI
#54|Starving Revenant|R|LCI #54|Dusk Rose Reliquary|U|LCI
#55|The Ancient One|M|LCI #55|Dire Flail|R|LCI
#56|Hulking Raptor|R|LCI #56|Cogwork Wrestler|C|LCI
#57|Oaken Siren|C|LCI #57|Lodestone Needle|U|LCI
#58|Ojer Axonil, Deepest Might|M|LCI #58|Cenote Scout|U|LCI
#59|Abuelo, Ancestral Echo|R|LCI #59|Abuelo, Ancestral Echo|R|LCI
#60|Vito, Fanatic of Aclazotz|M|LCI #60|Poetic Ingenuity|R|LCI
#61|Throne of the Grim Captain|R|LCI #61|Pathfinding Axejaw|C|LCI
#62|Petrify|C|LCI #62|Petrify|C|LCI
#63|Inverted Iceberg|C|LCI #63|Inverted Iceberg|C|LCI
#64|Restless Reef|R|LCI #64|Dreadmaw's Ire|U|LCI
#65|Etali's Favor|C|LCI #65|The Ancient One|M|LCI
#66|Bringer of the Last Gift|R|LCI #66|Etali's Favor|C|LCI
#67|Thrashing Brontodon|U|LCI #67|Bloodletter of Aclazotz|M|LCI
#68|Threefold Thunderhulk|R|LCI #68|Ojer Axonil, Deepest Might|M|LCI
#69|Market Gnome|U|LCI #69|Poison Dart Frog|C|LCI
#70|Belligerent Yearling|U|LCI #70|Thrashing Brontodon|U|LCI
#71|Pathfinding Axejaw|C|LCI #71|Vito, Fanatic of Aclazotz|M|LCI
#72|Roaming Throne|R|LCI #72|Defossilize|U|LCI
#73|Dreadmaw's Ire|U|LCI #73|Belligerent Yearling|U|LCI
#74|Kinjalli's Dawnrunner|U|LCI #74|Roaming Throne|R|LCI
#75|Unlucky Drop|C|LCI #75|Restless Reef|R|LCI
#76|Brackish Blunder|C|LCI #76|Staggering Size|C|LCI
#77|Tinker's Tote|C|LCI #77|Malamet Battle Glyph|U|LCI
#78|Cenote Scout|U|LCI #78|Goblin Tomb Raider|C|LCI
#79|Defossilize|U|LCI #79|Kinjalli's Dawnrunner|U|LCI
#80|Diamond Pick-Axe|U|LCI #80|Unlucky Drop|C|LCI
#81|Earthshaker Dreadmaw|U|LCI #81|Brackish Blunder|C|LCI
#82|Master's Guide-Mural|U|LCI #82|Tinker's Tote|C|LCI
#83|Staggering Size|C|LCI #83|Souls of the Lost|R|LCI
#84|Goblin Tomb Raider|C|LCI #84|Restless Prairie|R|LCI
#85|Waylaying Pirates|C|LCI #85|Threefold Thunderhulk|R|LCI
#86|Souls of the Lost|R|LCI #86|Market Gnome|U|LCI
#87|Poison Dart Frog|C|LCI #87|Diamond Pick-Axe|U|LCI
#88|Restless Prairie|R|LCI #88|Colossadactyl|U|LCI
#89|The Belligerent|R|LCI #89|Earthshaker Dreadmaw|U|LCI
#90|Braided Net|R|LCI #90|Master's Guide-Mural|U|LCI
#91|Scytheclaw Raptor|U|LCI #91|Triumphant Chomp|U|LCI
#92|Colossadactyl|U|LCI #92|Abrade|C|LCI
#93|Guardian of the Great Door|U|LCI #93|Huatli's Final Strike|C|LCI
#94|Vanguard of the Rose|U|LCI #94|Scampering Surveyor|U|LCI
#95|Corpses of the Lost|R|LCI #95|Volatile Wanderglyph|C|LCI
#96|Triumphant Chomp|U|LCI #96|Tithing Blade|C|LCI
#97|Caparocti Sunborn|U|LCI #97|Waylaying Pirates|C|LCI
#98|Abrade|C|LCI #98|Stalactite Stalker|R|LCI
#99|Huatli's Final Strike|C|LCI #99|The Belligerent|R|LCI
#100|Malamet Battle Glyph|U|LCI #100|Braided Net|R|LCI
#101|Cavern Stomper|C|LCI #101|Guardian of the Great Door|U|LCI
#102|Volatile Wanderglyph|C|LCI #102|Corpses of the Lost|R|LCI
#103|Plundering Pirate|C|LCI #103|Caparocti Sunborn|U|LCI
#104|Chart a Course|U|LCI #104|Kutzil, Malamet Exemplar|U|LCI
#105|Stalactite Stalker|R|LCI #105|Bitter Triumph|U|LCI
#106|Tishana's Tidebinder|R|LCI #106|Cavern Stomper|C|LCI
#107|Explorer's Cache|U|LCI #107|Armored Kincaller|C|LCI
#108|Saheeli's Lattice|U|LCI #108|Plundering Pirate|C|LCI
#109|Jade Seedstones|U|LCI #109|Ancestors' Aid|C|LCI
#110|Kutzil, Malamet Exemplar|U|LCI #110|Quicksand Whirlpool|C|LCI
#111|Orazca Puzzle-Door|C|LCI #111|Ironpaw Aspirant|C|LCI
#112|Bitter Triumph|U|LCI #112|Ojer Taq, Deepest Foundation|M|LCI
#113|Scampering Surveyor|U|LCI #113|Tishana's Tidebinder|R|LCI
#114|Armored Kincaller|C|LCI #114|Terror Tide|R|LCI
#115|Sunshot Militia|C|LCI #115|Scytheclaw Raptor|U|LCI
#116|Ancestors' Aid|C|LCI #116|Explorer's Cache|U|LCI
#117|Tithing Blade|C|LCI #117|Vanguard of the Rose|U|LCI
#118|Quicksand Whirlpool|C|LCI #118|Saheeli's Lattice|U|LCI
#119|Ironpaw Aspirant|C|LCI #119|Ixalli's Lorekeeper|U|LCI
#120|Deconstruction Hammer|C|LCI #120|Jade Seedstones|U|LCI
#121|Acrobatic Leap|C|LCI #121|Tendril of the Mycotyrant|U|LCI
#122|Hidden Courtyard|C|LCI #122|Wail of the Forgotten|R|LCI
#123|Ojer Taq, Deepest Foundation|M|LCI #123|Orazca Puzzle-Door|C|LCI
#124|Bloodletter of Aclazotz|M|LCI #124|Sunshot Militia|C|LCI
#125|Dinotomaton|C|LCI #125|Panicked Altisaur|C|LCI
#126|Hermitic Nautilus|U|LCI #126|Another Chance|C|LCI
#127|Council of Echoes|U|LCI #127|Deconstruction Hammer|C|LCI
#128|Ixalli's Lorekeeper|U|LCI #128|Acrobatic Leap|C|LCI
#129|Tendril of the Mycotyrant|U|LCI #129|Hidden Courtyard|C|LCI
#130|Fanatical Offering|C|LCI #130|Hidden Nursery|C|LCI
#131|Panicked Altisaur|C|LCI #131|Chart a Course|U|LCI
#132|Another Chance|C|LCI #132|Dinotomaton|C|LCI
#133|River Herald Scout|C|LCI #133|Hermitic Nautilus|U|LCI
#134|Attentive Sunscribe|C|LCI #134|Council of Echoes|U|LCI
#135|Hidden Cataract|C|LCI #135|Molten Collapse|R|LCI
#136|Sinuous Benthisaur|U|LCI #136|Fanatical Offering|C|LCI
#137|Cosmium Confluence|R|LCI #137|Sunfire Torch|C|LCI
#138|Malamet War Scribe|U|LCI #138|Join the Dead|C|LCI
#139|Terror Tide|R|LCI #139|Echo of Dusk|C|LCI
#140|Sunfire Torch|C|LCI #140|Deathcap Marionette|C|LCI
#141|Join the Dead|C|LCI #141|Dead Weight|C|LCI
#142|Deathcap Marionette|C|LCI #142|River Herald Scout|C|LCI
#143|Dead Weight|C|LCI #143|Attentive Sunscribe|C|LCI
#144|Shipwreck Sentry|C|LCI #144|Captivating Cave|C|LCI
#145|Eaten by Piranhas|U|LCI #145|Hidden Cataract|C|LCI
#146|Oltec Archaeologists|C|LCI #146|Hidden Necropolis|C|LCI
#147|Might of the Ancestors|U|LCI #147|Hidden Volcano|C|LCI
#148|Captivating Cave|C|LCI #148|Sinuous Benthisaur|U|LCI
#149|Hidden Necropolis|C|LCI #149|Idol of the Deep King|C|LCI
#150|Hidden Nursery|C|LCI #150|Cosmium Confluence|R|LCI
#151|Hidden Volcano|C|LCI #151|Saheeli, the Sun's Brilliance|M|LCI
#152|Idol of the Deep King|C|LCI #152|Sovereign Okinec Ahau|M|LCI
#153|Skullcap Snail|C|LCI #153|Skullcap Snail|C|LCI
#154|Dauntless Dismantler|U|LCI #154|Malamet War Scribe|U|LCI
#155|Confounding Riddle|U|LCI #155|Twists and Turns|U|LCI
#156|Brass's Tunnel-Grinder|R|LCI #156|Visage of Dread|U|LCI
#157|Twists and Turns|U|LCI #157|River Herald Guide|C|LCI
#158|Restless Vents|R|LCI #158|Shipwreck Sentry|C|LCI
#159|Visage of Dread|U|LCI #159|Eaten by Piranhas|U|LCI
#160|Molten Collapse|R|LCI #160|Soaring Sandwing|C|LCI
#161|Wail of the Forgotten|R|LCI #161|Oltec Archaeologists|C|LCI
#162|River Herald Guide|C|LCI #162|Ghalta, Stampede Tyrant|M|LCI
#163|Echo of Dusk|C|LCI #163|Bat Colony|U|LCI
#164|Pirate Hat|C|LCI #164|Dauntless Dismantler|U|LCI
#165|Soaring Sandwing|C|LCI #165|Confounding Riddle|U|LCI
#166|Adaptive Gemguard|C|LCI #166|Rampaging Ceratops|U|LCI
#167|Saheeli, the Sun's Brilliance|M|LCI #167|Nurturing Bristleback|C|LCI
#168|Careening Mine Cart|U|LCI #168|Akawalli, the Seething Tower|U|LCI
#169|Rampaging Ceratops|U|LCI #169|Restless Vents|R|LCI
#170|Nurturing Bristleback|C|LCI #170|Synapse Necromage|U|LCI
#171|Akawalli, the Seething Tower|U|LCI #171|Malamet Scythe|C|LCI
#172|Kutzil's Flanker|R|LCI #172|In the Presence of Ages|C|LCI
#173|Stinging Cave Crawler|U|LCI #173|Burning Sun Cavalry|C|LCI
#174|Synapse Necromage|U|LCI #174|Ray of Ruin|C|LCI
#175|In the Presence of Ages|C|LCI #175|Sage of Days|C|LCI
#176|Rumbling Rockslide|C|LCI #176|Pirate Hat|C|LCI
#177|Burning Sun Cavalry|C|LCI #177|Might of the Ancestors|U|LCI
#178|Ray of Ruin|C|LCI #178|Cosmium Blast|C|LCI
#179|Cosmium Blast|C|LCI #179|Adaptive Gemguard|C|LCI
#180|Rampaging Spiketail|C|LCI #180|Rampaging Spiketail|C|LCI
#181|Goldfury Strider|U|LCI #181|Uchbenbak, the Great Mistake|U|LCI
#182|Ghalta, Stampede Tyrant|M|LCI #182|Careening Mine Cart|U|LCI
#183|Uchbenbak, the Great Mistake|U|LCI #183|Brass's Tunnel-Grinder|R|LCI
#184|Bat Colony|U|LCI #184|Kutzil's Flanker|R|LCI
#185|Helping Hand|U|LCI #185|Stinging Cave Crawler|U|LCI
#186|Enterprising Scallywag|U|LCI #186|Zoyowa Lava-Tongue|U|LCI
#187|Digsite Conservator|U|LCI #187|Forgotten Monument|U|LCI
#188|Oteclan Landmark|C|LCI #188|Rumbling Rockslide|C|LCI
#189|Merfolk Cave-Diver|U|LCI #189|Primordial Gnawer|C|LCI
#190|Zoyowa Lava-Tongue|U|LCI #190|Tarrian's Journal|R|LCI
#191|Hoverstone Pilgrim|U|LCI #191|Goldfury Strider|U|LCI
#192|Malamet Scythe|C|LCI #192|Coati Scavenger|U|LCI
#193|Primordial Gnawer|C|LCI #193|Sunbird Standard|U|LCI
#194|Sage of Days|C|LCI #194|Enterprising Scallywag|U|LCI
#195|Sovereign Okinec Ahau|M|LCI #195|Digsite Conservator|U|LCI
#196|Sunken Citadel|R|LCI #196|Oteclan Landmark|C|LCI
#197|Abyssal Gorestalker|U|LCI #197|Merfolk Cave-Diver|U|LCI
#198|Tarrian's Soulcleaver|R|LCI #198|Hoverstone Pilgrim|U|LCI
#199|Forgotten Monument|U|LCI #199|Promising Vein|C|LCI
#200|Promising Vein|C|LCI #200|Walk with the Ancestors|C|LCI
#201|Mineshaft Spider|C|LCI #201|Mineshaft Spider|C|LCI
#202|Malamet Veteran|C|LCI #202|Seismic Monstrosaur|C|LCI
#203|Seismic Monstrosaur|C|LCI #203|Daring Discovery|C|LCI
#204|Daring Discovery|C|LCI #204|Mischievous Pup|U|LCI
#205|Mischievous Pup|U|LCI #205|Thousand Moons Crackshot|C|LCI
#206|Out of Air|C|LCI #206|Envoy of Okinec Ahau|C|LCI
#207|Ancestral Reminiscence|C|LCI #207|The Mycotyrant|M|LCI
#208|Thousand Moons Crackshot|C|LCI #208|Cavern of Souls|M|LCI
#209|Envoy of Okinec Ahau|C|LCI #209|Cavernous Maw|U|LCI
#210|Tarrian's Journal|R|LCI #210|Soulcoil Viper|U|LCI
#211|Coati Scavenger|U|LCI #211|Sunken Citadel|R|LCI
#212|Sunbird Standard|U|LCI #212|Helping Hand|U|LCI
#213|Cavernous Maw|U|LCI #213|Abyssal Gorestalker|U|LCI
#214|Soulcoil Viper|U|LCI #214|Gargantuan Leech|U|LCI
#215|Hurl into History|U|LCI #215|Calamitous Cave-In|U|LCI
#216|Nicanzil, Current Conductor|U|LCI #216|Tarrian's Soulcleaver|R|LCI
#217|Cartographer's Companion|C|LCI #217|Malamet Veteran|C|LCI
#218|Walk with the Ancestors|C|LCI #218|Fungal Fortitude|C|LCI
#219|Fungal Fortitude|C|LCI #219|Out of Air|C|LCI
#220|Glorifier of Suffering|C|LCI #220|Ancestral Reminiscence|C|LCI
#221|Family Reunion|C|LCI #221|Glorifier of Suffering|C|LCI
#222|Didact Echo|C|LCI #222|Didact Echo|C|LCI
#223|Bartolome del Presidio|U|LCI #223|Amalia Benavides Aguirre|R|LCI
#224|Amalia Benavides Aguirre|R|LCI #224|Hurl into History|U|LCI
#225|Gargantuan Leech|U|LCI #225|Dowsing Device|U|LCI
#226|Dowsing Device|U|LCI #226|Nicanzil, Current Conductor|U|LCI
#227|Runaway Boulder|C|LCI #227|Runaway Boulder|C|LCI
#228|Mephitic Draught|C|LCI #228|Cartographer's Companion|C|LCI
#229|Relic's Roar|C|LCI #229|Family Reunion|C|LCI
#230|Gishath, Sun's Avatar|M|LCI #230|Bartolome del Presidio|U|LCI
#231|The Mycotyrant|M|LCI #231|Gishath, Sun's Avatar|M|LCI
#232|Cavern of Souls|M|LCI #232|Glimpse the Core|U|LCI
#233|Glimpse the Core|U|LCI #233|Compass Gnome|C|LCI
#234|Compass Gnome|C|LCI #234|Over the Edge|C|LCI
#235|Calamitous Cave-In|U|LCI #235|Malamet Brawler|C|LCI
#236|Over the Edge|C|LCI #236|Hotfoot Gnome|C|LCI
#237|Malamet Brawler|C|LCI #237|Mephitic Draught|C|LCI
#238|Hotfoot Gnome|C|LCI #238|Greedy Freebooter|C|LCI
#239|Greedy Freebooter|C|LCI #239|Relic's Roar|C|LCI
#240|Marauding Brinefang|C|LCI #240|Marauding Brinefang|C|LCI
#241|Thousand Moons Infantry|C|LCI #241|Queen's Bay Paladin|R|LCI
#242|Treasure Map|R|LCI #242|Seeker of Sunlight|C|LCI
#243|Queen's Bay Paladin|R|LCI #243|Brazen Blademaster|C|LCI
#244|Self-Reflection|U|LCI #244|Screaming Phantom|C|LCI
#245|Hunter's Blowgun|C|LCI #245|Treasure Map|R|LCI
#246|Seeker of Sunlight|C|LCI #246|Get Lost|R|LCI
#247|Brazen Blademaster|C|LCI #247|Curator of Sun's Creation|U|LCI
#248|Screaming Phantom|C|LCI #248|Self-Reflection|U|LCI
#249|Song of Stupefaction|C|LCI #249|Waterlogged Hulk|U|LCI
#250|Curator of Sun's Creation|U|LCI #250|Hunter's Blowgun|C|LCI
#251|Waterlogged Hulk|U|LCI #251|Thousand Moons Infantry|C|LCI
#252|Broodrage Mycoid|C|LCI #252|Song of Stupefaction|C|LCI
#253|Get Lost|R|LCI #253|Broodrage Mycoid|C|LCI
#254|Frilled Cave-Wurm|C|LCI #254|Spelunking|U|LCI
#255|Basking Capybara|C|LCI #255|Squirming Emergence|R|LCI
#256|Deep Goblin Skulltaker|C|LCI #256|Frilled Cave-Wurm|C|LCI
#257|Acolyte of Aclazotz|C|LCI #257|Basking Capybara|C|LCI
#258|Deeproot Pilgrimage|R|LCI #258|Deep Goblin Skulltaker|C|LCI
#259|Growing Rites of Itlimoc|R|LCI #259|Acolyte of Aclazotz|C|LCI
#260|Spelunking|U|LCI #260|Deeproot Pilgrimage|R|LCI
#261|Matzalantli, the Great Door|R|LCI #261|Growing Rites of Itlimoc|R|LCI
#262|Bloodthorn Flail|U|LCI #262|Matzalantli, the Great Door|R|LCI
#263|The Millennium Calendar|M|LCI #263|Bloodthorn Flail|U|LCI
#264|Pit of Offerings|U|LCI #264|The Millennium Calendar|M|LCI
#265|Zoyowa's Justice|U|LCI #265|Pit of Offerings|U|LCI
#266|Glowcap Lantern|U|LCI #266|Fabrication Foundry|R|LCI
#267|Squirming Emergence|R|LCI #267|Zoyowa's Justice|U|LCI
#268|Echoing Deeps|R|LCI #268|Glowcap Lantern|U|LCI
#269|Abuelo's Awakening|R|LCI #269|Echoing Deeps|R|LCI
#270|Canonized in Blood|U|LCI #270|Abuelo's Awakening|R|LCI
#271|Malicious Eclipse|U|LCI #271|Canonized in Blood|U|LCI
#272|Kaslem's Stonetree|C|LCI #272|Malicious Eclipse|U|LCI
#273|Swashbuckler's Whip|U|LCI #273|Kaslem's Stonetree|C|LCI
#274|Volatile Fault|U|LCI #274|Swashbuckler's Whip|U|LCI
#275|Disruptor Wanderglyph|C|LCI #275|Volatile Fault|U|LCI
#276|Buried Treasure|C|LCI #276|Disruptor Wanderglyph|C|LCI
#277|Disturbed Slumber|C|LCI #277|Buried Treasure|C|LCI
#278|Tectonic Hazard|C|LCI #278|Disturbed Slumber|C|LCI
#279|Child of the Volcano|C|LCI #279|Tectonic Hazard|C|LCI
#280|Vito's Inquisitor|C|LCI #280|Child of the Volcano|C|LCI
#281|Grasping Shadows|U|LCI #281|Vito's Inquisitor|C|LCI
#282|The Enigma Jewel|M|LCI #282|Grasping Shadows|U|LCI
#283|Hit the Mother Lode|R|LCI #283|The Enigma Jewel|M|LCI
#284|Fabrication Foundry|R|LCI #284|Hit the Mother Lode|R|LCI
#285|Sorcerous Spyglass|U|LCI #285|Sorcerous Spyglass|U|LCI
#286|Contested Game Ball|U|LCI #286|Contested Game Ball|U|LCI
#287|Plains|C|LCI #287|Plains|C|LCI
#288|Island|C|LCI #288|Island|C|LCI
#289|Swamp|C|LCI #289|Swamp|C|LCI
#290|Mountain|C|LCI #290|Mountain|C|LCI
#291|Forest|C|LCI #291|Forest|C|LCI

View File

@@ -1,7 +1,6 @@
package forge.gamemodes.limited; package forge.gamemodes.limited;
import java.io.File; import java.io.File;
import java.io.IOException;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;

View File

@@ -1,92 +1,50 @@
import json import json
import sys
import requests import requests
import argparse import argparse
import BeautifulSoup
BESTIAIRE = False def draftsimRankings(edition='KHM', extra=None):
SMDS = True url1 = 'https://draftsim.com/generated/%s/' % (edition)
url2 = '%s' % edition
def bestiaireRanking(code='EMN', name='Eldritch Moon'): url = url1 + url2 + '.js'
# POST http://draft.bestiaire.org/ranking.php r = requests.get(url)
# Params:
# edition: ORI
data, code = idToNameLoops(name, code)
#r = requests.post("http://draft.bestiaire.org/ranking.php", data={'edition': code})
pass
# Output to file
def smdsRankings(edition='EldritchMoon', name='Eldritch Moon'):
# get http://syunakira.com/smd/pointranking/index.php?packname=MAGICORIGINS&language=English
r = requests.get("http://syunakira.com/smd/pointranking/index.php?packname=%s&language=English" % edition)
bs = BeautifulSoup.BeautifulSoup(r.text)
images = bs.findAll('img')
cards = []
data, code = idToNameLoops(name)
with open(name + ' Rankings.txt', 'w') as out:
# Output to file
out.write('//Rank|Name|Rarity|Set\n')
# #1|Sphinx of the Final Word|M|OGW
c = 1
for i in images:
img = i.get('src')
idx = img.find(edition)
if idx > -1:
parsed = img[idx:-4].split("/")[-1]
if parsed in data:
# Basic lands are weird
card = data[parsed]
l = [str(c), card['name'], card['rarity'], code]
c += 1
out.write('#')
out.write('|'.join(l))
out.write('\n')
return True
def draftsimRankings(edition='KHM', name='Kalheim'):
r = requests.get("http://draftsim.com/generated/%s.js" % edition)
tx = r.text tx = r.text
start = tx.find('[') start = tx.find('[')
end = tx.rfind(']') end = tx.rfind(']')
# Deal with illegal JSON :( # Deal with illegal JSON :(
replaceList = ['name', 'castingcost1', 'castingcost2', 'type', 'rarity', 'myrating', 'image', 'cmc', 'colors', 'creaturesort', 'colorsort', 'chase_card'] replaceList = ['name', 'castingcost1', 'castingcost2', 'type', 'rarity', 'myrating', 'image', "image2", 'cmc', 'colors', 'creaturesort', 'colorsort', 'chase_card']
# Has an extra comma that json loader doesn't like # Has an extra comma that json loader doesn't like
txt = tx[start:end-1]+']' txt = tx[start:end-1]+']'
for rpl in replaceList: for rpl in replaceList:
txt = txt.replace('%s:'%rpl, '"%s":'%rpl) txt = txt.replace('%s:'%rpl, '"%s":'%rpl)
txt2 = ""
if extra:
url3 = '%s' % extra
urlx = url1 + url3 + '.js'
x = requests.get(urlx)
tx2 = x.text
start = tx2.find('[')
end = tx2.rfind(']')
txt2 = tx2[start:end-1]+']'
for rpl in replaceList:
txt2 = txt2.replace('%s:'%rpl, '"%s":'%rpl)
txt2 = txt2.replace('[', '', 1)
trim = txt.rfind(']')
txt = txt[:trim] + ', ' + txt[trim+1:]
cardlist = json.loads(txt) txt3 = txt + txt2
txt3 = txt3.replace(u'\xa9', '')
print(txt3)
cardlist = json.loads(txt3)
cardlist.sort(key=lambda k:k['myrating'], reverse=True) cardlist.sort(key=lambda k:k['myrating'], reverse=True)
with open(name + '_Rankings.txt', 'w') as out: with open("../res/draft/rankings/" + edition.lower() + '.rnk', 'w') as out:
for counter, card in enumerate(cardlist): for counter, card in enumerate(cardlist):
l = [str(counter+1), card['name'].replace('_', ' '), card['rarity'], edition] l = [str(counter+1), card['name'].replace('_', ' '), card['rarity'], edition]
out.write('#') out.write('#')
out.write('|'.join(l)) out.write('|'.join(l))
out.write('\n') out.write('\n')
def editionsRankssim(edition='SOI', name='Shadows over Innistrad'):
r = requests.get("http://draftsim.com/%s.js" % edition)
tx = r.text
start = tx.find('[')
end = tx.rfind(']')
# Deal with illegal JSON :(
replaceList = ['name', 'castingcost1', 'castingcost2', 'type', 'rarity', 'myrating', 'image', 'cmc', 'colors', 'creaturesort', 'colorsort']
# Has an extra comma that json loader doesn't like
txt = tx[start:end-1]+']'
for rpl in replaceList:
txt = txt.replace('%s:'%rpl, '"%s":'%rpl)
cardlist = json.loads(txt)
out = open('%s.txt' % name, 'w')
for idx, card in enumerate(cardlist):
out.write('%s %s %s\n' % (idx+1, card['rarity'], card['name']))
out.close()
def idToNameLoops(name, code=None): def idToNameLoops(name, code=None):
metadata = True metadata = True
@@ -109,14 +67,9 @@ def idToNameLoops(name, code=None):
if __name__ == "__main__": if __name__ == "__main__":
parser = argparse.ArgumentParser(description='Edition File Generator') parser = argparse.ArgumentParser(description='Edition File Generator')
# TODO Split setcode and smds "name"
parser.add_argument('-c', action='store', dest='setcode', help='Required setcode', required=True) parser.add_argument('-c', action='store', dest='setcode', help='Required setcode', required=True)
parser.add_argument('-n', action='store', dest='name', help='Required Name of edition', required=True) parser.add_argument('-x', action='store', dest='altpage', help='Additional rankings page', required=False)
result = parser.parse_args() result = parser.parse_args()
if len(result.setcode) < 4: draftsimRankings(result.setcode, result.name)
draftsimRankings(result.setcode, result.name)
else:
smdsRankings(result.setcode, result.name)