GPS¤ÏÀµ³Î¤À¤¬¡¢ÃϿ޾ðÊó¤Ï?
¤È¤¢¤ëÊý¤Ë¥ì¥¯¥Á¥ã¡¼¤ò¼õ¤±¡¢GPSµ¡Ç½ÉÕ¤¥±¡¼¥¿¥¤A5401CA¤òÆþ¼ê¡£»×¤¨¤Ð2001ǯ²Æ¤«¤é¹Í¤¨¤Æ¤¤¤¿¡¢·ÈÂӤȰÌÃÖ¾ðÊ󥵡¼¥Ó¥¹¤òÁȤ߹ç¤ï¤»¤ë¡¢¤È¤¤¤¦¹½ÁÛ¤¬¡¢¤è¤¦¤ä¤¯¼Â¸½¤·¤¿¤³¤È¤Ë¤Ê¤ë¡£
¤½¤³¤Ç¡¢¤µ¤Ã¤½¤¯°ÌÃÖ¾ðÊó¤òÁȤ߹ç¤ï¤»¤¿moblogging¤ò¥Æ¥¹¥È¤·¤Æ¤ß¤¿¤Î¤À¤¬¡¢°Õ³°¤Ë¤âÃϿ޾ðÊó¤Ëȯ¸«¡ÊÍî¤È¤··ê?¡Ë¤¬¤¢¤Ã¤¿¤Î¤Ç¡¢¤µ¤Ã¤½¤¯¥ì¥Ý¡¼¥È¤·¤Æ¤ª¤¯¡£
¤Þ¤º¤ÏGPS¾ðÊó¤ò´ð¤Ë¼èÆÀ¤·¤¿ÃϿ޾ðÊó¡£»£±Æ¤·¤¿¾ì½ê¤Ç¤ÎGPSÀºÅÙ¤Ï3Ãʳ¬¤Î1ÈÖ¾å¡ÊA¥é¥ó¥¯¡Ë¤À¤Ã¤¿¤Î¤Ç¡¢¤«¤Ê¤êÀµ³Î¤Ê°ÌÃÖ¤ò¼èÆÀ¤Ç¤¤Æ¤¤¤ë¤Î¤¬Ê¬¤«¤ë¡Ê¸íº¹¤Ï10¥á¡¼¥È¥ë̤Ëþ¡Ë¡£
¤¿¤À¡¢»ä¼«¿È¤Ï¥ª¥ó¥é¥¤¥óÃϿޤȤ·¤Æ¡¢Ä̾ïMapion¤ò»È¤Ã¤Æ¤¤¤ë¤¿¤á¡¢¤³¤Á¤é¤ÎÃϿޤÎÊý¤Ë¤è¤ê¤Ê¤¸¤ß¤¬¿¼¤¤¡£¤½¤³¤Ç¡¢¼èÆÀ¤·¤¿°ÞÅÙ¡¦·ÐÅÙ¾ðÊó¤ò´ð¤Ë¡¢Mapion¤ÇÃϿޤòɽ¼¨¤µ¤»¤Æ¤ß¤¿¡£
¤È¤³¤í¤¬¡¢¤³¤ì¤¬Á´Á³°ã¤¦¾ì½ê¤Ç¡¢400¥á¡¼¥È¥ë¤Û¤ÉÎ¥¤ì¤¿¿ÀÆî¾®³Ø¹»ÊÕ¤ê¤È½Ð¤¿¡£¤â¤·¤«¤·¤¿¤é¡¢°ÞÅÙ¡¦·ÐÅÙ¾ðÊó¤ÎÍ¿¤¨Êý¤¬´Ö°ã¤Ã¤Æ¤¤¤ë¤Î¤«¤â¤·¤ì¤Ê¤¤¤¬¡¢¤É¤Á¤é¤Ë¤·¤Æ¤âº£¸å¡¢moblogging¤ËGPS¾ðÊó¤¬Â¿ÍѤµ¤ì¤Æ¤¤¤¯¤³¤È¤ò¹Í¤¨¤ë¤È¡¢ÃÏ¿ÞÃæ¤Ë¥«¥Ð¡¼¤µ¤ì¤Æ¤¤¤ë¾¤Î¾ðÊó¡Ê°û¿©Å¹¾ðÊó¤Ê¤É¡Ë¤Î²ÁÃͤ¬¡¢º£¸å¹â¤Þ¤Ã¤Æ¤¤¤¯¤Î¤Ï´Ö°ã¤¤¤Ê¤¤¡£¤½¤Î¤È¤¡¢¤³¤ÎÌäÂê¤¬ÍøÍѤòÁ˳²¤·¤Ê¤¤¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤ÆÍߤ·¤¤¤â¤Î¤Ç¤¢¤ë¡£
¥³¥á¥ó¥È (15)
¤³¤ì¤Ï¡¢À¤³¦Â¬ÃϷϰܹԤǵ¯¤¤¿ÌäÂê¤À¤È»×¤¤¤Þ¤¹¡£
¤É¤Á¤é¤«¤¬ÆüËܬÃϷϤǤº¤ì¤Æ¤·¤Þ¤Ã¤¿¤Î¤Ç¤Ï¡©
Åê¹Æ¼Ô: genesis | July 14, 2003 2:41 PM
Æü»þ: July 14, 2003 14:41
¤È¤¢¤ëÊý¡÷ÀÖºä¤Ç¤¹¡£
¤ª¡¼¡¢¤â¤¦¹ØÆþ¤·¤Æ¤·¤Þ¤ï¤ì¤Þ¤·¤¿¤«¡£Áᤤ¡£¤µ¤¹¤¬¤À¡£¥ì¥¯¥Á¥ã¡¼¡Ê¡©¡Ë¤Î¹ÃÈ夬¤¢¤ê¤Þ¤·¤¿¡£
GPS Moblogging¿Í¸ý¡¢au ¤Î»È¤¤¾¡¼ê¤ÎÎɤ¤Ã¼Ëö¤ÎÉáµÚ¤È¤È¤â¤Ë¡¢¹¤¬¤ê¤½¤¦¤Ç¤¹¤Í¡£
Docomo ¤âÉ餱¤¸¡Ê¡©¡Ë¤È¡¢Éٻλ³¼þÊդΥ´¥ß¤Î°ÌÃÖ¤ò GPS ¤Ç³Îǧ¤¹¤ë NPO ¤Î¥µ¡¼¥Ó¥¹¤ò»Ï¤á¤Þ¤·¤¿¤Í¡£
http://fujisan1.docomo-sys.com/MtFuji_a/
GPS ¤È Mobile Data service ¤òÁȤ߹ç¤ï¤»¤ë¤È¡¢¤¤¤í¤¤¤í¤Ê¤³¤È¤¬½ÐÍ褽¤¦¤Ç¤¹¡£³Æ¥¥ã¥ê¥¢¤«¤é¶¥¹ç¤¹¤ë¥µ¡¼¥Ó¥¹¤¬Ä󶡤µ¤ì¤Æ¡¢¥µ¡¼¥Ó¥¹¤Î¼Á¤¬ÀÚâøÂöËᤵ¤ì¤ë´Ä¶¤ËÁ᤯¤Ê¤Ã¤ÆÍߤ·¤¤¤â¤Î¤Ç¤¹¤Í¡£
Åê¹Æ¼Ô: minami | July 14, 2003 2:42 PM
Æü»þ: July 14, 2003 14:42
¤â¤Ã¤È¤âËÜÅö¤ËÀ¾ÉðÉ´²ßŹÁ°¤¬¡¢¤³¤Î°ÞÅÙ¡¦·ÐÅÙ¤ÇÀµ¤·¤¤¤Î¤«¡¢¤È¤¤¤¦ÌäÂê¤Ï»Ä¤ê¤Þ¤¹¡£
¤Ä¤Þ¤ê¡¢au¤ÎGPS¥µ¡¼¥Ó¥¹¤Ë¤è¤ë°ÌÃÖ¾ðÊ󤬡¢Navi.com¤Î»ý¤Ã¤Æ¤¤¤ë¾ðÊ󤫤éºîÀ®¤µ¤ì¤Æ¤¤¤ë¤Ê¤é¡¢°ì¸«Navi.com¤¬Àµ¤·¤¯¸«¤¨¤Æ¤¤¤ë¤À¤±¡¢¤È¤¤¤¦²ÄǽÀ¤â¤¢¤êÆÀ¤Þ¤¹¡£
¤À¤ì¤«¡¢ÆÈΩ¤·¤¿GPSµ¡´ï¤Ç¡¢½Âë¥Ï¥Á¸øÁ°¸òº¹ÅÀ¤Î°ÞÅÙ¡¦·ÐÅÙ¤ò¬Äꤷ¤Æ¡¢¥ì¥Ý¡¼¥È¤·¤Æ¤¯¤ì¤Þ¤»¤ó¤«¡Á¡£
Åê¹Æ¼Ô: nob seki | July 14, 2003 2:53 PM
Æü»þ: July 14, 2003 14:53
¤É¤Á¤é¤âƱ¤¸¡¢Ḛ̈Þ35ÅÙ39ʬ34.72¡¢Åì·Ð139ÅÙ42ʬ2.51
¤È¸À¤¦ºÂɸ¼´¤Ç¤¢¤ë°Ê¾å¡¢
ÃϿޤòɽ¼¨¤¹¤ë¥·¥¹¥Æ¥à¤Çµ¶¤ê¤ÎºÂɸ¤òɽ¼¨¤¹¤ë¤È¤¤¤¦¤Î¤Ï¤¢¤ê¤¨¤Ê¤¤¤Ç¤·¤ç¤¦¡£
¤Á¤ç¤Ã¤È¡¢¤³¤ÎÌäÂê¤Ë¤Ä¤¤¤Æ´Êñ¤Ë½Ò¤Ù¤¿¥µ¥¤¥È¤òõ¤·¤¿¤ó¤Ç¤¹¤¬¡¢
http://www.wakam.com/kokishin/ido.html
¤Ëͤë¤Î¤ÇÆÉ¤ó¤Ç¤ß¤Æ¤¯¤À¤µ¤¤¡£
¤Á¤ç¤¦¤É¡¢Â¬ÃÏ·Ïʬ¤Î¸íº¹¤¬½Ð¤Æ¤¤¤Þ¤¹¤«¤é¡£
Åê¹Æ¼Ô: genesis | July 14, 2003 11:58 PM
Æü»þ: July 14, 2003 23:58
À¤³¦Â¬ÃϷϤ«¤é¡¢ÆüËܬÃϷϤËÊÑ´¹¤·¤¿ÃϿޤò½Ð¤·¤Æ¤ß¤Þ¤·¤¿¡£
http://www.mapion.co.jp/c/f?el=139/42/14.129&scl=10000&pnf=1&sfn=all_maps_00&uc=1&grp=all&nl=35/39/23.056&size=500,500&
Åê¹Æ¼Ô: genesis | July 15, 2003 2:29 AM
Æü»þ: July 15, 2003 02:29
³Î¤«¤ËÊÑ´¹¤·¤¿¤é¡¢Æ±¤¸¾ì½ê¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¤Í¡ª
¤½¤ì¤Ë¤´¾Ò²ð¤¤¤¿¤À¤¤¤¿¥µ¥¤¥È¡¢¤¤¤í¤¤¤íÍÍѤʾðÊ󤬺ܤäƤ¤¤ÆÂçÊÑ»²¹Í¤Ë¤Ê¤ê¤Þ¤¹¡£
moblogging¤Î¥½¥Õ¥È¤ò³«È¯¤¹¤ë¾å¤Ç¤â»²¹Í¤Ë¤Ê¤ë¤Ç¤·¤ç¤¦¤Í¡£
Åê¹Æ¼Ô: nob seki | July 16, 2003 1:23 PM
Æü»þ: July 16, 2003 13:23
¸µ¤Îpost2blog¤ò¤Á¤ç¤Ã¤È³ÈÄ¥¤·¤Æ¤ß¤Þ¤·¤¿¡£
¡¦MovableType¤Î¥«¥Æ¥´¥ê¡¼¤ËÂбþ
¡¦Mapion¡¢@NAVI.com¤ÎξÊý¤ÎÃϿޤËÂбþ
¡¦MapionÍѤ˺Âɸ¼´¤òÆüËܬÃϷϤØÊÑ´¹
¡¦ºÇ¿·¤Î¼Ì¿¿¤ò»²¾È¤Ç¤¤ëlatest.category.jpg¥Õ¥¡¥¤¥ë¤òºîÀ®
¤È¤ê¤¢¤¨¤º¸µ¥½¡¼¥¹¤«¤é¤Îdiff¤ò°Ê²¼¤Ë¡£ºÇ¸å¤ÎÊý¡¢ÆüËܸì¤Î¥³¥á¥ó¥È¤¬²½¤±¤Æ¤¤¤Þ¤¹¤¬¡¢ÂçÀª¤Ë±Æ¶Á¤¬¤Ê¤¤¤Î¤Ç¡¢¤È¤ê¤¢¤¨¤º¤³¤Î¤Þ¤Þ¤Ç¡£
¸µ¥½¡¼¥¹¤Î¤´ËܿͤÎλ²ò¤¬½Ð¤¿¤é¡¢¤Á¤ç¤Ã¤È²½¾Ñľ¤·¤µ¤»¤Þ¤¹¡£
2c2,5
<
---
>
> ### NOTE: umask 0022 is needed if you want to create a refferable "latest" file in some directories. umask 0000 if want to make it overwritten
> umask 0022;
>
9a13,22
> my $category = 'photos'; # so far, only for latest file
> my %cat_id = ($category => '1'); # put the categoryId of the category
> my $publish = '1'; # 0 to Draft
>
> # create "$latest.category-name.jpg" in $latest_file_path;
> my $latest_file_path = '/var/www/html/blog/moblog/';
> my $latest = 'latest'; # latest filename is $latest.$category.jpg
>
> my $mapion = 1; # 1 or 0
> my $navi_com = 1; # 1 or 0
81a95
> my $excerpt;
96,107c110,125
< my $ret = $rpc->call('metaWeblog.newMediaObject',
< $blog_id,
< $username,
< $password,
< {
< 'bits' => $bindata,
< 'name' => $filename.$suffix
< },
< 1
< );
< #print Dumper $ret->result;
< #print Dumper $ret->fault;
---
> my $ret;
> while (1) {
> $ret = $rpc->call('metaWeblog.newMediaObject',
> $blog_id,
> $username,
> $password,
> {
> 'bits' => $bindata,
> 'name' => $filename.$suffix
> },
> 1
> );
> last if ($ret->result); # if suceeds, go to next level
> $filename = $filename . "\.new"; # change filename and try again # note this RPC overwrites the existing file
> }
>
126,127c144,157
< if (@lat) {
< #my $map = "http://www.mapion.co.jp/c/f?el=$long[3]/$long[4]/$long[5]&scl=250000&uc=1&grp=all&nl=$lat[3]/$lat[4]/$lat[5]";
---
>
> if (@lat && $mapion) {
> my (@mlat, @mlong, $malt);
> ($mlat[0], $mlat[1], $mlat[2], $mlong[0], $mlong[1], $mlong[2], $malt) = &wgs2tky($lat[3],$lat[4],$lat[5],$long[3],$long[4],$long[5],$alt[3]);
> $mlat[2] = sprintf("%.3f", $mlat[2]); # tailoring for mapion
> $mlong[2] = sprintf("%.3f", $mlong[2]);
> my $mapion = "http://www.mapion.co.jp/c/f?el=$mlong[0]/$mlong[1]/$mlong[2]&scl=10000&uc=1&grp=all&nl=$mlat[0]/$mlat[1]/$mlat[2]&size=400,400&";
> $mapion = "<a href=\"$mapion\" target=\"_blank\">Location</a>";
> $mapion = $mapion."(Altitude: $malt meters)" if (@alt);
> $mapion = $mapion."Map powered by <a href=\"http://www.mapion.co.jp/\">Mapion</a><br/>";
> $mapion = $j->set($mapion)->$code;
> $description = $mapion.$description;
> }
> if (@lat && $navi_com) {
129,130c159,161
< $map = "<a href=\"$map\" target=\"_blank\">޾¡¦¡¦/a>";
< $map = "$map (޳ޤŽÈŽ´$alt[3]m)" if (@alt);
---
> $map = "<a href=\"$map\" target=\"_blank\">Location</a>";
> $map = $map."(Altitude: $alt[3] meters)" if (@alt);
> $map = $map."Map powered by <a href=\"http://www.at-navi.com/\">\@NAVI.com</a><br/>";
132,133c163
< $description = "$map<br />$description";
< #print "$map\n";
---
> $description = $map.$description;
142c172
< $description = "<img src=\"$returl\" width=\"$imgx\" height=\"$imgy\" alt=\"$orgfilename\"><br />$description";
---
> $description = "<a href=\"$returl\"><img src=\"$returl\" width=\"$imgx\" height=\"$imgy\" alt=\"$orgfilename\" /></a><br/>$description";
144c174
< $description = "<a href=\"$returl\">$orgfilename</a><br />$description";
---
> $description = "<a href=\"$returl\">$orgfilename</a><br/>$description";
155c185,186
< 'mt_text_more' => $text_more
---
> 'mt_text_more' => $text_more,
> 'mt_excerpt' => $excerpt,
157c188,204
< 1
---
> $publish
> ) or die "posting failure: cannot post a new entry";
>
>
> my $post_id = $ret->result();
>
> my @categories;
> $categories[0] = [{
> 'categoryId' => $cat_id{$category},
> 'isPrimary' => 1,
> }];
>
> my $ret = $rpc->call('mt.setPostCategories',
> $post_id,
> $username,
> $password,
> @categories,
159a207,221
> # rebuilding to reflect category change
> my $ret = $rpc->call('metaWeblog.editPost',
> $post_id,
> $username,
> $password,
> {
> 'title' => $title,
> 'description' => $description,
> 'mt_text_more' => $text_more,
> 'mt_excerpt' => $excerpt,
> },
> $publish
> );
>
>
164a227,228
> exit;
>
179a244,245
>
> system("cp", $cntpath, "$latest_file_path$latest.$category$orgsuffix");
202a269,369
>
>
> # The copyright of the code below is claimed by Nowral, the author written in the code
> # http://member.nifty.ne.jp/Nowral/02_DATUM/02_DATUM.html for more info
> #
> # modified by Nob Seki on July 21, 2003
>
> sub wgs2tky {
> my (@lat,@long,$alt);
> $lat[0] = shift; $lat[1] = shift, $lat[2] = shift;
> $long[0] = shift; $long[1] = shift, $long[2] = shift;
> $alt = shift;
>
> #
> #!/usr/bin/perl -w
> #
> # Standard Molodensky Datum Transformation
> # Nowral PXI07463@nifty.ne.jp
> # 99/11/24
> #
>
> # Original Data in Tokyo97
>
> my $b = $lat[0] + $lat[1]/60 + $lat[2]/3600;
> my $l = $long[0] + $long[1]/60 + $long[2]/3600;
> my $h = $alt;
>
>
> # Datum of Tokyo97
> my $a = 6377397.155;
> my $f = 1 / 299.152813;
>
> # Datum of WGS 84
> my $a_ = 6378137; #
> my $f_ = 1 / 298.257223; #
>
>
> # åã¾å¦¢å⎨å⎱
> ($b, $l, $h) = &molodensky($b, $l, $h, $a_, $f_, $a, $f);
>
> # åã¾å¦¢å⎨å⎱åà¢å¤¬åà¢å¡¦å⎽å⎳å㡦¥îå⎯
> # print "åã¾å¦¢å⎨å⎱å⎯ï÷޹nå㎼åâÖå¥êå㎫åà¤å¤£ ",°2dms($b),"\nåâŽåãÞå¥êå㎫åà¤å¤£ ",°2dms($l),"\nå⎱¦¤¬åà¤å¤£ $h\n\n";
>
> # åãÄ妱å㡦 åãÖå¥ê å⎣
> # (WGS 84)
> # å㎼åâÖå¥êå㎫ 35åà¤å¡¦0åà¤å¡¦1.685555åà¤å¡¦# åâŽåãÞå¥êå㎫ 138åà¤å¡¦4åà¤å¡¦6.838916åà¤å¡¦# å⎱¦¤¬ 737.895217 [m]
>
> return (°2dms($b),°2dms($l),$h);
> }
>
> sub molodensky {
> # Constants
> my $pi = 4 * atan2(1,1); # Pi
> my $rd = $pi / 180; # Radian
> # Change in meter
> # e.g. $x_ = $x + $dx etc.
> my $dx = +148;
> my $dy = -507;
> my $dz = -681;
>
> my($b, $l, $h, $a, $f, $a_, $f_) = @_;
> my($bda, $e2, $da, $df, $db, $dl, $dh);
> my($sb, $cb, $sl, $cl, $rn, $rm);
> $b *= $rd;
> $l *= $rd;
>
> $e2 = 2*$f - $f*$f; # åãÖ塦å⎽å⎨åãÖ夥 e^2
> $bda = 1- $f; # å⎫åãÄå¥íå⎻åâŽå㡦/ å⎿å㎨åã¶å¤·åãºå¤½åâŽå㡦b/a
> ($da, $df) = ($a_-$a, $f_-$f);
> ($sb, $cb, $sl, $cl) = (sin($b), cos($b), sin($l), cos($l));
>
> $rn = 1 / sqrt(1 - $e2*$sb*$sb);
> $rm = $a * (1 - $e2) * $rn * $rn * $rn;
> $rn *= $a;
>
> #åà¢å¤µåà¢å¡¦åãÖ夯å㎩å⎵å⎵
> $db = -$dx*$sb*$cl - $dy*$sb*$sl + $dz*$cb
> + $da*$rn*$e2*$sb*$cb/$a + $df*($rm/$bda+$rn*$bda)*$sb*$cb;
> $db /= $rm + $h;
> $dl = -$dx*$sl + $dy*$cl;
> $dl /= ($rn+$h) * $cb;
> $dh = $dx*$cb*$cl + $dy*$cb*$sl + $dz*$sb
> - $da*$a/$rn + $df*$bda*$rn*$sb*$sb;
>
> (($b+$db)/$rd, ($l+$dl)/$rd, $h+$dh);
> }
>
> sub deg2dms {
> my($d) = @_;
> my($m, $s, $sf);
> $sf = int($d*360000 + 0.5);
> $s = $sf / 100 % 60;
> $m = $sf / 6000 % 60;
> $d = int($sf/360000);
> $sf %= 100;
> # modified by Nob, returning an array, not formatted string
> return ($d, $m, sprintf("%02d\.%02d", $s, $sf));
> }
>
>
>
Åê¹Æ¼Ô: nob seki | July 21, 2003 11:45 PM
Æü»þ: July 21, 2003 23:45
¤ª¡¢¤¤¤¤¤Ç¤¹¤Í¡£
metaWeblog.newPost¤ÎºÝ¤Ïboolean publish¤ò0¤Ç·è¤áÂǤÁ¤·¤Æ¡¢mt.setPostCategories¸å¤Ë¡¢$publish¤¬1¤Î»þ¤À¤±mt.publishPost¤¹¤ì¤Ð¡¢$publish¤¬1¤Î¤È¤¤â¥ê¥Ó¥ë¥É¤¬2²ó³Ý¤«¤é¤Ê¤¯¤Æ¤¹¤ß¤½¤¦¤Ç¤¹¡£
Åê¹Æ¼Ô: motonaga | July 24, 2003 3:31 AM
Æü»þ: July 24, 2003 03:31
¾å¤Ç»ØÅ¦¤µ¤ì¤¿Í¾·×¤Ê¥ê¥Ó¥ë¥É¤Îºï¸º¤ä¡¢2¤Ä°Ê¾å¥«¥Æ¥´¥ê¡¼¤òÀßÄꤹ¤ëÉôʬ¤Î¥Ð¥°¤Ê¤É¤ò½¤Àµ¤·¤Þ¤·¤¿¡£
#!/usr/bin/perl
# Perl version originally written by motonaga
# modified by Nob Seki
my $url = 'http://www.syncworld.net/mt/mt-xmlrpc.cgi'; # CGIPath + 'mt-xmlrpc.cgi'
my $blog_id = 1;
my $username = 'username';
my $password = 'password';
my $code = euc; # utf8, euc, jis, sjis
my $MT_DIR = '/usr/share/movabletype/';
my $parse_path = '/tmp';
my $category = 'primary_cat'; # so far, only for latest file
my %cat_id = ($category => '1'); # put the categoryId of the category
my $secondary_category = 'secondary_cat';
my %secondary_cat_id = ($secondary_category => '2');
my $publish = '1'; # set 0 to not rebuild
# create "$latest.category-name.jpg" in $latest_file_path;
my $build_latest_file = 1; # set 1 to create the latest file; 0 to create no files
my $latest_file_path = '/var/www/html/blog/moblog/';
my $latest = 'latest'; # latest filename is $latest.$category.jpg
my $umask = '0000'; # depending on the permission of the file/directory
# map for the location information
my $mapion = 1; # 1 or 0
my $navi_com = 1; # 1 or 0
my ($maxx, $maxy) = (320, 320);
unshift @INC, $MT_DIR . 'extlib';
use strict;
use MIME::Parser;
#use Data::Dumper;
use File::Basename;
#use Net::Blogger;
use Jcode;
use XMLRPC::Lite;
#my $mt = Net::Blogger->new(engine=>"movabletype");
#$mt->Proxy($url);
#$mt->Username($username);
#$mt->Password($password);
#$mt->BlogId($blog_id);
#my $rpc = XMLRPC::Lite->new;
my $j = new Jcode;
open(OUT, ">$parse_path/mtmail");
my $str='';
while(<STDIN>) {
$str = $str.$_;
print OUT $_;
}
close(OUT);
my $parser = new MIME::Parser;
$parser->output_under($parse_path);
my $entity = $parser->parse_data($str);
my $head = $entity->head;
my $sub = $head->get('Subject');
my $message_id = $head->get('Message-ID');
# my $cnttype = $entity->mime_type;
$sub = $j->set($sub)->mime_decode->$code;
$sub =~ s/[\r\n]//g;
$sub =~ s/ +$//g;
$message_id =~ s/[<>]//g;
$message_id =~ s/\@.*//g;
$message_id =~ s/[\r\n]//g;
my $partnum = $entity->parts;
my (@texts, @attachs, $cnttype, $cntpath, $cntname);
if ($entity->is_multipart) {
# multi parts
for (my $pn = 0; $pn < $partnum; $pn++) {
$cnttype = $entity->parts($pn)->mime_type;
$cntpath = $entity->parts($pn)->bodyhandle->path;
$cntname = $entity->parts($pn)->head->mime_attr('content-type.name') || $entity->parts($pn)->head->mime_attr('content-disposition.filename');
$cntname = $j->set($cntname)->mime_decode->$code;
arrange_parts($pn, $cnttype, $cntpath, $cntname);
}
} else {
# single part
$cnttype = $entity->mime_type;
$cntpath = $entity->bodyhandle->path;
$cntname = $entity->head->mime_attr('content-type.name') || $entity->head->mime_attr('content-disposition.filename');
$cntname = $j->set($cntname)->mime_decode->$code;
arrange_parts(1, $cnttype, $cntpath, $cntname);
}
my $cont;
foreach (@texts) {
open(CONT, $_);
while (<CONT>) {
s/\r\n/\n/g;
s/\r/\n/g;
$cont = $cont.$_;
}
close(CONT);
}
$cont = $j->set($cont)->$code;
my @conts = split(/\n\n\n/, $cont);
my $description = shift(@conts);
my $text_more = join("\n\n\n", @conts);
my $title = $sub;
my $excerpt;
my $rpc = XMLRPC::Lite->new;
$rpc->proxy($url);
foreach my $fileref (@attachs) {
my ($file, $orgfilename) = @$fileref;
my ($filename, $filepath, $suffix) = fileparse($file, '\.(jpe?g|gif|png)');
#print "$filename\n$filepath\n$suffix\n";
open(BIN, $file);
my $bindata;
while (<BIN>) {
$bindata = $bindata.$_;
}
close(BIN);
my $ret;
while (1) {
$ret = $rpc->call('metaWeblog.newMediaObject',
$blog_id,
$username,
$password,
{
'bits' => $bindata,
'name' => $filename.$suffix
},
1
);
last if ($ret->result); # if suceeds, go to next level
$filename = $filename . "\.new"; # change filename and try again # note this RPC overwrites the existing file
}
my $returl = $ret->result->{url};
if ($returl =~ /\.jpe?g$/i) {
my @exif = split(/\n/, `/usr/local/bin/exiflist -o e -u $file`);
my (@lat, @long, @alt);
foreach (@exif) {
@lat = split(/ +/) if (/^ Latitude /);
@long = split(/ +/) if (/^ Longitude /);
@alt = split(/ +/) if (/^ Altitude /);
}
for (my $n = 0; $n < @lat; $n++) {
eval("\$lat[$n] = $lat[$n]");
}
for (my $n = 0; $n < @long; $n++) {
eval("\$long[$n] = $long[$n]");
}
for (my $n = 0; $n < @alt; $n++) {
eval("\$alt[$n] = $alt[$n]");
}
if (@lat && $mapion) {
my (@mlat, @mlong, $malt);
($mlat[0], $mlat[1], $mlat[2], $mlong[0], $mlong[1], $mlong[2], $malt) = &wgs2tky($lat[3],$lat[4],$lat[5],$long[3],$long[4],$long[5],$alt[3]);
$mlat[2] = sprintf("%.3f", $mlat[2]); # tailoring for mapion
$mlong[2] = sprintf("%.3f", $mlong[2]);
my $mapion = "http://www.mapion.co.jp/c/f?el=$mlong[0]/$mlong[1]/$mlong[2]&scl=10000&uc=1&grp=all&nl=$mlat[0]/$mlat[1]/$mlat[2]&size=400,400&";
$mapion = "<a href=\"$mapion\" target=\"_blank\">Location</a>";
$mapion = $mapion."(Altitude: $malt meters)" if (@alt);
$mapion = $mapion."Map powered by <a href=\"http://www.mapion.co.jp/\">Mapion</a><br/>";
$mapion = $j->set($mapion)->$code;
$description = $mapion.$description;
}
if (@lat && $navi_com) {
my $map = "http://www.at-navi.com/map/dispMapPcDmy.jsp?lat=$lat[3].$lat[4].$lat[5]&lon=$long[3].$long[4].$long[5]&unit=0&datum=0";
$map = "<a href=\"$map\" target=\"_blank\">Location</a>";
$map = $map."(Altitude: $alt[3] meters)" if (@alt);
$map = $map."Map powered by <a href=\"http://www.at-navi.com/\">\@NAVI.com</a><br/>";
$map = $j->set($map)->$code;
$description = $map.$description;
}
}
if ($returl =~ /\.(jpe?g|gif|png)$/i) {
use Image::Size;
my ($imgx, $imgy) = imgsize($file);
if ($imgx > $maxx) {
$imgy = sprintf("%d", $imgy * ($maxx / $imgx)); $imgx = $maxx;
}
$description = "<a href=\"$returl\"><img src=\"$returl\" width=\"$imgx\" height=\"$imgy\" alt=\"$orgfilename\" /></a><br/>$description";
} else {
$description = "<a href=\"$returl\">$orgfilename</a><br/>$description";
}
}
# new post without rebuilding
my $ret = $rpc->call('metaWeblog.newPost',
$blog_id,
$username,
$password,
{
'title' => $title,
'description' => $description,
'mt_text_more' => $text_more,
'mt_excerpt' => $excerpt,
},
0,
) or die "posting failure: cannot post a new entry";
my $post_id = $ret->result();
my $categories = [
{
'categoryId' => $cat_id{$category},
'isPrimary' => 1,
}, {
'categoryId' => $secondary_cat_id{$secondary_category},
'isPrimary' => 0,
}
];
$ret = $rpc->call('mt.setPostCategories',
$post_id,
$username,
$password,
$categories,
);
# rebuilding to reflect category change
$ret = $rpc->call('metaWeblog.editPost',
$post_id,
$username,
$password,
{
'title' => $title,
'description' => $description,
'mt_text_more' => $text_more,
'mt_excerpt' => $excerpt,
},
$publish
);
#print Dumper $ret->result;
#print Dumper $ret->fault;
#$parser->filer->purge;
exit;
sub arrange_parts {
my ($pn, $cnttype, $cntpath, $cntname) = @_;
if ($cnttype =~ /^text\/plain$/i) {
# plain text
push(@texts, $cntpath);
} else {
# attachment
my ($filename, $filepath, $suffix) = fileparse($cntpath, '\..+');
my $orgsuffix;
$orgsuffix = $1 if ($cntname =~ /.+(\..+)/);
#print "$filename\n$suffix\n$cntname\n";
if ("$filename$suffix" ne $cntname) {
rename($cntpath, "$filepath${message_id}_$pn$orgsuffix");
$cntpath = "$filepath${message_id}_$pn$orgsuffix";
}
if ($build_latest_file) {
my $old_umask = umask($umask);
system("cp", $cntpath, "$latest_file_path$latest.$category$orgsuffix");
umask($old_umask);
}
unshift(@attachs, [ $cntpath, $cntname ]);
if ($orgsuffix eq '.amc') {
#my ($mpgcntpath, $mpgcntname) = amc2mpg($cntpath);
amc2mpg($cntpath);
#unshift(@attachs, [ $mpgcntpath, $mpgcntname ]);
}
}
}
sub amc2mpg {
my $amc = shift;
my ($filename, $filepath, $suffix) = fileparse($amc, '\.amc');
my $mpg = "$filepath$filename.mpg";
my $jpg = "$filepath${filename}_mpg\%d.jpg";
my $jpg1 = "$filepath${filename}_mpg1.jpg";
system("/usr/local/bin/mencoder -nosound -ovc lavc -lavcopts vcodec=mpeg1video $amc -o $mpg");
system("/usr/local/bin/ffmpeg -i $mpg -f jpeg -t 0.1 $jpg");
#return ($mpg, "( --> MPEG1 )");
unshift(@attachs, [ $jpg1, "$filename (MPEG1)" ]);
unshift(@attachs, [ $mpg, "( --> MPEG1 )" ]);
1;
}
# The copyright of the code below is claimed by Nowral, the author written in the code
# http://member.nifty.ne.jp/Nowral/02_DATUM/02_DATUM.html for more info
#
# modified by Nob Seki on July 21, 2003
sub wgs2tky {
my (@lat,@long,$alt);
$lat[0] = shift; $lat[1] = shift, $lat[2] = shift;
$long[0] = shift; $long[1] = shift, $long[2] = shift;
$alt = shift;
#
#!/usr/bin/perl -w
#
# Standard Molodensky Datum Transformation
# Nowral PXI07463@nifty.ne.jp
# 99/11/24
#
# Original Data in Tokyo97
my $b = $lat[0] + $lat[1]/60 + $lat[2]/3600;
my $l = $long[0] + $long[1]/60 + $long[2]/3600;
my $h = $alt;
# Datum of Tokyo97
my $a = 6377397.155;
my $f = 1 / 299.152813;
# Datum of WGS 84
my $a_ = 6378137; #
my $f_ = 1 / 298.257223; #
($b, $l, $h) = &molodensky($b, $l, $h, $a_, $f_, $a, $f);
return (°2dms($b),°2dms($l),$h);
}
sub molodensky {
# Constants
my $pi = 4 * atan2(1,1); # Pi
my $rd = $pi / 180; # Radian
# Change in meter
# e.g. $x_ = $x + $dx etc.
my $dx = +148;
my $dy = -507;
my $dz = -681;
my($b, $l, $h, $a, $f, $a_, $f_) = @_;
my($bda, $e2, $da, $df, $db, $dl, $dh);
my($sb, $cb, $sl, $cl, $rn, $rm);
$b *= $rd;
$l *= $rd;
$e2 = 2*$f - $f*$f; #
$bda = 1- $f; #
($da, $df) = ($a_-$a, $f_-$f);
($sb, $cb, $sl, $cl) = (sin($b), cos($b), sin($l), cos($l));
$rn = 1 / sqrt(1 - $e2*$sb*$sb);
$rm = $a * (1 - $e2) * $rn * $rn * $rn;
$rn *= $a;
$db = -$dx*$sb*$cl - $dy*$sb*$sl + $dz*$cb
+ $da*$rn*$e2*$sb*$cb/$a + $df*($rm/$bda+$rn*$bda)*$sb*$cb;
$db /= $rm + $h;
$dl = -$dx*$sl + $dy*$cl;
$dl /= ($rn+$h) * $cb;
$dh = $dx*$cb*$cl + $dy*$cb*$sl + $dz*$sb
- $da*$a/$rn + $df*$bda*$rn*$sb*$sb;
(($b+$db)/$rd, ($l+$dl)/$rd, $h+$dh);
}
sub deg2dms {
my($d) = @_;
my($m, $s, $sf);
$sf = int($d*360000 + 0.5);
$s = $sf / 100 % 60;
$m = $sf / 6000 % 60;
$d = int($sf/360000);
$sf %= 100;
# modified by Nob, returning an array, not formatted string
return ($d, $m, sprintf("%02d\.%02d", $s, $sf));
}
Åê¹Æ¼Ô: nob seki | July 29, 2003 4:30 AM
Æü»þ: July 29, 2003 04:30
¤Ï¤¸¤á¤Þ¤·¤Æ¡£
¤³¤Á¤é¤ÇÇÛÉÛ¤·¤Æ¤¤¤ë¥á¡¼¥ëÅê¹Æ¥¹¥¯¥ê¥×¥È¤òÂפ¤Þ¤·¤¿¡£
²¿ÅÙ¤«¹Ô¤Ã¤¿Åê¹Æ¤Î¼Â¸³¤ò¤·¤Æ¤¤¤¿¤È¤¤Ë¡¢$url¤òÇÛÉÛÀßÄê¤Î¤Þ¤Þ¤Ë¤·¤Æ¤¤¤ë¤³¤È¤Ëµ¤¤¬ÉÕ¤¤Þ¤·¤¿¡£
̯¤Ê¥¢¥«¥¦¥ó¥È¤Ø¤Î¥á¡¼¥ëÁ÷¿®¤Î¥í¥°¤¬»Ä¤Ã¤Æ¤¤¤ë¤È»×¤¤¤Þ¤¹¤¬¡¢¤½¤ì¤Ï¤ª¤½¤é¤¯¼«Ê¬¤Î¤»¤¤¤Ç¤¹....¤´¤á¤ó¤Ê¤µ¤¤¡£
Åê¹Æ¼Ô: JuNya | August 2, 2003 4:55 PM
Æü»þ: August 2, 2003 16:55
¤½¤í¤½¤í¡¢Ã¯¤Ç¤â»È¤¨¤ë¤è¤¦¤Ë¤·¤ÆÇÛÉÛ¤¹¤ë¤Î¤¬¤è¤µ¤½¤¦¤Ç¤¹¤Í¡Ä
Åê¹Æ¼Ô: nob seki | August 3, 2003 6:40 PM
Æü»þ: August 3, 2003 18:40
Ok
Åê¹Æ¼Ô: Fred | October 23, 2003 5:42 PM
Æü»þ: October 23, 2003 17:42
¥¹¥¯¥ê¥×¥È¡¢»È¤ï¤»¤ÆÄº¤¤¤Æ¤ª¤ê¤Þ¤¹¡£
»ä¤Ïau¤ÎÆüΩÀ½¤Îµ¡¼ï¤Ê¤Î¤Ç¤¹¤¬¡¢²¼µ¤Î
@lat = split(/ +/) if (/^ Latitude /);
@long = split(/ +/) if (/^ Longitude /);
@alt = split(/ +/) if (/^ Altitude /);
¤ò
@lat = split(/ +/) if (/^ Latitude /);
@long = split(/ +/) if (/^ Longitude /);
@alt = split(/ +/) if (/^ Altitude /);
¤È¤·¤Ê¤¤¤È¡¢GPS¾ðÊ󤬼è¤ê½Ð¤»¤Þ¤»¤ó¤Ç¤·¤¿¡£
exiflist¤Î¥Ð¡¼¥¸¥ç¥ó¤Î°ã¤¤¤«¤â¤·¤ì¤Þ¤»¤ó¤¬¡£
Åê¹Æ¼Ô: masaya | January 4, 2004 9:13 PM
Æü»þ: January 4, 2004 21:13
¤¢¡¢½¤ÀµÁ°¸å¤ÇƱ¤¸¤Ë¤Ê¤Ã¤Æ¤·¤Þ¤Ã¤¿¡£
Ⱦ³Ñ¥¹¥Ú¡¼¥¹£²Ê¸»ú¤¬£±Ê¸»ú¤Ë¤Ê¤Ã¤Æ¤·¤Þ¤¦¤Î¤Ç¤¹¤Í¡£
¤È¤¤¤¦¤³¤È¤Ç¡¢¸µ¥¹¥¯¥ê¥×¥È¤Ç¤âƱ¤¸¤è¤¦¤Ë
Latitude
¤Ê¤É¤ÎÁ°¸å¤Ë¤ÏȾ³Ñ¥¹¥Ú¡¼¥¹£²Ê¸»úÆþ¤Ã¤Æ¤¤¤ë¤ß¤¿¤¤¤Ç¤¹¤Í¡£
¤ªÁû¤¬¤»¤·¤Þ¤·¤¿¡£
Åê¹Æ¼Ô: masaya | January 4, 2004 9:19 PM
Æü»þ: January 4, 2004 21:19
¤Ï¤¸¤á¤Þ¤·¤Æ¡£
AU¤ÎGPS¤Ë¤Ä¤¤¤Æ¸¡º÷¤·¤Æ¤¤Þ¤·¤¿¡£
°ìǯ¤âÁ°¤Îµ»ö¤Ë¥³¥á¥ó¥È¤·¤Æ¤¤¤¤¤â¤Î¤«¤É¤¦¤«Ì¤¤¤Þ¤·¤¿¤¬¡¢½ñ¤¯¤À¤±½ñ¤¤¤Æ¤ß¤Þ¤¹¡£
Ê¡²¬¤Ë½»¤à¡¢¤¢¤ë¥Õ¥ê¡¼¤ÇAU¹¥¤¤ÊWEBÀ½ºî¼Ô¤Ê¤ó¤Ç¤¹¤¬¡¢AU·ÈÂÓ¤ÇÌÌÇò¤¤»ö¤¬¤Ç¤¤Ê¤¤¤«¤È¡¢È¾Ç¯¤°¤é¤¤Á°¤Ë¤³¤ó¤Ê¤â¤Î¤òºî¤ê¤Þ¤·¤¿¡£
¡ÖMap Blog¡Ê»îºîÈǡˡ§Å·¿À³¦·¨¡×
GPS·ÈÂÓ¤ÇÅê¹Æ¤Ç¤¤ëFlash¾å¤ÎMAP¤Ç¤¹¡£
ºÇ¶á¤Ï¤¤¤í¤ó¤Ê½ê¤Ç»÷¤¿¤è¤¦¤Ê¤â¤Î¤¬¤¢¤ë¤Î¤Ç¡¢º£¹¹¤Ç¤¹¤±¤É¡£
¤¤¤í¤¤¤í¤ä¤Ã¤Æ¤¤¤³¤¦¤È¤·¤Æ¤ë¤È¤³¤í¤ÇÊüÃÖ¤·¤Æ¤¤¤Þ¤¹¡£
¼ºÎ餷¤Þ¤·¤¿¡£
Åê¹Æ¼Ô: ²æÎ® | August 9, 2004 5:45 PM
Æü»þ: August 9, 2004 17:45