Skip to content

Commit

Permalink
Update auth libraries used in example
Browse files Browse the repository at this point in the history
The oauth2client library is deprecated. This update changes the sample to use the google-auth and google-auth-oauthlib libraries instead.
  • Loading branch information
AndyDiamondstein committed Oct 20, 2017
1 parent 4dc5d93 commit b0a8762
Showing 1 changed file with 27 additions and 52 deletions.
79 changes: 27 additions & 52 deletions python/list_broadcasts.py
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
#!/usr/bin/python

import httplib2
import argparse
import os
import sys
import re

from apiclient.discovery import build
from apiclient.errors import HttpError
from oauth2client.client import flow_from_clientsecrets
from oauth2client.file import Storage
from oauth2client.tools import argparser, run_flow
import google.oauth2.credentials
import google_auth_oauthlib.flow
from googleapiclient.discovery import build
from googleapiclient.errors import HttpError
from google_auth_oauthlib.flow import InstalledAppFlow


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

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

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

To make this sample run you will need to populate the client_secrets.json file
found at:
%s
with information from the {{ Cloud Console }}
{{ https://cloud.google.com/console }}
For more information about the client_secrets.json file format, please visit:
https://developers.google.com/api-client-library/python/guide/aaa_client_secrets
""" % os.path.abspath(os.path.join(os.path.dirname(__file__),
CLIENT_SECRETS_FILE))

VALID_BROADCAST_STATUSES = ("all", "active", "completed", "upcoming",)

def get_authenticated_service(args):
flow = flow_from_clientsecrets(CLIENT_SECRETS_FILE,
scope=YOUTUBE_READONLY_SCOPE,
message=MISSING_CLIENT_SECRETS_MESSAGE)

storage = Storage("%s-oauth2.json" % sys.argv[0])
credentials = storage.get()

if credentials is None or credentials.invalid:
credentials = run_flow(flow, storage, args)

return build(YOUTUBE_API_SERVICE_NAME, YOUTUBE_API_VERSION,
http=credentials.authorize(httplib2.Http()))
# Authorize the request and store authorization credentials.
def get_authenticated_service():
flow = InstalledAppFlow.from_client_secrets_file(CLIENT_SECRETS_FILE, SCOPES)
credentials = flow.run_console()
return build(API_SERVICE_NAME, API_VERSION, credentials = credentials)

# Retrieve a list of broadcasts with the specified status.
def list_broadcasts(youtube, broadcast_status):
print "Broadcasts with status '%s':" % broadcast_status
print 'Broadcasts with status "%s":' % broadcast_status

list_broadcasts_request = youtube.liveBroadcasts().list(
broadcastStatus=broadcast_status,
part="id,snippet",
part='id,snippet',
maxResults=50
)

while list_broadcasts_request:
list_broadcasts_response = list_broadcasts_request.execute()

for broadcast in list_broadcasts_response.get("items", []):
print "%s (%s)" % (broadcast["snippet"]["title"], broadcast["id"])
for broadcast in list_broadcasts_response.get('items', []):
print '%s (%s)' % (broadcast['snippet']['title'], broadcast['id'])

list_broadcasts_request = youtube.liveBroadcasts().list_next(
list_broadcasts_request, list_broadcasts_response)

if __name__ == "__main__":
argparser.add_argument("--broadcast-status", help="Broadcast status",
if __name__ == '__main__':
parser = argparse.ArgumentParser()
parser.add_argument('--broadcast-status', help='Broadcast status',
choices=VALID_BROADCAST_STATUSES, default=VALID_BROADCAST_STATUSES[0])
args = argparser.parse_args()
args = parser.parse_args()

youtube = get_authenticated_service(args)
youtube = get_authenticated_service()
try:
list_broadcasts(youtube, args.broadcast_status)
except HttpError, e:
print "An HTTP error %d occurred:\n%s" % (e.resp.status, e.content)
print 'An HTTP error %d occurred:\n%s' % (e.resp.status, e.content)

0 comments on commit b0a8762

Please sign in to comment.