constructor-igor / HebrewCalendarBots

Hebrew Calendar bots
Apache License 2.0
0 stars 0 forks source link

Add Shabbat's time #18

Closed constructor-igor closed 7 years ago

constructor-igor commented 7 years ago

https://www.hebcal.com/home/197/shabbat-times-rest-api

constructor-igor commented 7 years ago

published issue: Please, could you check why the simple test returns data in HTML format (expected json)?

var request = require('request');

var requestShabbat = "http://www.hebcal.com/shabbat/?cfg=json&m=0&b=18&geo=zip&zip=90210"
request.post(requestShabbat,
    { json: { key: 'value' } },
        function (error, response, body) {
        if (!error && response.statusCode == 200) {
            console.log(JSON.stringify(body));
        }
    }
);
<!DOCTYPE html>\n<html><head>\n<meta charset=\"UTF-8\">\n<title>Shabbat Candle Lighting Times for New York City, New York, USA | Hebcal Jewish Calendar</title>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n<link rel=\"stylesheet\" href=\"//maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css\" integrity=\"sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u\" crossorigin=\"anonymous\">\n<link rel=\"stylesheet\" href=\"//maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap-theme.min.css\" integrity=\"sha384-rHyoN1iRsVXV4nD0JutlnGaslCJuC7uwjduW9SVrLvRYooPp2bWYgmgJQIXwl/Sp\" crossorigin=\"anonymous\">\n<script>\n  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){\n  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),\n  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)\n  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');\n  ga('create', 'UA-967247-1', 'auto');\n  ga('set', 'anonymizeIp', true);\n  ga('send', 'pageview');\n</script>\n<style type=\"text/css\">\n.label{text-transform:none}\n:lang(he) {\n  font-family:'Alef','SBL Hebrew',David,serif;\n/*  font-size:125%; */\n  direction:rtl;\n}\n.hebcal-footer {\n  padding-top: 40px;\n  padding-bottom: 40px;\n  margin-top: 40px;\n  color: #777;\n  text-align: center;\n  border-top: 1px solid #e5e5e5;\n}\n.hebcal-footer p {\n  margin-bottom: 2px;\n}\n.bullet-list-inline {\n  padding-left: 0;\n  margin-left: -3px;\n  list-style: none;\n}\n.bullet-list-inline > li {\n  display: inline-block;\n  padding-right: 3px;\n  padding-left: 3px;\n}\n.bullet-list-inline li:after{content:\"\\00a0\\00a0\\00b7\"}\n.bullet-list-inline li:last-child:after{content:\"\"}\n.pagination {margin: 12px 0}\n.h1, .h2, .h3, h1, h2, h3 {\n  margin-top: 15px;\n  margin-bottom: 10px;\n}\n@media print{\n a[href]:after{content:\"\"}\n .sidebar-nav{display:none}\n}\n@media (min-width: 768px) {\n  input#s {\n    width: 132px;\n  }\n}\n</style>\n<meta name=\"description\" content=\"Candle lighting at 8:04pm on Jun 2. Parashat Nasso. Havdalah (50 min) at 9:12pm on Jun 3.\">\n<script type=\"application/ld+json\">\n{\n  \"@context\" : \"http://schema.org\",\n  \"@type\" : \"Event\",\n  \"name\" : \"Candle Lighting for New York City at 8:04pm\",\n  \"startDate\" : \"2017-06-02T20:04:00\",\n  \"location\" : {\n    \"@type\" : \"Place\",\n    \"name\" : \"New York City, New York, USA\",\n    \"address\" : {\n      \"@type\" : \"PostalAddress\",\n      \"addressLocality\" : \"New York City\",\n      \"addressRegion\" : \"New York\",\n      \"addressCountry\" : \"United States\"\n    }\n  }\n}\n</script>\n<link rel=\"alternate\" type=\"application/rss+xml\" title=\"RSS\" href=\"http://www.hebcal.com/shabbat/?cfg=r&amp;geonameid=5128581&amp;m=50&amp;pubDate=0\">\n<link rel=\"stylesheet\" type=\"text/css\" href=\"/i/hyspace-typeahead.css\">\n<style type=\"text/css\">\nul.hebcal-results {\n  list-style-type:none;\n  padding-left: 0;\n}\nul.hebcal-results li {\n  margin-bottom: 11px;\n  font-size: 21px;\n  font-weight: 200;\n  line-height: normal;\n}\nul.list-unstyled.nav-list li {\n  margin-bottom: 6px;\n}\n</style>\n</head>\n<body>\n<!-- Static navbar -->\n<div class=\"navbar navbar-default navbar-static-top\" role=\"navigation\">\n  <div class=\"container-fluid\">\n    <div class=\"navbar-header\">\n      <button type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\".navbar-collapse\">\n        <span class=\"sr-only\">Toggle navigation</span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n        <span class=\"icon-bar\"></span>\n      </button>\n      <a href=\"/\" class=\"navbar-brand\" id=\"logo\" title=\"Hebcal Jewish Calendar\"><img src=\"/i/hebcal-logo-1.2.svg\" width=\"77\" height=\"21\" alt=\"Hebcal\"></a>\n    </div>\n    <div class=\"navbar-collapse collapse\">\n    <ul class=\"nav navbar-nav\"><li><a href=\"/holidays/\" title=\"Jewish Holidays\">Holidays</a></li><li><a href=\"/converter/\" title=\"Hebrew Date Converter\">Date Converter</a></li><li class=\"active\"><a href=\"/shabbat/\" title=\"Shabbat Times\">Shabbat</a></li><li><a href=\"/sedrot/\" title=\"Torah Readings\">Torah</a></li><li><a href=\"/home/about\" title=\"About\">About</a></li><li><a href=\"/home/help\" title=\"Help\">Help</a></li></ul>\n    <form class=\"navbar-form navbar-right\" role=\"search\" method=\"get\" id=\"searchform\" action=\"/home/\">\n     <input name=\"s\" id=\"s\" type=\"text\" class=\"form-control\" placeholder=\"Search\">\n    </form>\n    </div><!--/.navbar-collapse -->\n  </div>\n</div>\n\n<div class=\"container\">\n<div id=\"content\">\n<div class=\"row\">\n<div class=\"col-sm-9\">\n<h1>Shabbat Times <small>New York City, New York, USA</small></h1>\n<!-- ./hebcal -L 74,0 -l 40,43 -z 'America/New_York' -m 50 -c -s -->\n<ul class=\"hebcal-results\">\n<li class=\"candles\" id=\"20170602_candle_lighting\">Candle lighting: <time datetime=\"2017-06-02T20:04:00\"><strong>8:04pm</strong> on Friday, 02 June 2017</time></li>\n<li class=\"parashat\" id=\"20170603_parashat_nasso\">This week's Torah portion is <a target=\"_top\" href=\"http://www.hebcal.com/sedrot/nasso\">Parashat Nasso</a></li>\n<li class=\"havdalah\" id=\"20170603_havdalah_50_min\">Havdalah (50 min): <time datetime=\"2017-06-03T21:12:00\"><strong>9:12pm</strong> on Saturday, 03 June 2017</time></li>\n</ul>\n<hr>\n<form action=\"/shabbat/\" method=\"get\" role=\"form\" id=\"shabbat-form\">\n<input type=\"hidden\" name=\"geo\" value=\"geoname\" id=\"geo\"><input type=\"hidden\" name=\"zip\" value=\"\" id=\"zip\"><input type=\"hidden\" name=\"city\" value=\"\" id=\"city\"><input type=\"hidden\" name=\"geonameid\" value=\"5128581\" id=\"geonameid\">\n  <div class=\"form-group\">\n    <label for=\"city-typeahead\">City</label>\n    <div class=\"city-typeahead\" style=\"margin-bottom:12px\">\n      <input type=\"text\" name=\"city-typeahead\" value=\"New York City, New York, USA\" class=\"form-control typeahead\" id=\"city-typeahead\" placeholder=\"Search for city or ZIP code\">\n    </div>\n  </div>\n  <div class=\"form-group\">\n    <label for=\"m1\">\n      Havdalah minutes past sundown\n      <a href=\"#\" id=\"havdalahInfo\" data-toggle=\"tooltip\" data-placement=\"top\" title=\"Use 42 min for three medium-sized stars, 50 min for three small stars, 72 min for Rabbeinu Tam, or 0 to suppress Havdalah times\"><span class=\"glyphicon glyphicon-info-sign\"></span></a>\n    </label>\n    <input type=\"text\" name=\"m\" value=\"50\" size=\"2\" maxlength=\"2\" class=\"form-control\" id=\"m1\" pattern=\"\\d*\" style=\"width:60px\">\n  </div>\n  <input type=\"submit\" value=\"Get Shabbat Times\" class=\"btn btn-primary\">\n</form>\n<hr>\n<p>Shabbat times for world cities</p>\n<ul class=\"bullet-list-inline\">\n<li><a href=\"/shabbat/?city=IL-Jerusalem\">Jerusalem</a></li>\n<li><a href=\"/shabbat/?city=IL-Tel%20Aviv\">Tel Aviv</a></li>\n<li><a href=\"/shabbat/?city=US-New%20York-NY\">New York</a></li>\n<li><a href=\"/shabbat/?city=US-Los%20Angeles-CA\">Los Angeles</a></li>\n<li><a href=\"/shabbat/?city=GB-London\">London</a></li>\n<li><a href=\"/shabbat/?city=US-Miami-FL\">Miami</a></li>\n<li><a href=\"/shabbat/?city=CA-Montreal\">Montreal</a></li>\n<li><a href=\"/shabbat/?city=US-Baltimore-MD\">Baltimore</a></li>\n<li><a href=\"/shabbat/?city=CA-Toronto\">Toronto</a></li>\n<li><a href=\"/shabbat/?geonameid=5100280\">Lakewood, NJ</a></li>\n<li><a href=\"/shabbat/?city=US-Chicago-IL\">Chicago</a></li>\n<li><a href=\"/shabbat/?geonameid=5110302\">Brooklyn</a></li>\n<li><a href=\"/shabbat/?city=US-San%20Francisco-CA\">San Francisco</a></li>\n<li><a href=\"/shabbat/?geonameid=4148411\">Boca Raton</a></li>\n<li><a href=\"/shabbat/?city=US-Washington-DC\">Washington, DC</a></li>\n<li><a href=\"/shabbat/?geonameid=5809844\">Seattle</a></li>\n<li><a href=\"/shabbat/?city=AU-Melbourne\">Melbourne</a></li>\n<li><a href=\"/shabbat/?city=US-Boston-MA\">Boston</a></li>\n<li><a href=\"/shabbat/?city=CA-Toronto\">Toronto</a></li>\n<li><a href=\"/shabbat/browse/\">More ...</a></li>\n</ul>\n</div><!-- .col-sm-9 -->\n<div class=\"col-sm-3\" role=\"complementary\">\n<div style=\"padding-bottom:16px\">\n<h4>New York City</h4>\n<ul class=\"list-unstyled nav-list\">\n  <li>\n    <span class=\"glyphicon glyphicon-print\"></span>\n    <a title=\"Compact candle-lighting times for 5777\" href=\"/shabbat/fridge.cgi?geonameid=5128581&amp;m=50&amp;year=5777\"> Print 5777</a>\n  </li>\n  <li><span class=\"glyphicon glyphicon-calendar\"></span> <a href=\"/hebcal/?v=1&amp;geo=geoname&amp;geonameid=5128581&amp;m=50&amp;month=x&amp;year=now&amp;c=on&amp;s=on&amp;maj=on&amp;min=on&amp;mod=on&amp;mf=on&amp;ss=on&amp;nx=on\">Monthly calendar</a></li>\n  <li><span class=\"glyphicon glyphicon-envelope\"></span> <a href=\"https://www.hebcal.com/email/?geo=geoname&amp;geonameid=5128581&amp;m=50\">Email weekly Shabbat times</a></li>\n  <li>\n  <img src=\"data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0Ij4KPGc+CjxwYXRoIGQ9Ik0yMS41LDAgTDIuNSwwIEMxLjEyNSwwIDAsMS4xMjUgMCwyLjUgTDAsMjEuNSBDMCwyMi44NzUgMS4xMjUsMjQgMi41LDI0IEwyMS41LDI0IEMyMi44NzUsMjQgMjQsMjIuODc1IDI0LDIxLjUgTDI0LDIuNSBDMjQsMS4xMjUgMjIuODc1LDAgMjEuNSwwIE02LjE4MiwxOS45OCBDNC45NzcsMTkuOTggNCwxOS4wMDUgNCwxNy44IEM0LDE2LjU5NiA0Ljk3NywxNS42MTkgNi4xODIsMTUuNjE5IEM3LjM4NSwxNS42MTkgOC4zNjQsMTYuNTk2IDguMzY0LDE3LjggQzguMzYzLDE5LjAwNSA3LjM4NSwxOS45OCA2LjE4MiwxOS45OCBNMTEuNjUzLDIwIEMxMS42NTMsMTcuOTQzIDEwLjg1NSwxNi4wMDYgOS40MSwxNC41NTMgQzcuOTY3LDEzLjEwMiA2LjA1NiwxMi4zMDIgNCwxMi4zMDIgTDQsOS4xNTMgQzkuODI2LDkuMTUzIDE0LjgwMywxNC4xNzQgMTQuODAzLDIwLjAwMSBMMTEuNjUzLDIwLjAwMSBMMTEuNjUzLDIwIE0xNy4yMTcsMjAgQzE3LjIxNywxMi42NzcgMTEuMTk4LDYuNzE5IDQsNi43MTkgTDQsMy41NyBDMTIuOTEsMy41NyAyMC4zNjUsMTAuOTQgMjAuMzY1LDIwIEwxNy4yMTcsMjAgWiIvPgo8L2c+Cjwvc3ZnPgo=\" width=\"14\" height=\"14\">\n  <a title=\"RSS feed of candle lighting times\" href=\"/shabbat/?cfg=r&amp;geonameid=5128581&amp;m=50&amp;pubDate=0\">RSS feed</a></li>\n  <li><span class=\"glyphicon glyphicon-wrench\"></span> <a rel=\"nofollow\" title=\"Candle lighting and Torah portion for your synagogue site\" href=\"/link/?geonameid=5128581&amp;m=50\">Developer API</a></li>\n</ul>\n</div>\n\n<h5>Advertisement</h5>\n<script async src=\"//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js\"></script>\n<!-- responsive textonly -->\n<ins class=\"adsbygoogle\"\n     style=\"display:block\"\n     data-ad-client=\"ca-pub-7687563417622459\"\n     data-ad-slot=\"5981467974\"\n     data-ad-format=\"auto\"></ins>\n<script>\n(adsbygoogle = window.adsbygoogle || []).push({});\n</script>\n</div><!-- .col-sm-3 -->\n</div><!-- .row -->\n</div><!-- #content -->\n\n<footer role=\"contentinfo\" class=\"hebcal-footer hidden-print\">\n<div class=\"row\">\n<div class=\"col-sm-12\">\n<p><small>Except where otherwise noted, content on this site is licensed under a <a\nrel=\"license\" href=\"http://creativecommons.org/licenses/by/3.0/deed.en_US\">Creative Commons Attribution 3.0 License</a>.</small></p>\n<p><small>Some location data comes from <a href=\"http://www.geonames.org/\">GeoNames</a>,\nalso under a cc-by license.</small></p>\n<ul class=\"bullet-list-inline\">\n<li><time datetime=\"2017-06-02T08:01:05Z\">02 June 2017</time></li>\n<li><a href=\"/home/about\">About</a></li>\n<li><a href=\"/home/about/privacy-policy\">Privacy</a></li>\n<li><a href=\"/home/help\">Help</a></li>\n<li><a href=\"/home/about/contact\">Contact</a></li>\n<li><a href=\"/home/developer-apis\">Developer APIs</a></li>\n</ul>\n</div><!-- .col-sm-12 -->\n</div><!-- .row -->\n</footer>\n</div> <!-- .container -->\n\n<script src=\"//ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js\"></script>\n<script src=\"//maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js\" integrity=\"sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa\" crossorigin=\"anonymous\"></script>\n<script type=\"text/javascript\">\n$(document).ready(function(){\n  $('a.amzn').click(function(){\n    var x = $(this).attr('id');\n    if (x) {\n      ga('send','event','outbound-amzn',x);\n    }\n  });\n  $('a.outbound').click(function(){\n    var c=$(this).attr('href');\n    if (c&&c.length) {\n      var ss=c.indexOf('//');\n      if(ss!=-1) {\n        var d=c.indexOf('/',ss+2),d2=d!=-1?d:c.length;\n        ga('send','event','outbound-article',c.substring(ss+2,d2));\n      }\n    }\n  });\n  $('a.download').click(function(){\n    var x = $(this).attr('id');\n    if (x) {\n      ga('send','event','download',x);\n    }\n  });\n});\n</script>\n<script src=\"//cdnjs.cloudflare.com/ajax/libs/typeahead.js/0.10.4/typeahead.bundle.min.js\"></script>\n<script src=\"/i/hebcal-app-1.6.min.js\"></script>\n<script type=\"text/javascript\">\nwindow['hebcal'].createCityTypeahead(false);\n$('#havdalahInfo').click(function(e){e.preventDefault()}).tooltip();\n</script>\n</body></html>\n<!-- generated 2017-06-02T08:01:05Z; 0.175363 wallclock secs ( 0.11 usr +  0.01 sys =  0.12 CPU) -->\n

https://github.com/hebcal/hebcal/issues/139

constructor-igor commented 7 years ago

get coordinates by location:

http://maps.google.com/maps/api/geocode/json?address=Modiin
{
   "results" : [
      {
         "address_components" : [
            {
               "long_name" : "Modi'in-Maccabim-Re'ut",
               "short_name" : "Modi'in-Maccabim-Re'ut",
               "types" : [ "locality", "political" ]
            },
            {
               "long_name" : "Ramla",
               "short_name" : "Ramla",
               "types" : [ "administrative_area_level_2", "political" ]
            },
            {
               "long_name" : "Center District",
               "short_name" : "Center District",
               "types" : [ "administrative_area_level_1", "political" ]
            },
            {
               "long_name" : "Israel",
               "short_name" : "IL",
               "types" : [ "country", "political" ]
            }
         ],
         "formatted_address" : "Modi'in-Maccabim-Re'ut, Israel",
         "geometry" : {
            "bounds" : {
               "northeast" : {
                  "lat" : 31.932823,
                  "lng" : 35.040839
               },
               "southwest" : {
                  "lat" : 31.8577261,
                  "lng" : 34.9353009
               }
            },
            "location" : {
               "lat" : 31.890267,
               "lng" : 35.010397
            },
            "location_type" : "APPROXIMATE",
            "viewport" : {
               "northeast" : {
                  "lat" : 31.932823,
                  "lng" : 35.040839
               },
               "southwest" : {
                  "lat" : 31.8577261,
                  "lng" : 34.9353009
               }
            }
         },
         "place_id" : "ChIJNZp8usTNAhURAzIT5b9sX68",
         "types" : [ "locality", "political" ]
      }
   ],
   "status" : "OK"
}
constructor-igor commented 7 years ago

timezone: https://developers.google.com/maps/documentation/timezone/intro#Requests

constructor-igor commented 7 years ago

get "time zone" by coordinates: https://timezonedb.com/ google API: https://developers.google.com/maps/documentation/timezone/start

https://maps.googleapis.com/maps/api/timezone/json?location=31.890267,35.010397&timestamp=1458000000&key=KEY

response:

{
   "dstOffset" : 0,
   "rawOffset" : 7200,
   "status" : "OK",
   "timeZoneId" : "Asia/Jerusalem",
   "timeZoneName" : "Israel Standard Time"
}