2014年10月21日火曜日

ソフトを使用せずにiPod内の曲取り出し[Mac専用]

もう、iPhoneやiPadが主流になってき、iPodの存在価値がだんだん薄れて来ている今日この頃。
昔友達にもらったiPodの内の曲をPCに入れようと、今日はその移行作業をやって半日が終わった。

アプリケーション(DeTuneやTunesGo) を使って、iPod内のソフトを取り出す方法はあるけど、基本的に無駄なソフトは入れたくないので、昔の記事を参考にし、トライした。
iPod nano(7世代)のやつなので昔のやり方が通用するか分からなかったけど、なんとか成功。
やり方を下記にメモる。

[1]ターミナル起動
 ここの(1)ターミナル起動と同様にターミナルを起動させる。

[2]ターミナルからiPodのディレクトリ(フォルダ)にアクセス
 ターミナル上で「cd /Volumes/XXX\ の\  iPod/iPod_Control/Music/」を入力し、enterキーを 入力。
 「XXX\ の\ iPod」はiPodをMacに接続した時に、デスクトップに表示される名前。
 「cd /Volumes/」を入力後、tabキーを入力するとiPodの名前の候補がでるので、それで判断する。

$ cd /Volumes/yuta\ の\ iPod/iPod_Control/Music/

[3]音楽ファイルをコピー
 ターミナル上で、「cd FXX」を入力しentarキーを入力 。(XX=00〜99 )
 その後、「open ./」を入力しenterキーを入力。その後、フォルダが開く。

$ cd F01
$ open ./


[4][3]で開いたフォルダ内の音楽ファイルをiTunesにドラッグ&ドロップ
 [3]で開いたフォルダ内の音楽ファイルを全て選択し、iTunesに ドラッグ&ドロップすると、ファイルのコピーが行われ 自動で曲名が表示される。

------------------------------------------------------------------------------------ 
iPod内のiPod_Control/Music/FXX内に格納されている。
FXX内のファイルはiPodやiTunesが識別できるファイル名で保存されているので、ファイル名から何の音楽か分からない。

iTunesにコピーした時に、音楽名などの付加情報が表示されるようになる。
また、FXXはiPodに保存した音楽数によりフォルダ分けが行われるので、
iPod内の全音楽をiTunesに保存する場合は、全FXXフォルダ内ファイルをiTunesにコピーする必要がある。

ちなみにiPod内のフォルダやファイルは基本的に隠しファイルとなっているので、Finderから参照することができない。(参照したい場合は、隠しフォルダを表示するよう変更が必要。ここを参照)



2014年10月14日火曜日

[Webアプリ]Twitterとの連携 -tweepyの使い方-

pythonのtweepyを使ったTwitterへのツイート方法の説明。

僕の環境は、CentOS6、python2.6。

(1)easy_installのインストール
※既にインストールしている場合は不要
$ sudo wget -P ./ http://peak.telecommunity.com/dist/ez_setup.py
$ sudo python ez_setup.py

(2)tweepyのインストール
$ sudo easy_install tweepy


(3)twitterアカウントからアプリケーション登録
にアクセスし、アプリケーション登録を行う。

Name     → アプリケーションの名前
Description → アプリケーションの説明(10文字以上200文字以下にしないといけない)
Website       → 自分のWebサイト(ブログでもOK)
CallBack     → OAuth認証成功後に移動したいwebページのURL(記入しなくてもOK)


(4)アプリケーションのアクセスkeyの取得
登録後、「Permission」タブをクリックし、アプリケーションのアクセスタイプを指定。
・Read Only → ツイート情報の読み取り専用
・Read and Write → 読み取りと書き込み(ツイート)
・Read, Write and Access direct messages → 読み取りと書き込みとユーザ情報の取得編集



次に、「Keys and Access Tokens」タブをクリックし、「Token Actions」内の「Create my access token」ボタンをクリックする。
画面に表示された下記4つの値をメモる。この値を使ってtweepyでツイートできる。
・Consumer Key (API Key)
・Consumer Secret (API Secret)
・Access Token
・Access Token Secret

(5)tweepyを使用してツイート
あとは以下のようなpythonコードを書いて実行するだけ。
#encoding: utf-8                                                                                                                                         
import tweepy;

CONSUMER_KEY    = "XXXXXXXXXXXXXXXXXXXXXXXXXX"; #Consumer Key (API Key)の値                                                                        
CONSUMER_SECRET = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"; #Consumer Secret (API Secret)の値                                                        
ACCESS_TOKEN    = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"; #Access Tokenの値                                                                        
ACCESS_TOKEN_SECRET = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";#Access Token Secretの値                                                              

l_mess = "ツイート内容";

l_auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET);
l_auth.set_access_token(ACCESS_TOKEN, ACCESS_TOKEN_SECRET);
l_api = tweepy.API(l_auth);
l_api.update_status(l_mess);

あと、連続で同じ内容のツイートを行うと「Status is a duplicate」でエラーになるので気をつけること。
Traceback (most recent call last):
  File "a.py", line 15, in
    l_api.update_status(l_mess);
  File "/usr/lib/python2.6/site-packages/tweepy-2.3.0-py2.6.egg/tweepy/binder.py", line 230, in _call
    return method.execute()
  File "/usr/lib/python2.6/site-packages/tweepy-2.3.0-py2.6.egg/tweepy/binder.py", line 203, in execute
    raise TweepError(error_msg, resp)
tweepy.error.TweepError: [{'message': 'Status is a duplicate.', 'code': 187}]


余談で、webアプリ上では、わざわざOAuth認証でtwitterにアクセスさせたくないので、
クラスにして、一度アクセスすれば、クラスで内包させる形でアクセス情報をメモリ上に保存させている。
どのクラスでもツイート時はTWIT.postTwit("メッセージ")で一度のOAuth認証でツイートできる。
#encoding: utf-8                                                                                                                                         

import tweepy;

class Twit:
    AUTH = None;
    API  = None;
    CONSUMER_KEY    = "XXXXXXXXXXXXXXXXXXXXXXXXXX";
    CONSUMER_SECRET = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
    ACCESS_TOKEN    = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
    ACCESS_TOKEN_SECRET = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
    def __init__(self):
        if( self.API==None ):
            self.AUTH = tweepy.OAuthHandler(CONSUMER_KEY, self.CONSUMER_SECRET)
            self.AUTH.set_access_token(self.ACCESS_TOKEN, self.ACCESS_TOKEN_SECRET)
            self.API = tweepy.API(self.AUTH);
    def postTwit(self,p_mess):
        if( self.API==None ):
            self.__init__();
        self.API.update_status(p_mess);
TWIT=Twit();

2014年10月4日土曜日

Firefoxで複数のユーザアカウント(プロファイル)を使用する方法

一つのブラウザで目的に応じて設定内容、履歴、ブックマーク、ユーザアカウント/パスワード情報を分けたいと思う事ありませんか?

僕はMacでfirefoxを使っています。
web開発で必要なアドオンをインストールしているのですが、webサーフィンしている時はこれらのアドオンは不要です。
そのため、firefoxのユーザアカウント(プロファイル)を分けて、目的に応じて使い分けています。

以下にプロファイルの作成の仕方と起動方法を載せます。


■プロファイルの作成
(1)ターミナルを起動
 ※基本的にターミナル操作になります。
      firefoxは停止しといて下さい。

    spotlightに「terminal」と入力し、ヒットしたターミナルをクリックします。
 


(2)プロファイルマネージャの起動
 ターミナル画面内に下記を入力します。

 /Applications/Firefox.app/Contents/MacOS/firefox -p

 ※今後この「/Applications/Firefox.app/Contents/MacOS/firefox」を散々使うので、下記コマンドを入力して、bashにaliasしときます。
  これにより、コマンドプロンプトに「firefox」と入力すると、長ったらしい「/Applica.../firefox」を入力したことと同義になります。

echo alias firefox=\'/Applications/Firefox.app/Contents/MacOS/firefox\' >> .bash_profile
(3)プロファイルの追加1  (2)を入力すると、以下のような画面がでるので、「新規プロファイルを作成...」ボタンをクリックします。  僕はすでに[toma1][toma2][toma3]を作成しているので、3プロファイルが出来ています。
(4)プロファイルの追加2   「はじめに」画面では「続ける」ボタンをクリックし、
「完了」画面ではプロファイルの名前を入力し、「完了」ボタンをクリックします。
  すると、プロファイルを新規に作成できました。
ちなみに、プロファイルを選択した状態で、「今後このプロファイルを使用する」にチェックを入れると、何も指定せずにfirefox起動時のデフォルトプロファイルとなります。 (5)起動
    「firefoxを起動」ボタンをクリックします。

■プロファイルの作成
 ターミナルを起動し、起動したいプロファイル名を指定して下記コマンドを入力するだけ。

firefox -p <プロファイル名> &
【例】
firefox -p test_user &