tdiary-contrib 3.2.2.20130518 → 3.2.2.20130614

Sign up to get free protection for your applications and to get access to all the features.
Files changed (40) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +1 -3
  3. data/doc/ja/plugin/image_gps.txt +56 -17
  4. data/doc/ja/plugin/playstore.txt +31 -0
  5. data/js/socialbutton.js +8 -2
  6. data/lib/exifparser/README +6 -12
  7. data/lib/tdiary-contrib.rb +7 -6
  8. data/plugin/brow_si.rb +32 -0
  9. data/plugin/image_gps.rb +110 -56
  10. data/plugin/instagr.rb +1 -0
  11. data/plugin/playstore.rb +161 -0
  12. data/plugin/tweet_quote.rb +102 -48
  13. data/plugin/twitter_badge.rb +1 -1
  14. data/util/estraier-search/estraier-register.rb +2 -1
  15. data/util/estraier-search/estraier-search.rb +2 -1
  16. data/util/image-gallery/misc/plugin/recent_image.rb +1 -1
  17. metadata +7 -27
  18. data/doc/ja/plugin/image_detail.txt +0 -69
  19. data/doc/ja/plugin/image_gps2.txt +0 -41
  20. data/lib/exifparser/BUGS +0 -1
  21. data/lib/exifparser/ChangeLog +0 -169
  22. data/lib/exifparser/install.rb +0 -1015
  23. data/lib/exifparser/lib/exifparser/makernote/canon.rb +0 -502
  24. data/lib/exifparser/lib/exifparser/makernote/fujifilm.rb +0 -415
  25. data/lib/exifparser/lib/exifparser/makernote/minolta.rb +0 -84
  26. data/lib/exifparser/lib/exifparser/makernote/mk_nikonflensname.rb +0 -39
  27. data/lib/exifparser/lib/exifparser/makernote/nikon.rb +0 -267
  28. data/lib/exifparser/lib/exifparser/makernote/nikon2.rb +0 -581
  29. data/lib/exifparser/lib/exifparser/makernote/nikonflensname.rb +0 -438
  30. data/lib/exifparser/lib/exifparser/makernote/olympus.rb +0 -225
  31. data/lib/exifparser/lib/exifparser/makernote/prove.rb +0 -84
  32. data/lib/exifparser/lib/exifparser/makernote/sigma.rb +0 -237
  33. data/lib/exifparser/lib/exifparser/pre-setup.rb +0 -1
  34. data/lib/exifparser/lib/exifparser/scan.rb +0 -278
  35. data/lib/exifparser/lib/exifparser/tag.rb +0 -2298
  36. data/lib/exifparser/lib/exifparser/thumbnail.rb +0 -76
  37. data/lib/exifparser/lib/exifparser/utils.rb +0 -88
  38. data/lib/exifparser/lib/exifparser.rb +0 -265
  39. data/lib/exifparser/sample/exifview.rb +0 -279
  40. data/plugin/image_detail.rb +0 -143
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 59c721bca4f0c5fb48ae56cdec90cf2b2c61423f
4
- data.tar.gz: 2486213aa0c09dd053585bc1dd4ebb6c9cf01889
3
+ metadata.gz: 6160075d3a10a3f127fd3ec59f82b59a5ea4e494
4
+ data.tar.gz: 4302b52ef1948c223e5e1ce311c13bc601856e45
5
5
  SHA512:
6
- metadata.gz: 41975c8e216799afe075a65878a34a9e5198e7c4484c705ab85b01df27302599db9ae6051775649af6309f0b339d82641e5d8a42ac7d6fa22e1034ef01f11be6
7
- data.tar.gz: c4701beb053bcea03bfb66d6071b1c14f74e4b82a525fb6ab455c0b704959aba276081f8321f21227e576b0c7ed72dbd7afd3471ca085c9fd494c3f8a6ab3780
6
+ metadata.gz: 2c3204d15ab266d374ae86082854cd7a82f38118509b6b85e56ef69ba5aedca4fa0e66b8682e4de391b671b6cac9376c3f0e124ab8ab659417eeef78225656cd
7
+ data.tar.gz: 52c0bd44604864f41e488564e38564c1e20b7126a3faf320aa224dc2f71bea2ebfab0279f426eb6c4e9f09105a467f6cb77b0445d6c9b4b6409eddc724233d70
data/.travis.yml CHANGED
@@ -1,7 +1,5 @@
1
1
  rvm:
2
- - ree
3
- - 1.9.2
4
2
  - 1.9.3
5
- - ruby-head
3
+ - 2.0.0
6
4
 
7
5
  script: bundle exec rake spec
@@ -1,35 +1,74 @@
1
1
  image_gps.rb
2
2
 
3
3
  機能
4
- アップロードした画像に含まれているGPSの位置情報を使用して、
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
- tdiary/lib/ExifParser/READMEに従って導入してください。
14
+ 以下のコマンドで導入できます。
15
+ #gem install exifparser
20
16
 
21
17
  ・Pluginのインストール
22
18
  image_gps.rbを適切な場所に配置してください。多言語用リソースは存在しません。
23
19
 
24
- 使用方法
25
- image.rbと同じです。画像にGPSの情報が含まれている場合は自動的に
26
- GoogleMAP(http://maps.google.co.jp/ )へのリンクを生成します。
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 = $(this).children('h3').children('a').get(0).href;
99
- var title = $(this).children('h3').children('a').attr('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);
@@ -1,15 +1,9 @@
1
- Ruby Exif parser - Exif tag parser written in pure Ruby
1
+ ExifParserは、tdiary-contribの管理から外れました。
2
2
 
3
- = Install
3
+ 通常は以下のコマンドによりインストールすることができます。
4
+ #gem install exifparser
4
5
 
5
- $ ruby install.rb config
6
- $ ruby install.rb setup
7
- # ruby install.rb install
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)
@@ -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.7 $
2
+ # image_gps.rb $Revision: 1.1 $
3
3
  #
4
4
  # 概要:
5
- # 画像にGPSによる位置情報が含まれている場合は、対応する地図へのリンクを生成する。
5
+ #
6
6
  #
7
7
  # 使い方:
8
8
  # 絵日記Plugin(image.rb)とおなじ
9
9
  #
10
- # Copyright (c) 2004,2010 kp <kp@mmho.no-ip.org>
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
- * リンク先をGoogleに統一
17
- 2009-06-01 kp
18
- * モバイルモード時も世界測地系とする
19
- 2009-05-26 kp
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
- require 'exifparser'
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
- #m_map = 'http://m.google.com/maps'
72
- map = 'http://maps.google.co.jp'
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
- datum = nil
68
+ google = "http://maps.google.co.jp"
77
69
 
78
70
  if exif
79
- if @conf['image_gps.add_info']
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
- unless lat.nil?
99
- lat,lon = tky2wgs(lat,lon) if datum == 'TOKYO'
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&amp;]
97
+ map_img += %Q[center=#{lat},#{lon}&amp;zoom=14&amp;size=200x200&amp;markers=#{lat},#{lon}&amp;]
98
+ map_img += %Q[key=#{google_maps_api_key}&amp;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
- if thumbnail
103
- url = %Q[<a href="#{@image_url}/#{image}"><img class="#{place}" src="#{@image_url}/#{image_t}" alt="#{alt}" title="#{alt}"#{size}></a>]
104
- elsif lat.nil?
105
- url = %Q[<img class="#{place}" src="#{@image_url}/#{image}" alt="#{alt}" title="#{alt}"#{size}>]
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
- if @conf.mobile_agent?
108
- url = %Q[<a href="#{map}/maps/m?q=#{lat},#{lon}">]
109
- else
110
- url = %Q[<a href="#{map}/maps?q=#{lat},#{lon}">]
111
- end
112
- url += %Q[<img class="#{place}" src="#{@image_url}/#{image}" alt="#{alt}" title="#{alt}" #{size}></a>]
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['image_gps.add_info'] = @cgi.params['image_gps.add_info'][0]
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
- <p>
124
- <h3>撮影条件の表示</h3>
125
- <input type="checkbox" name="image_gps.add_info" value="true" #{if @conf['image_gps.add_info'] then " checked" end}>タイトルに撮影条件を追加する</p>
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
 
@@ -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