Steve Jackson Games - Site Navigation
Home General Info Follow Us Search Illuminator Store Forums What's New Other Games Ogre GURPS Munchkin Our Games: Home

Go Back   Steve Jackson Games Forums > Warehouse 23 > Warehouse 23 Digital

Reply
 
Thread Tools Display Modes
Old 03-21-2021, 07:15 AM   #1
Extrarius
 
Extrarius's Avatar
 
Join Date: Feb 2005
Location: Psionic Ward
Default "SJG IDs" instead of Pyramid Names in Pyramid 3 Bundle

I just bought the pyramid 3 bundle and was excited to go read some articles I'd been looking forward to only to find that the issues in the zip file are named in a way that is nonsense to me. I did figure out that you can decipher the number to get the issue number, and I was a tiny bit less frustrated until I started unzipping the sub zips to find the internals of those follow a completely different scheme (having the issue number plainly along with the title).

I'd find the bundle infinitely easier to use if the contents were named like individual pyramids instead of SJG IDa that mean nothing to me. Having to open each file to get the title in order to name the sensibly is a lot of work to put on every customer
Extrarius is offline   Reply With Quote
Old 03-21-2021, 12:44 PM   #2
Pragmatic
Ceci n'est pas une tag.
 
Join Date: Jul 2005
Location: Vancouver, WA (Portland Metro)
Default Re: "SJG IDs" instead of Pyramid Names in Pyramid 3 Bundle

Not sure how much this will help (given what you describe), but now that you have the Pyramid 3 bundle:

Link to Pyramid 3 Index on the SJ Games forum
__________________
I'm a collector, not a gamer. =)
Pragmatic is offline   Reply With Quote
Old 03-24-2021, 09:43 AM   #3
ravenfish
 
Join Date: May 2007
Default Re: "SJG IDs" instead of Pyramid Names in Pyramid 3 Bundle

Huh. I'm glad I acquired the Pyramid pdfs piecemeal. SJGames has always taken a decidedly minimalist approach with online selling, but this takes the cake. If I paid good money for a large set of electronic book files, and found that the seller couldn't even be bothered to label them, I would be looking for ways to get a refund.
__________________
I predicted GURPS:Dungeon Fantasy several hours before it came out and all I got was this lousy sig.
ravenfish is offline   Reply With Quote
Old 02-07-2022, 06:06 PM   #4
Extrarius
 
Extrarius's Avatar
 
Join Date: Feb 2005
Location: Psionic Ward
Default Re: "SJG IDs" instead of Pyramid Names in Pyramid 3 Bundle

I eventually wrote a python script to extract them how I like:
Code:
import re
import zipfile
import os

#Names of all 122 issues of Pyramid 3
pyramid_names = [
    "Tools of the Trade: Wizards",
    "Looks Like a Job for... Superheroes",
    "Venturing Into the Badlands: Post Apocalypse",
    "Magic on the Battlefield",
    "Horror & Spies",
    "Space Colony Alpha",
    "Urban Fantasy",
    "Cliffhangers",
    "Space Opera",
    "Crime and Grime",
    "Cinematic Locations",
    "Tech and Toys",
    "Thaumatology",
    "Martial Arts",
    "Transhuman Space",
    "Historical Exploration",
    "Modern Exploration",
    "Space Exploration",
    "Tools of the Trade: Clerics",
    "Infinite Worlds",
    "Cyberpunk",
    "Banestorm",
    "Action Adventures",
    "Bio-Tech",
    "Epic Magic",
    "Underwater Adventures",
    "Monsters in Space",
    "Thaumatology II",
    "Psionics",
    "Spaceships",
    "Monster Hunters",
    "Fears of Days Past",
    "Low-Tech",
    "Alternate Gurps",
    "Aliens",
    "Dungeon Fantasy",
    "Tech and Toys II",
    "The Power of Myth",
    "Steampunk",
    "Vehicles",
    "Fantasy World Building",
    "Noir",
    "Thaumatology III",
    "Alternate Gurps II",
    "Monsters",
    "Weird Science",
    "The Rogue's Life",
    "Secret Magic",
    "World-Hopping",
    "Dungeon Fantasy II",
    "Tech and Toys III",
    "Low-Tech II",
    "Action",
    "Social Engineering",
    "Military Sci-Fi",
    "Prehistory",
    "Gunplay",
    "Urban Fantasy II",
    "Conspiracies",
    "Dungeon Fantasy III",
    "Way of the Warrior",
    "Transhuman Space II",
    "Infinite Worlds II",
    "Pirates and Swashbucklers",
    "Alternate GURPS III",
    "The Laws of Magic",
    "Tools of the Trade: Villains",
    "Natural Magic",
    "Psionics II",
    "Fourth Edition Festival",
    "Spaceships II",
    "Alternate Dungeons",
    "Monster Hunters II",
    "Wild West",
    "Hero's Jackpot",
    "Dungeon Fantasy IV",
    "Combat",
    "Unleash Your Soul",
    "Space Atlas",
    "Fantasy Threats",
    "Horrific Creations",
    "Magical Creations",
    "Alternate GURPS IV",
    "Perspectives",
    "Cutting Edge",
    "Organizations",
    "Low Tech III",
    "The End Is Nigh",
    "Alternate Dungeons 2",
    "After the End",
    "Thaumatology IV",
    "Zombies",
    "Cops and Lawyers",
    "Spaceships III",
    "Overland Adventures",
    "Tech and Toys IV",
    "Strange Powers",
    "Welcome to Dungeon Fantasy",
    "Death and Beyond",
    "Pyramid Secrets",
    "Humor",
    "Epic",
    "Setbacks",
    "Dungeon Fantasy Roleplaying Game",
    "Cinematic Magic",
    "Dungeon Fantasy Roleplaying Game II",
    "Monster Hunters III",
    "Dungeon Fantasy Roleplaying Game III",
    "Thaumatology V",
    "Deep Space",
    "Combat II",
    "Action II",
    "Dungeon Fantasies",
    "Mind Over Magic",
    "Technomancer",
    "Locations",
    "Hot Spots",
    "Dungeon Trips",
    "After the End II",
    "Alternate GURPS V",
    "Travels and Tribulations",
    "All Good Things",
]

#Replace colons with a dash to be windows-friendly
colon_pattern = re.compile(r'''\s*:\s*''')
pyramid_names = [colon_pattern.sub(" - ", name) for name in pyramid_names]

#Pattern of zip entries to extract number and type
file_pattern = re.compile(r'''^SJG37-2([67]\d\d)\.(pdf|zip)$''', re.IGNORECASE)

def extract(zz, src, dest):
    path = os.path.dirname(dest)
    if path and not os.path.isdir(path):
        os.makedirs(path)
    with zz.open(src) as sfp:
        with open(dest, "wb") as dfp:
            dfp.write(sfp.read())

if not os.path.isdir("Pyramid 3"):
    os.mkdir("Pyramid 3")

with zipfile.ZipFile("Pyramid_Volume_3_Bundle.zip") as zz:
    for item in zz.infolist():
        m = file_pattern.match(item.filename)
        if not m:
            print("ERROR:", item)
            continue
        num = int(m.group(1)) - 600
        if m.group(2).lower() == "pdf":
            extract(zz, item, os.path.join("Pyramid 3", f"{num} - {pyramid_names[num - 1]}.pdf"))
        elif m.group(2).lower() == "zip":
            extract(zz, item, os.path.join("Pyramid 3", f"{num} - {pyramid_names[num - 1]}.zip"))
        #print(num, ")", item, "=", pyramid_names[num - 1], "|", m.group(1).lower())
Put it in the same folder as the "Pyramid_Volume_3_Bundle.zip" and it'll extract everything into a "Pyramid 3" folder with correct names. It doesn't unzip the contained zip files, so you have to do that step manually but there are only a few.
Extrarius is offline   Reply With Quote
Old 02-10-2022, 10:33 AM   #5
Blind Mapmaker
 
Join Date: Sep 2010
Location: Mannheim, Baden
Default Re: "SJG IDs" instead of Pyramid Names in Pyramid 3 Bundle

I applaud your efforts, Extrarius. That's a really nice way of helping the community.

As for the supposed "minimalist approach", I got to say that I've only seen this problem with bundles and special stuff like Kickstarters and then only with some files. At least the Warehouse doesn't drop like every fourth download like DriveThruRPG. And let's not forget that minimalist means no blasted DRM either.
__________________
My GURPS and mapmaking blog: The Blind Mapmaker
Blind Mapmaker is offline   Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Fnords are Off
[IMG] code is Off
HTML code is Off

Forum Jump


All times are GMT -6. The time now is 03:30 PM.


Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2024, vBulletin Solutions, Inc.