Youtube

出自福留子孫
在2024年2月13日 (二) 18:37由丁志仁對話 | 貢獻所做的修訂版本

跳轉到: 導覽搜尋

History 整理

最多保持 90 天的觀看記錄,在登入狀態下,叫出觀看記錄連結:「https://youtube.com/feed/history」

請注意: YouTube 的結構和運作方式可能會隨時間變化。

一、 30 天以內的觀看紀錄

  1. 打開 https://youtube.com/feed/history 網頁原始碼
  2. 找到 var ytInitialData = …
  3. 再找到之後的第一個 </script> ,取兩者之間,捨棄其他網頁原始碼。
  4. 取其間的 {"responseContext":…}}}}}}} 捨棄最後的「;」,存成 json 格式。
  5. 目前 2~4 步驟已寫入 2YTpreTidy1.php 中,自動擷取。可擷取的有用資訊為影片的:
    • 頻道訊息:
      1. 頻道識別碼(channelId)
      2. 擁有者(owner),其實是 channelTitle 。在 channelId 不變的前提下,可改名。
      3. 頻道 URL (ownerURL),加在 youtube.com 之後,可到達頻道。在 channelId 不變的前提下,可修改。
    • 影片訊息:
      1. 識別碼(ID)
      2. 標題(title)
      3. 片長(length)
      4. 描述短摘要(descriptionSnippet)
  6. 執行 2YTpreTidy1.php 將其塞入 YTpreTidy 資料表,且已有的片子不會重複塞入資料表。
    • json 若碰到雙反斜線「\\」,是特殊語法,無法 decode ,會出錯,請務必確認 (例如:檀东东 搜索技术,普通人变强的唯一外挂。全套详细宝藏教程… know sth \ learn sth \ create sth \ do sth…,其中的「反斜」在原始碼中會轉義為「\\」,導致 json_decode 出錯)
    • 2024.01.05更新2YTpreTidy1.php,因為有眾多 itemSectionRenderer ,所以多放一個foreach包住
  7. 為了容納繪文字(emoji),
    • 將 title、descriptionSnippet、owner、ownerURL 四欄改為「utf8mb4_unicode_ci」
    • 插入欄值前先執行「SET NAMES 'utf8mb4' COLLATE 'utf8mb4_unicode_ci';」

二、超過一個月以上的觀看紀錄

  1. 打開 chrome
  2. 打開「開發人員工具」
  3. 網址列貼上「https://www.youtube.com/feed/history」,並按 Enter
  4. 將頁面右側拉把向下拉到底,獲取更多的歷史記錄,但這些不會顯示在原始碼中。
  5. 在「開發人員工具」中,轉到「Network」或「網路」標籤頁。
  6. 在頁面上滾動以觀察新的網路請求。你應該能看到新的 XHR 或 Fetch 請求被發送。
  7. 找出 …browse?key=… (https://www.youtube.com/youtubei/v1/browse?key=…&prettyPrint=false) 的回應,並複製回應內容。
  8. 執行 2YTpreTidy2.php 將其塞入 YTpreTidy 資料表,且已有的片子不會重複塞入資料表。

三、以 ID 取得更多訊息

(一)縮圖的預設位置

  1. 120×90 :https://i.ytimg.com/vi/{VIDEO_ID}/default.jpg
  2. 320×180 :https://i.ytimg.com/vi/{VIDEO_ID}/mqdefault.jpg
  3. 480×360 :https://i.ytimg.com/vi/{VIDEO_ID}/hqdefault.jpg
  4. 640×480 :https://i.ytimg.com/vi/{VIDEO_ID}/sddefault.jpg
  5. 1280×720 :https://i.ytimg.com/vi/{VIDEO_ID}/maxresdefault.jpg

(二)以 oembed(嵌入) 取得

https://www.youtube.com/oembed?format=json&url=https://www.youtube.com/watch?v=jjT1iKZZYes

  1. title: "為什麼我們急需一組星鏈?低軌衛星的上網速度真的夠快嗎?"
  2. author_name: "PanSci 泛科學"
  3. author_url: "https://www.youtube.com/@PanScitw"
  4. type: "video"
  5. height: 113
  6. width: 200
  7. version: "1.0"
  8. provider_name: "YouTube"
  9. provider_url: "https://www.youtube.com/"
  10. thumbnail_height: 360
  11. thumbnail_width: 480
  12. thumbnail_url: "https://i.ytimg.com/vi/jjT1iKZZYes/hqdefault.jpg"
  13. html: '<iframe width="200" height="113" src="https://www.youtube.com/embed/jjT1iKZZYes?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen title="為什麼我們急需一組星鏈?低軌衛星的上網速度真的夠快嗎?"></iframe>'

四、使用 YouTube Data API

(一)獲取 API 金鑰:

Google雲端平台 (Google Cloud Platform) 提供一系列 Google 雲端運算服務:

  1. 對執行 Google 搜尋提供基礎設施服務
  2. 對 YouTube 伺服器提供基礎設施服務
  3. 平台服務
  4. 無伺服器計算環境

除了提供管理工具外, Google 雲端平台還提供了一系列模組化雲服務,包括:

  1. 雲端運算
  2. 資料儲存
  3. 資料分析
  4. 機器學習

其進入點為:https://console.cloud.google.com/welcome?hl=zh-tw&project=你的專案名

  1. 擁有一個 Google Cloud Platform 帳戶:
    • 進入 https://cloud.google.com/
    • 用既有的 google 帳號登錄
    • 啟動免費試用:
      GCP 通常會提供免費試用期,這可能包括一定的信用額度,讓你可以在不產生費用的情況下試用他們的服務。
      點擊“開始免費試用”或類似的按鈕開始註冊過程。
    • 提供必要的個人信息:註冊過程中,你將需要提供一些個人信息,包括你的姓名、聯繫信息、國家/地區等。
    • 提供付款信息:
      即使是免費試用,GCP 也會要求你提供有效的信用卡信息。這是為了確保在免費試用結束後,如果你繼續使用服務,他們可以收取費用。
      你的信用卡不會在免費試用期間被收費,除非你超出了免費使用額度。
    • 同意服務條款:閱讀並同意 Google Cloud Platform 的服務條款。
    • 啟動帳戶:完成以上步驟後,你的 GCP 帳戶就會被啟動,可以開始使用 Google Cloud 的各種服務。
  2. 專案項目:
    • 在 Google Cloud Console 中創建一個新的項目。
    • 目前丁丁的 gmail 帳號擁有兩個專案:
      1. jendoOrg:給振鐸用
      2. OMG123:不知道被誰啟動了 24 項服務,丁丁於 2024.2.9 用「https://console.cloud.google.com/welcome?hl=zh-tw&project=omg123-34b9d / IAM 與管理 / 左側選單 / 設定 / 上方選單 / 關閉」然後系統回覆「預定於 2024年3月10日後刪除」。
  3. 設定金鑰用限制:
    • 「雲端平台 / 快速存取 / API 和服務」
    • 「左側選單 / 憑證 / API 金鑰」其中有兩支 API 金鑰:
      1. YTapi :給取 youtube metadata 用,限四個 ip ,但可呼叫任何 API
        • 114.32.220.42:信義的固定 ip
        • 114.35.52.233:板橋的固定 ip
        • 220.132.155.103:中和的固定 ip
        • 36.231.xxx.xxx:信義區網內的浮動 ip
        • 測發出請求電腦本身的 ip :ipchicken.com,ipleak.net
      2. API 金鑰 1:給 google map 用,限六個域名網址,可呼叫的已啟用 API
    • 在「左側選單 / 憑證 / 上方選單 / 建立憑證 / API 金鑰」可以再新增一支 API 金鑰。
  4. 啟用 YouTube Data API v3
    • 「雲端平台 / 快速存取 / API 和服務」
    • 「左側選單 / 已啟用的 API 和服務 / 中央區服務名稱列表 / YouTube Data API v3 / 啟用」

(二)使用 API 查詢影片資訊:查 part=參數一,參數二,…

https://www.googleapis.com/youtube/v3/videos?id={VIDEO_ID}&part=snippet,contentDetails,statistics&key={YOUR_API_KEY}
https://www.googleapis.com/youtube/v3/videos?id=DPF64hiU_VA&part=snippet,contentDetails,statistics&key=AIzaSyAzdrvaROqqq0xtadAbV3V7KQoWlyVHWbw
https://www.googleapis.com/youtube/v3/videos?id={YOUR_VIDEO_ID}&part=contentDetails&key={YOUR_API_KEY}
https://www.googleapis.com/youtube/v3/videos?id={VIDEO_ID}&part=snippet&key={YOUR_API_KEY}

{VIDEO_ID}放的是影片的識別 ID ,{YOUR_API_KEY}放的是合法的 API key 。

請求成功後,會收到一個 JSON 格式的回應(本段表述為 data )。

可用的 part 參數有 snippet,contentDetails,statistics … 等,分述如後:

  1. contentDetails:回應內含影片的時間長度(duration 屬性),格式為 ISO 8601 持續時間格式,如:PT15M33S 表示 15 分鐘 33 秒。
  2. snippet(片段):data['items'][0]['snippet']['title'] 為影片標題;data['items'][0]['snippet']['publishedAt']為影片的上架日期,以 UTC 時間 ISO 8601 格式返回,如: 2023-01-02T15:04:05Z 。
  3. statistics:提供影片的統計信息,如觀看次數、喜歡次數、討厭次數、評論數等。
  4. status:提供影片的狀態信息,如影片是否已公開、是否允許評論等。
  5. player:提供影片播放器的相關信息,通常是嵌入式播放器的 HTML 代碼。
  6. topicDetails:提供關於影片主題的信息,包括相關的 Freebase 主題 ID。
  7. recordingDetails:提供影片錄製的詳細信息,如錄製位置和錄製時間。
  8. fileDetails:提供影片檔案的詳細信息,這通常只對影片上傳者可用。
  9. processingDetails:提供影片處理的狀態信息。
  10. suggestions:提供有關影片的建議信息,比如建議如何改善影片質量。
  11. liveStreamingDetails:如果影片是直播,則提供直播的詳細信息,如開始和結束時間。

(三)免費使用配額

  1. YouTube Data API 的免費使用配額限制是每日 10,000 單位。
  2. 在太平洋時間午夜時重置。
  3. 不同的 API 請求會消耗不同數量的配額單位。如,一個簡單的 videos.list 請求(用於獲取影片資訊)可能會消耗幾個單位,而一個複雜的請求(如上傳影片)則可能會消耗更多單位。
  4. 查看 YouTube Data API v3 使用情形
    • 「雲端平台 / 快速存取 / API 和服務」
    • 「左側選單 / 已啟用的 API 和服務 / 中央區服務名稱列表 / 點擊 YouTube Data API v3」中央區第二層:
      1. 指標:「選取圖表」核取選單中有九種圖表可以複選
      2. 配額與系統限制:可以核取配額種類,然後選「編輯配額」
      3. 憑證:會列出「與這個 API 相容的憑證」,如:YTapi 、 API 金鑰 1

(四)

五、影片牆程式參考範例

DS218 /ggp/browseWPND.php

其他

將 youtube 影片加入 播放清單

  1. 以頻道主的身份登入 youtube
  2. 按最左側「播放清單」圖示(漢堡+向右三角形)
  3. 選某一組「播放清單」
  4. 按「…」圖示,並選「新增影片」
  5. 貼上影片連結,並按下「新增影片」按鈕

取得youtube內建的影片縮圖

$youtubeimg=substr($網片網址,-11);	// 取影片ID
echo "<a title='前往觀看影片' href='$網片網址'><img src='http://img.youtube.com/vi/".$youtubeimg."/sddefault.jpg'></a>";

下載 youtube 影片

下載高清畫質影片

  1. 4K Video Downloader 免費版
  2. VideoHunter 月租版或年租版

下載 youtube 字幕

線上連結

  1. downsub.com
    1. 在影片網址列最前面加「subtitle.to/」然後按 Enter ,如圖:
    2. 此頁會被導向「https://downsub.com/?url=影片網址」
    3. 調整右上角「LANGUAGE」(可省略)
    4. 單擊「下載」按鈕開始提取字幕。
    5. 選擇您要下載的字幕格式和語言,然後單擊下載按鈕。

軟體

  1. yt-dlp 命令列軟體,最強大

已過時

線上連結

  1. Toolbxs 免費工具
  2. Getting YouTube Subtitles
    影片標題為中文時,下載、解壓縮後取得的字幕檔名可能會變亂碼

應用軟體

  1. Google2SRT