Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add app id search #35

Merged
merged 4 commits into from
Apr 21, 2014
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 14 additions & 12 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,21 +21,23 @@ AppHtmlWeb は AppHtml を Web アプリ化したツールです。
------------

### AppHtml
1. ブラウザ版ストアでブックマークレットを実行すると、キーワードを入力することなく表示されているコンテンツを検索します。
2. ブラウザ上でテキストを範囲選択した状態でブックマークレットを実行すると、範囲選択されたテキストでコンテンツを検索します。
3. 出力されるHTMLコードをiPhoneやiPadの代表的なエディタに自動挿入することができます。
4. スクリーンショットの画像サイズを指定できます(アプリに限ります)。
5. PHGアフィリエイトに対応したリンクを作成することができます。
6. 出力するテンプレートをカスタマイズすることができます。
7. 設定内容をローカルストレージに保存できます(同一端末・同一ブラウザに限ります)。
1. キーワードから、またはApp StoreやMac App Storeから「リンクをコピー」してURLを直接貼り付けても検索できます。
2. ブラウザ版ストアでブックマークレットを実行すると、キーワードを入力することなく表示されているコンテンツを検索します。
3. ブラウザ上でテキストを範囲選択した状態でブックマークレットを実行すると、範囲選択されたテキストでコンテンツを検索します。
4. 出力されるHTMLコードをiPhoneやiPadの代表的なエディタに自動挿入することができます。
5. スクリーンショットの画像サイズを指定できます(アプリに限ります)。
6. PHGアフィリエイトに対応したリンクを作成することができます。
7. 出力するテンプレートをカスタマイズすることができます。
8. 設定内容をローカルストレージに保存できます(同一端末・同一ブラウザに限ります)。

### AppHtmlWeb
1. ブックマークレットの作成が不要です。
2. 出力されるHTMLコードをiPhoneやiPadの代表的なエディタに自動挿入することができます。
3. PHGアフィリエイトに対応したリンクを作成することができます。
4. 出力するテンプレートをカスタマイズのうえ複数のテンプレートを同時に保存することができます(同一端末・同一ブラウザに限ります)。
5. 設定内容をローカルストレージに保存できます(同一端末・同一ブラウザに限ります)。
6. 設定内容のエクスポート/インポート機能により設定値や出力テンプレートのバックアップ、デバイス間での共有ができます。
2. キーワードから、またはApp StoreやMac App Storeから「リンクをコピー」してURLを直接貼り付けても検索できます。
3. 出力されるHTMLコードをiPhoneやiPadの代表的なエディタに自動挿入することができます。
4. PHGアフィリエイトに対応したリンクを作成することができます。
5. 出力するテンプレートをカスタマイズのうえ複数のテンプレートを同時に保存することができます(同一端末・同一ブラウザに限ります)。
6. 設定内容をローカルストレージに保存できます(同一端末・同一ブラウザに限ります)。
7. 設定内容のエクスポート/インポート機能により設定値や出力テンプレートのバックアップ、デバイス間での共有ができます。

セットアップ
------------
Expand Down
168 changes: 97 additions & 71 deletions apphtml.js
Original file line number Diff line number Diff line change
Expand Up @@ -21,12 +21,7 @@
fmt = decodeURIComponent(script.fmt);

// 見ているサイトがiTunesWebだった場合
if (location.href.indexOf("https://itunes.apple.com/") != -1) {
var urlAry = location.href.split("/id");
appId = urlAry[1];
urlAry = appId.split("?");
appId = urlAry[0];
}
appId = getAppIdFrom(location.href);

// 検索キーワードを取得(選択されたキーワードがある場合にはそっちを優先)
var kwd = '';
Expand All @@ -41,6 +36,8 @@
prompt('Result', 'Not Found ...');
return;
}
// iTunesWeb の URL を入力された場合(そうでない場合 appId == "" となる)
appId = getAppIdFrom(kwd);
}

// bookmarkletの予約語(43個)
Expand All @@ -55,28 +52,53 @@

// メイン処理(非同期実行を防ぐ為にTimerを利用)
var timerId = setInterval(function () {
switch (step) {
case 1:
step = 0;
getWebApi();
break;
case 2:
step = 0;
getWidth();
break;
case 3:
step = 0;
dispData();
break;
case 4:
while (d.getElementById("bmlt"))
d.getElementById("bmlt").parentNode.removeChild(d.getElementById("bmlt"));
clearInterval(timerId);
timerId = null;
return 0;
try {
switch (step) {
case 1:
step = 0;
getWebApi();
break;
case 2:
step = 0;
getWidth();
break;
case 3:
step = 0;
dispData();
break;
case 4:
cleanup();
return 0;
}
} catch (e) {
alert("Something may be wrong.\n->" + e);
cleanup();
}
}, 100);

function cleanup() {
while (d.getElementById("bmlt"))
d.getElementById("bmlt").parentNode.removeChild(d.getElementById("bmlt"));
clearInterval(timerId);
timerId = null;
}

function getAppIdFrom(urlString) {
var appId = '';

if (urlString.indexOf("https://itunes.apple.com/") != -1) {
appId = urlString.split("/id")[1];
if (appId) {
appId = appId.split("?")[0];
}
if (!appId) {
appId = '';
}
}

return appId;
}

// iTunes Search API をコールしてJSON形式で値を取得

function getWebApi() {
Expand Down Expand Up @@ -116,54 +138,58 @@
step = 4;
return;
}
//artworkUrl100がないものをresultsから削除
for (var i = 0; i < data.results.length; i++) {
if (!data.results[i].artworkUrl100) {
data.results.splice(i, 1);
i = i - 1;
}
}
for (var i = 0; i < data.results.length; i++) {
json[i] = data.results[i];
if (knd == "software" || knd == "iPadSoftware" || knd == "macSoftware") {
json[i].description = json[i].description.replace(/\n/g, '<br>');
if (json[i].releaseNotes)
json[i].releaseNotes = json[i].releaseNotes.replace(/\n/g, '<br>');
if (!json[i].supportedDevices)
json[i].supportedDevices = "";
}
if (knd == "movie") {
if (json[i].shortDescription)
json[i].shortDescription = json[i].shortDescription.replace(/\n/g, '<br>');
if (json[i].longDescription)
json[i].longDescription = json[i].longDescription.replace(/\n/g, '<br>');
}
var z = json[i],
x = new Array(bmAry);
if (knd == "software" || knd == "iPadSoftware" || knd == "macSoftware") {
if (eval(z.price) == 0) x.price = '無料';
else x.price = '¥' + fmtNumber(z.price);
x.appname = z.trackCensoredName;
x.title = x.appname + '(' + x.price + ')';
}
if (knd == "song") {
x.title = z.trackCensoredName + ' (' + z.artistName + ')';
}
if (knd == "album") {
x.title = z.collectionCensoredName + ' (' + z.artistName + ')';
}
if (knd == "movie") {
x.title = z.trackCensoredName + ' (' + z.artistName + ')';
}
if (knd == "ebook") {
x.title = z.trackCensoredName + ' (' + z.artistName + ')';
try {
//artworkUrl100がないものをresultsから削除
for (var i = 0; i < data.results.length; i++) {
if (!data.results[i].artworkUrl100) {
data.results.splice(i, 1);
i = i - 1;
}
}
var r = prompt('【' + (i + 1) + '/' + data.results.length + '】' + x.title, 'OK→次, キャンセル→決定');
if (!r) {
hitApp = i;
step = 2;
return;
for (var i = 0; i < data.results.length; i++) {
json[i] = data.results[i];
if (knd == "software" || knd == "iPadSoftware" || knd == "macSoftware") {
json[i].description = json[i].description.replace(/\n/g, '<br>');
if (json[i].releaseNotes)
json[i].releaseNotes = json[i].releaseNotes.replace(/\n/g, '<br>');
if (!json[i].supportedDevices)
json[i].supportedDevices = "";
}
if (knd == "movie") {
if (json[i].shortDescription)
json[i].shortDescription = json[i].shortDescription.replace(/\n/g, '<br>');
if (json[i].longDescription)
json[i].longDescription = json[i].longDescription.replace(/\n/g, '<br>');
}
var z = json[i],
x = new Array(bmAry);
if (knd == "software" || knd == "iPadSoftware" || knd == "macSoftware") {
if (eval(z.price) == 0) x.price = '無料';
else x.price = '¥' + fmtNumber(z.price);
x.appname = z.trackCensoredName;
x.title = x.appname + '(' + x.price + ')';
}
if (knd == "song") {
x.title = z.trackCensoredName + ' (' + z.artistName + ')';
}
if (knd == "album") {
x.title = z.collectionCensoredName + ' (' + z.artistName + ')';
}
if (knd == "movie") {
x.title = z.trackCensoredName + ' (' + z.artistName + ')';
}
if (knd == "ebook") {
x.title = z.trackCensoredName + ' (' + z.artistName + ')';
}
var r = prompt('【' + (i + 1) + '/' + data.results.length + '】' + x.title, 'OK→次, キャンセル→決定');
if (!r) {
hitApp = i;
step = 2;
return;
}
}
} catch (e) {
alert("Something may be wrong. \n->" + e);
}
step = 4;
}
Expand Down