Fix/simplify Google steal
This commit is contained in:
parent
b3580d2ccc
commit
9032bff26e
2 changed files with 6 additions and 61 deletions
2
.gitignore
vendored
2
.gitignore
vendored
|
@ -1,2 +1,4 @@
|
||||||
__pycache__
|
__pycache__
|
||||||
*.swp
|
*.swp
|
||||||
|
*.err
|
||||||
|
*.png
|
|
@ -23,68 +23,11 @@ def google_normalize(url):
|
||||||
|
|
||||||
parts = url.split("=")
|
parts = url.split("=")
|
||||||
|
|
||||||
return f"{parts[0]}=x%i-y%i-z%i"
|
return f"{parts[0]}=w16000"
|
||||||
|
|
||||||
except:
|
except:
|
||||||
return False
|
return False
|
||||||
|
|
||||||
def google_getmaxzoom(schema):
|
|
||||||
'''
|
|
||||||
Takes a normalized string from google_normalize() and returns the maximum
|
|
||||||
zoom level available.
|
|
||||||
|
|
||||||
:param schema: normalized URL format output by google_normalize()
|
|
||||||
:return: int value of largest available zoom level
|
|
||||||
'''
|
|
||||||
|
|
||||||
l = 0
|
|
||||||
|
|
||||||
while True:
|
|
||||||
try:
|
|
||||||
url = schema % (0, 0, l+1)
|
|
||||||
with urllib.request.urlopen(url) as res:
|
|
||||||
assert res.getcode() == 200
|
|
||||||
l += 1
|
|
||||||
except:
|
|
||||||
return l
|
|
||||||
|
|
||||||
def google_export(schema):
|
|
||||||
'''
|
|
||||||
Takes a normalized string from google_normalize() and returns a list of
|
|
||||||
lists of lists containing all images fit for passing into stitch().
|
|
||||||
|
|
||||||
:param schema: normalized URL format output by google_normalize()
|
|
||||||
:return: list of lists of lists of PIL.Image() objects for multistitch()
|
|
||||||
'''
|
|
||||||
|
|
||||||
maxzoom = google_getmaxzoom(schema)
|
|
||||||
output = []
|
|
||||||
|
|
||||||
y = 0
|
|
||||||
|
|
||||||
while True:
|
|
||||||
r_array = []
|
|
||||||
x = 0
|
|
||||||
|
|
||||||
while True:
|
|
||||||
try:
|
|
||||||
res = urllib.request.urlopen(schema % (x, y, maxzoom))
|
|
||||||
assert res.getcode() == 200
|
|
||||||
fo = io.BytesIO(res.read())
|
|
||||||
img = PIL.Image.open(fo)
|
|
||||||
r_array.append(img)
|
|
||||||
x += 1
|
|
||||||
except Exception:
|
|
||||||
break
|
|
||||||
|
|
||||||
if not r_array:
|
|
||||||
break
|
|
||||||
|
|
||||||
output.append(r_array)
|
|
||||||
y += 1
|
|
||||||
|
|
||||||
return output
|
|
||||||
|
|
||||||
def google_to_equirectangular(url, rotation=[0,0,0], resolution=[3840,1920]):
|
def google_to_equirectangular(url, rotation=[0,0,0], resolution=[3840,1920]):
|
||||||
'''
|
'''
|
||||||
Takes the URL of any image in a google panorama and returns a finished
|
Takes the URL of any image in a google panorama and returns a finished
|
||||||
|
@ -98,8 +41,8 @@ def google_to_equirectangular(url, rotation=[0,0,0], resolution=[3840,1920]):
|
||||||
raise ValueError(f"{url} does not seem to be a valid Google URL." % url)
|
raise ValueError(f"{url} does not seem to be a valid Google URL." % url)
|
||||||
|
|
||||||
schema = google_normalize(url)
|
schema = google_normalize(url)
|
||||||
images = google_export(schema)
|
res = urllib.request.urlopen(schema)
|
||||||
|
assert res.getcode() == 200
|
||||||
return stitch(images)
|
return PIL.Image.open(io.BytesIO(res.read()))
|
||||||
|
|
||||||
process_url = google_to_equirectangular
|
process_url = google_to_equirectangular
|
||||||
|
|
Loading…
Reference in a new issue