Re: Webラジオの保存方法の質問はこちら【26】 ( No.37 ) |
- 日時: 2020/07/28 10:33
- 名前: No Name
- 番組名やURLの一覧取得について、
ブックマークレット向けに作成してみたので 利用できる方は活用してください(firefox 78.xとchrome 84.xでのみ確認)。
▼機能
「UTF-8,\n(LF)」のテキストで、番組名、ストリーミングURL(playlist.m3u8)、 その他の自分が任意に選択した属性を羅列。
★各番組の最新以外の配信は抽出対象から除外しています。 ★プレミアム会員のみの配信も除外しています。
スクリプトが読める方は各自で変更して使う等してください。
※エラーチェック等もほぼしていません。もともと自作ツール向けに jsonで取得するために作ったものを改修した簡易的なものなので、 このようなかたちにしています。
▼使い方
例えば下記のサイトなどを使って、
Bookmarklet スクリプト変換 https://ytyng.github.io/bookmarklet-script-compress/
ブックマークレット名に「音泉」なんちゃらかんちゃらと、 任意の名称を入力して、 スクリプトに後述のコードをコピペして、 「ブックマークレットに変換」ボタンを押し、 出現したボタンをブックマークバーにドラッグして登録。 ※★ブックマークへの登録は一度のみ、初回だけすればOK。
あとは、音泉の「トップページ」にアクセスして、 ページが表示し終わったら、前述のブックマークに登録したものを 選択すれば、音泉で使っているJavaScriptオブジェクトから 番組名とかURLを抽出して、テキストファイルとしてダウンロードします。
※あくまでアクセスした時点の情報の取得です。 スクリプト自体は通信せず、ローカルでのみの動作なので 音泉への負荷も皆無です。
▼スクリプト
(function(onsenData) { "use strict";
const mapDOW = [ {"dow":"1", "name":"月"} , {"dow":"2", "name":"火"} , {"dow":"3", "name":"水"} , {"dow":"4", "name":"木"} , {"dow":"5", "name":"金"} , {"dow":"6", "name":"土・日"} ];
const programs = onsenData.state.programs.programs;
const result = [];
for (let dowIdx = 0, dowIdxMax = mapDOW.length; dowIdx < dowIdxMax; dowIdx++) { let dow = mapDOW[dowIdx].dow; let dowName = mapDOW[dowIdx].name;
if (dowIdx > 0) { result.push(''); }
result.push('▼[' + dowName + ']曜日====================');
let listDOW = programs[ dow ];
for (let i = 0, iMax = listDOW.length; i < iMax; i++) { let program = listDOW[i];
let contents = program.contents;
for (let j = 0, jMax = contents.length; j < jMax; j++) { let content = contents[j];
if (content.latest === false) { break; }
if (content.premium === true) { continue; }
result.push(''); result.push('番組名' + (program.new ? '(new)' : '') + ':' + program.title + ' ' + content.title); result.push('データURL:' + content.streaming_url); result.push('配信日:' + content.delivery_date + ', 動画フラグ:' + content.movie); } } }
if (result.length < 1) { return; }
let blobUrl = (function(data) { if (!(typeof Blob !== 'undefined')){ return false; } window.URL = window.URL || window.webkitURL; if (!window.URL){ return false; } let blob = new Blob([ data.join('\n') ], {"type":"text/plain"}); return window.URL.createObjectURL(blob); })(result);
if (blobUrl === false) { return; }
let link = document.createElement('a'); link.href = blobUrl; link.download = 'onsen-' + (new Date()).getTime() + '.txt'; link.click();
})(window.__NUXT__);
|
|