301 Moved Permanently

moved to http://vow.g.hatena.ne.jp/vow/

こねた(3)

あなたも きっと

(続き)

javascript:'use strict';
void(function(X,I,L,T,V){X=[];for(I of decodeURI(ytplayer.config.args.url_encoded_fmt_stream_map).split(','))
{L=[];for(T of I.split('&')){V=T.split('=',2);L[V[0]]=decodeURIComponent(V[1])}X[L.itag]=L;}
for(I of [38,37,22,35,34,18])if(I=X[I])break;if(!I.sp)return location.assign(I.url);X=new XMLHttpRequest();
X.onload=$=>{X=X.responseText;Function(X=X.replace(/(}\)\(_yt_player)(\);)/,';arguments[1].$DEC='+
X.match(/\.set\s*\(\s*[\w\d.]+\s*\|\|\s*(['"])signature\1\s*,\s*([\w\d]+)\s*\(/)[2]+'$1,window$2'))();
location.assign(I.url+'&'+I.sp+'='+$DEC(I.s))};
X.open('GET',document.querySelector('script[name="player/base"]').src);X.send();}())

/watch?v= のページから内容を抽出する必要最低限のブックマークレットフリ、改訂版。signature の逆スクランブルが必要な場合にも対応できているはず。フォーマット番号(itag)の優先順位リストはあまり現状に沿っていないかもしれません。


player/base を読み直させなければならないのはとてもモヤッとするところですが、かといってどこかからかスコープが漏れているのを期待して探したところで、それで見つかっても見つからなくても結末はとても不毛なのでまあそのままで。

実のところ url_encoded_fmt_stream_map の代わりに adaptive_fmts を読めばMPEG-DASH用のストリームも取れるのだけど、そちらの方が転送レート制限が厳しくてウボーっと時間がかかります。それこそ signature で防護されているので勝手にパラメータ書き換えてどうこうできる余地もないし。