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
playlist_item_update_position(client, properties,
*
*
kwargs):
resource
=
build_resource(properties)
kwargs
=
remove_empty_kwargs(
*
*
kwargs)
response
=
client.playlistItems().update(
body
=
resource,
*
*
kwargs).execute()
return
print_response(response)
if
__name__
=
=
'__main__'
:
os.environ[
'OAUTHLIB_INSECURE_TRANSPORT'
]
=
'1'
client
=
get_authenticated_service()
playlist_item_update_position(client,
{
'id'
:
'UExxQUpOSkM0dENZdHlWWWxSQUJrNU5URERpMnNmcWJxVi5CMEQ2Mjk5NTc3NDZFRUNB'
,
'snippet.playlistId'
:
'PLqAJNJC4tCYtyVYlRABk5NTDDi2sfqbqV'
,
'snippet.resourceId.kind'
:
'youtube# video'
,
'snippet.resourceId.videoId'
:
'MhPgMbYkuHc'
,
'snippet.position'
:
'1'
},
part
=
'snippet'
,
onBehalfOfContentOwner
=
'')