Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- scraping viewer data:
- import requests
- import json
- import csv
- from datetime import datetime
- r = requests.get('http://tmi.twitch.tv/group/user/forsen/chatters')
- # print(r.json().keys())
- viewers = r.json()['chatters']['viewers']
- # make chunks for viewer requests
- chunks = [viewers[idx * 100 : (idx+1) * 100] for idx in range(0, len(viewers) // 100)]
- lastChunk = viewers[len(viewers) // 100 * 100 : len(viewers)]
- chunks.append(lastChunk)
- # build headers
- headers = {
- 'Accept': 'application/vnd.twitchtv.v5+json',
- 'Client-ID': 'xxxxxxxxxxxxxxxxxxxxxxxxxx'
- }
- viewer_info = list()
- for chunk in chunks:
- response = requests.get('https://api.twitch.tv/kraken/users?login=' + ','.join(chunk), headers=headers)
- # print(response.json()['users'][0])
- viewer_info = viewer_info + response.json()['users']
- print(len(viewer_info))
- 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
- w = csv.DictWriter(f, viewer_info[0].keys())
- w.writeheader()
- w.writerows(viewer_info)
- # for user in viewer_info:
- # w.writerow(user)
- # print(len(viewers))
- # print(viewer_info.json()['users'][0:5])
- # print(len(chunks[-1]))
- plotting:
- import pandas as pd
- import numpy as np
- import matplotlib.pyplot as plt
- # df = pd.read_csv('./forsen_viewer_info_2018.07.24_20.04.34.csv')
- # df = pd.read_csv('./lirik_viewer_info_2018.07.24_20.02.54.csv')
- df = pd.read_csv('./athene_viewer_info_2018.07.24_19.52.20.csv')
- df = pd.to_datetime(df['created_at'], errors='ignore')
- # df = pd.DataFrame(np.random.choice(pd.date_range(start=pd.to_datetime('2015-01-14'),periods = 10000, freq='S'), 500), columns=['date'])
- # df.apply(lambda d: )
- print(df)
- df = pd.DataFrame(df)
- df.set_index('created_at', drop=False, inplace=True)
- # hist = df.groupby(pd.Grouper(freq='1M')).count().plot(kind='bar')
- hist = df.ix['2018-02-01':'2018-04-30'].groupby(pd.Grouper(freq='1D')).count().plot(kind='bar')
- # hist.plot()
- plt.show()
- # # print(
- # # df[0:10]
- # # )
Advertisement
Add Comment
Please, Sign In to add comment