Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/python
- # -*- coding: utf-8 -*-
- import json
- from pprint import pprint
- import logging
- import requests
- import sys
- import ConfigParser
- from ConfigParser import NoOptionError
- # from bs4 import BeautifulSoup
- from datetime import datetime, timedelta
- TOKEN = \
- 'eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6ImpoeXA2UU9DWlZmY1pmdmhDVGR1OFdxeTJ5byJ9.eyJFbnJvbGxtZW50TnVtYmVyIjoiNzEyNjkzNzAiLCJJZCI6IjA1YjYzMmVkLTEyNWMtNDJjNy1hNTQxLWVjYmI1MGVhMjc5ZSIsIlJlcG9ydFZpZXciOiJFbnRlcnByaXNlIiwiUGFydG5lcklkIjoiIiwiRGVwYXJ0bWVudElkIjoiIiwiQWNjb3VudElkIjoiIiwiaXNzIjoiZWEubWljcm9zb2Z0YXp1cmUuY29tIiwiYXVkIjoiY2xpZW50LmVhLm1pY3Jvc29mdGF6dXJlLmNvbSIsImV4cCI6MTU2MDE2NzAxMywibmJmIjoxNTQ0NDQyMjEzfQ.DOBgc_iSkY_jRpji5soQ18DDKBq5HY1_9u1cKKilXfkxIXllLLSHHsJj7ZmowDecLaLrilCLVeaSyYucAW13JEuBjVRaTTCwccXjCvOJ-_b1ENTX1YLqvnNjrI2Xn5IJAM-QT0MDhc24xKPbr2_CD2iuC8rbF6_xmVXQnBH_8Zfn5hDcaFrCJdybi0CpyzL8nl_CvG8QCHuJHtA_fbL5lf_9Bg8Q6XLL-DVRq4tRkZSaPTHFoDUEKjkDJUhAFX4-8iCXksJOy8AkzAuZI83hDFUx_5u_hyFqlbVjGIoUSTRLoW9Y0D_VBOYNibcqzbsQRatH28Hr7o5ENUAGypnQ5Q'
- TOKEN = 'Bearer ' + str(TOKEN)
- aniomes = datetime.now().strftime('%Y%m')
- # URL='https://consumption.azure.com/v1/enrollments/71269370/billingPeriods/'+str(aniomes)+'/usagedetails'
- URL = \
- 'https://consumption.azure.com/v3/enrollments/71269370/usagedetailsbycustomdate?startTime=2019-02-08&endTime=2019-02-20'
- TIMEOUT = 200 # SEGUNDO
- KEY_DATA = 'data'
- KEY_INS = 'instanceId'
- KEY_NEXT = 'nextLink'
- VAL = []
- FICH_SALIDA = 'salida.json'
- print 'La fecha' + str(aniomes)
- print 'La URL' + str(URL)
- def getStrim(URL, TOKEN):
- TIMEOUT = 200 # SEGUNDOS
- try:
- requests_log = logging.getLogger('requests')
- requests_log.addHandler(logging.NullHandler())
- requests_log.propagate = False
- # r = requests.get(url, verify=ca, timeout=int(config_parser.get("APP","TimeOut")), \
- r = requests.get(URL, timeout=int(TIMEOUT),
- headers={'Authorization': TOKEN}) # headers = {"user-agent": 'Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0) Gecko/20100101 Firefox/47.0'}, \
- # auth = ("",""), \
- # params = {})
- retStatus = str(r.status_code)
- retContent = str(r.content)
- except requests.exceptions.RequestException, e:
- # parseaJson(retContent)
- print e
- print 'Ha habido una excepcion.al acceder al servicio...' \
- + str(e)
- return (retStatus, retContent)
- def parseaJson(retContent):
- # with open('ejemplo.json') as f:
- data = json.loads(retContent)
- print 'el objeto cargado es.tipo..' + str(type(data))
- print 'el objeto cargado es.......' + str(data)
- vuelta = ''
- CONTENIDO = {}
- CONTENIDO = rec_dict(data, vuelta, CONTENIDO)
- # VAL.append(CONTENIDO)
- return CONTENIDO
- def rec_dict(obj, vuelta, CONTENIDO):
- vuelta = '/--' + vuelta
- for (k, v) in obj.items():
- # print str(vuelta)+'/ Key--> '+str(k)
- if str(k) == KEY_DATA:
- print 'Tengo el dato ya..DATA...............'
- CONTENIDO['VAL_DATA'] = v
- if str(k) == KEY_NEXT:
- print 'Tengo el dato ya..NEXT...............'
- CONTENIDO['VAL_NEXT'] = v
- if str(k) == KEY_INS:
- print 'Tengo el dato ya..INS...............'
- if isinstance(v, dict):
- rec_dict(v, vuelta, CONTENIDO)
- else:
- if isinstance(v, list):
- # print str(vuelta)+'/ Value list --> :'
- cont = 0
- for lis in v:
- cont += 1
- # print str(vuelta)+'/ Vuelta '+str(cont)
- if isinstance(lis, dict):
- rec_dict(lis, vuelta, CONTENIDO)
- else:
- # print str(vuelta)+'/ -->'+str(lis)
- pass
- else:
- if isinstance(v, str) or isinstance(v, unicode):
- # print str(vuelta)+'/ Value--> '+str(v.encode('utf-8'))
- pass
- else:
- # print str(vuelta)+'/ Valueatipo........--> '+str(type(v))
- # print str(vuelta)+'/ Value--> '+str(v)
- pass
- return CONTENIDO
- print 'Entro en el programa....'
- cont = 0
- miFile = open(FICH_SALIDA, 'a')
- while True:
- cont += 1
- (retStatus, retContent) = getStrim(URL, TOKEN)
- print '''
- El estatus es..a
- .''' + str(retStatus)
- # print 'El content es...'+str(retContent)
- print 'llamo al json parser'
- CONTENIDO = parseaJson(retContent)
- VAL.append(CONTENIDO)
- print 'El next token.....' + str(CONTENIDO['VAL_NEXT'])
- URL = str(CONTENIDO['VAL_NEXT'])
- # json.dump(CONTENIDO['VAL_DATA'], miFile)
- if cont > 1550 or URL == 'None':
- break
- else:
- print '\n voy por la....' + str(cont)
- print 'Ahora recorro en arraya'
- tot = []
- for elem in VAL:
- res = elem['VAL_DATA']
- print 'Es detipo...' + str(type(res))
- tot = tot + res
- print 'Ahora vuelco al fichedro'
- json.dump(tot, miFile)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement