「●YouTubeダウンロード」の編集履歴(バックアップ)一覧はこちら
「●YouTubeダウンロード」(2012/11/26 (月) 22:38:27) の最新版変更点
追加された行は緑色になります。
削除された行は赤色になります。
*情報
作者名: Craving Explorer研究家
引用元: [[なでしこプログラム掲示板「YouTubeダウンロード」>http://nade.jp-pro.net/bbs/bbs2/cbbs.cgi?mode=al2&namber=1206]]
バージョン: 3.24
*[[ダウンロード>http://www26.atwiki.jp/isoroku_be?cmd=upload&act=open&pageid=177&file=YouTube%E6%83%85%E5%A0%B1%E5%8F%96%E5%BE%97+3.24.nako]]
*概要
YouTubeの動画をダウンロードできます
*解説
YouTubeは一つの動画でもさまざまな形式や画質に変換し、どんなデバイスでも再生できるように設計されています。そして、その形式や画質の組み合わせをiTagという番号で管理しています。
しかし、使い道によってどの形式が最適なのかが異なるので、このプログラムはすべてのiTagの動画のURLを取得し、どれをダウンロードするのか選択できるようになっています。
なので、簡単に利用したい場合は「YouTubeで動画ダウンロード」命令を利用し、形式や画質を指定したい場合は下記のiTag一覧を参照し、次のように利用します。
// iTag18をダウンロードしたい場合
情報とはYouTube情報
動画情報とはYouTube動画情報
情報=「http://www.youtube.com/watch?v=6tr2__Tv2I4」からYouTubeで情報取得
動画情報=情報の動画情報@18
動画情報のURLを「video.mp4」にHTTPダウンロード
*注意
違法にアップロードされた音楽、または動画を違法と知りながらダウンロードする行為は&color(red){法律違法}です。
また、YouTubeのコンテンツをダウンロードする行為は&color(red){YouTube利用規約違反}です。
あくまで、違法ではないコンテンツを研究目的でダウンロードし、直ちに破棄するか、
キャッシュとしてダウンロードした後、直ちに削除するなどの利用方法に限ってください。
また、このプログラムの利用によって被ったあらゆる種類の損失又は損害について作者は&color(red){責任を負いません}。
*サンプル
# 衛星ハヤブサの動画をデスクトップにダウンロードします。
「http://www.youtube.com/watch?v=6tr2__Tv2I4」をデスクトップにYouTubeで動画ダウンロード
*本体
!変数宣言は必要
■YouTube情報
・{ハッシュ}動画情報
・{文字列}タイトル
■YouTube動画情報
・{文字列}URL
・{文字列}拡張子
・{整数}iTag
・{文字列}基本URL
・{文字列}代替ホスト
・{文字列}タイプ
・{文字列}品質
・{文字列}署名
■YouTube
・{配列}品質一覧
・{配列}拡張子一覧
・{配列}除去iTag一覧
・情報取得({文字列}URLの|URLで|URLから)~
情報とはYouTube情報
URLホストとは文字列
URLファイル名とは文字列
URLパラメータとはハッシュ
ページURLとは文字列
Vid値とは文字列
ページデータとは文字列
ストリームマップとは配列
マップデータとはハッシュ
#-----------------------------------------------------------------------
// URLがYouTubeの動画ページのURLかチェックし、整形する
#-----------------------------------------------------------------------
URLホスト=URLからURLドメイン名抽出
URLファイル名=URLからURLファイル名抽出
URLパラメータ=URLからURLパラメータ取得
URLホストで条件分岐
『www.youtube.com』ならば
もし、URLファイル名!=『watch』ならば
『YouTubeの動画ページのURLではありません』とエラー発生
Vid値=URLパラメータ@「v」
『youtube.com』ならば
もし、URLファイル名!=『watch』ならば
『YouTubeの動画ページのURLではありません』とエラー発生
Vid値=URLパラメータ@「v」
『youtu.be』ならば
Vid値=URLファイル名
違えば
『YouTubeの動画ページのURLではありません』とエラー発生
もし、Vid値=空ならば
『YouTubeの動画ページのURLではありません』とエラー発生
#-----------------------------------------------------------------------
// 動画ページのデータをダウンロードする
#-----------------------------------------------------------------------
ページURL=『http://www.youtube.com/watch?v=』&Vid値
エラー監視
ページデータ=ページURLのHTTPデータ取得
エラーならば
『YouTubeの動画ページをダウンロード中にエラー』とエラー発生
ページデータ=ページデータをUTF8N_SJIS変換
#-----------------------------------------------------------------------
// 動画のタイトルを取得する
#-----------------------------------------------------------------------
ページデータを『<meta name="title" content="([^"]+)"』で正規表現マッチ
情報のタイトル=抽出文字列[0]
#-----------------------------------------------------------------------
// 動画ページのストリームマップを取得する
#-----------------------------------------------------------------------
ページデータの「url_encoded_fmt_stream_map=」から「\u0026amp;」まで範囲抜き出す
ストリームマップ=それをURLデコードを「,」で区切る
ストリームマップで反復
マップデータとはハッシュ
動画情報とはYouTube動画情報
マップデータ=対象を「&」で区切るをハッシュ変換
マップデータのハッシュキー列挙で反復
マップデータ@対象=マップデータ@対象をURLデコード
動画情報のiTag=マップデータ@「itag」
動画情報の基本URL=マップデータ@「url」
動画情報の代替ホスト=マップデータ@「fallback_host」
動画情報のタイプ=マップデータ@「type」
動画情報の品質=マップデータ@「quality」
動画情報の署名=マップデータ@「sig」
動画情報のURL=動画情報の基本URL&「&signature=」&動画情報の署名
動画情報のタイプの「video/」から「;」まで範囲抜き出すで条件分岐
「webm」ならば、動画情報の拡張子=「.webm」
「mp4」ならば、動画情報の拡張子=「.mp4」
「x-flv」ならば、動画情報の拡張子=「.flv」
「3gpp」ならば、動画情報の拡張子=「.3gp」
違えば、動画情報の拡張子=「.flv」
情報の動画情報@(動画情報のiTag)=動画情報
情報で戻る
・動画ダウンロード({文字列}URLを{文字列=?}フォルダへ|URLから)~
もし、フォルダ=空ならば、フォルダ=デスクトップ
フォルダ=フォルダの終端パス追加
情報とはハッシュ
ファイル名とは文字列
情報=URLの動画情報取得
ファイル名=フォルダ&(情報@「タイトル」を文字列ファイル名変換)&情報@「拡張子」
情報@「URL」をファイル名へHTTPダウンロード
ファイル名で戻る
・動画情報取得({文字列}URLの|URLで|URLから)~
URLの拡張子優先動画情報取得で戻る
・拡張子優先動画情報取得({文字列}URLの|URLで|URLから)~
結果とはハッシュ
情報とはYouTube情報
ソート用配列とは配列
情報=URLから情報取得
情報の動画情報のハッシュキー列挙で反復
情報の動画情報@対象をソート用配列に配列追加
ソート用配列を「AとBで拡張子優先比較」で配列カスタムソート
結果@「URL」=ソート用配列[0]→URL
結果@「拡張子」=ソート用配列[0]→拡張子
結果@「タイトル」=情報のタイトル
結果で戻る
・品質優先動画情報取得({文字列}URLの|URLで|URLから)~
結果とはハッシュ
情報とはYouTube情報
ソート用配列とは配列
情報=URLから情報取得
情報の動画情報のハッシュキー列挙で反復
情報の動画情報@対象をソート用配列に配列追加
ソート用配列を「AとBで品質優先比較」で配列カスタムソート
結果@「URL」=ソート用配列[0]→URL
結果@「拡張子」=ソート用配列[0]→拡張子
結果@「タイトル」=情報のタイトル
結果で戻る
・拡張子優先比較(AとBで)~
aとは整数
bとは整数
a=A→iTagを除去iTag一覧で配列検索
b=B→iTagを除去iTag一覧で配列検索
もし、a!=bならば、a-bで戻る
a=A→拡張子を拡張子一覧で配列検索
b=B→拡張子を拡張子一覧で配列検索
もし、a!=bならば、b-aで戻る
a=A→品質を品質一覧で配列検索
b=B→品質を品質一覧で配列検索
b-aで戻る
・品質優先比較(AとBで)~
aとは整数
bとは整数
a=A→iTagを除去iTag一覧で配列検索
b=B→iTagを除去iTag一覧で配列検索
もし、a!=bならば、b-aで戻る
a=A→品質を品質一覧で配列検索
b=B→品質を品質一覧で配列検索
もし、a!=bならば、a-bで戻る
a=A→拡張子を拡張子一覧で配列検索
b=B→拡張子を拡張子一覧で配列検索
b-aで戻る
YouTubeの品質一覧=「small,medium,large,hd720,hd1080,highres」を「,」で区切る
YouTubeの拡張子一覧=「.flv,.webm,.mp4」を「,」で区切る
YouTubeの除去iTag一覧=「102,104,84,82」を「,」で区切る
●範囲抜き出す({文字列}SのAからBまで|SでAからBを|Bまでを)
SのAからBまで範囲切り取るで戻る
●URLパラメータ取得({文字列}URLの|URLで|URLから)
パラメータとはハッシュ
位置とは整数
位置=URLで1から「?」をバイト検索
もし、位置=0ならば、空で戻る
位置=位置+1
URLの位置から(URLのバイト数-位置+1)バイト抜き出す
パラメータ=それを「&」で区切るをハッシュ変換
パラメータのハッシュキー列挙で反復
パラメータ@対象=パラメータ@対象をURLデコードをUTF8N_SJIS変換
パラメータで戻る
*iTag一覧
参考までに。少し間違っているかもしれません。
画質 コンテナ 映像コーデック 音声コーデック 最大解像度
5 標準画質 FLV H.263 MP3 320 x 240
6 高画質 FLV H.263 MP3 480 x 360
13 携帯 3GP H.263/AMR AMR 176 x 144
17 携帯 3GP MPEG-4 Part 2 AAC 176 x 144
18 360p MP4 MPEG-4 AVC(H.264) AAC 640 x 360
22 HD720 MP4 MPEG-4 AVC(H.264) AAC 1280 x 720
34 360p FLV MPEG-4 AVC(H.264) AAC 640 x 360
35 480p FLV MPEG-4 AVC(H.264) AAC 854 x 480
37 HD1080 MP4 MPEG-4 AVC(H.264) AAC 1920 x 1080
36 標準画質 3GPP 320 x 240
38 4k MP4 MPEG-4 AVC(H.264) AAC 4096 x 2304
43 360p WEBM VP8 Vorbis 640 x 360
44 480p WEBM VP8 Vorbis 854 x 480
45 HD720 WEBM VP8 Vorbis 1280 x 720
46 HD1080 WEBM VP8 Vorbis 1920 x 1080
59 480p MP4 854 x 480 未検証
78 360p MP4 640 x 360 未検証
82 360p3D MP4 MPEG-4 AVC(H.264) AAC 640 x 360
84 720p3D MP4 MPEG-4 AVC(H.264) AAC 1280 x 720
*更新情報
-3.24 (2012/11/26)
+3.23の一部の間違いを訂正
+ソートを引数付に
-3.23 (2012/11/26)
+YouTubeの仕様変更に対応
仕様変更の内容
署名がURLとは別に分離され、マップに記述
FlashPlayerの埋め込みがJavaScriptによる記述に完全移行
+YouTubeのiTagを追加
+YouTubeのすべての形式の動画URLを取得可能に
+命令をグループ化
+グローバル変数によるタイトルの取得を廃止
+一行で簡潔に利用できるように変更(「YouTubeの動画ダウンロード」命令)
-3.10 (2012/02/01)
優先度ソートを拡張子優先と品質優先に分ける
-3.02 (2012/02/01)
バグ修正。Unicodeエンティティ復号命令追加によるUnicode復号の正確化
-3.01 (2012/01/31)
JavaScriptで書かれたstream_mapの取得に対応
-3.00(2012/01/14)
バグ修正
-3.00(2011/08/05)
YouTubeの仕様変更に対応
----
総合:&counter()
今日:&counter(today)人
昨日:&counter(yesterday)人
- 参考にしていたCravingExplorerからダウンロード機能がなくなるそうです...残念。このプログラムの使い方も慎重にならなくてはいけないのかもしれません。 -- 作者 (2012-11-26 20:15:40)
#comment()
*情報
作者名: Craving Explorer研究家
引用元: [[なでしこプログラム掲示板「YouTubeダウンロード」>http://nade.jp-pro.net/bbs/bbs2/cbbs.cgi?mode=al2&namber=1206]]
転載: 許可
バージョン: 3.24
*[[ダウンロード>http://www26.atwiki.jp/isoroku_be?cmd=upload&act=open&pageid=177&file=YouTube%E6%83%85%E5%A0%B1%E5%8F%96%E5%BE%97+3.24.nako]]
*概要
YouTubeの動画をダウンロードできます
*解説
YouTubeは一つの動画でもさまざまな形式や画質に変換し、どんなデバイスでも再生できるように設計されています。そして、その形式や画質の組み合わせをiTagという番号で管理しています。
しかし、使い道によってどの形式が最適なのかが異なるので、このプログラムはすべてのiTagの動画のURLを取得し、どれをダウンロードするのか選択できるようになっています。
なので、簡単に利用したい場合は「YouTubeで動画ダウンロード」命令を利用し、形式や画質を指定したい場合は下記のiTag一覧を参照し、次のように利用します。
// iTag18をダウンロードしたい場合
情報とはYouTube情報
動画情報とはYouTube動画情報
情報=「http://www.youtube.com/watch?v=6tr2__Tv2I4」からYouTubeで情報取得
動画情報=情報の動画情報@18
動画情報のURLを「video.mp4」にHTTPダウンロード
*注意
違法にアップロードされた音楽、または動画を違法と知りながらダウンロードする行為は&color(red){法律違法}です。
また、YouTubeのコンテンツをダウンロードする行為は&color(red){YouTube利用規約違反}です。
あくまで、違法ではないコンテンツを研究目的でダウンロードし、直ちに破棄するか、
キャッシュとしてダウンロードした後、直ちに削除するなどの利用方法に限ってください。
また、このプログラムの利用によって被ったあらゆる種類の損失又は損害について作者は&color(red){責任を負いません}。
*サンプル
# 衛星ハヤブサの動画をデスクトップにダウンロードします。
「http://www.youtube.com/watch?v=6tr2__Tv2I4」をデスクトップにYouTubeで動画ダウンロード
*本体
!変数宣言は必要
■YouTube情報
・{ハッシュ}動画情報
・{文字列}タイトル
■YouTube動画情報
・{文字列}URL
・{文字列}拡張子
・{整数}iTag
・{文字列}基本URL
・{文字列}代替ホスト
・{文字列}タイプ
・{文字列}品質
・{文字列}署名
■YouTube
・{配列}品質一覧
・{配列}拡張子一覧
・{配列}除去iTag一覧
・情報取得({文字列}URLの|URLで|URLから)~
情報とはYouTube情報
URLホストとは文字列
URLファイル名とは文字列
URLパラメータとはハッシュ
ページURLとは文字列
Vid値とは文字列
ページデータとは文字列
ストリームマップとは配列
マップデータとはハッシュ
#-----------------------------------------------------------------------
// URLがYouTubeの動画ページのURLかチェックし、整形する
#-----------------------------------------------------------------------
URLホスト=URLからURLドメイン名抽出
URLファイル名=URLからURLファイル名抽出
URLパラメータ=URLからURLパラメータ取得
URLホストで条件分岐
『www.youtube.com』ならば
もし、URLファイル名!=『watch』ならば
『YouTubeの動画ページのURLではありません』とエラー発生
Vid値=URLパラメータ@「v」
『youtube.com』ならば
もし、URLファイル名!=『watch』ならば
『YouTubeの動画ページのURLではありません』とエラー発生
Vid値=URLパラメータ@「v」
『youtu.be』ならば
Vid値=URLファイル名
違えば
『YouTubeの動画ページのURLではありません』とエラー発生
もし、Vid値=空ならば
『YouTubeの動画ページのURLではありません』とエラー発生
#-----------------------------------------------------------------------
// 動画ページのデータをダウンロードする
#-----------------------------------------------------------------------
ページURL=『http://www.youtube.com/watch?v=』&Vid値
エラー監視
ページデータ=ページURLのHTTPデータ取得
エラーならば
『YouTubeの動画ページをダウンロード中にエラー』とエラー発生
ページデータ=ページデータをUTF8N_SJIS変換
#-----------------------------------------------------------------------
// 動画のタイトルを取得する
#-----------------------------------------------------------------------
ページデータを『<meta name="title" content="([^"]+)"』で正規表現マッチ
情報のタイトル=抽出文字列[0]
#-----------------------------------------------------------------------
// 動画ページのストリームマップを取得する
#-----------------------------------------------------------------------
ページデータの「url_encoded_fmt_stream_map=」から「\u0026amp;」まで範囲抜き出す
ストリームマップ=それをURLデコードを「,」で区切る
ストリームマップで反復
マップデータとはハッシュ
動画情報とはYouTube動画情報
マップデータ=対象を「&」で区切るをハッシュ変換
マップデータのハッシュキー列挙で反復
マップデータ@対象=マップデータ@対象をURLデコード
動画情報のiTag=マップデータ@「itag」
動画情報の基本URL=マップデータ@「url」
動画情報の代替ホスト=マップデータ@「fallback_host」
動画情報のタイプ=マップデータ@「type」
動画情報の品質=マップデータ@「quality」
動画情報の署名=マップデータ@「sig」
動画情報のURL=動画情報の基本URL&「&signature=」&動画情報の署名
動画情報のタイプの「video/」から「;」まで範囲抜き出すで条件分岐
「webm」ならば、動画情報の拡張子=「.webm」
「mp4」ならば、動画情報の拡張子=「.mp4」
「x-flv」ならば、動画情報の拡張子=「.flv」
「3gpp」ならば、動画情報の拡張子=「.3gp」
違えば、動画情報の拡張子=「.flv」
情報の動画情報@(動画情報のiTag)=動画情報
情報で戻る
・動画ダウンロード({文字列}URLを{文字列=?}フォルダへ|URLから)~
もし、フォルダ=空ならば、フォルダ=デスクトップ
フォルダ=フォルダの終端パス追加
情報とはハッシュ
ファイル名とは文字列
情報=URLの動画情報取得
ファイル名=フォルダ&(情報@「タイトル」を文字列ファイル名変換)&情報@「拡張子」
情報@「URL」をファイル名へHTTPダウンロード
ファイル名で戻る
・動画情報取得({文字列}URLの|URLで|URLから)~
URLの拡張子優先動画情報取得で戻る
・拡張子優先動画情報取得({文字列}URLの|URLで|URLから)~
結果とはハッシュ
情報とはYouTube情報
ソート用配列とは配列
情報=URLから情報取得
情報の動画情報のハッシュキー列挙で反復
情報の動画情報@対象をソート用配列に配列追加
ソート用配列を「AとBで拡張子優先比較」で配列カスタムソート
結果@「URL」=ソート用配列[0]→URL
結果@「拡張子」=ソート用配列[0]→拡張子
結果@「タイトル」=情報のタイトル
結果で戻る
・品質優先動画情報取得({文字列}URLの|URLで|URLから)~
結果とはハッシュ
情報とはYouTube情報
ソート用配列とは配列
情報=URLから情報取得
情報の動画情報のハッシュキー列挙で反復
情報の動画情報@対象をソート用配列に配列追加
ソート用配列を「AとBで品質優先比較」で配列カスタムソート
結果@「URL」=ソート用配列[0]→URL
結果@「拡張子」=ソート用配列[0]→拡張子
結果@「タイトル」=情報のタイトル
結果で戻る
・拡張子優先比較(AとBで)~
aとは整数
bとは整数
a=A→iTagを除去iTag一覧で配列検索
b=B→iTagを除去iTag一覧で配列検索
もし、a!=bならば、a-bで戻る
a=A→拡張子を拡張子一覧で配列検索
b=B→拡張子を拡張子一覧で配列検索
もし、a!=bならば、b-aで戻る
a=A→品質を品質一覧で配列検索
b=B→品質を品質一覧で配列検索
b-aで戻る
・品質優先比較(AとBで)~
aとは整数
bとは整数
a=A→iTagを除去iTag一覧で配列検索
b=B→iTagを除去iTag一覧で配列検索
もし、a!=bならば、b-aで戻る
a=A→品質を品質一覧で配列検索
b=B→品質を品質一覧で配列検索
もし、a!=bならば、a-bで戻る
a=A→拡張子を拡張子一覧で配列検索
b=B→拡張子を拡張子一覧で配列検索
b-aで戻る
YouTubeの品質一覧=「small,medium,large,hd720,hd1080,highres」を「,」で区切る
YouTubeの拡張子一覧=「.flv,.webm,.mp4」を「,」で区切る
YouTubeの除去iTag一覧=「102,104,84,82」を「,」で区切る
●範囲抜き出す({文字列}SのAからBまで|SでAからBを|Bまでを)
SのAからBまで範囲切り取るで戻る
●URLパラメータ取得({文字列}URLの|URLで|URLから)
パラメータとはハッシュ
位置とは整数
位置=URLで1から「?」をバイト検索
もし、位置=0ならば、空で戻る
位置=位置+1
URLの位置から(URLのバイト数-位置+1)バイト抜き出す
パラメータ=それを「&」で区切るをハッシュ変換
パラメータのハッシュキー列挙で反復
パラメータ@対象=パラメータ@対象をURLデコードをUTF8N_SJIS変換
パラメータで戻る
*iTag一覧
参考までに。少し間違っているかもしれません。
画質 コンテナ 映像コーデック 音声コーデック 最大解像度
5 標準画質 FLV H.263 MP3 320 x 240
6 高画質 FLV H.263 MP3 480 x 360
13 携帯 3GP H.263/AMR AMR 176 x 144
17 携帯 3GP MPEG-4 Part 2 AAC 176 x 144
18 360p MP4 MPEG-4 AVC(H.264) AAC 640 x 360
22 HD720 MP4 MPEG-4 AVC(H.264) AAC 1280 x 720
34 360p FLV MPEG-4 AVC(H.264) AAC 640 x 360
35 480p FLV MPEG-4 AVC(H.264) AAC 854 x 480
37 HD1080 MP4 MPEG-4 AVC(H.264) AAC 1920 x 1080
36 標準画質 3GPP 320 x 240
38 4k MP4 MPEG-4 AVC(H.264) AAC 4096 x 2304
43 360p WEBM VP8 Vorbis 640 x 360
44 480p WEBM VP8 Vorbis 854 x 480
45 HD720 WEBM VP8 Vorbis 1280 x 720
46 HD1080 WEBM VP8 Vorbis 1920 x 1080
59 480p MP4 854 x 480 未検証
78 360p MP4 640 x 360 未検証
82 360p3D MP4 MPEG-4 AVC(H.264) AAC 640 x 360
84 720p3D MP4 MPEG-4 AVC(H.264) AAC 1280 x 720
*更新情報
-3.24 (2012/11/26)
+3.23の一部の間違いを訂正
+ソートを引数付に
-3.23 (2012/11/26)
+YouTubeの仕様変更に対応
仕様変更の内容
署名がURLとは別に分離され、マップに記述
FlashPlayerの埋め込みがJavaScriptによる記述に完全移行
+YouTubeのiTagを追加
+YouTubeのすべての形式の動画URLを取得可能に
+命令をグループ化
+グローバル変数によるタイトルの取得を廃止
+一行で簡潔に利用できるように変更(「YouTubeの動画ダウンロード」命令)
-3.10 (2012/02/01)
優先度ソートを拡張子優先と品質優先に分ける
-3.02 (2012/02/01)
バグ修正。Unicodeエンティティ復号命令追加によるUnicode復号の正確化
-3.01 (2012/01/31)
JavaScriptで書かれたstream_mapの取得に対応
-3.00(2012/01/14)
バグ修正
-3.00(2011/08/05)
YouTubeの仕様変更に対応
----
総合:&counter()
今日:&counter(today)人
昨日:&counter(yesterday)人
- 参考にしていたCravingExplorerからダウンロード機能がなくなるそうです...残念。このプログラムの使い方も慎重にならなくてはいけないのかもしれません。 -- 作者 (2012-11-26 20:15:40)
#comment()