Lineに画像を送信すると、AIが全部文字おこしして返してくれる「文字おこし君」ができましたー!卒論とか、書評とか書くときに、いちいち元の文献を手で写すの面倒くさいので、写真撮って送るだけなのでだいぶ楽になるぞー!友達追加できます! pic.twitter.com/9DVI20f3oG— Dai (@never_be_a_pm) April 24, 2018
目次
- 何ができるの?
- なんでつくったの?
- ツイッターでの反応は?
- 現在の稼働状況は?
- 作り方も公開
Lineに画像を送信すると、AIが全部文字おこしして返してくれる「文字おこし君」ができましたー!卒論とか、書評とか書くときに、いちいち元の文献を手で写すの面倒くさいので、写真撮って送るだけなのでだいぶ楽になるぞー!友達追加できます! pic.twitter.com/9DVI20f3oG— Dai (@never_be_a_pm) April 24, 2018
なんてものをつくってしまったんだ!!— Dai Kawai@RubyPython (@never_be_a_pm) February 28, 2018
Lineで好きなスケべキーワードを送ると、DMMからサンプル動画送ってくれる、夢のインテンシブラッキースケベソムリエだ! pic.twitter.com/fb33sLrb17
Oriental Lounge Eveという相席居酒屋の、混雑状況を分析できるLine Botを作りました。QRコードから登録できます。なう→現在の混雑状況、ぶんせき→時系列データの分析ページ、あくせす→公式ページのリンクを出します。渋谷、新宿、町田店に対応しています。 pic.twitter.com/oZjd9grO5U— Dai Kawai@RubyPython (@never_be_a_pm) February 23, 2018
#GAS— Dai Kawai@RubyPython (@never_be_a_pm) February 21, 2018
相席アナライザーというWebアプリを作りました。メイン機能としては、都内相席居酒屋の現在の在席情報をグラフで表示。また、店舗ごとに過去の入店データを時系列グラフにして表示し、どのタイミングで入るとマッチングしやすいかを分析できます。全部GASで作ってます。https://t.co/jVYO6CMXhh pic.twitter.com/HuVYMyw7Ok
相席居酒屋の空席状況をリアルタイムでスプレッドシートに更新し、グラフ化することで男しかいない糞相席屋を撲滅する試み
糞相席屋を撲滅する試み 昔友達とネタで相席居酒屋に入ったら、男しかいなくて「相席でもなんでもねえじゃん」と思って遺憾の意だったため。行くまで空席状況がわかりにくいというのが問題だと思う。
#GAS— Dai Kawai@RubyPython (@never_be_a_pm) February 11, 2018
News Picksのフォロー・フォロワー数・被いいね数を1分おきに取得するスクリプトを書いた。これでどういうことをつぶやいたら、フォロー数・いいね数が上がるのか分析することができそうである。 pic.twitter.com/SStM0IPlrP
<div class='media__message'> <h4 class='h12 talk-link__speaker'>Justin Baldoni</h4> <h4 class='h9 m5'> <a class=' ga-link' data-ga-context='talks' href='/talks/justin_baldoni_why_i_m_done_trying_to_be_man_enough?language=ja' lang='ja'> 「男らしく」在らんとすることをやめた理由 </a> </h4> <div class='meta'> <span class='meta__item'> Posted <span class='meta__val'> Dec 2017 </span> </span> <span class='meta__row'> Rated <span class='meta__val'> Inspiring, Courageous </span> </span> </div> </div>
<a class=' ga-link' data-ga-context='talks' href='/talks/justin_baldoni_why_i_m_done_trying_to_be_man_enough?language=ja' lang='ja'> 「男らしく」在らんとすることをやめた理由 </a>
<h4 class='h12 talk-link__speaker'>Justin Baldoni</h4>
<span class='meta__val'> Dec 2017 </span>
function MainFrame() { var url = "https://www.ted.com/talks?language=ja"; //ted日本語のURL var request = UrlFetchApp.fetch(url) //http responseの取得 var content = request.getContentText(); //最終ページの数字を取得 var step1 = content.match(/page=\d*/g) var pages = []; for (var i=0; i<=step1.length-1;i++){ pages.push(step1[i].replace(/page=/,"")); } var maxnum = Math.max.apply({},pages); //空の配列を作る var Speakers = []; var Titles = []; var Dates = []; //スクレイピング実行部分 for (var i=1;i<=maxnum;i++){ var url = "https://www.ted.com/talks?language=ja" + "&page=" + i; var request = UrlFetchApp.fetch(url); var content = request.getContentText(); var speakers = SpeakersArray(content); var titles = TitlesArray(content); var dates = DateArray(content); for(var n=0;n<=speakers.length-1;n++){ Speakers.push(speakers[n]) } for(var n=0;n<=titles.length-1;n++){ Titles.push(titles[n]) } for(var n=0;n<=dates.length-1;n++){ Dates.push(dates[n]) } } //2次元配列を作成 var Data = []; for(var n=0;n<=Speakers.length-1;i++){ var data = []; data.push(Speakers[n]); data.push(Titles[n]); data.push(Dates[n]); Data.push(data); } //スプレッドシートのid var id= "14OEIoSZ0RodyHgi3krhHuLDQd8k37CDy2Mm8Csrhsdk" var File = SpreadsheetApp.openById(id); var Sheet = File.getSheets(); Sheet[0].getRange(1,1,Speakers.length,3).setValues(Data); } function SpeakersArray(x){ /*実際のHTML <h4 class='h12 talk-link__speaker'>Justin Baldoni</h4> */ //スピーカー名を配列で返す var step1 = x.match(/<h4\sclass='h12\stalk-link__speaker'>.*<\/h4>/g); var extract = [] for (var i=0;i<=step1.length-1;i++){ extract.push(step1[i] .replace(/<h4\sclass='h12\stalk-link__speaker'>/g,"") .replace(/<\/h4>/g,"") .replace(/\n/g)); } return extract; } function TitlesArray(x){ //スピーチタイトルを配列で返す /*実際のHTML <a class=' ga-link' data-ga-context='talks' href='/talks/justin_baldoni_why_i_m_done_trying_to_be_man_enough?language=ja' lang='ja'> 「男らしく」在らんとすることをやめた理由 </a> */ var step1 = x.match(/<a\sclass='\sga-link'\sdata-ga-context='talks'\shref='\/talks\/.*\?language=ja'\slang='ja'>[\w\W]*?<\/a>/g,"") var extract = [] for (var i=0;i<=step1.length-1;i++){ extract.push(step1[i] .replace(/<a\sclass='\sga-link'\sdata-ga-context='talks'\shref='\/talks\/.*\?language=ja'\slang='ja'>/g,'') .replace(/<\/a>/g,"") .replace(/\n/g,"")); } return extract; } function DateArray(x){ //日付を配列で返す /*実際のHTML <span class='meta__val'>Dec 2017</span> */ var step1 = x.match(/<span\sclass='meta__val'>\n*[A-z]{3}\s\d{4}\n*<\/span>/g,"") var extract = [] for (var i=0;i<=step1.length-1;i++){ extract.push(step1[i] .replace(/<span\sclass='meta__val'>/g,"") .replace(/<\/span>/g,"") .replace(/\n/g,"")) } return extract; }
— Dai Kawai@RubyPython (@never_be_a_pm) February 8, 2018
— Dai Kawai@RubyPython (@never_be_a_pm) February 8, 2018
#GAS gフラグは、正規表現で取得したデータを、配列で複数取得できるようにするコマンド。gフラグなしだと、検索した結果の一つだけしかとれない。 / “【JavaScript入門】matchメソッドから正規表現をマスターする! …” https://t.co/9weRBJNFGW— Dai Kawai@RubyPython (@never_be_a_pm) February 8, 2018
めちゃくちゃ久しぶりにこのブログ書いたw 更新3年ぶりw > 多様性というゲームは尊厳と自由を勝ち取るゲームなのかもしれないな。 もともとツイッターでツイートした内容なんだけど、ちょっと深ぼる。 ----- 自分は男 x 30代x 二児の父 x 経営者 x 都心(共働き世...