Guest User

viewer scrape twitch

a guest
Jul 24th, 2018
2,266
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.07 KB | None | 0 0
  1. scraping viewer data:
  2.  
  3. import requests
  4. import json
  5. import csv
  6. from datetime import datetime
  7.  
  8. r = requests.get('http://tmi.twitch.tv/group/user/forsen/chatters')
  9. # print(r.json().keys())
  10.  
  11. viewers =  r.json()['chatters']['viewers']
  12.  
  13. # make chunks for viewer requests
  14. chunks = [viewers[idx * 100 : (idx+1) * 100] for idx in range(0, len(viewers) // 100)]
  15. lastChunk = viewers[len(viewers) // 100 * 100 : len(viewers)]
  16. chunks.append(lastChunk)
  17.  
  18. # build headers
  19. headers = {
  20.     'Accept': 'application/vnd.twitchtv.v5+json',
  21.     'Client-ID': 'xxxxxxxxxxxxxxxxxxxxxxxxxx'
  22. }
  23.  
  24. viewer_info = list()
  25. for chunk in chunks:
  26.     response = requests.get('https://api.twitch.tv/kraken/users?login=' + ','.join(chunk), headers=headers)
  27.     # print(response.json()['users'][0])
  28.     viewer_info = viewer_info + response.json()['users']
  29. print(len(viewer_info))
  30.  
  31. with open('./viewer_info_' + datetime.now().strftime('%Y.%m.%d_%H.%M.%S') + '.csv', 'w', encoding='utf-8', newline='') as f:  # Just use 'w' mode in 3.x
  32.     w = csv.DictWriter(f, viewer_info[0].keys())
  33.     w.writeheader()
  34.     w.writerows(viewer_info)
  35.     # for user in viewer_info:
  36.         # w.writerow(user)
  37.  
  38.  
  39. # print(len(viewers))
  40. # print(viewer_info.json()['users'][0:5])
  41. # print(len(chunks[-1]))
  42.  
  43. plotting:
  44.  
  45. import pandas as pd
  46. import numpy as np
  47. import matplotlib.pyplot as plt
  48.  
  49.  
  50. # df = pd.read_csv('./forsen_viewer_info_2018.07.24_20.04.34.csv')
  51. # df = pd.read_csv('./lirik_viewer_info_2018.07.24_20.02.54.csv')
  52. df = pd.read_csv('./athene_viewer_info_2018.07.24_19.52.20.csv')
  53. df = pd.to_datetime(df['created_at'], errors='ignore')
  54. # df = pd.DataFrame(np.random.choice(pd.date_range(start=pd.to_datetime('2015-01-14'),periods = 10000, freq='S'), 500),  columns=['date'])
  55. # df.apply(lambda d: )
  56. print(df)
  57. df = pd.DataFrame(df)
  58. df.set_index('created_at', drop=False, inplace=True)
  59.  
  60. # hist = df.groupby(pd.Grouper(freq='1M')).count().plot(kind='bar')
  61. hist = df.ix['2018-02-01':'2018-04-30'].groupby(pd.Grouper(freq='1D')).count().plot(kind='bar')
  62.  
  63. # hist.plot()
  64. plt.show()
  65. # # print(
  66. # # df[0:10]
  67. # # )
Advertisement
Add Comment
Please, Sign In to add comment