#!/usr/bin/python

# tz_panoramio.py
#       --copyright--                   Copyright 2014 (C) Tranzoa, Co. All rights reserved.    Warranty: You're free and on your own here. This code is not necessarily up-to-date or of public quality.
#       --url--                         http://www.tranzoa.net/tzpython/
#       --email--                       pycode is the name to send to. tranzoa.com is the place to send to.
#       --bodstamps--
#       August 30, 2014         bar
#       --eodstamps--
##      \file
#       \namespace              tzpython.tz_panoramio
#
#
#       Google's panoramio stuff.
#
#       url = "http://www.panoramio.com/map/get_panoramas.php?order=popularity&set=public&from=0&to=20&minx=238.1&miny=47.476&maxx=238.2&maxy=47.478&size=medium"
#
#
#

import  os
import  sys
import  urllib2

try :
    import  json                            # python 2.6 has this?
    if  not hasattr(json, 'read') :
        json.read   = json.loads
    pass
except ImportError :
    try :
        import  jsonlib                     # well, otherwise, I have jsonlib installed
        json    = jsonlib
    except ImportError :
        try     :
            import simplejson as json
            json.read   = json.loads
            json.write  = json.dumps
        except  :
            json        = None
        pass
    pass


import  tzlib
import  latlon


HOW_MANY    = 20


help_str    = """
%s (options)

Options:

    --min_lat       decimal_latitude        Set the minimum latitude.
    --max_lat       decimal_latitude        Set the minimum latitude.
    --min_lon       decimal_latitude        Set the minimum longitude.
    --max_lon       decimal_latitude        Set the minimum longitude.

Pretty-print the JSON output from panoramio.com.

"""

#
#
if __name__ == '__main__' :

    import  TZCommandLineAtFile


    program_name    = sys.argv.pop(0)

    TZCommandLineAtFile.expand_at_sign_command_line_files(sys.argv)

    min_lat = 47.476
    max_lat = 47.478
    min_lon = -121.8
    max_lon = -121.9

    while True :
        oi  = tzlib.array_find(sys.argv, [ "--help", "-h", "-?", "/?", "/h", "/H" ] )
        if  oi < 0 :    break
        del sys.argv[oi]
        print help_str % ( os.path.basename(program_name) )

        sys.exit(254)


    while True :
        oi  = tzlib.array_find(sys.argv, [ "--min_lat", "--min-lat", "--minlat", "--minimum_lat", "--minimum-lat", "--minimumlat", "--min_latitude", "--min-latitude", "--minlatitude", "--minimum_latitude", "--minimum-latitude", "--minimumlatitude", ] )
        if  oi < 0 :    break
        del sys.argv[oi]
        min_lat = float(sys.argv.pop(oi))

    while True :
        oi  = tzlib.array_find(sys.argv, [ "--max_lat", "--max-lat", "--maxlat", "--maximum_lat", "--maximum-lat", "--maximumlat", "--max_latitude", "--max-latitude", "--maxlatitude", "--maximum_latitude", "--maximum-latitude", "--maximumlatitude", ] )
        if  oi < 0 :    break
        del sys.argv[oi]
        max_lat = float(sys.argv.pop(oi))


    while True :
        oi  = tzlib.array_find(sys.argv, [ "--min_lon", "--min-lon", "--minlon", "--minimum_lon", "--minimum-lon", "--minimumlon", "--min_longitude", "--min-longitude", "--minlongitude", "--minimum_longitude", "--minimum-longitude", "--minimumlongitude", ] )
        if  oi < 0 :    break
        del sys.argv[oi]
        min_lon = float(sys.argv.pop(oi))

    while True :
        oi  = tzlib.array_find(sys.argv, [ "--max_lon", "--max-lon", "--maxlon", "--maximum_lon", "--maximum-lon", "--maximumlon", "--max_longitude", "--max-longitude", "--maxlongitude", "--maximum_longitude", "--maximum-longitude", "--maximumlongitude", ] )
        if  oi < 0 :    break
        del sys.argv[oi]
        max_lon = float(sys.argv.pop(oi))

    min_lat, min_lon    = latlon.fix_lat_lon(min_lat, min_lon)
    max_lat, max_lon    = latlon.fix_lat_lon(max_lat, max_lon)
    if  min_lon < 0     :
        min_lon        += 360
    if  max_lon < 0     :
        max_lon        += 360

    if  min_lat > max_lat :
        min_lat, max_lat    = max_lat, min_lat
    if  min_lon > max_lon :
        min_lon, max_lon    = max_lon, min_lon


    url = "http://www.panoramio.com/map/get_panoramas.php?order=popularity&set=public&from=0&to=%u&minx=%f&miny=%f&maxx=%f&maxy=%f&size=medium" % ( HOW_MANY, min_lon, min_lat, max_lon, max_lat, )
    f   = urllib2.urlopen(url)
    fd  = f.read()
    if  (fd or "").strip() :
        s   = json.dumps(json.loads(fd), indent = 4)
        print   s
    pass

#
#
#
# eof
