Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/python3
- import urllib.request
- import sqlite3
- import json
- def assembleParams(params) :
- paramString = ""
- for paramKey, paramValue in params.items() :
- paramString += "&" + paramKey + "=" + str(paramValue)
- return paramString
- def buildRequestUrl(baseUrl, params) :
- return baseUrl + "?" + params
- def fetchJsonResponse(url) :
- with urllib.request.urlopen(url) as response:
- jsonResponse = response.read().decode("utf-8")
- return json.loads(jsonResponse)
- # Begin
- database = "flickr-download.db"
- apiKey = "852b67eaf12a16b24b31b0608c003b34"
- apiBaseUrl = "https://api.flickr.com/services/rest/"
- apiMethod = "flickr.photos.search"
- extras = "date_taken,date_upload,geo,tags"
- apiFormat = "json"
- apiNoCallback = 1
- lon="28.04363"
- lat="-26.20227"
- min_taken_date="2015-01-01 00:00:00" #YYYY-MM-DD HH:MM:SS
- max_taken_date="2015-12-31 23:59:59"
- radius="20"
- apiParams = {'method': apiMethod,'per_page': 500, 'page': 1, 'api_key': apiKey, 'format': apiFormat, 'nojsoncallback': apiNoCallback, 'extras' : extras, 'lon': lon, 'lat': lat, 'min_taken_date': min_taken_date, 'max_taken_date': max_taken_date, 'radius': radius }
- maxRequests = 500
- pages = []
- dbConn = sqlite3.connect(database)
- db = dbConn.cursor()
- url = buildRequestUrl(apiBaseUrl, assembleParams(apiParams))
- page = fetchJsonResponse(url)
- for i in range(maxRequests) :
- apiParams['page'] = i+1;
- url = buildRequestUrl(apiBaseUrl, assembleParams(apiParams))
- page = fetchJsonResponse(url)
- for photo in page['photos']['photo'] :
- flickrId = photo['id']
- owner = photo['owner']
- uploaded = photo['dateupload']
- taken = photo['datetaken']
- title = photo['title']
- latitude = photo['latitude']
- longitude= photo['longitude']
- tags = photo['tags']
- db.execute('SELECT * FROM photos WHERE photo_id=?', [flickrId])
- if db.fetchone()==None:
- insertPhotoSql = "INSERT INTO photos (owner, date_upload, date_taken, title, latitude, longitude, tags, photo_id) VALUES (?, ?, ?, ?, ?, ?, ?, ?)"
- db.execute(insertPhotoSql, (owner, uploaded, taken, title, latitude, longitude, tags, flickrId,))
- print (i)
- dbConn.commit()
- dbConn.close()
- print ('Ende')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement