tdiary-contrib 3.2.2.20130518 → 3.2.2.20130614
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.travis.yml +1 -3
- data/doc/ja/plugin/image_gps.txt +56 -17
- data/doc/ja/plugin/playstore.txt +31 -0
- data/js/socialbutton.js +8 -2
- data/lib/exifparser/README +6 -12
- data/lib/tdiary-contrib.rb +7 -6
- data/plugin/brow_si.rb +32 -0
- data/plugin/image_gps.rb +110 -56
- data/plugin/instagr.rb +1 -0
- data/plugin/playstore.rb +161 -0
- data/plugin/tweet_quote.rb +102 -48
- data/plugin/twitter_badge.rb +1 -1
- data/util/estraier-search/estraier-register.rb +2 -1
- data/util/estraier-search/estraier-search.rb +2 -1
- data/util/image-gallery/misc/plugin/recent_image.rb +1 -1
- metadata +7 -27
- data/doc/ja/plugin/image_detail.txt +0 -69
- data/doc/ja/plugin/image_gps2.txt +0 -41
- data/lib/exifparser/BUGS +0 -1
- data/lib/exifparser/ChangeLog +0 -169
- data/lib/exifparser/install.rb +0 -1015
- data/lib/exifparser/lib/exifparser/makernote/canon.rb +0 -502
- data/lib/exifparser/lib/exifparser/makernote/fujifilm.rb +0 -415
- data/lib/exifparser/lib/exifparser/makernote/minolta.rb +0 -84
- data/lib/exifparser/lib/exifparser/makernote/mk_nikonflensname.rb +0 -39
- data/lib/exifparser/lib/exifparser/makernote/nikon.rb +0 -267
- data/lib/exifparser/lib/exifparser/makernote/nikon2.rb +0 -581
- data/lib/exifparser/lib/exifparser/makernote/nikonflensname.rb +0 -438
- data/lib/exifparser/lib/exifparser/makernote/olympus.rb +0 -225
- data/lib/exifparser/lib/exifparser/makernote/prove.rb +0 -84
- data/lib/exifparser/lib/exifparser/makernote/sigma.rb +0 -237
- data/lib/exifparser/lib/exifparser/pre-setup.rb +0 -1
- data/lib/exifparser/lib/exifparser/scan.rb +0 -278
- data/lib/exifparser/lib/exifparser/tag.rb +0 -2298
- data/lib/exifparser/lib/exifparser/thumbnail.rb +0 -76
- data/lib/exifparser/lib/exifparser/utils.rb +0 -88
- data/lib/exifparser/lib/exifparser.rb +0 -265
- data/lib/exifparser/sample/exifview.rb +0 -279
- data/plugin/image_detail.rb +0 -143
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6160075d3a10a3f127fd3ec59f82b59a5ea4e494
|
4
|
+
data.tar.gz: 4302b52ef1948c223e5e1ce311c13bc601856e45
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2c3204d15ab266d374ae86082854cd7a82f38118509b6b85e56ef69ba5aedca4fa0e66b8682e4de391b671b6cac9376c3f0e124ab8ab659417eeef78225656cd
|
7
|
+
data.tar.gz: 52c0bd44604864f41e488564e38564c1e20b7126a3faf320aa224dc2f71bea2ebfab0279f426eb6c4e9f09105a467f6cb77b0445d6c9b4b6409eddc724233d70
|
data/.travis.yml
CHANGED
data/doc/ja/plugin/image_gps.txt
CHANGED
@@ -1,35 +1,74 @@
|
|
1
1
|
image_gps.rb
|
2
2
|
|
3
3
|
機能
|
4
|
-
|
5
|
-
|
6
|
-
|
4
|
+
JPEGファイルに含まれるExif情報を解析し、各種撮影条件を表示します。
|
5
|
+
また、位置情報が含まれる場合、周辺地図ををポップアップ表示し、
|
6
|
+
Googleマップへのリンクを生成します。
|
7
7
|
|
8
|
-
|
9
|
-
revision 1.7:
|
10
|
-
リンク先をGoogleMapにした。
|
11
|
-
モバイルモード時も世界測地系に変換する。
|
12
|
-
|
13
|
-
インストール
|
8
|
+
前提条件
|
14
9
|
このPluginはimage.rbが導入されていることを前提としています。
|
15
10
|
image.rbを有効にしてください。また、image_ex.rbと共存することはできません。
|
16
11
|
|
17
12
|
・ExifParserの導入
|
18
13
|
image_gps.rbはExifのパーサとして、ExifParserを使用しています。
|
19
|
-
|
14
|
+
以下のコマンドで導入できます。
|
15
|
+
#gem install exifparser
|
20
16
|
|
21
17
|
・Pluginのインストール
|
22
18
|
image_gps.rbを適切な場所に配置してください。多言語用リソースは存在しません。
|
23
19
|
|
24
|
-
|
25
|
-
|
26
|
-
|
20
|
+
・Google Maps API Keyの取得
|
21
|
+
ポップアップでの地図表示を行う場合は、
|
22
|
+
Google API console( https://code.google.com/apis/console )
|
23
|
+
にてStatic Maps APIのAPIキーを生成し、[設定]-[その他]-[image_gpsの設定]の
|
24
|
+
Google Static Maps API Keyに生成されたAPIキーを設定してください。
|
25
|
+
地図のポップアップ表示機能を使用しない場合は、設定する必要はありません。
|
26
|
+
API Keyに関する詳細は、
|
27
|
+
https://developers.google.com/maps/documentation/staticmaps/?hl=ja
|
28
|
+
も参照してください。
|
29
|
+
|
30
|
+
|
31
|
+
・Exif情報の表示
|
32
|
+
[設定]-[その他]-[image_gpsの設定]のShow Exif Infoに値を設定することにより、
|
33
|
+
任意のExif情報を表示することができます。
|
34
|
+
Exifのタグ名をスペース区切りで記述してください
|
35
|
+
例) Model FocalLength FNumber ExposureTime ExposureBiasValue
|
36
|
+
で、モデル名、焦点距離、F値、露出時間、露出補正が表示されます。
|
37
|
+
|
38
|
+
・地図サイトへのリンクURLの設定
|
39
|
+
[設定]-[その他]-[image_gpsの設定]のMap Link URLにURLを記述することにより
|
40
|
+
任意の地図サービスサイトへのリンクを設定することができます。
|
41
|
+
主要なサービスについては、セレクタから選択することによりデフォルト値が設定されます。
|
42
|
+
未設定の場合はGoogleマップへのリンクが設定されます。
|
43
|
+
|
27
44
|
|
28
|
-
携帯端末でアクセスした場合は、http://walk.eznavi.jp/ へのリンクを生成します。
|
29
|
-
auのezナビウォーク対応機種ではezナビウォークを起動するページが表示されます。
|
30
|
-
それ以外の端末ではhttp://map.navitime.jp/ へリダイレクトされます。
|
31
45
|
|
32
|
-
|
46
|
+
・CSSの追加
|
47
|
+
写真と撮影条件をそれっぽく表示するために、CSSを設定する必要があります。
|
48
|
+
apend_css.rbを使用すると簡単にCSSを追加することができます。
|
49
|
+
参考に、作者が設定しているCSSを示します。
|
50
|
+
|
51
|
+
--ここから
|
52
|
+
img.photo{
|
53
|
+
float:left;
|
54
|
+
clear:both;
|
55
|
+
}
|
56
|
+
|
57
|
+
div.photo_detail{
|
58
|
+
clear:both;
|
59
|
+
display:block;
|
60
|
+
margin:0.5em;
|
61
|
+
padding:0.5em;
|
62
|
+
}
|
63
|
+
|
64
|
+
|
65
|
+
img.map {
|
66
|
+
outline:solid 5px gray;
|
67
|
+
}
|
68
|
+
--ここまで
|
69
|
+
|
70
|
+
使用方法
|
71
|
+
プラグインの書式は、image.rbと同じです。
|
33
72
|
|
34
73
|
制限事項
|
35
74
|
secureモードには対応していません。
|
@@ -0,0 +1,31 @@
|
|
1
|
+
playstore.rb
|
2
|
+
|
3
|
+
機能
|
4
|
+
GooglePlayのアプリ情報の表示及びリンクの生成を行います。
|
5
|
+
|
6
|
+
|
7
|
+
・market_botの導入
|
8
|
+
GooglePlayのパーサとして、market_botを使用しています。
|
9
|
+
通常は以下のコマンドで導入できます。
|
10
|
+
#gem install market_bot
|
11
|
+
|
12
|
+
・Pluginのインストール
|
13
|
+
playstore.rbを適切な場所に配置してください。多言語用リソースは存在しません。
|
14
|
+
|
15
|
+
・使用方法
|
16
|
+
アプリIDを引数にしてプラグインを呼び出します。
|
17
|
+
アプリIDはアンドロイドアプリ一つ一つに設定されており、GoogleMapの場合は、
|
18
|
+
com.google.android.apps.maps
|
19
|
+
です。
|
20
|
+
|
21
|
+
例)
|
22
|
+
tDiary記法
|
23
|
+
<%= playstore 'com.google.android.apps.maps' %>
|
24
|
+
wiki記法
|
25
|
+
{{playstore 'com.google.android.apps.maps'}}
|
26
|
+
|
27
|
+
また、playstoreのかわりにplaystore_txtを呼び出すことにより
|
28
|
+
テキストのみのリンクを生成することもできます。
|
29
|
+
|
30
|
+
・制限事項
|
31
|
+
現状は英語版のGooglePlayの内容が表示され、リンク先も英語版になります。
|
data/js/socialbutton.js
CHANGED
@@ -90,13 +90,19 @@ $(function() {
|
|
90
90
|
return $(this).find('.socialbutton').size() == 0
|
91
91
|
})
|
92
92
|
.each(function() {
|
93
|
+
var anchor = $(this).find('h3 a');
|
93
94
|
if ($tDiary.blogkit) {
|
94
95
|
var link = $(this).children('h2').find('a:first').get(0);
|
95
96
|
var url = link ? link.href : document.URL;
|
96
97
|
var title = $(this).children('h2').find('.title').text();
|
98
|
+
} else if (anchor.size() == 0) {
|
99
|
+
// The section may not have an anchor on etdiary style.
|
100
|
+
// https://github.com/tdiary/tdiary-contrib/issues/59
|
101
|
+
var url = $(this).parents('.day').find('h2 a:first').get(0).href;
|
102
|
+
var title = $(this).parents('.day').find('h2 .title').text();
|
97
103
|
} else {
|
98
|
-
var url =
|
99
|
-
var title =
|
104
|
+
var url = anchor.get(0).href;
|
105
|
+
var title = anchor.attr('title');
|
100
106
|
}
|
101
107
|
if (url && title) {
|
102
108
|
// console.debug('loading socialbutton: ' + title);
|
data/lib/exifparser/README
CHANGED
@@ -1,15 +1,9 @@
|
|
1
|
-
|
1
|
+
ExifParserは、tdiary-contribの管理から外れました。
|
2
2
|
|
3
|
-
|
3
|
+
通常は以下のコマンドによりインストールすることができます。
|
4
|
+
#gem install exifparser
|
4
5
|
|
5
|
-
|
6
|
-
$
|
7
|
-
|
6
|
+
もしくは、
|
7
|
+
$git clone https://github.com/kp1/exifparser.git
|
8
|
+
でソースコードを取得可能です。
|
8
9
|
|
9
|
-
= License
|
10
|
-
|
11
|
-
Ruby's
|
12
|
-
|
13
|
-
= Author
|
14
|
-
|
15
|
-
Ryuichi Tamura (r-tam@fsinet.or.jp)
|
data/lib/tdiary-contrib.rb
CHANGED
@@ -1,19 +1,20 @@
|
|
1
|
+
require 'tdiary'
|
2
|
+
require 'tdiary/application'
|
3
|
+
|
1
4
|
module TDiary
|
2
5
|
class Contrib
|
3
6
|
def self.root
|
4
7
|
File.expand_path('../..', __FILE__)
|
5
8
|
end
|
6
9
|
|
7
|
-
class Assets
|
8
|
-
def self.setup(environment)
|
9
|
-
environment.append_path File.join(TDiary::Contrib.root, 'js')
|
10
|
-
end
|
11
|
-
end
|
12
|
-
|
13
10
|
class Plugin
|
14
11
|
def self.setup(sp_path)
|
15
12
|
sp_path << File.join(TDiary::Contrib.root, 'plugin')
|
16
13
|
end
|
17
14
|
end
|
18
15
|
end
|
16
|
+
|
17
|
+
Application.configure do
|
18
|
+
config.assets_paths << File.join(TDiary::Contrib.root, 'js')
|
19
|
+
end
|
19
20
|
end
|
data/plugin/brow_si.rb
ADDED
@@ -0,0 +1,32 @@
|
|
1
|
+
#
|
2
|
+
# brow_si.rb: insert brow.si code
|
3
|
+
#
|
4
|
+
# Copyright (C) 2012 by hb <smallstyle@gmail.com>
|
5
|
+
#
|
6
|
+
|
7
|
+
add_conf_proc( "brow_si", "Brow.si" ) do
|
8
|
+
if @mode == "saveconf"
|
9
|
+
@conf["brow.si.site_id"] = @cgi.params["brow.si.site_id"][0]
|
10
|
+
end
|
11
|
+
|
12
|
+
<<-HTML
|
13
|
+
<h3 class="subtitle">Website Brow.si Site ID</h3>
|
14
|
+
<p><input name="brow.si.site_id" value="#{h @conf["brow.si.site_id"]}" size="80"></p>
|
15
|
+
HTML
|
16
|
+
end
|
17
|
+
|
18
|
+
add_footer_proc do
|
19
|
+
if @conf["brow.si.site_id"] and @conf.smartphone?
|
20
|
+
|
21
|
+
<<-SCRIPT
|
22
|
+
<script type="text/javascript">
|
23
|
+
window['_brSiteId'] = '#{h @conf["brow.si.site_id"]}';
|
24
|
+
(function(d){
|
25
|
+
var i='browsi-js'; if (d.getElementById(i)) {return;}
|
26
|
+
var js=d.createElement("script"); js.id=i; js.async=true;
|
27
|
+
js.src='//js.brow.si/br.js'; (d.head || d.getElementsByTagName('head')[0]).appendChild(js);
|
28
|
+
})(document);
|
29
|
+
</script>
|
30
|
+
SCRIPT
|
31
|
+
end
|
32
|
+
end
|
data/plugin/image_gps.rb
CHANGED
@@ -1,46 +1,31 @@
|
|
1
1
|
# -*- coding: utf-8 -*-
|
2
|
-
# image_gps.rb $Revision: 1.
|
2
|
+
# image_gps.rb $Revision: 1.1 $
|
3
3
|
#
|
4
4
|
# 概要:
|
5
|
-
#
|
5
|
+
#
|
6
6
|
#
|
7
7
|
# 使い方:
|
8
8
|
# 絵日記Plugin(image.rb)とおなじ
|
9
9
|
#
|
10
|
-
# Copyright (c)
|
10
|
+
# Copyright (c) 2009,2010 kp <kp@mmho.no-ip.org>
|
11
11
|
# Distributed under the GPL
|
12
12
|
#
|
13
13
|
|
14
14
|
=begin ChangeLog
|
15
15
|
2010-04-21 kp
|
16
|
-
*
|
17
|
-
|
18
|
-
*
|
19
|
-
2009-
|
20
|
-
* walk.eznavi.jpの場合のクエリを修正
|
21
|
-
* リンク先をGoogle Mapsに
|
22
|
-
* wgs2tkyを使用しない
|
23
|
-
2008-05-22 kp
|
24
|
-
* MapDatumがTOKYO以外の場合、WGS-84と類推する
|
25
|
-
2008-01-17 kp
|
26
|
-
* いろいろ変更
|
27
|
-
2006-03-28 kp
|
28
|
-
* cooperation with ALPSLAB clip!
|
29
|
-
2006-03-27 kp
|
30
|
-
* use exifparser
|
31
|
-
2005-07-25 kp
|
32
|
-
* correct link URL when access with mobile.
|
33
|
-
2005-07-19 kp
|
34
|
-
* MapDatum macth to WGS84
|
35
|
-
2005-05-25 kp
|
36
|
-
* correct URL link to Mapion.
|
37
|
-
2005-05-24 kp
|
38
|
-
* create link to http://walk.eznavi.jp when access with mobile.
|
39
|
-
2004-11-30 kp
|
16
|
+
* スマートフォン対応
|
17
|
+
* Google Maps API Keyが設定されていない場合はStaticMAPを生成しない
|
18
|
+
* リンク先をGoogle Mapsに統一
|
19
|
+
2009-06-03 kp
|
40
20
|
* first version
|
21
|
+
* fork from image_gps2.rb
|
41
22
|
=end
|
42
23
|
|
43
|
-
|
24
|
+
begin
|
25
|
+
require 'exifparser'
|
26
|
+
rescue
|
27
|
+
retry if require 'rubygems'
|
28
|
+
end
|
44
29
|
|
45
30
|
def tky2wgs lat,lon
|
46
31
|
lat_w = lat - lat*0.00010695 + lon*0.000017464 + 0.0046017
|
@@ -67,22 +52,26 @@ def image( id, alt = 'image', thumbnail = nil, size = nil, place = 'photo' )
|
|
67
52
|
else
|
68
53
|
size = ""
|
69
54
|
end
|
70
|
-
|
71
|
-
|
72
|
-
|
55
|
+
|
56
|
+
show_exif_info = @conf['image_gps.show_exif_info']
|
57
|
+
show_exif_info = '' if show_exif_info.nil?
|
58
|
+
google_maps_api_key = @conf['image_gps.google_maps_api_key']
|
59
|
+
google_maps_api_key = '' if google_maps_api_key.nil?
|
60
|
+
if (@conf['image_gps.map_link_url'].nil? || @conf['image_gps.map_link_url'].empty?)
|
61
|
+
map_link_url = '"http://maps.google.co.jp/maps?q=#{lat},#{lon}"'
|
62
|
+
else
|
63
|
+
map_link_url = '"'+@conf['image_gps.map_link_url']+'"'
|
64
|
+
end
|
73
65
|
|
74
66
|
exif = ExifParser.new("#{@image_dir}/#{image}".untaint) rescue nil
|
75
67
|
|
76
|
-
|
68
|
+
google = "http://maps.google.co.jp"
|
77
69
|
|
78
70
|
if exif
|
79
|
-
|
80
|
-
alt += ' '+exif['Model'].to_s if exif.tag?('Model')
|
81
|
-
alt += ' '+exif['FocalLength'].to_s if exif.tag?('FocalLength')
|
82
|
-
alt += ' '+exif['ExposureTime'].to_s if exif.tag?('ExposureTime')
|
83
|
-
alt += ' '+exif['FNumber'].to_s if exif.tag?('FNumber')
|
84
|
-
end
|
71
|
+
#GPS Info
|
85
72
|
begin
|
73
|
+
raise if exif['GPSLatitudeRef'].value.length==0
|
74
|
+
raise if exif['GPSLongitudeRef'].value.length==0
|
86
75
|
lat = exif['GPSLatitude'].value
|
87
76
|
lat = lat[0].to_f + lat[1].to_f/60 + lat[2].to_f/3600
|
88
77
|
lat = -lat if exif['GPSLatitudeRef'].value == 'S'
|
@@ -90,39 +79,104 @@ def image( id, alt = 'image', thumbnail = nil, size = nil, place = 'photo' )
|
|
90
79
|
lon = lon[0].to_f + lon[1].to_f/60 + lon[2].to_f/3600
|
91
80
|
lon = -lon if exif['GPSLongitudeRef'].value == 'W'
|
92
81
|
datum = exif['GPSMapDatum'].value if exif.tag?('GPSMapDatum')
|
82
|
+
lat,lon = tky2wgs(lat,lon) if datum == 'TOKYO'
|
93
83
|
rescue
|
94
84
|
lat = nil
|
95
85
|
end
|
96
|
-
end
|
97
86
|
|
98
|
-
|
99
|
-
|
87
|
+
# show exif info
|
88
|
+
sep=' ' # ToDo: separator to config param.
|
89
|
+
|
90
|
+
detail =%Q[<p class="exif_info">]
|
91
|
+
show_exif_info.split(' ').each{|e|
|
92
|
+
detail += "#{exif[e].to_s}"+sep if exif.tag?(e)
|
93
|
+
}
|
94
|
+
unless lat.nil?
|
95
|
+
unless (google_maps_api_key == '' || @conf.smartphone?)
|
96
|
+
map_img = %Q["http://maps.googleapis.com/maps/api/staticmap?format=gif&]
|
97
|
+
map_img += %Q[center=#{lat},#{lon}&zoom=14&size=200x200&markers=#{lat},#{lon}&]
|
98
|
+
map_img += %Q[key=#{google_maps_api_key}&sensor=false"]
|
99
|
+
end
|
100
|
+
map_link = %Q[<a href="#{eval(map_link_url)}">]
|
101
|
+
map_link += %Q[MAP]
|
102
|
+
map_link += %Q[<img class="map" src=#{map_img}>] if map_img
|
103
|
+
map_link += "</a>"
|
104
|
+
detail += map_link
|
105
|
+
end
|
106
|
+
detail += "</p>"
|
100
107
|
end
|
101
108
|
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
109
|
+
img = %Q[<img class="#{place}" src="#{@image_url}/#{image}" alt="#{alt}" title="#{alt}" #{size}>]
|
110
|
+
img_t = %Q[<img class="#{place}" src="#{@image_url}/#{image_t}" alt="#{alt}" title="#{alt}" #{size}>]
|
111
|
+
|
112
|
+
url = ''
|
113
|
+
|
114
|
+
if @conf.mobile_agent?
|
115
|
+
url += %Q[<a href=#{google}/maps/m?q=#{lat},#{lon}>] unless lat.nil?
|
116
|
+
url += thumbnail ? img_t : img
|
117
|
+
url += %Q[</a>] unless lat.nil?
|
106
118
|
else
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
url += %Q[
|
119
|
+
url += %Q[<div class="photo_detail">]
|
120
|
+
url += %Q[<a href="#{@image_url}/#{image}">]
|
121
|
+
url += thumbnail ? img_t : img
|
122
|
+
url += %Q[</a>]
|
123
|
+
url += %Q[#{detail}] if detail
|
124
|
+
url += %Q[</div>]
|
113
125
|
end
|
126
|
+
|
114
127
|
url
|
128
|
+
|
129
|
+
end
|
130
|
+
add_header_proc do
|
131
|
+
if @mode !~ /conf$/ and not bot? then
|
132
|
+
<<-HTML
|
133
|
+
<style type="text/css"><!--
|
134
|
+
img.map{
|
135
|
+
display:none;
|
136
|
+
position:absolute;
|
137
|
+
border:none;
|
138
|
+
}
|
139
|
+
a:hover img.map{
|
140
|
+
display:inline;
|
141
|
+
}
|
142
|
+
--></style>
|
143
|
+
HTML
|
144
|
+
else
|
145
|
+
''
|
146
|
+
end
|
115
147
|
end
|
116
148
|
|
117
149
|
add_conf_proc('image_gps','image_gpsの設定','etc') do
|
118
150
|
if @mode == 'saveconf' then
|
119
|
-
@conf['
|
151
|
+
@conf['mage_gps.google_maps_api_key'] = @cgi.params['image_gps.google_maps_api_key'][0]
|
152
|
+
@conf['image_gps.show_exif_info'] = @cgi.params['image_gps.show_exif_info'][0]
|
153
|
+
@conf['image_gps.map_link_url'] = @cgi.params['image_gps.map_link_url'][0]
|
120
154
|
end
|
121
155
|
|
122
156
|
<<-HTML
|
123
|
-
<
|
124
|
-
<h3
|
125
|
-
<input type="
|
157
|
+
<div>
|
158
|
+
<h3>Google Static Maps API Key</h3>
|
159
|
+
<input type="text" name="image_gps.google_maps_api_key" value="#{@conf['image_gps.google_maps_api_key']}">
|
160
|
+
</div>
|
161
|
+
<div>
|
162
|
+
<h3>Show Exif Info</h3>
|
163
|
+
<input type="text" name="image_gps.show_exif_info" value="#{@conf['image_gps.show_exif_info']}">
|
164
|
+
<p>EXIFのタグ名をスペース区切りで設定します。</p>
|
165
|
+
<p>exp.)Model FocalLength FNumber ExposureTime ExposureBiasValue</p>
|
166
|
+
</div>
|
167
|
+
<div>
|
168
|
+
<h3>Map Link URL</h3>
|
169
|
+
<input type="text" name="image_gps.map_link_url" id="map_link_url" value="#{@conf['image_gps.map_link_url']}">
|
170
|
+
<p>地図サイトへのリンクURLを設定します。空欄の場合、Googleマップへリンクされます。</p>
|
171
|
+
<p>パラメータとして\#{lat},\#{lon}が使用できます。それぞれ緯度、経度に展開されます。</p>
|
172
|
+
<p>下のセレクタから選択すると各サービスのデフォルト値が設定されます。</p>
|
173
|
+
<select name="map_url" id="map_url" onChange="document.getElementById('map_link_url').value=this.value">
|
174
|
+
<option value="" selected disabled>--select service--</option>
|
175
|
+
<option value="http://maps.google.co.jp//maps/m?q=\#{lat},\#{lon}">Googleマップ</option>
|
176
|
+
<option value="http://maps.loco.yahoo.co.jp/maps?p=lat=\#{lat}&lon=\#{lon}&ei=utf-8">Yahoo地図</option>
|
177
|
+
<option value="http://www.mapion.co.jp/m/\#{lat}_\#{lon}_9">マピオン</option>
|
178
|
+
<option value="http://www.bing.com/maps/?v=2&cp=\#{lat}~\#{lon}&lvl=15">Bing Maps</option>
|
179
|
+
</select>
|
180
|
+
</div>
|
126
181
|
HTML
|
127
|
-
|
128
182
|
end
|
data/plugin/instagr.rb
CHANGED
@@ -23,6 +23,7 @@ def instagr( short_url, size = :medium)
|
|
23
23
|
option = option.nil? ? {} : option
|
24
24
|
|
25
25
|
# img size
|
26
|
+
size = size.to_sym if size != :medium
|
26
27
|
maxwidth_data = {:small => 150, :medium => 306, :large => 612}
|
27
28
|
maxwidth = maxwidth_data[ size ] ? maxwidth_data[ size ] : maxwidth_data[:medium]
|
28
29
|
|
data/plugin/playstore.rb
ADDED
@@ -0,0 +1,161 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
# playstore.rb
|
3
|
+
#
|
4
|
+
# 概要:
|
5
|
+
# GooglePlay( play.goog.com)へのリンクを生成します。
|
6
|
+
#
|
7
|
+
# 使い方:
|
8
|
+
# playstore'app_id' or playstore_txt'app_id'
|
9
|
+
#
|
10
|
+
# Copyright (c) 2014 kp <knomura.1394@gmail.com>
|
11
|
+
# Distributed under the GPL
|
12
|
+
#
|
13
|
+
begin
|
14
|
+
require 'market_bot'
|
15
|
+
rescue
|
16
|
+
retry if require 'rubygems'
|
17
|
+
end
|
18
|
+
|
19
|
+
require 'date'
|
20
|
+
|
21
|
+
class PlayStore < MarketBot::Android::App
|
22
|
+
def initialize(app_id,option={})
|
23
|
+
super(app_id,option)
|
24
|
+
end
|
25
|
+
|
26
|
+
def save(path)
|
27
|
+
File.open(path,"wb"){ |f|
|
28
|
+
Marshal.dump(self.html,f)
|
29
|
+
}
|
30
|
+
end
|
31
|
+
|
32
|
+
def load(path)
|
33
|
+
html = nil
|
34
|
+
File.open(path,"rb"){ |f|
|
35
|
+
begin
|
36
|
+
html = Marshal.restore(f)
|
37
|
+
rescue
|
38
|
+
html = nil
|
39
|
+
end
|
40
|
+
}
|
41
|
+
unless html.nil?
|
42
|
+
result = PlayStore.parse(html)
|
43
|
+
update_callback(result)
|
44
|
+
end
|
45
|
+
return html
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
def playstore_load_cache(app)
|
50
|
+
path="#{@cache_path}/playstore/#{app.app_id}"
|
51
|
+
begin
|
52
|
+
stat = File::Stat.new(path)
|
53
|
+
rescue Errno::ENOENT
|
54
|
+
return nil
|
55
|
+
end
|
56
|
+
m = Date.parse(stat.mtime.to_s)
|
57
|
+
return nil if Date.today - m > 7 # 1week before
|
58
|
+
return app.load(path)
|
59
|
+
end
|
60
|
+
|
61
|
+
def playstore_save_cache(app)
|
62
|
+
path="#{@cache_path}/playstore/#{app.app_id}"
|
63
|
+
dir = File.dirname(path)
|
64
|
+
Dir.mkdir(dir) unless File.directory?(dir)
|
65
|
+
|
66
|
+
app.save(path)
|
67
|
+
end
|
68
|
+
|
69
|
+
def playstore(app_id)
|
70
|
+
app = PlayStore.new(app_id)
|
71
|
+
if playstore_load_cache(app).nil?
|
72
|
+
app.update
|
73
|
+
save = true
|
74
|
+
else
|
75
|
+
save = false
|
76
|
+
end
|
77
|
+
if app.nil? || app.error
|
78
|
+
html =
|
79
|
+
<<-HTML
|
80
|
+
<div class="market">#{app_id} was not found.</div>
|
81
|
+
HTML
|
82
|
+
else
|
83
|
+
playstore_save_cache(app) if save
|
84
|
+
html =
|
85
|
+
<<-HTML
|
86
|
+
<div class="market">
|
87
|
+
<div class="leader"><a href="#{app.market_url}">#{app.title} #{app.current_version}</a>
|
88
|
+
- <span class="dev">#{app.developer}</span></div>
|
89
|
+
<a href="#{app.market_url}">
|
90
|
+
<img class="icon" src="#{app.banner_icon_url}" title="#{app.title}">
|
91
|
+
</a>
|
92
|
+
<ul class="info">
|
93
|
+
<li>Rating:#{app.rating}</li>
|
94
|
+
<li>Price:#{app.price}</li>
|
95
|
+
</ul>
|
96
|
+
</div>
|
97
|
+
HTML
|
98
|
+
end
|
99
|
+
return html
|
100
|
+
end
|
101
|
+
|
102
|
+
def playstore_text(app_id)
|
103
|
+
app = PlayStore.new(app_id)
|
104
|
+
if playstore_load_cache(app).nil?
|
105
|
+
app.update
|
106
|
+
save = true
|
107
|
+
else
|
108
|
+
save = false
|
109
|
+
end
|
110
|
+
if app.nil? || app.error
|
111
|
+
html = "<em>#{app_id} was not found</em>"
|
112
|
+
else
|
113
|
+
app.update
|
114
|
+
playstore_save_cache(app) if save
|
115
|
+
html=%Q[<a href="#{app.market_url}">#{app.title} #{app.current_version}</a>]
|
116
|
+
end
|
117
|
+
return html
|
118
|
+
end
|
119
|
+
|
120
|
+
add_header_proc do
|
121
|
+
if @mode !~ /conf$/ and not bot? then
|
122
|
+
<<-HTML
|
123
|
+
<style type="text/css"><!--
|
124
|
+
div.market ul.info {
|
125
|
+
list-style: none;
|
126
|
+
padding: 3px;
|
127
|
+
}
|
128
|
+
div.market img.icon {
|
129
|
+
float: left;
|
130
|
+
}
|
131
|
+
div.market span.dev {
|
132
|
+
font-size: small;
|
133
|
+
color: gray;
|
134
|
+
}
|
135
|
+
div.market div.leader {
|
136
|
+
background: #a4c639;
|
137
|
+
border-top-left-radius: 6px;
|
138
|
+
border-top-right-radius: 6px;
|
139
|
+
padding: 3px;
|
140
|
+
}
|
141
|
+
div.market {
|
142
|
+
background: #f5f5f5;
|
143
|
+
border-radius: 6px;
|
144
|
+
margin: 5px;
|
145
|
+
display: block;
|
146
|
+
overflow: hidden;
|
147
|
+
box-shadow: 3px 3px 3px 0px lightgray;
|
148
|
+
}
|
149
|
+
--></style>
|
150
|
+
HTML
|
151
|
+
else
|
152
|
+
''
|
153
|
+
end
|
154
|
+
end
|
155
|
+
# Local Variables:
|
156
|
+
# mode: ruby
|
157
|
+
# indent-tabs-mode: t
|
158
|
+
# tab-width: 3
|
159
|
+
# ruby-indent-level: 3
|
160
|
+
# End:
|
161
|
+
# vim: ts=3
|