Advertisement
Guest User

Untitled

a guest
Feb 21st, 2019
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 5.26 KB | None | 0 0
  1. #!/usr/bin/python
  2. # -*- coding: utf-8 -*-
  3. import json
  4. from pprint import pprint
  5. import logging
  6. import requests
  7. import sys
  8. import ConfigParser
  9. from ConfigParser import NoOptionError
  10.  
  11. # from bs4 import BeautifulSoup
  12.  
  13. from datetime import datetime, timedelta
  14.  
  15. TOKEN = \
  16.     'eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6ImpoeXA2UU9DWlZmY1pmdmhDVGR1OFdxeTJ5byJ9.eyJFbnJvbGxtZW50TnVtYmVyIjoiNzEyNjkzNzAiLCJJZCI6IjA1YjYzMmVkLTEyNWMtNDJjNy1hNTQxLWVjYmI1MGVhMjc5ZSIsIlJlcG9ydFZpZXciOiJFbnRlcnByaXNlIiwiUGFydG5lcklkIjoiIiwiRGVwYXJ0bWVudElkIjoiIiwiQWNjb3VudElkIjoiIiwiaXNzIjoiZWEubWljcm9zb2Z0YXp1cmUuY29tIiwiYXVkIjoiY2xpZW50LmVhLm1pY3Jvc29mdGF6dXJlLmNvbSIsImV4cCI6MTU2MDE2NzAxMywibmJmIjoxNTQ0NDQyMjEzfQ.DOBgc_iSkY_jRpji5soQ18DDKBq5HY1_9u1cKKilXfkxIXllLLSHHsJj7ZmowDecLaLrilCLVeaSyYucAW13JEuBjVRaTTCwccXjCvOJ-_b1ENTX1YLqvnNjrI2Xn5IJAM-QT0MDhc24xKPbr2_CD2iuC8rbF6_xmVXQnBH_8Zfn5hDcaFrCJdybi0CpyzL8nl_CvG8QCHuJHtA_fbL5lf_9Bg8Q6XLL-DVRq4tRkZSaPTHFoDUEKjkDJUhAFX4-8iCXksJOy8AkzAuZI83hDFUx_5u_hyFqlbVjGIoUSTRLoW9Y0D_VBOYNibcqzbsQRatH28Hr7o5ENUAGypnQ5Q'
  17.  
  18. TOKEN = 'Bearer ' + str(TOKEN)
  19.  
  20. aniomes = datetime.now().strftime('%Y%m')
  21.  
  22. # URL='https://consumption.azure.com/v1/enrollments/71269370/billingPeriods/'+str(aniomes)+'/usagedetails'
  23.  
  24. URL = \
  25.     'https://consumption.azure.com/v3/enrollments/71269370/usagedetailsbycustomdate?startTime=2019-02-08&endTime=2019-02-20'
  26.  
  27. TIMEOUT = 200  # SEGUNDO
  28.  
  29. KEY_DATA = 'data'
  30. KEY_INS = 'instanceId'
  31. KEY_NEXT = 'nextLink'
  32. VAL = []
  33. FICH_SALIDA = 'salida.json'
  34.  
  35. print 'La fecha' + str(aniomes)
  36. print 'La URL' + str(URL)
  37.  
  38.  
  39. def getStrim(URL, TOKEN):
  40.     TIMEOUT = 200  # SEGUNDOS
  41.     try:
  42.         requests_log = logging.getLogger('requests')
  43.         requests_log.addHandler(logging.NullHandler())
  44.         requests_log.propagate = False
  45.  
  46.                    # r = requests.get(url, verify=ca, timeout=int(config_parser.get("APP","TimeOut")), \
  47.  
  48.         r = requests.get(URL, timeout=int(TIMEOUT),
  49.                          headers={'Authorization': TOKEN})  # headers = {"user-agent": 'Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0) Gecko/20100101 Firefox/47.0'}, \
  50.  
  51.                         # auth = ("",""), \
  52.                         # params = {})
  53.  
  54.         retStatus = str(r.status_code)
  55.         retContent = str(r.content)
  56.     except requests.exceptions.RequestException, e:
  57.  
  58.             # parseaJson(retContent)
  59.  
  60.         print e
  61.         print 'Ha habido una excepcion.al acceder al servicio...' \
  62.             + str(e)
  63.     return (retStatus, retContent)
  64.  
  65.  
  66. def parseaJson(retContent):
  67.  
  68.     # with open('ejemplo.json') as f:
  69.  
  70.     data = json.loads(retContent)
  71.     print 'el objeto cargado es.tipo..' + str(type(data))
  72.     print 'el objeto cargado es.......' + str(data)
  73.     vuelta = ''
  74.     CONTENIDO = {}
  75.     CONTENIDO = rec_dict(data, vuelta, CONTENIDO)
  76.  
  77.     # VAL.append(CONTENIDO)
  78.  
  79.     return CONTENIDO
  80.  
  81.  
  82. def rec_dict(obj, vuelta, CONTENIDO):
  83.     vuelta = '/--' + vuelta
  84.     for (k, v) in obj.items():
  85.  
  86.                 # print str(vuelta)+'/ Key--> '+str(k)
  87.  
  88.         if str(k) == KEY_DATA:
  89.             print 'Tengo el dato ya..DATA...............'
  90.             CONTENIDO['VAL_DATA'] = v
  91.         if str(k) == KEY_NEXT:
  92.             print 'Tengo el dato ya..NEXT...............'
  93.             CONTENIDO['VAL_NEXT'] = v
  94.         if str(k) == KEY_INS:
  95.             print 'Tengo el dato ya..INS...............'
  96.         if isinstance(v, dict):
  97.             rec_dict(v, vuelta, CONTENIDO)
  98.         else:
  99.             if isinstance(v, list):
  100.  
  101.                                 # print str(vuelta)+'/ Value list --> :'
  102.  
  103.                 cont = 0
  104.                 for lis in v:
  105.                     cont += 1
  106.  
  107.                                            # print str(vuelta)+'/ Vuelta '+str(cont)
  108.  
  109.                     if isinstance(lis, dict):
  110.                         rec_dict(lis, vuelta, CONTENIDO)
  111.                     else:
  112.  
  113.                                                    # print str(vuelta)+'/ -->'+str(lis)
  114.  
  115.                         pass
  116.             else:
  117.                 if isinstance(v, str) or isinstance(v, unicode):
  118.  
  119.                                        # print str(vuelta)+'/ Value--> '+str(v.encode('utf-8'))
  120.  
  121.                     pass
  122.                 else:
  123.  
  124.                                        # print str(vuelta)+'/ Valueatipo........--> '+str(type(v))
  125.                                        # print str(vuelta)+'/ Value--> '+str(v)
  126.  
  127.                     pass
  128.     return CONTENIDO
  129.  
  130.  
  131. print 'Entro en el programa....'
  132. cont = 0
  133.  
  134. miFile = open(FICH_SALIDA, 'a')
  135.  
  136. while True:
  137.     cont += 1
  138.     (retStatus, retContent) = getStrim(URL, TOKEN)
  139.     print '''
  140. El estatus es..a
  141. .''' + str(retStatus)
  142.  
  143.     # print 'El content es...'+str(retContent)
  144.  
  145.     print 'llamo al json parser'
  146.     CONTENIDO = parseaJson(retContent)
  147.     VAL.append(CONTENIDO)
  148.     print 'El next token.....' + str(CONTENIDO['VAL_NEXT'])
  149.     URL = str(CONTENIDO['VAL_NEXT'])
  150.  
  151.         # json.dump(CONTENIDO['VAL_DATA'], miFile)
  152.  
  153.     if cont > 1550 or URL == 'None':
  154.         break
  155.     else:
  156.         print '\n voy por la....' + str(cont)
  157.  
  158. print 'Ahora recorro en arraya'
  159.  
  160. tot = []
  161. for elem in VAL:
  162.     res = elem['VAL_DATA']
  163.     print 'Es detipo...' + str(type(res))
  164.     tot = tot + res
  165.  
  166. print 'Ahora vuelco al fichedro'
  167. json.dump(tot, miFile)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement