Advertisement
Guest User

Untitled

a guest
Dec 11th, 2016
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.13 KB | None | 0 0
  1. #!/usr/bin/python3
  2.  
  3. import urllib.request
  4. import sqlite3
  5. import json
  6.  
  7. def assembleParams(params) :
  8. paramString = ""
  9. for paramKey, paramValue in params.items() :
  10. paramString += "&" + paramKey + "=" + str(paramValue)
  11. return paramString
  12.  
  13. def buildRequestUrl(baseUrl, params) :
  14. return baseUrl + "?" + params
  15.  
  16. def fetchJsonResponse(url) :
  17. with urllib.request.urlopen(url) as response:
  18. jsonResponse = response.read().decode("utf-8")
  19. return json.loads(jsonResponse)
  20.  
  21. # Begin
  22.  
  23. database = "flickr-download.db"
  24. apiKey = "852b67eaf12a16b24b31b0608c003b34"
  25. apiBaseUrl = "https://api.flickr.com/services/rest/"
  26. apiMethod = "flickr.photos.search"
  27. extras = "date_taken,date_upload,geo,tags"
  28. apiFormat = "json"
  29. apiNoCallback = 1
  30. lon="28.04363"
  31. lat="-26.20227"
  32. min_taken_date="2015-01-01 00:00:00" #YYYY-MM-DD HH:MM:SS
  33. max_taken_date="2015-12-31 23:59:59"
  34. radius="20"
  35. 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 }
  36. maxRequests = 500
  37. pages = []
  38.  
  39. dbConn = sqlite3.connect(database)
  40. db = dbConn.cursor()
  41.  
  42. url = buildRequestUrl(apiBaseUrl, assembleParams(apiParams))
  43. page = fetchJsonResponse(url)
  44.  
  45.  
  46. for i in range(maxRequests) :
  47. apiParams['page'] = i+1;
  48. url = buildRequestUrl(apiBaseUrl, assembleParams(apiParams))
  49. page = fetchJsonResponse(url)
  50. for photo in page['photos']['photo'] :
  51. flickrId = photo['id']
  52. owner = photo['owner']
  53. uploaded = photo['dateupload']
  54. taken = photo['datetaken']
  55. title = photo['title']
  56. latitude = photo['latitude']
  57. longitude= photo['longitude']
  58. tags = photo['tags']
  59. db.execute('SELECT * FROM photos WHERE photo_id=?', [flickrId])
  60. if db.fetchone()==None:
  61. insertPhotoSql = "INSERT INTO photos (owner, date_upload, date_taken, title, latitude, longitude, tags, photo_id) VALUES (?, ?, ?, ?, ?, ?, ?, ?)"
  62. db.execute(insertPhotoSql, (owner, uploaded, taken, title, latitude, longitude, tags, flickrId,))
  63. print (i)
  64. dbConn.commit()
  65. dbConn.close()
  66. print ('Ende')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement