動画設定情報を取得するプログラム
YouTube APIのlist処理でとろうとしてたが、一部取れない項目があるらしいので力技で。
設定画面に遷移して情報を取得するので、動画の所有者以外はたぶん無理。
Public Sub getSettingVideo(sId As String) Dim ie As InternetExplorer Dim dom As HTMLDocument Dim el As IHTMLElement Dim n As Long Dim el2 As IHTMLElement Set ie = New InternetExplorer ie.Visible = True 'debug ie.navigate "https://www.youtube.com/edit?video_id=" & sId Call ieCheck(ie) Set dom = ie.document Debug.Print dom.getElementsByName("title")(0).Value 'タイトル For Each el In dom.getElementsByName("description") '説明。ヘッダでも使われてるので…。 If el.tagName = "TEXTAREA" Then Debug.Print el.innerText Exit For End If Next el 'タグ。これは設定されている数をカウントするようにしよう n = 0 For Each el In dom.getElementsByTagName("span") If el.getAttribute("role") = "listitem" Then n = n + 1 Next el Debug.Print n '公開設定 For Each el In dom.getElementsByName("privacy")(0).getElementsByTagName("option") If el.getAttribute("selected") Then Debug.Print el.innerText Exit For End If Next el 'コメントを許可 これ、ページ遷移なしでとれたらいいなぁ Debug.Print dom.getElementsByName("allow_comments")(0).Value '動画の評価をユーザに表示する Debug.Print dom.getElementsByName("allow_ratings")(0).Value '動画のライセンス For Each el In dom.getElementsByName("reuse")(0).getElementsByTagName("option") If el.getAttribute("selected") Then Debug.Print el.innerText Exit For End If Next el 'シンジケーション For Each el In dom.getElementsByName("syndication") If el.getAttribute("checked") Then Debug.Print el.Value Exit For End If Next el '字幕の設定 For Each el In dom.getElementById("captions_certificate_reason").getElementsByTagName("option") If el.getAttribute("selected") Then Debug.Print el.innerText Exit For End If Next el '埋め込みの可不可 Debug.Print dom.getElementsByName("allow_embedding")(0).getAttribute("checked") 'チャンネルを登録者に通知 Debug.Print dom.getElementsByName("creator_share_feeds")(0).getAttribute("checked") '年齢制限 Debug.Print dom.getElementsByName("self_racy")(0).getAttribute("checked") 'カテゴリ For Each el In dom.getElementsByTagName("select") If el.getAttribute("data-ng-model") = "category" Then Exit For Next el For Each el2 In el.getElementsByTagName("option") If el2.getAttribute("selected") = "selected" Then Debug.Print el2.innerText Exit For End If Next el2 '動画の撮影場所 Debug.Print dom.getElementsByClassName("location-input")(0).Value '動画の言語はUIが良くわからないので後回し。 '視聴者への翻訳依頼 Debug.Print dom.getElementsByName("captions_crowdsource")(0).getAttribute("checked") '動画の統計情報 Debug.Print dom.getElementsByName("allow_public_stats")(0).getAttribute("checked") '3D動画 For Each el In dom.getElementsByTagName("input") If el.getAttribute("data-ng-model") = "threed.is_3d" Then Debug.Print el.getAttribute("checked") Exit For End If Next el 'コンテンツに関する申告 For Each el In dom.getElementsByTagName("input") If el.getAttribute("data-ng-model") = "product.has_paid_product_placement" Then Debug.Print el.getAttribute("checked") Exit For End If Next el ie.Quit End Sub