Skip to content

Instantly share code, notes, and snippets.

@vvakame
Last active August 29, 2015 14:02
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save vvakame/6e8e56a59ebef50e02d4 to your computer and use it in GitHub Desktop.
Save vvakame/6e8e56a59ebef50e02d4 to your computer and use it in GitHub Desktop.
Google I/O 2014のセッション情報見づらすぎてやばい
// セッションIDなどの入手方法
// https://www.google.com/events/io/schedule をブラウザで開いてコンソールで以下のJSを実行
var titles = Array.prototype.slice.call(document.querySelectorAll(".event__title")).map(function(node){return node.innerText; });
var rooms = Array.prototype.slice.call(document.querySelectorAll(".event__room")).map(function(node){return node.innerText; });
var ids = Array.prototype.slice.call(document.querySelectorAll(".event__pin")).map(function(node){return node.attributes["data-id"].value; });
var results = []
for(var i = 0; i < titles.length; i++) {
results.push({
id: ids[i],
title: titles[i],
rooms: rooms[i],
webUrl: "https://www.google.com/events/io/schedule/session/" + ids[i],
jsonUrl: "https://www.google.com/events/io/schedule/session/" + ids[i] + "?format=json"
});
}
console.log(JSON.stringify(results, null, 2));
// セッションデータも抜いてきてJSONにして出すとこまでやる
var aggregated = [];
var done = 0;
function complete() {
done++;
if(done === results.length) {
console.log(JSON.stringify(aggregated, null, 2));
}
}
results.forEach(function(result, i) {
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {
if(xhr.readyState !== 4) { return; }
if(xhr.status !== 200) { throw xhr; }
aggregated[i] = JSON.parse(xhr.responseText);
complete();
};
xhr.open("GET", result.jsonUrl);
xhr.send();
});
@vvakame
Copy link
Author

vvakame commented Jun 20, 2014

@vvakame
Copy link
Author

vvakame commented Jun 20, 2014

var forCSV = aggregated.map(function(data) {
  return {
    pretty_time: data.pretty_time,
    room: (data.room || {}).name,
    category1: (data.categories[0]||{}).name || (data.categories[0]||{}).slug || "",
    category2: (data.categories[1]||{}).name || (data.categories[1]||{}).slug || "",
    category3: (data.categories[2]||{}).name || (data.categories[2]||{}).slug || "",
    category4: (data.categories[3]||{}).name || (data.categories[3]||{}).slug || "",
    category5: (data.categories[4]||{}).name || (data.categories[4]||{}).slug || "",
    category6: (data.categories[5]||{}).name || (data.categories[5]||{}).slug || "",
    category7: (data.categories[6]||{}).name || (data.categories[6]||{}).slug || "",
    category8: (data.categories[7]||{}).name || (data.categories[7]||{}).slug || "",
    title: data.title,
    description: data.description,
    url: "https://www.google.com/events/io/schedule/session/" + data.key
  };
});
console.log(JSON.stringify(forCSV, null, 2));

http://jsfiddle.net/sturtevant/vUnF9/ に突っ込む

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment