Compare commits
No commits in common. "896a6666a9100f8dddb3bb79d508cad0197c100d" and "0312a8266abc12a5e47a5d31a315bb4083fdcf3c" have entirely different histories.
896a6666a9
...
0312a8266a
|
@ -1,273 +0,0 @@
|
||||||
Set Name | Prerelease Kit EV
|
|
||||||
------------------------------------------------------------
|
|
||||||
Alpha Edition | #25,189.80
|
|
||||||
Beta Edition | #11,896.68
|
|
||||||
From the Vault: Relics | #5,010.96
|
|
||||||
Unlimited Edition | #3,808.92
|
|
||||||
Arabian Nights | #3,718.44
|
|
||||||
From the Vault: Exiled | #1,551.30
|
|
||||||
From the Vault: Realms | #1,445.22
|
|
||||||
Vampiric Bloodlust | #1,205.88
|
|
||||||
Open Hostility | #812.94
|
|
||||||
Stalwart Unity | #790.98
|
|
||||||
Legends | #737.58
|
|
||||||
From the Vault: Legends | #642.36
|
|
||||||
Draconic Domination | #638.52
|
|
||||||
Draconic Rage | #598.92
|
|
||||||
Entropic Uprising | #582.18
|
|
||||||
From the Vault: Transform | #560.34
|
|
||||||
From the Vault: Twenty | #542.46
|
|
||||||
Feline Ferocity | #519.90
|
|
||||||
From the Vault: Dragons | #518.64
|
|
||||||
Mystic Intellect | #474.00
|
|
||||||
Guided by Nature | #460.32
|
|
||||||
Party Time | #456.96
|
|
||||||
Lorehold Legacies | #433.08
|
|
||||||
Aura of Courage | #424.02
|
|
||||||
Breed Lethality | #423.36
|
|
||||||
Planar Portal | #408.54
|
|
||||||
From the Vault: Angels | #407.82
|
|
||||||
Antiquities | #405.66
|
|
||||||
Built from Scratch | #397.86
|
|
||||||
Peer Through Time | #384.84
|
|
||||||
Heavenly Inferno | #376.38
|
|
||||||
From the Vault: Lore | #363.00
|
|
||||||
Political Puppets | #360.24
|
|
||||||
Plunder the Graves | #348.54
|
|
||||||
Devour for Power | #347.58
|
|
||||||
Sworn to Darkness | #347.22
|
|
||||||
Exit from Exile | #344.40
|
|
||||||
Witherbloom Witchcraft | #342.60
|
|
||||||
Counterpunch | #329.34
|
|
||||||
Mind Flayarrrs | #324.24
|
|
||||||
Silverquill Statement | #318.72
|
|
||||||
Forged in Stone | #317.10
|
|
||||||
Timeless Wisdom | #314.52
|
|
||||||
Mirror Mastery | #309.54
|
|
||||||
Wade into Battle | #302.64
|
|
||||||
Dungeons of Death | #299.88
|
|
||||||
Invent Superiority | #294.12
|
|
||||||
Draconic Dissent | #284.76
|
|
||||||
Swell the Host | #282.84
|
|
||||||
Arcane Maelstrom | #281.58
|
|
||||||
Call the Spirits | #281.04
|
|
||||||
Prismari Performance | #278.28
|
|
||||||
Eternal Bargain | #267.42
|
|
||||||
Adaptive Enchantment | #264.84
|
|
||||||
Evasive Maneuvers | #263.64
|
|
||||||
Enhanced Evolution | #263.64
|
|
||||||
Quantum Quandrix | #255.96
|
|
||||||
Riveteers Rampage | #252.36
|
|
||||||
Power Hungry | #249.24
|
|
||||||
Exquisite Invention | #249.06
|
|
||||||
Bedecked Brokers | #245.16
|
|
||||||
Revised Edition | #238.86
|
|
||||||
Cabaretti Cacophony | #237.48
|
|
||||||
Faceless Menace | #230.40
|
|
||||||
Primal Genesis | #230.40
|
|
||||||
Ruthless Regiment | #229.62
|
|
||||||
Divine vs. Demonic | #228.30
|
|
||||||
Dimir Control | #228.12
|
|
||||||
From the Vault: Annihilation | #217.56
|
|
||||||
Faerie Schemes | #209.94
|
|
||||||
Mind Seize | #206.70
|
|
||||||
Buckle Up | #204.36
|
|
||||||
Savage Hunger | #193.68
|
|
||||||
Seize Control | #188.22
|
|
||||||
Undead Unleashed | #186.12
|
|
||||||
Gruul Stompy | #178.92
|
|
||||||
Nature of the Beast | #176.52
|
|
||||||
Knights vs. Dragons | #173.04
|
|
||||||
Maestros Massacre | #168.90
|
|
||||||
Upgrades Unleashed | #167.22
|
|
||||||
Symbiotic Swarm | #164.28
|
|
||||||
Obscura Operation | #158.16
|
|
||||||
Allied Fires | #155.40
|
|
||||||
Deadly Discovery | #153.90
|
|
||||||
Merciless Rage | #153.60
|
|
||||||
Mind vs. Might | #153.06
|
|
||||||
Arcane Wizardry | #151.20
|
|
||||||
Final Adventure | #146.64
|
|
||||||
Izzet vs. Golgari | #143.16
|
|
||||||
Wild Bounty | #140.28
|
|
||||||
Stronghold | #140.16
|
|
||||||
Nature's Vengeance | #138.66
|
|
||||||
Mono-Green Stompy | #135.90
|
|
||||||
Subjective Reality | #132.18
|
|
||||||
Vampiric Bloodline | #132.06
|
|
||||||
Mono-Red Aggro | #131.46
|
|
||||||
Elves vs. Goblins | #129.48
|
|
||||||
Garruk vs. Liliana | #127.32
|
|
||||||
Counter Surge | #126.54
|
|
||||||
Coven Counters | #125.40
|
|
||||||
Elves vs. Inventors | #124.56
|
|
||||||
Rakdos Vampires | #119.76
|
|
||||||
Phyrexia vs. the Coalition | #119.10
|
|
||||||
Exodus | #118.62
|
|
||||||
Urza's Saga | #117.00
|
|
||||||
Flash of Ferocity | #113.16
|
|
||||||
Cavalcade Charge | #105.96
|
|
||||||
Knights' Charge | #105.24
|
|
||||||
Portal Second Age | #96.72
|
|
||||||
Signature Spellbook: Jace | #87.72
|
|
||||||
Signature Spellbook: Chandra | #87.00
|
|
||||||
Second Sun Control | #86.64
|
|
||||||
Signature Spellbook: Gideon | #81.12
|
|
||||||
Tempest | #80.52
|
|
||||||
Double Masters | #78.78
|
|
||||||
The Dark | #77.22
|
|
||||||
Spirit Squadron | #76.74
|
|
||||||
Merfolk vs. Goblins | #74.10
|
|
||||||
Urza's Destiny | #72.54
|
|
||||||
Urza's Legacy | #70.32
|
|
||||||
Azorius Control | #69.48
|
|
||||||
Venser vs. Koth | #66.30
|
|
||||||
Alliances | #65.28
|
|
||||||
Zendikar vs. Eldrazi | #64.98
|
|
||||||
Vehicle Rush | #63.66
|
|
||||||
Ajani vs. Nicol Bolas | #63.66
|
|
||||||
Ultimate Masters w/ Box Toppers | #61.92
|
|
||||||
Arcane Tempo | #60.90
|
|
||||||
Jace vs. Chandra | #58.14
|
|
||||||
Mirage | #54.36
|
|
||||||
United Assault | #54.24
|
|
||||||
Ultimate Masters w/o Box Toppers | #53.10
|
|
||||||
Eternal Masters | #52.74
|
|
||||||
Dimir Rogue | #47.52
|
|
||||||
Blessed vs. Cursed | #46.44
|
|
||||||
Prophecy | #46.08
|
|
||||||
Portal | #45.96
|
|
||||||
Fifth Dawn | #44.88
|
|
||||||
Weatherlight | #43.08
|
|
||||||
Hazoret Aggro | #42.96
|
|
||||||
Lightning Aggro | #39.72
|
|
||||||
Modern Masters | #39.42
|
|
||||||
Speed vs. Cunning | #39.06
|
|
||||||
Coldsnap | #38.70
|
|
||||||
Elspeth vs. Tezzeret | #38.52
|
|
||||||
Mirrodin | #37.80
|
|
||||||
New Phyrexia | #36.84
|
|
||||||
Scourge | #36.72
|
|
||||||
Onslaught | #36.30
|
|
||||||
Visions | #35.70
|
|
||||||
Judgment | #35.64
|
|
||||||
Modern Horizons | #35.64
|
|
||||||
Time Spiral: Remastered | #35.16
|
|
||||||
Morningtide | #35.04
|
|
||||||
Shadowmoor | #34.86
|
|
||||||
Torment | #32.94
|
|
||||||
Zendikar | #32.76
|
|
||||||
Darksteel | #32.40
|
|
||||||
Future Sight | #32.40
|
|
||||||
Lorwyn | #31.86
|
|
||||||
Iconic Masters | #31.38
|
|
||||||
Champions of Kamigawa | #30.60
|
|
||||||
Masters 25 | #29.28
|
|
||||||
Modern Masters 2015 | #28.32
|
|
||||||
Mercadian Masques | #28.20
|
|
||||||
Ice Age | #27.24
|
|
||||||
Modern Horizons 2 | #26.04
|
|
||||||
Elspeth vs. Kiora | #25.92
|
|
||||||
Jumpstart 2022 | #25.80
|
|
||||||
Mono White Aggro | #25.50
|
|
||||||
Battlebond | #24.78
|
|
||||||
Worldwake | #24.54
|
|
||||||
Modern Masters 2017 | #24.48
|
|
||||||
Jumpstart | #24.42
|
|
||||||
Time Spiral | #23.94
|
|
||||||
Jace vs. Vraska | #23.88
|
|
||||||
Odyssey | #23.52
|
|
||||||
Saviors of Kamigawa | #22.26
|
|
||||||
Scars of Mirrodin | #21.66
|
|
||||||
Classic Sixth Edition | #21.12
|
|
||||||
Betrayers of Kamigawa | #20.94
|
|
||||||
Eventide | #20.88
|
|
||||||
Nissa vs. Ob Nixilis | #20.58
|
|
||||||
Ravnica: City of Guilds | #20.22
|
|
||||||
Heroes vs. Monsters | #19.74
|
|
||||||
Rise of the Eldrazi | #19.38
|
|
||||||
Fifth Edition | #18.90
|
|
||||||
Conspiracy | #18.78
|
|
||||||
Conspiracy: Take the Crown | #18.60
|
|
||||||
Nemesis | #18.54
|
|
||||||
Magic 2010 (M10) | #18.42
|
|
||||||
Invasion | #18.36
|
|
||||||
Avacyn Restored | #17.34
|
|
||||||
Planar Chaos | #17.04
|
|
||||||
Ikoria: Lair of Behemoths | #16.50
|
|
||||||
Alara Reborn | #16.44
|
|
||||||
Theros Beyond Death | #16.44
|
|
||||||
Magic 2011 (M11) | #16.32
|
|
||||||
Dissension | #16.20
|
|
||||||
Mirrodin Besieged | #16.08
|
|
||||||
Fourth Edition | #16.02
|
|
||||||
Kamigawa: Neon Dynasty | #15.84
|
|
||||||
10th Edition | #15.78
|
|
||||||
Apocalypse | #15.42
|
|
||||||
9th Edition | #15.24
|
|
||||||
Kaladesh w/ Inventions | #15.24
|
|
||||||
Legions | #15.18
|
|
||||||
Core Set 2020 | #14.94
|
|
||||||
March of the Machine | #14.88
|
|
||||||
Planeshift | #14.76
|
|
||||||
Khans of Tarkir | #14.76
|
|
||||||
Rivals of Ixalan | #14.16
|
|
||||||
Phyrexia: All Will Be One | #13.98
|
|
||||||
7th Edition | #13.74
|
|
||||||
Chronicles | #13.32
|
|
||||||
Kaldheim | #13.14
|
|
||||||
Journey Into Nyx | #12.84
|
|
||||||
The Brothers' War | #12.84
|
|
||||||
Gatecrash | #12.60
|
|
||||||
Conflux | #12.24
|
|
||||||
Return to Ravnica | #12.24
|
|
||||||
Throne of Eldraine | #12.24
|
|
||||||
Shards of Alara | #12.18
|
|
||||||
Wilds of Eldraine | #12.18
|
|
||||||
War of the Spark | #12.06
|
|
||||||
Amonkhet w/ Invocations | #11.94
|
|
||||||
Dominaria United | #11.88
|
|
||||||
Magic 2014 (M14) | #11.70
|
|
||||||
Ravnica Allegiance | #11.46
|
|
||||||
Aether Revolt w/ Inventions | #11.16
|
|
||||||
Zendikar Rising | #11.16
|
|
||||||
The Lost Caverns of Ixalan | #11.16
|
|
||||||
8th Edition | #11.10
|
|
||||||
Magic 2012 (M12) | #11.10
|
|
||||||
Adventures in the Forgotten Realms | #10.92
|
|
||||||
Strixhaven: School of Mages | #10.92
|
|
||||||
Streets of New Capenna | #10.44
|
|
||||||
Core Set 2021 | #10.32
|
|
||||||
Magic 2013 (M13) | #10.26
|
|
||||||
Innistrad | #10.14
|
|
||||||
Innistrad: Crimson Vow | #10.08
|
|
||||||
Amonkhet w/o Invocations | #9.96
|
|
||||||
Dominaria | #9.90
|
|
||||||
Core Set 2019 | #9.72
|
|
||||||
Eldritch Moon | #9.66
|
|
||||||
Theros | #9.48
|
|
||||||
Hour of Devastation w/ Invocations | #9.48
|
|
||||||
Guildpact | #9.30
|
|
||||||
Magic 2015 (M15) | #9.24
|
|
||||||
Innistrad: Midnight Hunt | #9.00
|
|
||||||
Guilds of Ravnica | #8.88
|
|
||||||
Kaladesh w/o Inventions | #8.76
|
|
||||||
Oath of the Gatewatch w/ Expeditions | #8.28
|
|
||||||
Ixalan | #8.22
|
|
||||||
Aether Revolt w/o Inventions | #8.04
|
|
||||||
Battle for Zendikar w/ Expeditions | #7.86
|
|
||||||
Fate Reforged w/ Fetches | #7.80
|
|
||||||
Hour of Devastation w/o Invocations | #7.62
|
|
||||||
Magic Origins | #7.26
|
|
||||||
Dragons of Tarkir | #7.08
|
|
||||||
Homelands | #6.96
|
|
||||||
Fate Reforged w/o Fetches | #6.24
|
|
||||||
Oath of the Gatewatch w/o Expeditions | #6.18
|
|
||||||
Shadows over Innistrad | #5.82
|
|
||||||
Born of the Gods | #5.28
|
|
||||||
Sorin vs. Tibalt | #4.80
|
|
||||||
Battle for Zendikar w/o Expeditions | #4.32
|
|
||||||
Fallen Empires | #3.60
|
|
||||||
Dark Ascension | #3.24
|
|
||||||
Dragon's Maze w/ Shocks | #2.58
|
|
||||||
Dragon's Maze w/o Shocks | #1.92
|
|
|
@ -1,62 +0,0 @@
|
||||||
#!/usr/bin/python
|
|
||||||
|
|
||||||
import re
|
|
||||||
import requests
|
|
||||||
from bs4 import BeautifulSoup
|
|
||||||
from dataclasses import dataclass, field
|
|
||||||
|
|
||||||
def get_price_in_gbp(price):
|
|
||||||
price_str = re.search(r'\d?,?\d+\.\d+', price).group()
|
|
||||||
price_str_no_comma = re.sub(",", "", price_str)
|
|
||||||
price_usd = float(price_str_no_comma)
|
|
||||||
price_gbp = usd_to_gbp(price_usd)
|
|
||||||
return price_gbp
|
|
||||||
|
|
||||||
def usd_to_gbp(dollars):
|
|
||||||
return round(dollars * 0.8, 2)
|
|
||||||
|
|
||||||
def get_dawnglare_html():
|
|
||||||
response = requests.get("https://mtg.dawnglare.com/?p=sets&pack=1")
|
|
||||||
|
|
||||||
if response.status_code != 200:
|
|
||||||
print("Request to Dawnglare failed with status code: " + response.status_code)
|
|
||||||
os.exit(1)
|
|
||||||
|
|
||||||
return response.text
|
|
||||||
|
|
||||||
@dataclass(order=True)
|
|
||||||
class ExpectedValue():
|
|
||||||
setName: str = field(compare=False)
|
|
||||||
boosterPackEV: float = field(compare=True)
|
|
||||||
|
|
||||||
@property
|
|
||||||
def prereleasePackEV(self):
|
|
||||||
return self.boosterPackEV * 6
|
|
||||||
|
|
||||||
def get_expected_values(soup):
|
|
||||||
prices = soup.find_all(class_="cP")
|
|
||||||
names = soup.find_all(class_="cN")
|
|
||||||
|
|
||||||
evs = []
|
|
||||||
for i in range(0, len(prices)):
|
|
||||||
setName = names[i].text
|
|
||||||
boosterPackEV = get_price_in_gbp(prices[i].text)
|
|
||||||
ev = ExpectedValue(setName, boosterPackEV)
|
|
||||||
evs.append(ev)
|
|
||||||
|
|
||||||
return evs
|
|
||||||
|
|
||||||
|
|
||||||
def main():
|
|
||||||
html = get_dawnglare_html()
|
|
||||||
soup = BeautifulSoup(html, features="lxml")
|
|
||||||
evs = get_expected_values(soup)
|
|
||||||
sorted_by_ev = sorted(evs, reverse=True)
|
|
||||||
|
|
||||||
print(f"{'Set Name':<40} | Prerelease Kit EV")
|
|
||||||
print("-" * 60)
|
|
||||||
for setEV in sorted_by_ev:
|
|
||||||
print(f'{setEV.setName:<40} | #{setEV.prereleasePackEV:,.2f}')
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
main()
|
|
|
@ -68,23 +68,10 @@ func createProductTable(db *sql.DB) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func insertProduct(db *sql.DB, product Product) int64 {
|
func insertProduct(db *sql.DB, product Product) {
|
||||||
query := "INSERT INTO Product (Name, Price, Available) VALUES (?, ?, ?);"
|
query := "INSERT INTO Product (Name, Price, Available) VALUES ($1, $2, $3);"
|
||||||
|
|
||||||
insert, err := db.Prepare(query)
|
db.QueryRow(query, product.Name, product.Price, product.Available)
|
||||||
defer insert.Close()
|
|
||||||
if err != nil {
|
|
||||||
log.Fatal(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
result, err := insert.Exec(product.Name, product.Price, product.Available)
|
|
||||||
rowsAffected, _ := result.RowsAffected()
|
|
||||||
if err != nil || rowsAffected != 1 {
|
|
||||||
log.Fatal(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
insertedRowId, _ := result.LastInsertId()
|
|
||||||
return insertedRowId
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func getAllProducts(db *sql.DB) []Product {
|
func getAllProducts(db *sql.DB) []Product {
|
||||||
|
@ -96,14 +83,16 @@ func getAllProducts(db *sql.DB) []Product {
|
||||||
}
|
}
|
||||||
defer rows.Close()
|
defer rows.Close()
|
||||||
|
|
||||||
var product Product
|
var name string
|
||||||
|
var price float64
|
||||||
|
var available bool
|
||||||
for rows.Next() {
|
for rows.Next() {
|
||||||
err := rows.Scan(&product.Name, &product.Price, &product.Available)
|
err := rows.Scan(&name, &price, &available)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
products = append(products, product)
|
products = append(products, Product{name, price, available})
|
||||||
}
|
}
|
||||||
|
|
||||||
return products
|
return products
|
||||||
|
|
Loading…
Reference in New Issue