HSP | YouTubeダウンローダー (仮)
HSP | YouTubeダウンローダー (仮)
#include "hspinet.as"
netinit
res=0
estr=""
movie_id="rm8T6EwKNiI" // YouTube動画ID
sdim html,150000 // YouTube動画再生ページのHTMLソースが代入される
index_c=0 // playerConfigのインデックス
length_c=0 // playerConfigの長さ
_json=0 // jsonを扱うときの
sdim playerConfig,15000 // playerConfig (json形式)
sdim url_encoded_fmt_stream_map,10000 // url_encoded_fmt_stream_map
sdim movie_info_2,10000 // (内容固定)
sdim movie_info_1,10000 // (内容可変)
sdim movie_info,10000,20,5 // 使いやすいようにurl_encoded_~の内容を入れる変数
parms="","" // = の左と右
cnt2=0 // 外のcntを代入しておく用
cnt3=0 // 動画のある画質のどの情報か
movie_exist=0 // 動画の個数netagent "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0)"
neturl "http://www.youtube.com/"
netrequest_get "watch?v="+movie_id
*waiting
netexec res
if res>0 : goto *comp
if res<0 : goto *bad
await 50
goto *waiting*bad
neterror estr
dialog "ネット接続時のエラー : "+estr,1,"エラー"
end*ehtml
dialog "HTML解析中のエラー",1,"エラー"
end*comp
netgetv html
index_c=instr(html,0,"yt.playerConfig = ")
if index_c=-1 : goto *ehtml
index_c+=18
length_c=instr(html,index_c,"};")
if length_c=-1 : goto *ehtml
length_c+=1
playerConfig=strmid(html,index_c,length_c)
jsonnkf "Ws"
jsonopen _json,playerConfig // 変数_jsonは使い回し
jsongetobj _json,"args"
jsongets url_encoded_fmt_stream_map,"url_encoded_fmt_stream_map",_json
jsonclose
split url_encoded_fmt_stream_map,",",movie_info_2
foreach movie_info_2
split movie_info_2(cnt),"&",movie_info_1
cnt2=cnt
foreach movie_info_1
split movie_info_1(cnt),"=",parms
switch parms(0)
case "url"
cnt3=0
swbreak
case "quality"
cnt3=1
swbreak
case "fallback_host"
cnt3=2
swbreak
case "type"
cnt3=3
swbreak
case "itag"
cnt3=4
swbreak
swend
urldecode movie_info(cnt2,cnt3),parms(1)
loop
loop
movie_exist=length(movie_info_2)// 以下テスト
txt=""
repeat movie_exist
txt+=movie_info(cnt,0)+"\t"+movie_info(cnt,1)+"\t"+movie_info(cnt,2)+"\t"+movie_info(cnt,3)+"\t"+movie_info(cnt,4)+"\n"
loop
bsave "test.txt",txt,strlen(txt)
わわ分からないwwww
難しいですwwww
wwwwwww
HSPというプログラミング言語で書いたものです。
あなたもやってみません?