Skip to content

Instantly share code, notes, and snippets.

@ricardozanini
Created April 11, 2025 20:51
Show Gist options
  • Save ricardozanini/a52551cf6ec8b830702bc7b805e48173 to your computer and use it in GitHub Desktop.
Save ricardozanini/a52551cf6ec8b830702bc7b805e48173 to your computer and use it in GitHub Desktop.
List of all Magic: The Gathering Cards that didn't have a reprint and it's valid in Old School 93/94

List of all Magic: The Gathering Cards that didn't have a reprint and it's valid in Old School 93/94

To run this script:

# Install the dependencies
pip install requests

# Run the Script
python3 scryfall_diff.py

Here's the list:

Acid Rain
Adun Oakenshield
Adventurers' Guildhouse
Aerathi Berserker
Aisling Leprechaun
Al-abara's Carpet
Alchor's Tomb
Ali from Cairo
All Hallow's Eve
Amnesia
Ancestral Recall
Angus Mackenzie
Anti-Magic Aura
Arboria
Argivian Archaeologist
Argivian Blacksmith
Argothian Treefolk
Army of Allah
Artifact Blast
Artifact Possession
Artifact Ward
Backdraft
Barbary Apes
Barktooth Warbeard
Bartel Runeaxe
Bazaar of Baghdad
Berserk
Black Lotus
Blaze of Glory
Blazing Effigy
Bone Flute
Boris Devilboon
Brine Hag
Camel
Camouflage
Candelabra of Tawnos
Cathedral of Serra
Caverns of Despair
Chain Lightning
Chains of Mephistopheles
Chaos Orb
Citanul Druid
City in a Bottle
City of Shadows
Cleanse
Cleansing
Clergy of the Holy Nimbus
Coal Golem
Copper Tablet
Crevasse
Crimson Kobolds
Crookshank Kobolds
Curse Artifact
Cyclopean Tomb
Damping Field
Dark Heart of the Wood
Dark Sphere
Deadfall
Deep Water
Demonic Torment
Desert Nomads
Devouring Deep
Diamond Valley
Disharmony
Divine Intervention
Drafna's Restoration
Dream Coat
Drop of Honey
Drowned
Dust to Dust
Dwarven Demolition Team
Dwarven Song
Eater of the Dead
Elder Spawn
Electric Eel
Elephant Graveyard
Elves of Deep Shadow
Enchanted Being
Equinox
Eternal Flame
Eureka
Exorcist
Falling Star
False Orders
Fasting
Feint
Festival
Field of Dreams
Fire Sprites
Fire and Brimstone
Firestorm Phoenix
Flash Counter
Floral Spuzzem
Force Spike
Forcefield
Forethought Amulet
Frankenstein's Monster
Frost Giant
Gaea's Avenger
Gaea's Touch
Gate to Phyrexia
Gauntlet of Might
Ghosts of the Damned
Giant Shark
Giant Turtle
Glyph of Delusion
Glyph of Destruction
Glyph of Doom
Glyph of Life
Glyph of Reincarnation
Goblin Caves
Goblin Hero
Goblin Wizard
Golgothian Sylex
Gosta Dirk
Grave Robbers
Gravity Sphere
Great Defender
Great Wall
Greater Realm of Preservation
Guardian Beast
Gwendlyn Di Corci
Halfdane
Hammerheim
Haunting Wind
Hazezon Tamar
Headless Horseman
Heaven's Gate
Hell Swarm
Hellfire
Hidden Path
Holy Day
Holy Light
Hornet Cobra
Horror of Horrors
Hunding Gjornersen
Hyperion Blacksmith
Ice Storm
Ichneumon Druid
Icy Manipulator
Ifh-Bíff Efreet
Illusionary Mask
Imprison
In the Eye of Chaos
Infernal Medusa
Infinite Authority
Inquisition
Invisibility
Invoke Prejudice
Island of Wak-Wak
Jacques le Vert
Jade Statue
Jedit Ojanen
Jerrard of the Closed Fist
Jihad
Jovial Evil
Juzám Djinn
Karakas
Kasimir the Lone Wolf
Khabál Ghoul
King Suleiman
Knights of Thorn
Knowledge Vault
Kobold Drill Sergeant
Kobold Overlord
Kobolds of Kher Keep
Kry Shield
Lady Caleria
Lady Evangela
Lady Orca
Land Equilibrium
Lesser Werewolf
Library of Alexandria
Lich
Life Chisel
Life Matrix
Lifeblood
Living Plane
Livonya Silone
Lord Magnus
Lurker
Mana Drain
Mana Matrix
Mana Vortex
Marble Priest
Marsh Goblins
Martyr's Cry
Martyrs of Korlis
Master of the Hunt
Maze of Ith
Merchant Ship
Mightstone
Miracle Worker
Mirror Universe
Mishra's Workshop
Moat
Mold Demon
Moss Monster
Mountain Stronghold
Mox Emerald
Mox Jet
Mox Pearl
Mox Ruby
Mox Sapphire
Nameless Race
Natural Selection
Necropolis
Nether Void
Niall Silvain
North Star
Nova Pentacle
Old Man of the Sea
Orc General
Orcish Mechanics
Oubliette
Part Water
Pavel Maliki
People of the Woods
Phyrexian Gremlins
Pixie Queen
Planar Gate
Power Artifact
Powerleech
Preacher
Presence of the Master
Priest of Yawgmoth
Princess Lucrezia
Psychic Allergy
Psychic Purge
Pyramids
Quagmire
Quarum Trench Gnomes
Raging Bull
Raging River
Ragnar
Ramirez DePietro
Ramses Overdark
Rapid Fire
Rasputin Dreamweaver
Reflecting Mirror
Reincarnation
Relic Barrier
Remove Enchantments
Reset
Reverberation
Righteous Avengers
Ring of Immortals
Ring of Ma'rûf
Riptide
Riven Turnbull
Rohgahh of Kher Keep
Rukh Egg
Rust
Sage of Lat-Nam
Sandals of Abdallah
Savaen Elves
Scarecrow
Scarwood Bandits
Scarwood Goblins
Scarwood Hag
Sea Kings' Blessing
Seafarer's Quay
Season of the Witch
Serendib Djinn
Shahrazad
Shelkin Brownie
Silhouette
Singing Tree
Sinkhole
Sir Shandlar of Eberyn
Skull of Orm
Sorrow's Path
Spectral Cloak
Spinal Villain
Spiritual Sanctuary
Staff of Zegon
Standing Stones
Stone Calendar
Stone-Throwing Devils
Storm World
Su-Chi
Subdue
Sunastian Falconer
Sword of the Ages
Sylvan Paradise
Syphon Soul
Tablet of Epityr
Tangle Kelp
Tawnos's Coffin
Telekinesis
Tetsuo Umezawa
The Abyss
The Lady of the Mountain
The Tabernacle at Pendrell Vale
Thunder Spirit
Time Vault
Time Walk
Timetwister
Tivadar's Crusade
Tolaria
Torsten Von Ursus
Touch of Darkness
Tower of Coireall
Tracker
Transmute Artifact
Tuknir Deathlock
Two-Headed Giant of Foriys
Typhoon
Undertow
Underworld Dreams
Unholy Citadel
Ur-Drago
Urborg
Urza's Chalice
Urza's Miter
Venarian Gold
Walking Dead
Wall of Caltrops
Wall of Earth
Wall of Light
Wall of Putrid Flesh
Wall of Tombstones
Wand of Ith
Water Wurm
Weakstone
Whippoorwill
Willow Satyr
Wolverine Pack
Wood Elemental
Word of Command
Worms of the Earth
Wormwood Treefolk
Wyluli Wolf
Ydwen Efreet
import requests
def get_card_names(api_url):
"""Fetch all pages from a Scryfall API search and return a set of card names."""
card_names = set()
url = api_url
while url:
print(f"Fetching: {url}")
response = requests.get(url)
if response.status_code != 200:
print(f"Error: HTTP {response.status_code}")
break
data = response.json()
# Add the card names from this page.
for card in data.get('data', []):
card_names.add(card.get('name'))
# If there are more pages, the API response includes a 'next_page' key.
url = data.get('next_page')
return card_names
# API endpoints for the queries.
query1_url = ("https://api.scryfall.com/cards/search?order=name&q="
"(game:paper)%20(set:drk%20OR%20set:leg%20OR%20set:atq%20OR%20set:arn%20OR%20set:2ed)")
query2_url = ("https://api.scryfall.com/cards/search?order=name&q="
"(game:paper)%20(set:4ed%20OR%20set:3ed%20OR%20set:rin%20OR%20set:ren%20OR%20set:tsb%20OR%20set:bchr%20OR%20set:chr)%20"
"is:old%20is:reprint&unique=cards")
# Retrieve the card names from each query.
cards_query1 = get_card_names(query1_url)
cards_query2 = get_card_names(query2_url)
# Now compute the difference: cards in Query 1 that are not in Query 2.
difference = sorted(list(cards_query1 - cards_query2))
# Output the results.
print("\nCards from Query 1 not included in Query 2 (grouped by name):\n")
for card in difference:
print(card)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment