import
os
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
CLIENT_SECRETS_FILE
=
"client_secret.json"
API_SERVICE_NAME
=
'youtube'
API_VERSION
=
'v3'
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)
def
print_response(response):
print
(response)
def
build_resource(properties):
resource
=
{}
for
p
in
properties:
prop_array
=
p.split(
'.'
)
ref
=
resource
for
pa
in
range
(
0
,
len
(prop_array)):
is_array
=
False
key
=
prop_array[pa]
if
key[
-
2
:]
=
=
'[]'
:
key
=
key[
0
:
len
(key)
-
2
:]
is_array
=
True
if
pa
=
=
(
len
(prop_array)
-
1
):
if
properties[p]:
if
is_array:
ref[key]
=
properties[p].split(
', '
)
else
:
ref[key]
=
properties[p]
elif
key
not
in
ref:
ref[key]
=
{}
ref
=
ref[key]
else
:
ref
=
ref[key]
return
resource
def
remove_empty_kwargs(
*
*
kwargs):
good_kwargs
=
{}
if
kwargs
is
not
None
:
for
key, value
in
kwargs.items():
if
value:
good_kwargs[key]
=
value
return
good_kwargs
def
videos_update(client, properties,
*
*
kwargs):
resource
=
build_resource(properties)
kwargs
=
remove_empty_kwargs(
*
*
kwargs)
response
=
client.videos().update(
body
=
resource,
*
*
kwargs).execute()
return
print_response(response)
if
__name__
=
=
'__main__'
:
os.environ[
'OAUTHLIB_INSECURE_TRANSPORT'
]
=
'1'
client
=
get_authenticated_service()
videos_update(client,
{
'id'
:
'QbEEuL-nWaE'
,
'snippet.categoryId'
:
'24'
,
'snippet.defaultLanguage'
: '',
'snippet.description'
:
'This is the ABC Learning Video'
,
'snippet.tags[]'
: '',
'snippet.title'
:
'ABC Learn Video'
,
'status.privacyStatus'
: ''},
part
=
'snippet, status'
)