Initial commit
This commit is contained in:
commit
5a8328c91c
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
client_secrets.json
|
82
youtube_api.py
Normal file
82
youtube_api.py
Normal file
@ -0,0 +1,82 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
# Sample Python code for youtube.playlists.update
|
||||||
|
# See instructions for running these code samples locally:
|
||||||
|
# https://developers.google.com/explorer-help/code-samples#python
|
||||||
|
|
||||||
|
import argparse
|
||||||
|
import os
|
||||||
|
|
||||||
|
from googleapiclient.discovery import build
|
||||||
|
from google_auth_oauthlib.flow import InstalledAppFlow
|
||||||
|
import googleapiclient.errors
|
||||||
|
|
||||||
|
scopes = ["https://www.googleapis.com/auth/youtube.force-ssl"]
|
||||||
|
|
||||||
|
channels = {
|
||||||
|
"breakbeat":"PLZFfy80_qguYVqbpQlX-aHdiYHTwc6-wW",
|
||||||
|
"wods": "PLZFfy80_qguYCbTDQD0GSK4zUzEjbQMQT",
|
||||||
|
"rap_español": "PLZFfy80_qgub44wWWDcAykdQCJNCXo4jp",
|
||||||
|
}
|
||||||
|
|
||||||
|
def get_playlist_length(youtube, playlist_id):
|
||||||
|
items = youtube.playlists().list(
|
||||||
|
part="snippet,contentDetails",
|
||||||
|
id=playlist_id
|
||||||
|
)
|
||||||
|
playlist_info = items.execute()
|
||||||
|
|
||||||
|
return playlist_info['items'][0]['contentDetails']['itemCount']
|
||||||
|
|
||||||
|
def main():
|
||||||
|
parser = argparse.ArgumentParser(description="Add a song to a YouTube playlist.")
|
||||||
|
parser.add_argument("channel_name", help="Name of the YouTube channel")
|
||||||
|
parser.add_argument("song", help="Name of the song to be added")
|
||||||
|
|
||||||
|
args = parser.parse_args()
|
||||||
|
|
||||||
|
channel_name = args.channel_name
|
||||||
|
song = args.song
|
||||||
|
|
||||||
|
if channel_name not in channels:
|
||||||
|
print(f"Error: Channel '{channel_name}' not found.")
|
||||||
|
return
|
||||||
|
|
||||||
|
channel_id = channels[channel_name]
|
||||||
|
|
||||||
|
# Disable OAuthlib's HTTPS verification when running locally.
|
||||||
|
# *DO NOT* leave this option enabled in production.
|
||||||
|
os.environ["OAUTHLIB_INSECURE_TRANSPORT"] = "1"
|
||||||
|
|
||||||
|
api_service_name = "youtube"
|
||||||
|
api_version = "v3"
|
||||||
|
client_secret = "/home/david/client_secrets.json"
|
||||||
|
|
||||||
|
flow = InstalledAppFlow.from_client_secrets_file(
|
||||||
|
client_secret, scopes)
|
||||||
|
credentials = flow.run_local_server(port=0)
|
||||||
|
|
||||||
|
youtube = build(
|
||||||
|
api_service_name, api_version,
|
||||||
|
credentials=credentials)
|
||||||
|
|
||||||
|
pos = get_playlist_length(youtube, channel_id)
|
||||||
|
|
||||||
|
request = youtube.playlistItems().insert(
|
||||||
|
part="snippet",
|
||||||
|
body={
|
||||||
|
"snippet": {
|
||||||
|
"playlistId": channel_id,
|
||||||
|
"position": pos,
|
||||||
|
"resourceId": {
|
||||||
|
"kind": "youtube#video",
|
||||||
|
"videoId": song
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
)
|
||||||
|
response = request.execute()
|
||||||
|
print("Song added successfully!")
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
Loading…
Reference in New Issue
Block a user