YouTubeのLiked videosのデータをCSVにするJavaScriptスクリプトを書いた

    >


機能:
Liked videosのページの動画リストを、タイトル,URLの形式でCSVにして保存する。

不具合:
途中の動画からURLが取れなくなる。これはyoutubeの仕様みたいなのでどうしようもない。
順番がバラバラ。

使い方:
Liked videosのページに行って、chromeデベロッパーツールを開いて以下ソースコードをコピペ。
追記:やっぱり最後のconsole.save(csv,'result.csv')だけ数秒時間おいてから実行しなきゃダメでした。


function getElementsByXPath(xpath, parent) { let results = []; let query = document.evaluate(xpath, parent || document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null); for (let i=0, length=query.snapshotLength; i<length; ++i) { results.push(query.snapshotItem(i)); } return results; } (function(console){ console.save = function(data, filename){ if(!data) { console.error('Console.save: No data') return; } if(!filename) filename = 'console.json' if(typeof data === "object"){ data = JSON.stringify(data, undefined, 4) } var blob = new Blob([data], {type: 'text/json'}), e = document.createEvent('MouseEvents'), a = document.createElement('a') a.download = filename a.href = window.URL.createObjectURL(blob) a.dataset.downloadurl = ['text/json', a.download, a.href].join(':') e.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null) a.dispatchEvent(e) } })(console) var absolutePath = function(href) { var link = document.createElement("a"); link.href = href; return link.href; } var xpath = '//*[@id="video-title"]' ; var csv ; for (i = 1; getElementsByXPath(xpath).length; i++) { text = getElementsByXPath(xpath)[i].getAttribute("title"); text = text.replace(/,/g, "、"); text = '"' + text + '"' csv += text csv += ',' // csv += "\n" ; text = getElementsByXPath(xpath)[i].getAttribute("href") text = absolutePath(text) ; text = text.replace(/,/g, "、"); text = '"' + text + '"' csv += text // csv += ',' csv += "\n" ; } console.save(csv,'result.csv')

おまけ:Liked videosをクリックするスクリプト(書いたけど使わなかった)


for (i=0; i < document.querySelectorAll("#endpoint").length ; i++ ){ // console.log(i) ; // console.log(document.querySelectorAll("#endpoint")[i].getAttribute('title')) ; if (document.querySelectorAll("#endpoint")[i].getAttribute('title').match(/Liked videos/) == null){ } else { // console.log(i) ; document.querySelectorAll("#endpoint")[i].click() } }


お困りですか?この記事で紹介していることをマンツーマンで指導、解説、代行します。まずはお気軽にお問い合わせください。


Close Menu