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__);




トップページ