読者です 読者をやめる 読者になる 読者になる

ソムトル

Webアプリ系の勉強をし始めたのでそのメモなどを。突っ込み大歓迎です。英語に慣れるためにひどい英語も書いていきます。

ニコニコ動画で動画検索結果を宣伝ポイント順、マイリス率順に並び変えるchrome拡張を作ってみた

ニコ動見てて「なんで宣伝ポイント数やマイリスト率順に並び替える機能ないんだろ」と思ったので作ってみました。

以下から入手してください。
https://chrome.google.com/webstore/detail/nicodoukaizen/ipackjolahnabofmiminjpbkbcljbjpb?hl=ja

インストールすると、ニコニコ動画での検索結果の「再生数の多い順」のプルダウンに
「宣伝ポイントの高い順」「マイリス率の高い順」が増えてるのでこれを選択するだけです。
選択したら現在の表示されている動画らが上記項目に則り並び変わります。
autopagerizeでたくさん検索結果を表示した後に並び替えると効果的に使えると思います。

あとは、地味にメニューの改変も行っていますが、もし気に入らない場合はコメントに
書き込んでいただければ対応するかもしれません。地味に便利じゃないかなーと思ってるのですが。

しかし、宣伝ポイント数はデフォルトであってもよいと思うんだけどなぁ。
後は、シリーズものの動画の初回と次回の再生数の差をだして、良シリーズを探しやすくしてみたいなー
作るとなるとajax使わなきゃできないんでニコ動に怒られそう。まあそのうちやるかも。
マイリストから次の動画を探さなきゃいけないのがちょっときついか。

Gistでコードを埋め込む時の注意点

Gistを使ってブログなどにコードを埋め込む際は、本文でコードの細かい部分を説明しないほうがよいと思いました。
細かい修正はその後入って行く可能性があるので、その度に本文との整合性を取らなくてはいけなくなるからです。
あるリビジョンのコードを埋め込むことも出来るのかもしれませんが、それならばGistを使う意味があまりないかも知れないですので、その機能は無いような気がしています。
Gist初心者の感想でした。

twitter bot by node.js + mysql on mac

I made twitter bot by node.js + mysql.
but, my knowledge for web application is too short.
so, you can not trust this article.

Preparation

node.js

if gcc is Installed in mac, use below shell script.

Install npm

node.js use modules that is like saying a library in C.
Modules is installed by npm that is package manager of node.js.
if shell script installing node.js works well, npm is installed together.

install modules to use bot

install mysql

The bot tweets wisdom in database.
Because Using mysql for database, install a 'mysql' module to use mysql from node.js.
To pathing to dir installed node.js, write below code to ~/.bash_profile.

export PATH=$HOME/local/bin:$PATH

then, run below code.

source .bash_profile
npm install mysql

install oauth

The bot use TwitterAPI that needs OAuth.
So, install 'oauth' module to use easily oauth.

npm install oauth

Twitter

create acount

Using a alias of gmail is suitable to create a bot acount.
if you have hoge@gmail.com, you can get new address hoge+xxxx@gmail.com.

get infomations needed twitterAPI.

Register the application on Twitter, to get the information you need to OAuth= consumer key, consumer secret, access token and access token secret.

1.move to https://dev.twitter.com/
2.mode to my application from right-up
3.click "Create a new application"
4.Fill in the appropriate fields. and, regist a app.
5.select app that is made by 4. from "my applications".
6.change Application Type to Read and Write.
7. click "create access token" at your access token.
8.reload several times, you can see your Access token, Access token secret.
9.you can get Consumer key, Consumer secret, Access token, Access token secret.

mysql

install

Using port, install mysql to mac.

sudo port install mysql5-server

if successed, you can see below message.

If this is a new install, in order to setup the database you might want to run:
sudo -u _mysql mysql_install_db5

so, run below code.

sudo -u _mysql mysql_install_db5

create database

if you want to use japanese, write these codes in /etc/my.cnf.

[mysqld]
default-character-set=utf8

[mysql]
default-character-set=utf8

[mysqldump]
default-character-set=utf8

create database.

#sudo /opt/local/share/mysql5/mysql/mysql.server start
#mysql5 -u root
#create NAME OF DATABASE
#create table NAME OF TABLE
->(name_of_id_column BIGINT PRIMARY KEY AUTO_INCREMENT,
->name_of_wisdom_column VARCHAR(256) UNIQUE NOT NULL);
#insert into wisdom VALUES(null, 'wisdom you like');

execute

Download displayed next.
you have to chenge variables wrote by japanese to suitable value.
then, run below.

node tweet_wisdom_bot.js

code

crontab

if you want to run interval, use crontab.
this is example that interval 1 hour.

crontab -e
00 * * * * ~/local/bin/node ~/tweet_wisdom_bot.js  

sample

https://twitter.com/#!/grasshopper_bot (tweet only japanese)

macにてnode.js+mysql+oauthでTwitterのbotを作成

流行っていると噂のnode.jsでTwitterのボットを作ってみました。
まったくWebアプリ関係の知識がないので、そういう人が書いていることを念頭においておいてください。
なので初心者には分かりやすいと思います。上級者は間違いなどあったら突っ込んでくださるとありがたいです。
以下、このボットを動かすために必要な作業を作業領域ごとにまとめて記載していきます。

準備

node.js

GCCが入っている環境ならば以下を使えば一発でインストールできるはずです。

参考http://sakuratan.biz/archives/3101

npmのインストール

node.jsではモジュールというものがあり、まあだいたいCで言うライブラリ。
モジュールはnpmというプログラムで環境にインストールすることができる。npm=node package manager
node.jsのインストールした時のスクリプトが正常に動けばこちらも同時にインストールされています。

botで使うモジュールのインストール

mysqlのインストール

今回のボットでは名言をデータベースに格納します。
データベースはmysqlを使うため、mysqlをnode.jsから使うためのモジュールmysqlを取得する。
~/local/binへのパスが.bashrcに書き込まれてるのですが、どうもmacは.bashrcを読み込まないようなので、
以下を~/.bash_profileに記載しておきます。

export PATH=$HOME/local/bin:$PATH

そして以下を実行します。

source .bash_profile
npm install mysql

oauthのインストール

Twitterbotは、OAuth認証が必要なTwitterAPIを使うことになります。
そのため、OAuthによる認証を簡単にnode.jsで行うためにモジュールoauthを取得します。

npm install oauth

Twitter

アカウント作成

みなさんお持ちであろうgmailエイリアスを使って作成するのがよいと思います。
hoge@gmail.comならばhoge+xxxx@gmail.comで新しいgmailのアドレスとして機能します。
メールはhoge@gmail.comに届きますが宛先はhoge+xxxx@gmail.comになってますのでフィルタなどで振り分けましょう。

botに必要な情報の取得

これから作るアプリケーションをTwitterに登録し、OAuthに必要なコンシューマキー、コンシューマシークレット、アクセストークン、アクセストークンシークレットを取得します。
1.https://dev.twitter.com/に移動
2.右上写真からmy applicationに移動
3.Create a new application をクリック
4.適当に項目を埋める。websiteは自分のプロフィールでも貼付ければOK。https://twitter.com/#!/あなたのユーザ名
5.my applications から今登録したアプリを選択
6.settingsでApplication TypeをRead and Writeに変更
7. your access tokenの箇所でcreate access tokenをクリック
8.画面を何度か更新すると your access tokenの箇所にAccess token, Access token secretが表示される
9.Consumer key, Consumer secret, Access token, Access token secretをめでたく取得できるようになる

参考http://www.msng.info/archives/2010/01/twitter_api_oauth_with_php.php

mysql

インストール

portを使いmysqlをmacにインストールします。

sudo port install mysql5-server

インストールが成功すると以下のメッセージが表示されます。

If this is a new install, in order to setup the database you might want to run:
sudo -u _mysql mysql_install_db5

なので、指示の通りに実行します。

sudo -u _mysql mysql_install_db5

参考http://www.pleiades.or.jp/misc/mac/MySQL.html

create database データベースの作成

日本語を使う場合は以下の設定を/etc/my.cnfに作成しておきます。

[mysqld]
default-character-set=utf8

[mysql]
default-character-set=utf8

[mysqldump]
default-character-set=utf8

参考http://blog.livedoor.jp/kage_java/archives/65624194.html

名言を保存しておくデータベースを作成します。

//サーバの起動
#sudo /opt/local/share/mysql5/mysql/mysql.server start
//ルートでログイン
#mysql5 -u root
#create データベースの名前
#create table テーブルの名前
->(主キーとなるカラム名 BIGINT PRIMARY KEY AUTO_INCREMENT,
->名言を格納するカラム名 VARCHAR(256) UNIQUE NOT NULL);
#insert into wisdom VALUES(null, '好きな名言をなにか記入');

実行

以下に表示されているtweet_wisdom_bot.jsをダウンロードします。
コードの中の日本語部分を今まで入手した情報などに変更してください。
そして、以下を実行してください。

node tweet_wisdom_bot.js

コード

crontab

定期的に実行したいならばcrontabを使います。
例として1時間に1回つぶやく場合を示します。

crontab -e
00 * * * * ~/local/bin/node ~/tweet_wisdom_bot.js  

課題

例外ってのが全然分かっていないので勉強しようと思います。
mysqlやらoauthでfunctionを渡すのはなんでだろと思ってましたが、
同期で返れないからと納得しました。あってるんでしょうか?