Common Helpers


In [1]:
import requests
from bs4 import BeautifulSoup
import pathlib
import os

In [27]:
def load_soup(url):
    page = requests.get(url)
    soup = BeautifulSoup(page.content, 'html.parser')
    return soup

def get_formatted_tilename(url):
    # find just the filename
    s = url.split('/')[-1]
    num = int(s.split('.')[0].replace('a', '').replace('x', ''))
    # keep leading zeros for 3 digits
    formatted = '{:0>3d}.gif'.format(num)
    return formatted

def download_tile(url, set_dir, verbose=False):
    response = requests.get(url)
    if response.status_code == 200:
        filename = set_dir + '/' + get_formatted_tilename(url)
        save_image(response.content, filename, verbose)
    else:
        print ('Bad response code:', response.status_code, 'for', url)
        
def save_image(content, filename, verbose=False):
    with open(filename, 'wb') as f:
        f.write(content)
        if verbose:
            print ('Saved', filename)
            
def fixRelativeUrl(url):
    # HACK: for these we go up a level
    return url.replace('..', 'http://cr31.co.uk/stagecast')

# gets all absolute img addresses under an element
def get_image_addresses(element):
    imgs = element.find_all('img')
    for i in imgs:
        address = fixRelativeUrl(i.attrs['src'])
        yield address
        
def get_caption_name(element):
    name = element.find('caption').text.strip().replace('*', '')
    return name

In [7]:
# Two-Corner
def get_two_corner_tilesets(soup):
    tables = get_two_corner_tileset_tables(soup)
    for t in tables:
        yield t
        
def get_two_corner_tileset_tables(soup):
    return (soup
            .find_all('table')[3]
            .find('table')
            .find_all('table'))

# Block
def get_block_tilesets(soup):
    # 3 tables, each row is a set, row[0] is name
    tables = (soup
            .find_all('table')[4]
           .find('table')
           .find_all('table'))
    
    for table in tables:
        rows = table.find_all('tr')
        # skip first row
        for row in rows[1:]:
            yield row

In [22]:
def run_two_corner_scraper(parent_dir, key, url):
    soup = load_soup(url)
    
    for tileset in get_two_corner_tilesets(soup):
        set_name = get_caption_name(tileset)
        set_dir = parent_dir + '/' + set_name
        pathlib.Path(set_dir).mkdir(parents=True, exist_ok=True)
        
        # get all img urls from this tileset
        for img in get_image_addresses(tileset):
            download_tile(img, set_dir, verbose=False)
        print ('Done scraping', set_name)
    print ('Done scraping', key, 'tiles...')

def run_block_scraper(parent_dir, url):
    soup = load_soup(url)
    
    for tileset in get_block_tilesets(soup):
        cells = tileset.find_all('td')
        set_name = cells[0].text.strip().replace('*', '').replace('<p>', '').replace('</p>', '')
        set_dir = parent_dir + '/' + set_name
        pathlib.Path(set_dir).mkdir(parents=True, exist_ok=True)
        
        for cell in cells[1:]:
            img_src = list(get_image_addresses(cell))[0]
            download_tile(img_src, set_dir, verbose=False)
        print ('Done scraping', set_name)
    print ('Done scraping block tiles...')

In [23]:
def run_scrapers(targets):
    tile_dir = './wang'
    pathlib.Path(tile_dir).mkdir(parents=True, exist_ok=True)

    for key, url in targets.items():
        parent_dir = './wang/' + key
        if key == 'two-corner':            
            run_two_corner_scraper(parent_dir, key, url)
        elif key == 'block':
            run_block_scraper(parent_dir, url)
        elif key == 'two-edge':
            run_two_corner_scraper(parent_dir, key, url)            
    
    print ('Scraping complete!')

In [28]:
targets =  { 
    'two-corner':'http://cr31.co.uk/stagecast/wang/tiles_c.html',
    'block':'http://cr31.co.uk/stagecast/wang/block_g.html',
    'two-edge':'http://cr31.co.uk/stagecast/wang/tiles_e.html',
}
run_scrapers(targets)


Saved ./wang/two-edge/Wang-2edge/004.gif
Saved ./wang/two-edge/Wang-2edge/006.gif
Saved ./wang/two-edge/Wang-2edge/014.gif
Saved ./wang/two-edge/Wang-2edge/012.gif
Saved ./wang/two-edge/Wang-2edge/005.gif
Saved ./wang/two-edge/Wang-2edge/007.gif
Saved ./wang/two-edge/Wang-2edge/015.gif
Saved ./wang/two-edge/Wang-2edge/013.gif
Saved ./wang/two-edge/Wang-2edge/001.gif
Saved ./wang/two-edge/Wang-2edge/003.gif
Saved ./wang/two-edge/Wang-2edge/011.gif
Saved ./wang/two-edge/Wang-2edge/009.gif
Saved ./wang/two-edge/Wang-2edge/000.gif
Saved ./wang/two-edge/Wang-2edge/002.gif
Saved ./wang/two-edge/Wang-2edge/010.gif
Saved ./wang/two-edge/Wang-2edge/008.gif
Done scraping Wang-2edge
Saved ./wang/two-edge/Path/004.gif
Saved ./wang/two-edge/Path/006.gif
Saved ./wang/two-edge/Path/014.gif
Saved ./wang/two-edge/Path/012.gif
Saved ./wang/two-edge/Path/005.gif
Saved ./wang/two-edge/Path/007.gif
Saved ./wang/two-edge/Path/015.gif
Saved ./wang/two-edge/Path/013.gif
Saved ./wang/two-edge/Path/001.gif
Saved ./wang/two-edge/Path/003.gif
Saved ./wang/two-edge/Path/011.gif
Saved ./wang/two-edge/Path/009.gif
Saved ./wang/two-edge/Path/000.gif
Saved ./wang/two-edge/Path/002.gif
Saved ./wang/two-edge/Path/010.gif
Saved ./wang/two-edge/Path/008.gif
Done scraping Path
Saved ./wang/two-edge/Trench/004.gif
Saved ./wang/two-edge/Trench/006.gif
Saved ./wang/two-edge/Trench/014.gif
Saved ./wang/two-edge/Trench/012.gif
Saved ./wang/two-edge/Trench/005.gif
Saved ./wang/two-edge/Trench/007.gif
Saved ./wang/two-edge/Trench/015.gif
Saved ./wang/two-edge/Trench/013.gif
Saved ./wang/two-edge/Trench/001.gif
Saved ./wang/two-edge/Trench/003.gif
Saved ./wang/two-edge/Trench/011.gif
Saved ./wang/two-edge/Trench/009.gif
Saved ./wang/two-edge/Trench/000.gif
Saved ./wang/two-edge/Trench/002.gif
Saved ./wang/two-edge/Trench/010.gif
Saved ./wang/two-edge/Trench/008.gif
Done scraping Trench
Saved ./wang/two-edge/Rail/004.gif
Saved ./wang/two-edge/Rail/006.gif
Saved ./wang/two-edge/Rail/014.gif
Saved ./wang/two-edge/Rail/012.gif
Saved ./wang/two-edge/Rail/005.gif
Saved ./wang/two-edge/Rail/007.gif
Saved ./wang/two-edge/Rail/015.gif
Saved ./wang/two-edge/Rail/013.gif
Saved ./wang/two-edge/Rail/001.gif
Saved ./wang/two-edge/Rail/003.gif
Saved ./wang/two-edge/Rail/011.gif
Saved ./wang/two-edge/Rail/009.gif
Saved ./wang/two-edge/Rail/000.gif
Saved ./wang/two-edge/Rail/002.gif
Saved ./wang/two-edge/Rail/010.gif
Saved ./wang/two-edge/Rail/008.gif
Done scraping Rail
Saved ./wang/two-edge/Ledge/004.gif
Saved ./wang/two-edge/Ledge/006.gif
Saved ./wang/two-edge/Ledge/014.gif
Saved ./wang/two-edge/Ledge/012.gif
Saved ./wang/two-edge/Ledge/005.gif
Saved ./wang/two-edge/Ledge/007.gif
Saved ./wang/two-edge/Ledge/015.gif
Saved ./wang/two-edge/Ledge/013.gif
Saved ./wang/two-edge/Ledge/001.gif
Saved ./wang/two-edge/Ledge/003.gif
Saved ./wang/two-edge/Ledge/011.gif
Saved ./wang/two-edge/Ledge/009.gif
Saved ./wang/two-edge/Ledge/000.gif
Saved ./wang/two-edge/Ledge/002.gif
Saved ./wang/two-edge/Ledge/010.gif
Saved ./wang/two-edge/Ledge/008.gif
Done scraping Ledge
Saved ./wang/two-edge/Bridge/004.gif
Saved ./wang/two-edge/Bridge/006.gif
Saved ./wang/two-edge/Bridge/014.gif
Saved ./wang/two-edge/Bridge/012.gif
Saved ./wang/two-edge/Bridge/005.gif
Saved ./wang/two-edge/Bridge/007.gif
Saved ./wang/two-edge/Bridge/015.gif
Saved ./wang/two-edge/Bridge/013.gif
Saved ./wang/two-edge/Bridge/001.gif
Saved ./wang/two-edge/Bridge/003.gif
Saved ./wang/two-edge/Bridge/011.gif
Saved ./wang/two-edge/Bridge/009.gif
Saved ./wang/two-edge/Bridge/000.gif
Saved ./wang/two-edge/Bridge/002.gif
Saved ./wang/two-edge/Bridge/010.gif
Saved ./wang/two-edge/Bridge/008.gif
Done scraping Bridge
Saved ./wang/two-edge/Pipe thin/004.gif
Saved ./wang/two-edge/Pipe thin/006.gif
Saved ./wang/two-edge/Pipe thin/014.gif
Saved ./wang/two-edge/Pipe thin/012.gif
Saved ./wang/two-edge/Pipe thin/005.gif
Saved ./wang/two-edge/Pipe thin/007.gif
Saved ./wang/two-edge/Pipe thin/015.gif
Saved ./wang/two-edge/Pipe thin/013.gif
Saved ./wang/two-edge/Pipe thin/001.gif
Saved ./wang/two-edge/Pipe thin/003.gif
Saved ./wang/two-edge/Pipe thin/011.gif
Saved ./wang/two-edge/Pipe thin/009.gif
Saved ./wang/two-edge/Pipe thin/000.gif
Saved ./wang/two-edge/Pipe thin/002.gif
Saved ./wang/two-edge/Pipe thin/010.gif
Saved ./wang/two-edge/Pipe thin/008.gif
Done scraping Pipe thin
Saved ./wang/two-edge/O-Ring/004.gif
Saved ./wang/two-edge/O-Ring/006.gif
Saved ./wang/two-edge/O-Ring/014.gif
Saved ./wang/two-edge/O-Ring/012.gif
Saved ./wang/two-edge/O-Ring/005.gif
Saved ./wang/two-edge/O-Ring/007.gif
Saved ./wang/two-edge/O-Ring/015.gif
Saved ./wang/two-edge/O-Ring/013.gif
Saved ./wang/two-edge/O-Ring/001.gif
Saved ./wang/two-edge/O-Ring/003.gif
Saved ./wang/two-edge/O-Ring/011.gif
Saved ./wang/two-edge/O-Ring/009.gif
Saved ./wang/two-edge/O-Ring/000.gif
Saved ./wang/two-edge/O-Ring/002.gif
Saved ./wang/two-edge/O-Ring/010.gif
Saved ./wang/two-edge/O-Ring/008.gif
Done scraping O-Ring
Saved ./wang/two-edge/Dungeon/004.gif
Saved ./wang/two-edge/Dungeon/006.gif
Saved ./wang/two-edge/Dungeon/014.gif
Saved ./wang/two-edge/Dungeon/012.gif
Saved ./wang/two-edge/Dungeon/005.gif
Saved ./wang/two-edge/Dungeon/007.gif
Saved ./wang/two-edge/Dungeon/015.gif
Saved ./wang/two-edge/Dungeon/013.gif
Saved ./wang/two-edge/Dungeon/001.gif
Saved ./wang/two-edge/Dungeon/003.gif
Saved ./wang/two-edge/Dungeon/011.gif
Saved ./wang/two-edge/Dungeon/009.gif
Saved ./wang/two-edge/Dungeon/000.gif
Saved ./wang/two-edge/Dungeon/002.gif
Saved ./wang/two-edge/Dungeon/010.gif
Saved ./wang/two-edge/Dungeon/008.gif
Done scraping Dungeon
Saved ./wang/two-edge/Line/004.gif
Saved ./wang/two-edge/Line/006.gif
Saved ./wang/two-edge/Line/014.gif
Saved ./wang/two-edge/Line/012.gif
Saved ./wang/two-edge/Line/005.gif
Saved ./wang/two-edge/Line/007.gif
Saved ./wang/two-edge/Line/015.gif
Saved ./wang/two-edge/Line/013.gif
Saved ./wang/two-edge/Line/001.gif
Saved ./wang/two-edge/Line/003.gif
Saved ./wang/two-edge/Line/011.gif
Saved ./wang/two-edge/Line/009.gif
Saved ./wang/two-edge/Line/000.gif
Saved ./wang/two-edge/Line/002.gif
Saved ./wang/two-edge/Line/010.gif
Saved ./wang/two-edge/Line/008.gif
Done scraping Line
Saved ./wang/two-edge/Urban/004.gif
Saved ./wang/two-edge/Urban/006.gif
Saved ./wang/two-edge/Urban/014.gif
Saved ./wang/two-edge/Urban/012.gif
Saved ./wang/two-edge/Urban/005.gif
Saved ./wang/two-edge/Urban/007.gif
Saved ./wang/two-edge/Urban/015.gif
Saved ./wang/two-edge/Urban/013.gif
Saved ./wang/two-edge/Urban/001.gif
Saved ./wang/two-edge/Urban/003.gif
Saved ./wang/two-edge/Urban/011.gif
Saved ./wang/two-edge/Urban/009.gif
Saved ./wang/two-edge/Urban/000.gif
Saved ./wang/two-edge/Urban/002.gif
Saved ./wang/two-edge/Urban/010.gif
Saved ./wang/two-edge/Urban/008.gif
Done scraping Urban
Saved ./wang/two-edge/Walkway/004.gif
Saved ./wang/two-edge/Walkway/006.gif
Saved ./wang/two-edge/Walkway/014.gif
Saved ./wang/two-edge/Walkway/012.gif
Saved ./wang/two-edge/Walkway/005.gif
Saved ./wang/two-edge/Walkway/007.gif
Saved ./wang/two-edge/Walkway/015.gif
Saved ./wang/two-edge/Walkway/013.gif
Saved ./wang/two-edge/Walkway/001.gif
Saved ./wang/two-edge/Walkway/003.gif
Saved ./wang/two-edge/Walkway/011.gif
Saved ./wang/two-edge/Walkway/009.gif
Saved ./wang/two-edge/Walkway/000.gif
Saved ./wang/two-edge/Walkway/002.gif
Saved ./wang/two-edge/Walkway/010.gif
Saved ./wang/two-edge/Walkway/008.gif
Done scraping Walkway
Saved ./wang/two-edge/Angular/004.gif
Saved ./wang/two-edge/Angular/006.gif
Saved ./wang/two-edge/Angular/014.gif
Saved ./wang/two-edge/Angular/012.gif
Saved ./wang/two-edge/Angular/005.gif
Saved ./wang/two-edge/Angular/007.gif
Saved ./wang/two-edge/Angular/015.gif
Saved ./wang/two-edge/Angular/013.gif
Saved ./wang/two-edge/Angular/001.gif
Saved ./wang/two-edge/Angular/003.gif
Saved ./wang/two-edge/Angular/011.gif
Saved ./wang/two-edge/Angular/009.gif
Saved ./wang/two-edge/Angular/000.gif
Saved ./wang/two-edge/Angular/002.gif
Saved ./wang/two-edge/Angular/010.gif
Saved ./wang/two-edge/Angular/008.gif
Done scraping Angular
Saved ./wang/two-edge/Greek/004.gif
Saved ./wang/two-edge/Greek/006.gif
Saved ./wang/two-edge/Greek/014.gif
Saved ./wang/two-edge/Greek/012.gif
Saved ./wang/two-edge/Greek/005.gif
Saved ./wang/two-edge/Greek/007.gif
Saved ./wang/two-edge/Greek/015.gif
Saved ./wang/two-edge/Greek/013.gif
Saved ./wang/two-edge/Greek/001.gif
Saved ./wang/two-edge/Greek/003.gif
Saved ./wang/two-edge/Greek/011.gif
Saved ./wang/two-edge/Greek/009.gif
Saved ./wang/two-edge/Greek/000.gif
Saved ./wang/two-edge/Greek/002.gif
Saved ./wang/two-edge/Greek/010.gif
Saved ./wang/two-edge/Greek/008.gif
Done scraping Greek
Saved ./wang/two-edge/Road/004.gif
Saved ./wang/two-edge/Road/006.gif
Saved ./wang/two-edge/Road/014.gif
Saved ./wang/two-edge/Road/012.gif
Saved ./wang/two-edge/Road/005.gif
Saved ./wang/two-edge/Road/007.gif
Saved ./wang/two-edge/Road/015.gif
Saved ./wang/two-edge/Road/013.gif
Saved ./wang/two-edge/Road/001.gif
Saved ./wang/two-edge/Road/003.gif
Saved ./wang/two-edge/Road/011.gif
Saved ./wang/two-edge/Road/009.gif
Saved ./wang/two-edge/Road/000.gif
Saved ./wang/two-edge/Road/002.gif
Saved ./wang/two-edge/Road/010.gif
Saved ./wang/two-edge/Road/008.gif
Done scraping Road
Saved ./wang/two-edge/Pipe wide/004.gif
Saved ./wang/two-edge/Pipe wide/006.gif
Saved ./wang/two-edge/Pipe wide/014.gif
Saved ./wang/two-edge/Pipe wide/012.gif
Saved ./wang/two-edge/Pipe wide/005.gif
Saved ./wang/two-edge/Pipe wide/007.gif
Saved ./wang/two-edge/Pipe wide/015.gif
Saved ./wang/two-edge/Pipe wide/013.gif
Saved ./wang/two-edge/Pipe wide/001.gif
Saved ./wang/two-edge/Pipe wide/003.gif
Saved ./wang/two-edge/Pipe wide/011.gif
Saved ./wang/two-edge/Pipe wide/009.gif
Saved ./wang/two-edge/Pipe wide/000.gif
Saved ./wang/two-edge/Pipe wide/002.gif
Saved ./wang/two-edge/Pipe wide/010.gif
Saved ./wang/two-edge/Pipe wide/008.gif
Done scraping Pipe wide
Saved ./wang/two-edge/Molecule/004.gif
Saved ./wang/two-edge/Molecule/006.gif
Saved ./wang/two-edge/Molecule/014.gif
Saved ./wang/two-edge/Molecule/012.gif
Saved ./wang/two-edge/Molecule/005.gif
Saved ./wang/two-edge/Molecule/007.gif
Saved ./wang/two-edge/Molecule/015.gif
Saved ./wang/two-edge/Molecule/013.gif
Saved ./wang/two-edge/Molecule/001.gif
Saved ./wang/two-edge/Molecule/003.gif
Saved ./wang/two-edge/Molecule/011.gif
Saved ./wang/two-edge/Molecule/009.gif
Saved ./wang/two-edge/Molecule/000.gif
Saved ./wang/two-edge/Molecule/002.gif
Saved ./wang/two-edge/Molecule/010.gif
Saved ./wang/two-edge/Molecule/008.gif
Done scraping Molecule
Saved ./wang/two-edge/Drawn/004.gif
Saved ./wang/two-edge/Drawn/006.gif
Saved ./wang/two-edge/Drawn/014.gif
Saved ./wang/two-edge/Drawn/012.gif
Saved ./wang/two-edge/Drawn/005.gif
Saved ./wang/two-edge/Drawn/007.gif
Saved ./wang/two-edge/Drawn/015.gif
Saved ./wang/two-edge/Drawn/013.gif
Saved ./wang/two-edge/Drawn/001.gif
Saved ./wang/two-edge/Drawn/003.gif
Saved ./wang/two-edge/Drawn/011.gif
Saved ./wang/two-edge/Drawn/009.gif
Saved ./wang/two-edge/Drawn/000.gif
Saved ./wang/two-edge/Drawn/002.gif
Saved ./wang/two-edge/Drawn/010.gif
Saved ./wang/two-edge/Drawn/008.gif
Done scraping Drawn
Saved ./wang/two-edge/Lattice/004.gif
Saved ./wang/two-edge/Lattice/006.gif
Saved ./wang/two-edge/Lattice/014.gif
Saved ./wang/two-edge/Lattice/012.gif
Saved ./wang/two-edge/Lattice/005.gif
Saved ./wang/two-edge/Lattice/007.gif
Saved ./wang/two-edge/Lattice/015.gif
Saved ./wang/two-edge/Lattice/013.gif
Saved ./wang/two-edge/Lattice/001.gif
Saved ./wang/two-edge/Lattice/003.gif
Saved ./wang/two-edge/Lattice/011.gif
Saved ./wang/two-edge/Lattice/009.gif
Saved ./wang/two-edge/Lattice/000.gif
Saved ./wang/two-edge/Lattice/002.gif
Saved ./wang/two-edge/Lattice/010.gif
Saved ./wang/two-edge/Lattice/008.gif
Done scraping Lattice
Saved ./wang/two-edge/Dropbox/004.gif
Saved ./wang/two-edge/Dropbox/006.gif
Saved ./wang/two-edge/Dropbox/014.gif
Saved ./wang/two-edge/Dropbox/012.gif
Saved ./wang/two-edge/Dropbox/005.gif
Saved ./wang/two-edge/Dropbox/007.gif
Saved ./wang/two-edge/Dropbox/015.gif
Saved ./wang/two-edge/Dropbox/013.gif
Saved ./wang/two-edge/Dropbox/001.gif
Saved ./wang/two-edge/Dropbox/003.gif
Saved ./wang/two-edge/Dropbox/011.gif
Saved ./wang/two-edge/Dropbox/009.gif
Saved ./wang/two-edge/Dropbox/000.gif
Saved ./wang/two-edge/Dropbox/002.gif
Saved ./wang/two-edge/Dropbox/010.gif
Saved ./wang/two-edge/Dropbox/008.gif
Done scraping Dropbox
Saved ./wang/two-edge/Brench/004.gif
Saved ./wang/two-edge/Brench/006.gif
Saved ./wang/two-edge/Brench/014.gif
Saved ./wang/two-edge/Brench/012.gif
Saved ./wang/two-edge/Brench/005.gif
Saved ./wang/two-edge/Brench/007.gif
Saved ./wang/two-edge/Brench/015.gif
Saved ./wang/two-edge/Brench/013.gif
Saved ./wang/two-edge/Brench/001.gif
Saved ./wang/two-edge/Brench/003.gif
Saved ./wang/two-edge/Brench/011.gif
Saved ./wang/two-edge/Brench/009.gif
Saved ./wang/two-edge/Brench/000.gif
Saved ./wang/two-edge/Brench/002.gif
Saved ./wang/two-edge/Brench/010.gif
Saved ./wang/two-edge/Brench/008.gif
Done scraping Brench
Saved ./wang/two-edge/Pipe blocky/004.gif
Saved ./wang/two-edge/Pipe blocky/006.gif
Saved ./wang/two-edge/Pipe blocky/014.gif
Saved ./wang/two-edge/Pipe blocky/012.gif
Saved ./wang/two-edge/Pipe blocky/005.gif
Saved ./wang/two-edge/Pipe blocky/007.gif
Saved ./wang/two-edge/Pipe blocky/015.gif
Saved ./wang/two-edge/Pipe blocky/013.gif
Saved ./wang/two-edge/Pipe blocky/001.gif
Saved ./wang/two-edge/Pipe blocky/003.gif
Saved ./wang/two-edge/Pipe blocky/011.gif
Saved ./wang/two-edge/Pipe blocky/009.gif
Saved ./wang/two-edge/Pipe blocky/000.gif
Saved ./wang/two-edge/Pipe blocky/002.gif
Saved ./wang/two-edge/Pipe blocky/010.gif
Saved ./wang/two-edge/Pipe blocky/008.gif
Done scraping Pipe blocky
Saved ./wang/two-edge/Tilt/004.gif
Saved ./wang/two-edge/Tilt/006.gif
Saved ./wang/two-edge/Tilt/014.gif
Saved ./wang/two-edge/Tilt/012.gif
Saved ./wang/two-edge/Tilt/005.gif
Saved ./wang/two-edge/Tilt/007.gif
Saved ./wang/two-edge/Tilt/015.gif
Saved ./wang/two-edge/Tilt/013.gif
Saved ./wang/two-edge/Tilt/001.gif
Saved ./wang/two-edge/Tilt/003.gif
Saved ./wang/two-edge/Tilt/011.gif
Saved ./wang/two-edge/Tilt/009.gif
Saved ./wang/two-edge/Tilt/000.gif
Saved ./wang/two-edge/Tilt/002.gif
Saved ./wang/two-edge/Tilt/010.gif
Saved ./wang/two-edge/Tilt/008.gif
Done scraping Tilt
Saved ./wang/two-edge/Glob/004.gif
Saved ./wang/two-edge/Glob/006.gif
Saved ./wang/two-edge/Glob/014.gif
Saved ./wang/two-edge/Glob/012.gif
Saved ./wang/two-edge/Glob/005.gif
Saved ./wang/two-edge/Glob/007.gif
Saved ./wang/two-edge/Glob/015.gif
Saved ./wang/two-edge/Glob/013.gif
Saved ./wang/two-edge/Glob/001.gif
Saved ./wang/two-edge/Glob/003.gif
Saved ./wang/two-edge/Glob/011.gif
Saved ./wang/two-edge/Glob/009.gif
Saved ./wang/two-edge/Glob/000.gif
Saved ./wang/two-edge/Glob/002.gif
Saved ./wang/two-edge/Glob/010.gif
Saved ./wang/two-edge/Glob/008.gif
Done scraping Glob
Saved ./wang/two-edge/Celtic/004.gif
Saved ./wang/two-edge/Celtic/006.gif
Saved ./wang/two-edge/Celtic/014.gif
Saved ./wang/two-edge/Celtic/012.gif
Saved ./wang/two-edge/Celtic/005.gif
Saved ./wang/two-edge/Celtic/007.gif
Saved ./wang/two-edge/Celtic/015.gif
Saved ./wang/two-edge/Celtic/013.gif
Saved ./wang/two-edge/Celtic/001.gif
Saved ./wang/two-edge/Celtic/003.gif
Saved ./wang/two-edge/Celtic/011.gif
Saved ./wang/two-edge/Celtic/009.gif
Saved ./wang/two-edge/Celtic/000.gif
Saved ./wang/two-edge/Celtic/002.gif
Saved ./wang/two-edge/Celtic/010.gif
Saved ./wang/two-edge/Celtic/008.gif
Done scraping Celtic
Saved ./wang/two-edge/Circuit/004.gif
Saved ./wang/two-edge/Circuit/006.gif
Saved ./wang/two-edge/Circuit/014.gif
Saved ./wang/two-edge/Circuit/012.gif
Saved ./wang/two-edge/Circuit/005.gif
Saved ./wang/two-edge/Circuit/007.gif
Saved ./wang/two-edge/Circuit/015.gif
Saved ./wang/two-edge/Circuit/013.gif
Saved ./wang/two-edge/Circuit/001.gif
Saved ./wang/two-edge/Circuit/003.gif
Saved ./wang/two-edge/Circuit/011.gif
Saved ./wang/two-edge/Circuit/009.gif
Saved ./wang/two-edge/Circuit/000.gif
Saved ./wang/two-edge/Circuit/002.gif
Saved ./wang/two-edge/Circuit/010.gif
Saved ./wang/two-edge/Circuit/008.gif
Done scraping Circuit
Saved ./wang/two-edge/Laser/004.gif
Saved ./wang/two-edge/Laser/006.gif
Saved ./wang/two-edge/Laser/014.gif
Saved ./wang/two-edge/Laser/012.gif
Saved ./wang/two-edge/Laser/005.gif
Saved ./wang/two-edge/Laser/007.gif
Saved ./wang/two-edge/Laser/015.gif
Saved ./wang/two-edge/Laser/013.gif
Saved ./wang/two-edge/Laser/001.gif
Saved ./wang/two-edge/Laser/003.gif
Saved ./wang/two-edge/Laser/011.gif
Saved ./wang/two-edge/Laser/009.gif
Saved ./wang/two-edge/Laser/000.gif
Saved ./wang/two-edge/Laser/002.gif
Saved ./wang/two-edge/Laser/010.gif
Saved ./wang/two-edge/Laser/008.gif
Done scraping Laser
Saved ./wang/two-edge/Border/004.gif
Saved ./wang/two-edge/Border/006.gif
Saved ./wang/two-edge/Border/014.gif
Saved ./wang/two-edge/Border/012.gif
Saved ./wang/two-edge/Border/005.gif
Saved ./wang/two-edge/Border/007.gif
Saved ./wang/two-edge/Border/015.gif
Saved ./wang/two-edge/Border/013.gif
Saved ./wang/two-edge/Border/001.gif
Saved ./wang/two-edge/Border/003.gif
Saved ./wang/two-edge/Border/011.gif
Saved ./wang/two-edge/Border/009.gif
Saved ./wang/two-edge/Border/000.gif
Saved ./wang/two-edge/Border/002.gif
Saved ./wang/two-edge/Border/010.gif
Saved ./wang/two-edge/Border/008.gif
Done scraping Border
Saved ./wang/two-edge/Tube/004.gif
Saved ./wang/two-edge/Tube/006.gif
Saved ./wang/two-edge/Tube/014.gif
Saved ./wang/two-edge/Tube/012.gif
Saved ./wang/two-edge/Tube/005.gif
Saved ./wang/two-edge/Tube/007.gif
Saved ./wang/two-edge/Tube/015.gif
Saved ./wang/two-edge/Tube/013.gif
Saved ./wang/two-edge/Tube/001.gif
Saved ./wang/two-edge/Tube/003.gif
Saved ./wang/two-edge/Tube/011.gif
Saved ./wang/two-edge/Tube/009.gif
Saved ./wang/two-edge/Tube/000.gif
Saved ./wang/two-edge/Tube/002.gif
Saved ./wang/two-edge/Tube/010.gif
Saved ./wang/two-edge/Tube/008.gif
Done scraping Tube
Saved ./wang/two-edge/Octal/004.gif
Saved ./wang/two-edge/Octal/006.gif
Saved ./wang/two-edge/Octal/014.gif
Saved ./wang/two-edge/Octal/012.gif
Saved ./wang/two-edge/Octal/005.gif
Saved ./wang/two-edge/Octal/007.gif
Saved ./wang/two-edge/Octal/015.gif
Saved ./wang/two-edge/Octal/013.gif
Saved ./wang/two-edge/Octal/001.gif
Saved ./wang/two-edge/Octal/003.gif
Saved ./wang/two-edge/Octal/011.gif
Saved ./wang/two-edge/Octal/009.gif
Saved ./wang/two-edge/Octal/000.gif
Saved ./wang/two-edge/Octal/002.gif
Saved ./wang/two-edge/Octal/010.gif
Saved ./wang/two-edge/Octal/008.gif
Done scraping Octal
Saved ./wang/two-edge/Square/004.gif
Saved ./wang/two-edge/Square/006.gif
Saved ./wang/two-edge/Square/014.gif
Saved ./wang/two-edge/Square/012.gif
Saved ./wang/two-edge/Square/005.gif
Saved ./wang/two-edge/Square/007.gif
Saved ./wang/two-edge/Square/015.gif
Saved ./wang/two-edge/Square/013.gif
Saved ./wang/two-edge/Square/001.gif
Saved ./wang/two-edge/Square/003.gif
Saved ./wang/two-edge/Square/011.gif
Saved ./wang/two-edge/Square/009.gif
Saved ./wang/two-edge/Square/000.gif
Saved ./wang/two-edge/Square/002.gif
Saved ./wang/two-edge/Square/010.gif
Saved ./wang/two-edge/Square/008.gif
Done scraping Square
Saved ./wang/two-edge/Groove/004.gif
Saved ./wang/two-edge/Groove/006.gif
Saved ./wang/two-edge/Groove/014.gif
Saved ./wang/two-edge/Groove/012.gif
Saved ./wang/two-edge/Groove/005.gif
Saved ./wang/two-edge/Groove/007.gif
Saved ./wang/two-edge/Groove/015.gif
Saved ./wang/two-edge/Groove/013.gif
Saved ./wang/two-edge/Groove/001.gif
Saved ./wang/two-edge/Groove/003.gif
Saved ./wang/two-edge/Groove/011.gif
Saved ./wang/two-edge/Groove/009.gif
Saved ./wang/two-edge/Groove/000.gif
Saved ./wang/two-edge/Groove/002.gif
Saved ./wang/two-edge/Groove/010.gif
Saved ./wang/two-edge/Groove/008.gif
Done scraping Groove
Saved ./wang/two-edge/Dual/004.gif
Saved ./wang/two-edge/Dual/006.gif
Saved ./wang/two-edge/Dual/014.gif
Saved ./wang/two-edge/Dual/012.gif
Saved ./wang/two-edge/Dual/005.gif
Saved ./wang/two-edge/Dual/007.gif
Saved ./wang/two-edge/Dual/015.gif
Saved ./wang/two-edge/Dual/013.gif
Saved ./wang/two-edge/Dual/001.gif
Saved ./wang/two-edge/Dual/003.gif
Saved ./wang/two-edge/Dual/011.gif
Saved ./wang/two-edge/Dual/009.gif
Saved ./wang/two-edge/Dual/000.gif
Saved ./wang/two-edge/Dual/002.gif
Saved ./wang/two-edge/Dual/010.gif
Saved ./wang/two-edge/Dual/008.gif
Done scraping Dual
Saved ./wang/two-edge/Brick Wall/004.gif
Saved ./wang/two-edge/Brick Wall/006.gif
Saved ./wang/two-edge/Brick Wall/014.gif
Saved ./wang/two-edge/Brick Wall/012.gif
Saved ./wang/two-edge/Brick Wall/005.gif
Saved ./wang/two-edge/Brick Wall/007.gif
Saved ./wang/two-edge/Brick Wall/015.gif
Saved ./wang/two-edge/Brick Wall/013.gif
Saved ./wang/two-edge/Brick Wall/001.gif
Saved ./wang/two-edge/Brick Wall/003.gif
Saved ./wang/two-edge/Brick Wall/011.gif
Saved ./wang/two-edge/Brick Wall/009.gif
Saved ./wang/two-edge/Brick Wall/000.gif
Saved ./wang/two-edge/Brick Wall/002.gif
Saved ./wang/two-edge/Brick Wall/010.gif
Saved ./wang/two-edge/Brick Wall/008.gif
Done scraping Brick Wall
Done scraping two-edge tiles...
Scraping complete!

In [ ]: