Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import json
- import logging.handlers
- import pickle
- import sys
- from datetime import datetime
- import requests
- from pgdb import connect
- try:
- from urlparse import urlparse
- except ImportError:
- from urllib.parse import urlparse, urlencode
- log = logging.getLogger(__name__)
- log.setLevel(logging.DEBUG)
- handler = logging.handlers.SysLogHandler(address='/dev/log')
- formatter = logging.Formatter('%(module)s.%(funcName)s [%(asctime)s]: %(message)s')
- handler.setFormatter(formatter)
- log.addHandler(handler)
- log.addHandler(handler)
- log.info('Processing started')
- try:
- con = connect(database='wooservers', host='localhost:5432', user='wooservers_user', password='12345678')
- cursor = con.cursor()
- log.info('DB connected')
- url_getCarsForMap = 'http://delimobil.ru/site/getCarsForMap'
- auth = {
- 'LoginForm[username]': '+7-925-593-16-35',
- 'LoginForm[password]': '969074'
- }
- r = requests.Session()
- r.post('http://delimobil.ru/site/auth', data=auth)
- coord = r.post(url_getCarsForMap)
- if coord.status_code == 200:
- update = 0
- new = 0
- for items in coord.json():
- item_id = int(items['id'])
- item_lon = float(items['lon'])
- item_lat = float(items['lat'])
- dt = datetime.now()
- payload = {
- 'id': item_id
- }
- url_getCarInfo = "http://delimobil.ru/site/getCarInfo"
- details_car = r.post(url_getCarInfo, data=payload)
- if details_car.status_code == 200:
- car = details_car.json()
- item_free = int(car['free'])
- item_status = int(car['status'])
- item_address = car['model']['address']
- item_fuel = float(car['model']['fuel'])
- item_model = car['model']['model']
- item_reg_number = car['model']['reg_number']
- cursor.execute('SELECT id FROM wooservers."public".delimobil WHERE id = %i', [item_id])
- row = cursor.fetchone()
- if row is None:
- t = (
- item_id,
- item_lat,
- item_lon,
- item_free,
- item_address,
- item_fuel,
- item_model,
- item_reg_number,
- item_status,
- dt
- )
- cursor.execute('INSERT INTO wooservers."public".delimobil VALUES (%i,%f,%f,%i,%s,%f,%s,%s,%i,%s)', t)
- new += 1
- elif row is not None:
- query = ('UPDATE wooservers."public".delimobil SET '
- 'lat=%f, '
- 'lon=%f, '
- 'free=\'%i\', '
- 'address=\'%s\', '
- 'fuel=%f, '
- 'model=\'%s\', '
- 'reg_number=\'%s\', '
- 'status=%i, '
- 'last_update=\'%s\' '
- 'WHERE id = %i' % (
- item_lat,
- item_lon,
- item_free,
- item_address,
- item_fuel,
- item_model,
- item_reg_number,
- item_status,
- dt,
- item_id
- ))
- cursor.execute(query)
- update += 1
- con.commit()
- cursor.close()
- con.close()
- log.info('Processing done (update: %s, new: %s)', update, new)
- except Exception as e:
- log.critical(str(e))
- sys.exit(1)
Add Comment
Please, Sign In to add comment