DSからtwitterに投稿するには(6)
DSからtwitterに投稿する話の完結編です。その前に、SJISからUnicodeに変換する関連のソースとデモプログラムをNDS Program Roomにアップしました。昨日のブログに書いたソースを置いています。
DSからteitterに投稿する
この題材で書き始めて、UTF-8の日本語表示の方に話がそれて行って、結局、S-JISで行くことになり、S-JISコードをUTF-8に変換するという流れになりました。
「DSからtwitterに投稿するには」の(1)〜(5)についてもう一度簡単におさらいします。
- twitterへの投稿時にBASIC認証が使える(今のところ)ので、BASE64変換プログラムを作成
- twitterへの投稿にはhttpのPOSTを使うので、POSTのプログラムを作成
- twitterへの投稿文字コードはUTF-8を使うので、UTF-8変換するプログラム作成
- twitterへの投稿時にUTF-8文字コードを16進数変換しなければならないのでプログラム作成
- 上記プログラムを使って文字列をtwiterに投稿するプログラム作成
こんな感じのプログラムを作ってきました。これで、投稿はできるようになったのですが、投稿する内容を入力するところを用意していませんでした。そこで、簡易入力プログラムを作りました。あくまでも文字を入力するだけです。
DSから文字入力
下記のようなソフトキーボードを使って文字を入力します。このソフトキーボードは文字を打つだけです。かな漢字変換もありません。当然ローマ字かな変換もありません。私は25年近くかな入力なのでかながあればOKです。
ということで、入力のところのプログラムです。LeditKBD()でtext[]にラインエディットされた文字列が入ります。文字コードはS-JISです。KanaChk()で濁点・半濁点の文字処理をします。そして、SJIS2UTF8()でS-JISコードがUTF-8に変換されます。これをtwitterPost()プログラムでtwitterに投稿します。
//************************************************** // つぶやくだけ //************************************************** void twitonly( void ) { int ret; char text[256]; char utf8[256]; KeyboardIni( SubScreenA ); // キーボード表示準備をします ShinoPrintBox( SubScreenA, 4*6, 12*1, (u8*)ProgNameVer, 27, RGB(31,31,31),0,0); ShinoPrintBox( SubScreenA, 1*6, 12*3, (u8*)"[SELECT]ボタンでユーザ名とパスワードを再登録できます", 27, RGB(31,31,31),0,0); while( true ){ text[0] = 0; //投稿内容編集 while( true ){ ret = LeditKBD( text, 140, 42, 0, 0, RGB(31,0,0), RGB(31,31,31), RGB(0,0,0) ); if( ret!=0x05 ){ break; } //[X]ボタン以外はループを抜ける。[X]に機能を割り付けていないので } if( ret==0x1B || ret==0x03 ){ break; } if( ret==0x04 ){ //[select]でユーザ名とパスワードの入力 SetUserNamePassWd(); KeyboardIni( SubScreenA ); // キーボード表示準備をします ShinoPrintBox( SubScreenA, 4*6, 12*1, (u8*)ProgNameVer, 27, RGB(31,31,31),0,0); ShinoPrintBox( SubScreenA, 1*6, 12*3, (u8*)"[SELECT]ボタンでユーザ名とパスワードを再登録できます", 27, RGB(31,31,31),0,0); continue; } //濁点などの処理 KanaChk( (unsigned char *)text ); ShinoUpPrintBox( MainScreenA, (u8*)text, 42, RGB(31,31,31),RGB(0,0,0), 1, RGB(0,0,0) ); //UTF-8に変換 SJIS2UTF8( (unsigned char*)text, (unsigned char*)utf8, 256 ); // twitter投稿 ret = twitterPost( utf8, UserName, PassWd ); if( ret!=true ){ ShinoUpPrintBox( MainScreenA, (u8*)"twitterへの投稿に失敗しました。", 42, RGB(31,0,0),RGB(0,0,0), 1, RGB(0,0,0) ); } } }
本当につぶやくだけのプログラムです。ユーザ名とパスワードは別途登録してtwitonly.xmlファイルに保存されます。次回起動時は、このファイルからユーザ名とパスワードを読み出します。
TwitOnly Ver 0.1
上記のプログラムを体裁を整えて、「TwitOnly」というプログラムにしました。全然、実用的では無いですが公開します。エイプリールフールじゃないよ。NDS Program Roomで公開中です。
本当にやりたいことリスト
(ブログの終わりにやりたいことを書いておきたいと思います)
- 求職活動・・・このブログで興味を持った人一声かけてください。m(_ _)m
- Androidプログラム
- Web系のプログラム