Guest User

Untitled

a guest
Jun 3rd, 2016
32
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.80 KB | None | 0 0
  1. import json
  2. import logging.handlers
  3. import pickle
  4. import sys
  5. from datetime import datetime
  6.  
  7. import requests
  8. from pgdb import connect
  9.  
  10. try:
  11. from urlparse import urlparse
  12. except ImportError:
  13. from urllib.parse import urlparse, urlencode
  14.  
  15. log = logging.getLogger(__name__)
  16.  
  17. log.setLevel(logging.DEBUG)
  18.  
  19. handler = logging.handlers.SysLogHandler(address='/dev/log')
  20.  
  21. formatter = logging.Formatter('%(module)s.%(funcName)s [%(asctime)s]: %(message)s')
  22. handler.setFormatter(formatter)
  23.  
  24. log.addHandler(handler)
  25.  
  26. log.addHandler(handler)
  27.  
  28. log.info('Processing started')
  29.  
  30. try:
  31. con = connect(database='wooservers', host='localhost:5432', user='wooservers_user', password='12345678')
  32. cursor = con.cursor()
  33. log.info('DB connected')
  34.  
  35. url_getCarsForMap = 'http://delimobil.ru/site/getCarsForMap'
  36.  
  37. auth = {
  38. 'LoginForm[username]': '+7-925-593-16-35',
  39. 'LoginForm[password]': '969074'
  40. }
  41.  
  42. r = requests.Session()
  43.  
  44. r.post('http://delimobil.ru/site/auth', data=auth)
  45.  
  46. coord = r.post(url_getCarsForMap)
  47.  
  48. if coord.status_code == 200:
  49. update = 0
  50. new = 0
  51. for items in coord.json():
  52. item_id = int(items['id'])
  53. item_lon = float(items['lon'])
  54. item_lat = float(items['lat'])
  55. dt = datetime.now()
  56.  
  57. payload = {
  58. 'id': item_id
  59. }
  60.  
  61. url_getCarInfo = "http://delimobil.ru/site/getCarInfo"
  62. details_car = r.post(url_getCarInfo, data=payload)
  63. if details_car.status_code == 200:
  64. car = details_car.json()
  65. item_free = int(car['free'])
  66. item_status = int(car['status'])
  67. item_address = car['model']['address']
  68. item_fuel = float(car['model']['fuel'])
  69. item_model = car['model']['model']
  70. item_reg_number = car['model']['reg_number']
  71.  
  72. cursor.execute('SELECT id FROM wooservers."public".delimobil WHERE id = %i', [item_id])
  73. row = cursor.fetchone()
  74. if row is None:
  75. t = (
  76. item_id,
  77. item_lat,
  78. item_lon,
  79. item_free,
  80. item_address,
  81. item_fuel,
  82. item_model,
  83. item_reg_number,
  84. item_status,
  85. dt
  86. )
  87. cursor.execute('INSERT INTO wooservers."public".delimobil VALUES (%i,%f,%f,%i,%s,%f,%s,%s,%i,%s)', t)
  88. new += 1
  89. elif row is not None:
  90. query = ('UPDATE wooservers."public".delimobil SET '
  91. 'lat=%f, '
  92. 'lon=%f, '
  93. 'free=\'%i\', '
  94. 'address=\'%s\', '
  95. 'fuel=%f, '
  96. 'model=\'%s\', '
  97. 'reg_number=\'%s\', '
  98. 'status=%i, '
  99. 'last_update=\'%s\' '
  100. 'WHERE id = %i' % (
  101. item_lat,
  102. item_lon,
  103. item_free,
  104. item_address,
  105. item_fuel,
  106. item_model,
  107. item_reg_number,
  108. item_status,
  109. dt,
  110. item_id
  111. ))
  112. cursor.execute(query)
  113. update += 1
  114.  
  115. con.commit()
  116. cursor.close()
  117. con.close()
  118. log.info('Processing done (update: %s, new: %s)', update, new)
  119.  
  120. except Exception as e:
  121. log.critical(str(e))
  122. sys.exit(1)
Add Comment
Please, Sign In to add comment