【MyScripts】PocketにURLを登録

URLをバックグラウンドでPocketに送信するスクリプトを作りました。バックグラウンド監視を有効にしてから、他のアプリでURLをコピーすると、即時にPocketにURLを送信します。http://t.co/FDY9tVdq #MyScripts
2012-09-28 21:36 via Tweetbot for iOS


// アカウント情報を入力します
var username="ユーザー名を入力";
var password="パスワードを入力";

// APIキーは次のページから取得します
// http://getpocket.com/api/signup
var apikey="APIキーを入力";

var url="https://readitlaterlist.com/v2/add?username="+username+"&password="+password+"&apikey="+apikey+"&url="+TEXT;

var req = new XMLHttpRequest();
req.open("GET", url, false);
req.send(null);

var req = new XMLHttpRequest();
req.open("GET", url, false);
req.send(null);

req.responseText;

【MyScripts】Sylfeed SendToプロファイル作成&投稿スクリプト

Sylfeed向けのMyScriptsスクリプトを作成しました。SylfeedのSendTo登録用URLを作成してTinyURLで変換後にTweetbotを起動します。http://t.co/CHKkuj3D
2012-09-24 16:39 via Tweetbot for iOS


コード:

var sylfeedUrl="sylfeed://sendto/add?title="+encodeURIComponent(prompt("タイトル"))+"&url="+encodeURIComponent(prompt("URL"))+"&summary="+encodeURIComponent(prompt("説明"));

var url = "http://tinyurl.com/api-create.php?url="+encodeURIComponent(sylfeedUrl);

var req = new XMLHttpRequest();
req.open("GET", url, false);
req.send(null);

"tweetbot:///post?text="+encodeURIComponent(" "+req.responseText+" #sylfeedsendto");

【MyScripts】簡単Webスクレイピング

一つ前の投稿(歌詞取得スクリプト「SimpleLyrics」)からの続きです。

MyScriptsを使ってWebスクレイピングを行う手順を簡単に説明します。
ここではDOMは利用せずに、単純な正規表現を使った方法を紹介します。

1.Webページをダウンロードします。

// Webページを取得するための
// ユーティリティ関数
function httpGet(url) {
var xhr = new XMLHttpRequest();
xhr.open(“GET”, url, false);
xhr.send(null);
return xhr.responseText;
}

// 再生中のアーティスト名と曲タイトルを使って
// 検索用のURLを構築します
var listUrl=”http://m.kget.jp/result.php?cat=0&artist=”+encodeURIComponent(SONG.artist)+”&title=”+encodeURIComponent(SONG.title)+”&tieup=&phrase=”;

// Webサイトで検索して
// 検索結果のページを取得します(※1)
var listPage=httpGet(listUrl);

// 検索結果の1件目の曲IDを取り出して
// 歌詞ページのURLを構築します(※2)
var resultIndex=listPage.match(/song=[0-9]+/g)[0];
var lyricsUrl=”http://m.kget.jp/lyric.php?”+resultIndex;

// 歌詞ページを取得します
var lyricsPage=httpGet(lyricsUrl);

これでスクレイピング対象の文字列をlyricsPage変数に取得できました。
(ここでは検索処理を行なっていますが、検索が不要なWebページでは上記※1と※2は不要です)

2.lyricsPageから必要な箇所を抜き出します。

あらかじめ歌詞ページのソースを確認しておき、<div class=”lyric”>から始まる部分に歌詞があることを確認しておきます。

// ページの中から歌詞を抜き出します
lyricsPage.match(/<div class=”lyric”>n([sS]+?)<div/m);

([sS]+?) 部分に歌詞が入りますが、これはRegExp.$1内に保存されています。

3.最後に、歌詞部分の中に含まれている不要な改行タグ <br /> を一括削除します。

// 不要な改行タグを削除します
var lyrics=RegExp.$1.replace(/<br />/g, “”);

これで不要なタグが入っていない歌詞部分だけをlyrics変数に取り出すことが出来ました。

あとはこのデータを好きなように加工できます。

上記のURLを変更したり、スクレイピングの正規表現を変更していろいろと試してみると面白いと思います。

 

【MyScripts】歌詞取得スクリプト「SimpleLyrics」

再生中の曲の歌詞を検索、表示する「SimpleLyrics」スクリプトを作りました。

歌詞は「歌詞GET」から取得します。歌詞の著作権についてはサイトを参照して下さい。

MyScriptsへの登録はこちらからどうぞ。


/* mdoc
概要:: 再生中の曲の歌詞を検索、表示します
作者:: @unitkay
版数:: 0.0.2
更新:: 2012-09-02 08:57:10
分類:: ミュージック
識別:: simplelyrics
URL::
詳細_______________________________
再生中の曲の歌詞を「歌詞GET」から取得します。
歌詞の著作権についてはサイトを参照して下さい。
___________________________________
*/

// Webページを取得するための
// ユーティリティ関数
function httpGet(url) {
var xhr = new XMLHttpRequest();
xhr.open(“GET”, url, false);
xhr.send(null);
return xhr.responseText;
}

// 再生中のアーティスト名と曲タイトルを使って
// 検索用のURLを構築します
var listUrl=”http://m.kget.jp/result.php?cat=0&artist=”+encodeURIComponent(SONG.artist)+”&title=”+encodeURIComponent(SONG.title)+”&tieup=&phrase=”;

// Webサイトで検索して
// 検索結果のページを取得します
var listPage=httpGet(listUrl);

// 検索結果の1件目の曲IDを取り出して
// 歌詞ページのURLを構築します
var resultIndex=listPage.match(/song=[0-9]+/g)[0];
var lyricsUrl=”http://m.kget.jp/lyric.php?”+resultIndex;

// 歌詞ページを取得します
var lyricsPage=httpGet(lyricsUrl);

// ページの中から歌詞を抜き出します
lyricsPage.match(/<div class=”lyric”>n([sS]+?)<div/m);

// 不要な改行タグを削除します
var lyrics=RegExp.$1.replace(/<br />/g, “”);

// MyScriptsに歌詞を渡して完了
lyrics;

MyScriptsに外部ライブラリを簡単に登録する方法(例:ecl.js文字コードライブラリ)

#MyScripts に外部JSライブラリを登録する方法(ZIP)
1.SafariでZIPファイルをダウンロード
2.OpenInでGoodReaderに渡して、解凍
3.jsファイルを内蔵ビューアで表示し、OpenInでMyScriptsに渡して、新規スクリプトとして登録
2012-04-07 15:53 via Tweetbot for iOS


この方法で例えば文字コード変換ライブラリのEscape Codec Libraryを #MyScripts に登録できます。OpenInを使うと新規スクリプトを簡単に登録できるので利用してみて下さい。http://t.co/i5dvG6zn
2012-04-07 15:59 via Tweetbot for iOS


登録した外部ライブラリは、#IMPORT文を使って自分のスクリプトから利用できます。先ほどのeclの場合、#IMPORT ecl.js とするだけでEscapeSJIS()などの便利な関数を利用できるようになります。#MyScripts
2012-04-07 16:05 via Tweetbot for iOS


素晴らしい例がこちら!RT @freedomcat: @unitkay ecl.jsというライブラリ用意して、次のコードをopenURLで書いて、外部リンク作って、検索ハブに設定しました。 https://t.co/DYp3v6TB #MyScripts
2012-04-07 16:07 via Tweetbot for iOS


“MyScripts (Unit Kay 350円 評価★★★★ 6件の評価 0.7MB)” http://t.co/YPkryGji #SAppInf http://t.co/x9EfMh42
2012-03-02 22:37 via Tweet Button

MyScriptsとTouch Icon Creatorを使って定型メールをホーム画面に置く

MyScriptsのサンプルです。
var runurl=”mailto://”+TEXT+”?subject=”+encodeURIComponent(prompt(“件名”))+”&body=”+encodeURIComponent(prompt(“本文”));
(続く)
2012-04-04 21:57 via Tweetbot for iOS


MyScriptsサンプル(続き)
“ticon://url=”+encodeURIComponent(runurl)+”&title=”+encodeURIComponent(prompt(“アイコンタイトル”));
2012-04-04 21:58 via Tweetbot for iOS


MyScriptsとTouch Icon Creatorを組み合わせて、ホーム画面に定型メールのアイコンを置けます。
2012-04-04 21:59 via Tweetbot for iOS


使い方ですが、連絡帳などでメアドをコピーしてから、MyScriptsを起動して、先ほどのスクリプトを実行します。件名、本文、アイコンタイトルを入力すると、Touch Icon Creatorが起動します。書き忘れていましたが稲妻マーク(OpenUrl)で登録して下さい。
2012-04-04 22:06 via web


“Touch Icon Creator (85円 評価★★★ 158件の評価 4.9MB)” http://t.co/tyGBNG5w #SAppInf http://t.co/x9EfMh42
2012-03-29 18:32 via Twitter for iPhone


“MyScripts (Unit Kay 350円 評価★★★★ 6件の評価 0.7MB)” http://t.co/YPkryGji #SAppInf http://t.co/x9EfMh42
2012-03-02 22:37 via Tweet Button

バックグランド実行用スクリプトをホーム画面に置くためのスクリプト処理用スクリプト

MyScriptsのバックグランド実行用のスクリプトをホーム画面に置くためのスクリプト処理用スクリプトを作ってみます(Touch Icon Creatorが必要です。便利なのでぜひ購入して頂ければ)。
2012-03-28 18:36 via web


1.Touch Icon Creatorスクリプトを編集
2.アクションメニューから「スクリプトを実行」「スクリプトを複製」を選択
3.スクリプト名を適当なものへ変更
4.一行目にあるmyscripts://runをmyscripts://backgroundに変更し、保存
2012-03-28 18:36 via web


以上です。これでMyScriptsの任意のスクリプトをバックグラウンドで実行するためのアイコンをホーム画面に追加できるようになりました。簡単ですのでぜひお試しください。
2012-03-28 18:39 via web


“Touch Icon Creator (85円 評価★★★ 158件の評価 4.9MB)” http://t.co/tyGBNG5w #SAppInf http://t.co/x9EfMh42
2012-03-29 18:32 via Twitter for iPhone


“MyScripts (Unit Kay 350円 評価★★★★ 6件の評価 0.7MB)” http://t.co/YPkryGji #SAppInf http://t.co/x9EfMh42
2012-03-02 22:37 via Tweet Button

GoogleカレンダーAPIで終日の予定を登録する

NSDateComponentsを使って年月日のみを有効にします。

[sourcecode language=”cpp”]
GDataEntryCalendarEvent *newEvent = [GDataEntryCalendarEvent calendarEvent];
GDataDateTime *startDateTime = [GDataDateTime dateTimeWithDate:salesDate
timeZone:[NSTimeZone systemTimeZone]];

unsigned unitFlags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit;
NSDateComponents *comps = [[NSCalendar currentCalendar] components:unitFlags fromDate:salesDate];
[startDateTime setDateComponents:comps];
GDataWhen *when = [GDataWhen whenWithStartTime:startDateTime
endTime:nil];

[newEvent addTime:when];
[/sourcecode]

他のアプリがインストール済みかどうかを取得する

[sourcecode language=”cpp”]
if ( [[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"inetdual://"]] ) {
// ここに連携メニューなどのコードを書く
}
[/sourcecode]

前提:他のアプリが独自スキームを実装していること

「お好み発売日情報」ではこの方法で「詳細をiNetDualで開く」リンクの表示を切り替えています。ちょっとした技ですが、動作しないメニューを表示したままにすると審査でリジェクトされるため、連携用のメニューの表示切り替えに使えると思います。

各種Webサービス検索

Programmable Web
http://www.programmableweb.com/

各種Webサービスを検索するサービスです。「Music」や「DVD」といったキーワードで検索すると、それに関連するWebサービスを表示してくれます。また、Webサービスを使ったマッシュアップやコードを検索することも出来ます。

マッシュアップのブームは去ってしまった感がありますが、独自アプリのデータソースとしては便利に使えると思います。