mirror of https://github.com/ekimekim/wubloader
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
50 lines
1.3 KiB
Python
50 lines
1.3 KiB
Python
5 years ago
|
|
||
|
import json
|
||
|
|
||
|
from common.googleapis import GoogleAPIClient
|
||
|
|
||
|
# Youtube video to look up (look at this graph)
|
||
|
YOUTUBE_VIDEO_ID = 'sIlNIVXpIns'
|
||
|
|
||
|
# Sheet id to look up (DB2019 public sheet)
|
||
|
SHEET_ID = '15t-UsfNlP5xUxLTLH-EUjrOYriOvXuNGAPxi_8EZJhU'
|
||
|
|
||
|
|
||
|
def youtube(client):
|
||
|
client.request('GET', 'https://www.googleapis.com/youtube/v3/videos',
|
||
|
params={'part': 'id', 'id': YOUTUBE_VIDEO_ID},
|
||
|
).raise_for_status()
|
||
|
|
||
|
|
||
|
def sheets(client):
|
||
|
client.request('GET',
|
||
|
'https://sheets.googleapis.com/v4/spreadsheets/{}/values/A1'.format(SHEET_ID),
|
||
|
).raise_for_status()
|
||
|
|
||
|
|
||
|
ACTIONS = {
|
||
|
'youtube': youtube,
|
||
|
'sheets': sheets,
|
||
|
}
|
||
|
|
||
|
|
||
|
def main(
|
||
|
*targets
|
||
|
):
|
||
|
"""Does an action on the given google api targets, preventing issues due to api inactivity.
|
||
|
A target should consist of a comma-seperated list of apis to hit, then a colon, then a creds file.
|
||
|
eg. "sheets,youtube:my_creds.json".
|
||
|
"""
|
||
|
for target in targets:
|
||
|
if ':' not in target:
|
||
|
raise ValueError("Bad target: {!r}".format(target))
|
||
|
apis, credfile = target.split(':', 1)
|
||
|
apis = apis.split(',')
|
||
|
with open(credfile) as f:
|
||
|
creds = json.load(f)
|
||
|
client = GoogleAPIClient(creds['client_id'], creds['client_secret'], creds['refresh_token'])
|
||
|
for api in apis:
|
||
|
if api not in ACTIONS:
|
||
|
raise ValueError("No such api {!r}".format(api))
|
||
|
ACTIONS[api](client)
|