Skip to content

Commit b0a8762

Browse files
Update auth libraries used in example
The oauth2client library is deprecated. This update changes the sample to use the google-auth and google-auth-oauthlib libraries instead.
1 parent 4dc5d93 commit b0a8762

File tree

1 file changed

+27
-52
lines changed

1 file changed

+27
-52
lines changed

python/list_broadcasts.py

Lines changed: 27 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
#!/usr/bin/python
22

3-
import httplib2
3+
import argparse
44
import os
5-
import sys
5+
import re
66

7-
from apiclient.discovery import build
8-
from apiclient.errors import HttpError
9-
from oauth2client.client import flow_from_clientsecrets
10-
from oauth2client.file import Storage
11-
from oauth2client.tools import argparser, run_flow
7+
import google.oauth2.credentials
8+
import google_auth_oauthlib.flow
9+
from googleapiclient.discovery import build
10+
from googleapiclient.errors import HttpError
11+
from google_auth_oauthlib.flow import InstalledAppFlow
1212

1313

1414
# The CLIENT_SECRETS_FILE variable specifies the name of a file that contains
@@ -21,74 +21,49 @@
2121
# https://developers.google.com/youtube/v3/guides/authentication
2222
# For more information about the client_secrets.json file format, see:
2323
# https://developers.google.com/api-client-library/python/guide/aaa_client_secrets
24-
CLIENT_SECRETS_FILE = "client_secrets.json"
24+
CLIENT_SECRETS_FILE = 'client_secret.json'
2525

2626
# This OAuth 2.0 access scope allows for read-only access to the authenticated
2727
# user's account, but not other types of account access.
28-
YOUTUBE_READONLY_SCOPE = "https://www.googleapis.com/auth/youtube.readonly"
29-
YOUTUBE_API_SERVICE_NAME = "youtube"
30-
YOUTUBE_API_VERSION = "v3"
28+
SCOPES = ['https://www.googleapis.com/auth/youtube.readonly']
29+
API_SERVICE_NAME = 'youtube'
30+
API_VERSION = 'v3'
3131

32-
# This variable defines a message to display if the CLIENT_SECRETS_FILE is
33-
# missing.
34-
MISSING_CLIENT_SECRETS_MESSAGE = """
35-
WARNING: Please configure OAuth 2.0
32+
VALID_BROADCAST_STATUSES = ('all', 'active', 'completed', 'upcoming',)
3633

37-
To make this sample run you will need to populate the client_secrets.json file
38-
found at:
39-
40-
%s
41-
42-
with information from the {{ Cloud Console }}
43-
{{ https://cloud.google.com/console }}
44-
45-
For more information about the client_secrets.json file format, please visit:
46-
https://developers.google.com/api-client-library/python/guide/aaa_client_secrets
47-
""" % os.path.abspath(os.path.join(os.path.dirname(__file__),
48-
CLIENT_SECRETS_FILE))
49-
50-
VALID_BROADCAST_STATUSES = ("all", "active", "completed", "upcoming",)
51-
52-
def get_authenticated_service(args):
53-
flow = flow_from_clientsecrets(CLIENT_SECRETS_FILE,
54-
scope=YOUTUBE_READONLY_SCOPE,
55-
message=MISSING_CLIENT_SECRETS_MESSAGE)
56-
57-
storage = Storage("%s-oauth2.json" % sys.argv[0])
58-
credentials = storage.get()
59-
60-
if credentials is None or credentials.invalid:
61-
credentials = run_flow(flow, storage, args)
62-
63-
return build(YOUTUBE_API_SERVICE_NAME, YOUTUBE_API_VERSION,
64-
http=credentials.authorize(httplib2.Http()))
34+
# Authorize the request and store authorization credentials.
35+
def get_authenticated_service():
36+
flow = InstalledAppFlow.from_client_secrets_file(CLIENT_SECRETS_FILE, SCOPES)
37+
credentials = flow.run_console()
38+
return build(API_SERVICE_NAME, API_VERSION, credentials = credentials)
6539

6640
# Retrieve a list of broadcasts with the specified status.
6741
def list_broadcasts(youtube, broadcast_status):
68-
print "Broadcasts with status '%s':" % broadcast_status
42+
print 'Broadcasts with status "%s":' % broadcast_status
6943

7044
list_broadcasts_request = youtube.liveBroadcasts().list(
7145
broadcastStatus=broadcast_status,
72-
part="id,snippet",
46+
part='id,snippet',
7347
maxResults=50
7448
)
7549

7650
while list_broadcasts_request:
7751
list_broadcasts_response = list_broadcasts_request.execute()
7852

79-
for broadcast in list_broadcasts_response.get("items", []):
80-
print "%s (%s)" % (broadcast["snippet"]["title"], broadcast["id"])
53+
for broadcast in list_broadcasts_response.get('items', []):
54+
print '%s (%s)' % (broadcast['snippet']['title'], broadcast['id'])
8155

8256
list_broadcasts_request = youtube.liveBroadcasts().list_next(
8357
list_broadcasts_request, list_broadcasts_response)
8458

85-
if __name__ == "__main__":
86-
argparser.add_argument("--broadcast-status", help="Broadcast status",
59+
if __name__ == '__main__':
60+
parser = argparse.ArgumentParser()
61+
parser.add_argument('--broadcast-status', help='Broadcast status',
8762
choices=VALID_BROADCAST_STATUSES, default=VALID_BROADCAST_STATUSES[0])
88-
args = argparser.parse_args()
63+
args = parser.parse_args()
8964

90-
youtube = get_authenticated_service(args)
65+
youtube = get_authenticated_service()
9166
try:
9267
list_broadcasts(youtube, args.broadcast_status)
9368
except HttpError, e:
94-
print "An HTTP error %d occurred:\n%s" % (e.resp.status, e.content)
69+
print 'An HTTP error %d occurred:\n%s' % (e.resp.status, e.content)

0 commit comments

Comments
 (0)