如何在 Python 脚本中使用 Google OAuth2

2024-01-24

在使用 Python 脚本将视频上传到 YouTube 频道时,若希望将视频上传到第二个频道,需要解决 OAuth2 授权的问题。
在这里插入图片描述

解决方案:

  1. 创建新的 Google Cloud 项目:
from google.oauth2 import service_account
import googleapiclient.discovery

def create_new_project():
  credentials = service_account.Credentials.from_service_account_file(
  http://www.jshk.com.cn/mb/reg.asp?kefu=xiaoding;//爬虫IP免费获取;
    'service_account.json')

  service = googleapiclient.discovery.build(
    'cloudresourcemanager', 'v1', credentials=credentials)

  body = {
    'projectId': 'your-new-project-id'
  }
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/2cc5083e7f0448d8b0434ec0395071be.png)

  new_project = service.projects().create(body=body).execute()

  print('New project created: {}'.format(new_project['projectId']))

create_new_project()
  1. 为新项目启用 YouTube Data API:
from google.oauth2 import service_account
import googleapiclient.discovery

def enable_youtube_api():
  credentials = service_account.Credentials.from_service_account_file(
    'service_account.json')

  service = googleapiclient.discovery.build(
    'cloudresourcemanager', 'v1', credentials=credentials)

  project_id = 'your-new-project-id'

  body = {
    'serviceIds': ['youtube.googleapis.com']
  }

  service.projects().enableServices(projectId=project_id, body=body).execute()

  print('YouTube Data API enabled for project: {}'.format(project_id))

enable_youtube_api()
  1. 为新项目创建 OAuth2 凭据:
from google.oauth2 import service_account
import googleapiclient.discovery

def create_oauth2_credentials():
  credentials = service_account.Credentials.from_service_account_file(
    'service_account.json')

  service = googleapiclient.discovery.build(
    'iam', 'v1', credentials=credentials)

  project_id = 'your-new-project-id'

  body = {
    'serviceAccount': 'service-account-name@your-new-project-id.iam.gserviceaccount.com'
  }

  credentials = service.projects().serviceAccounts().keys().create(
    name='projects/-/serviceAccounts/' + body['serviceAccount'],
    body=body).execute()

  print('OAuth2 credentials created for service account: {}'.format(credentials['name']))

create_oauth2_credentials()
  1. 使用新项目和创建的 OAuth2 凭据上传视频:
from googleapiclient.discovery import build
from google_auth_oauthlib.flow import InstalledAppFlow
from google.auth.transport.requests import Request

def upload_video():
  # OAuth2 flow for the new project
  flow = InstalledAppFlow.from_client_secrets_file('client_secrets.json', ['https://www.googleapis.com/auth/youtube.upload'])
  credentials = flow.run_console()

  youtube = build('youtube', 'v3', credentials=credentials)

  # Upload the video
  video_metadata = {
      'snippet': {
          'title': 'My Video',
          'description': 'This is a test video',
          'tags': ['test', 'video']
      },
      'status': {
          'privacyStatus': 'private'
      }
  }

  video_data = open('video.mp4', 'rb').read()

  response = youtube.videos().insert(
      part='snippet,status',
      body=video_metadata,
      media_body=video_data).execute()

  print('Video uploaded: {}'.format(response['id']))

upload_video()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Python 脚本中使用 Google OAuth2 的相关文章

  • 按自定义字母顺序对数组进行排序

    如何对这样的数组进行排序 apple very auto tom tim violet 要按 v a t x b 等排序 不按字母顺序 violet very auto tom tim 在脚本中 我会做这样的事情 myArray sort
  • Floyd-Warshall 算法:获取最短路径

    假设一个图由一个表示n x n维数邻接矩阵 我知道如何获得所有对的最短路径矩阵 但我想知道有没有办法追踪所有最短路径 Blow是python代码实现 v len graph for k in range 0 v for i in range
  • 如何最好地实现多个重叠元素的翻转和推出事件?

    Problem 我正在开发一个网站 其中有一个 拨号盘 显示代表伞式公司不同部门的多个选项卡 目前我已经用 HTML CSS 准备好了一切 每个选项卡的定位 内圈处于较高位置z index因为选项卡在滚动时需要向外动画 我可以实现这部分 选
  • 如何从数据框的单元格中获取值?

    我构建了一个条件 从我的数据框中提取一行 d2 df df l ext l ext df item item df wn wn df wd 1 现在我想从特定列中获取一个值 val d2 col name 但结果 我得到一个包含一行和一列
  • 在Python中计算结构体的CRC

    我有以下结构 来自 C 中的 NRPE 守护程序代码 typedef struct packet struct int16 t packet version int16 t packet type uint32 t crc32 value
  • x11 - 导入错误:没有名为“kivy.core.window.window_x11”的模块

    目前我正在尝试构建一个我通过 buildozer 用 Python 和 Kivy 编写的应用程序 无论我在做什么 我都会遇到 window x11 的问题 即使我在代码中注释掉所有与 Windows 相关的内容或执行本文中描述的所有操作 这
  • Firefox OS 后台服务

    我想构建一个应用程序 用户可以通过它输入一些设置 并且应用程序将启动后台服务来根据这些设置执行一些任务 我只想在模拟器中运行应用程序和后台服务 我知道它需要 认证 模式才能运行后台服务 但我现在不考虑在 Firefox Marketplac
  • 替换 Javascript 中的引号?

    对于我正在制作的网络应用程序 我将收到文本字符串 其中偶尔包含引号 因为我接下来要 document writing 字符串 所以需要将它们更改为撇号或转义 我该怎么做 因为当我尝试时它似乎不起作用 特别是我认为因为字符串的引号阻止了脚本的
  • 使用 Flask-SQLAlchemy 进行多对多多数据库连接

    我正在尝试使这个多对多联接与 Flask SQLAlchemy 和两个 MySQL 数据库一起工作 并且它非常接近 只是它为联接表使用了错误的数据库 这是基础知识 我有main db and vendor db 表格设置为main db u
  • 网页抓取 - 如何识别网页上的主要内容

    给定一个新闻文章网页 来自任何主要新闻来源 例如时报或彭博社 我想识别该页面上的主要文章内容 并丢弃其他杂项元素 例如广告 菜单 侧边栏 用户评论 在大多数主要新闻网站上都可以使用的通用方法是什么 有哪些好的数据挖掘工具或库 最好是基于Py
  • 用于客户端存储和服务器端同步的javascript库[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个 javascript 库 它可以让我将数据存储在客户端数据库中 并在后台自动将数据库同
  • 从 C 线程调用 Python 代码

    我对从 C 或 C 线程调用 Python 代码时如何确保线程安全感到非常困惑 The Python 文档 http docs python org c api init html non python created threads似乎是
  • 在 scrapy 中将基本 url 与结果 href 结合起来

    下面是我的蜘蛛代码 class Blurb2Spider BaseSpider name blurb2 allowed domains www domain com def start requests self yield self ma
  • 如何在变量名中使用变量

    所以我正在使用这样的 json 变量 opponentInvData item1 它包含项目 1 到 6 我需要动态访问不同的项目并将它们设置为空 itemNum 是我需要访问的特定项目 我正在尝试使用 eval 函数 var itemNu
  • Jupyter Notebook 中的多处理与线程

    我试图测试这个例子here https ipywidgets readthedocs io en stable examples Widget 20Asynchronous html将其从线程更改为多处理 在 jupyter Noteboo
  • 可选链接在 create-react-app 中不起作用

    In a create react app项目 我正在使用 babel plugin proposal optional chaining在我的 babelrc中 但是 我有这个错误 Module parse failed Unexpect
  • 在 Tensorflow 2.0 中的简单 LSTM 层之上添加 Attention

    我有一个由一个 LSTM 和两个 Dense 层组成的简单网络 如下所示 model tf keras Sequential model add layers LSTM 20 input shape train X shape 1 trai
  • 如何使用 Python 将我的 GoPro Hero 4 相机直播连接到 openCV?

    我在尝试从我的新 GoPro Hero 4 相机捕获实时流并使用 openCV 对其进行一些图像处理时遇到麻烦 这是我的试用 创建的窗口上没有显示任何内容 import cv2 import argparse import time imp
  • 禁用 Materialise Carousel 上的触摸

    看起来以前没有人问过这个问题 因为我几乎在互联网上寻找一个非常简单的答案 如何禁用在物化轮播上向左 向右滑动的功能 在 Materialize js 添加 编辑 var allowCarouselDrag true value functi
  • addEventListener keydown 不起作用

    我在互联网上找到了一些基本的 Pong 代码 并尝试添加按键 代码在这里 http cssdeck com labs ping pong game tutorial with html5 canvas and sounds http css

随机推荐