Advertisement
Guest User

ccu.io sprit adapter

a guest
Jul 11th, 2014
260
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. var request = require("request");
  2.  
  3. var settings = require(__dirname+'/../../settings.js');
  4.  
  5. if (!settings.adapters.sprit || !settings.adapters.sprit.enabled) {
  6.     process.exit();
  7. }
  8.  
  9. var logger =    require(__dirname+'/../../logger.js'),
  10.     io =        require('socket.io-client');
  11.  
  12. logger.info("adapter sprit connecting to ccu.io");
  13.  
  14. if (settings.ioListenPort) {
  15.     var socket = io.connect("127.0.0.1", {
  16.         port: settings.ioListenPort
  17.     });
  18. } else if (settings.ioListenPortSsl) {
  19.     var socket = io.connect("127.0.0.1", {
  20.         port: settings.ioListenPortSsl,
  21.         secure: true
  22.     });
  23. } else {
  24.     process.exit();
  25. }
  26.  
  27. var adapterSettings = settings.adapters.sprit.settings;
  28. var firstId = settings.adapters.sprit.firstId;
  29.  
  30. var id = firstId;
  31.  
  32. logger.info("adapter sprit inserting objects");
  33.  
  34. socket.emit("setObject", id, {
  35.     _persistent: true,
  36.     Name: "Spritpreise Super E5",
  37.     TypeName: "DEVICE",
  38.     Interface: "SPRIT",
  39.     Address: "SPRIT.SUPERE5",
  40.     HssType: "SPRIT",
  41.     Channels: [
  42.         id + 1,
  43.         id + 8,
  44.         id + 15
  45.     ]
  46. });
  47.  
  48. id += 1;
  49.  
  50. socket.emit("setObject", id, {
  51.     _persistent: true,
  52.     Name: "Super E5 Platz 1",
  53.     TypeName: "CHANNEL",
  54.     Address: "SPRIT.SUPERE5:1",
  55.     HssType: "SPRIT",
  56.     Parent: firstId,
  57.     ChnLabel: "SPRIT",
  58.     DPs: {
  59.         NAME: id + 1,
  60.         PRICE: id + 2,
  61.         ADDRESS1: id + 3,
  62.         ADDRESS2: id + 4,
  63.         LONGITUDE: id + 5,
  64.         LATITUDE: id + 6
  65.     }
  66. });
  67. socket.emit("setObject", id + 1, {
  68.     _persistent: true,
  69.     Name: "SPRIT.SUPERE5:1.NAME",
  70.     TypeName: "HSSDP",
  71.     Parent: id
  72. });
  73. socket.emit("setObject", id + 2, {
  74.     _persistent: true,
  75.     Name: "SPRIT.SUPERE5:1.PRICE",
  76.     ValueUnit: "€",
  77.     TypeName: "HSSDP",
  78.     Parent: id
  79. });
  80. socket.emit("setObject", id + 3, {
  81.     _persistent: true,
  82.     Name: "SPRIT.SUPERE5:1.ADDRESS1",
  83.     TypeName: "HSSDP",
  84.     Parent: id
  85. });
  86. socket.emit("setObject", id + 4, {
  87.     _persistent: true,
  88.     Name: "SPRIT.SUPERE5:1.ADDRESS2",
  89.     TypeName: "HSSDP",
  90.     Parent: id
  91. });
  92. socket.emit("setObject", id + 5, {
  93.     _persistent: true,
  94.     Name: "SPRIT.SUPERE5:1.LONGITUDE",
  95.     TypeName: "HSSDP",
  96.     Parent: id
  97. });
  98. socket.emit("setObject", id + 6, {
  99.     _persistent: true,
  100.     Name: "SPRIT.SUPERE5:1.LATITUDE",
  101.     TypeName: "HSSDP",
  102.     Parent: id
  103. });
  104.  
  105. id += 7;
  106.  
  107. socket.emit("setObject", id, {
  108.     _persistent: true,
  109.     Name: "Super E5 Platz 2",
  110.     TypeName: "CHANNEL",
  111.     Address: "SPRIT.SUPERE5:2",
  112.     HssType: "SPRIT",
  113.     Parent: firstId,
  114.     ChnLabel: "SPRIT",
  115.     DPs: {
  116.         NAME: id + 1,
  117.         PRICE: id + 2,
  118.         ADDRESS1: id + 3,
  119.         ADDRESS2: id + 4,
  120.         LONGITUDE: id + 5,
  121.         LATITUDE: id + 6
  122.     }
  123. });
  124. socket.emit("setObject", id + 1, {
  125.     _persistent: true,
  126.     Name: "SPRIT.SUPERE5:2.NAME",
  127.     TypeName: "HSSDP",
  128.     Parent: id
  129. });
  130. socket.emit("setObject", id + 2, {
  131.     _persistent: true,
  132.     Name: "SPRIT.SUPERE5:2.PRICE",
  133.     ValueUnit: "€",
  134.     TypeName: "HSSDP",
  135.     Parent: id
  136. });
  137. socket.emit("setObject", id + 3, {
  138.     _persistent: true,
  139.     Name: "SPRIT.SUPERE5:2.ADDRESS1",
  140.     TypeName: "HSSDP",
  141.     Parent: id
  142. });
  143. socket.emit("setObject", id + 4, {
  144.     _persistent: true,
  145.     Name: "SPRIT.SUPERE5:2.ADDRESS2",
  146.     TypeName: "HSSDP",
  147.     Parent: id
  148. });
  149. socket.emit("setObject", id + 5, {
  150.     _persistent: true,
  151.     Name: "SPRIT.SUPERE5:2.LONGITUDE",
  152.     TypeName: "HSSDP",
  153.     Parent: id
  154. });
  155. socket.emit("setObject", id + 6, {
  156.     _persistent: true,
  157.     Name: "SPRIT.SUPERE5:2.LATITUDE",
  158.     TypeName: "HSSDP",
  159.     Parent: id
  160. });
  161.  
  162. id += 7;
  163.  
  164. socket.emit("setObject", id, {
  165.     _persistent: true,
  166.     Name: "Super E5 Platz 3",
  167.     TypeName: "CHANNEL",
  168.     Address: "SPRIT.SUPERE5:3",
  169.     HssType: "SPRIT",
  170.     Parent: firstId,
  171.     ChnLabel: "SPRIT",
  172.     DPs: {
  173.         NAME: id + 1,
  174.         PRICE: id + 2,
  175.         ADDRESS1: id + 3,
  176.         ADDRESS2: id + 4,
  177.         LONGITUDE: id + 5,
  178.         LATITUDE: id + 6
  179.     }
  180. });
  181. socket.emit("setObject", id + 1, {
  182.     _persistent: true,
  183.     Name: "SPRIT.SUPERE5:3.NAME",
  184.     TypeName: "HSSDP",
  185.     Parent: id
  186. });
  187. socket.emit("setObject", id + 2, {
  188.     _persistent: true,
  189.     Name: "SPRIT.SUPERE5:3.PRICE",
  190.     ValueUnit: "€",
  191.     TypeName: "HSSDP",
  192.     Parent: id
  193. });
  194. socket.emit("setObject", id + 3, {
  195.     _persistent: true,
  196.     Name: "SPRIT.SUPERE5:3.ADDRESS1",
  197.     TypeName: "HSSDP",
  198.     Parent: id
  199. });
  200. socket.emit("setObject", id + 4, {
  201.     _persistent: true,
  202.     Name: "SPRIT.SUPERE5:3.ADDRESS2",
  203.     TypeName: "HSSDP",
  204.     Parent: id
  205. });
  206. socket.emit("setObject", id + 5, {
  207.     _persistent: true,
  208.     Name: "SPRIT.SUPERE5:3.LONGITUDE",
  209.     TypeName: "HSSDP",
  210.     Parent: id
  211. });
  212. socket.emit("setObject", id + 6, {
  213.     _persistent: true,
  214.     Name: "SPRIT.SUPERE5:3.LATITUDE",
  215.     TypeName: "HSSDP",
  216.     Parent: id
  217. });
  218.  
  219. id += 7;
  220.  
  221. // ----------------- ENDE E5
  222.  
  223. socket.emit("setObject", id, {
  224.     _persistent: true,
  225.     Name: "Spritpreise Super E10",
  226.     TypeName: "DEVICE",
  227.     Interface: "SPRIT",
  228.     Address: "SPRIT.SUPERE10",
  229.     HssType: "SPRIT",
  230.     Channels: [
  231.         id + 1,
  232.         id + 8,
  233.         id + 15
  234.     ]
  235. });
  236.  
  237. id += 1;
  238.  
  239. socket.emit("setObject", id, {
  240.     _persistent: true,
  241.     Name: "Super E10 Platz 1",
  242.     TypeName: "CHANNEL",
  243.     Address: "SPRIT.SUPERE10:1",
  244.     HssType: "SPRIT",
  245.     Parent: firstId + 22,
  246.     ChnLabel: "SPRIT",
  247.     DPs: {
  248.         NAME: id + 1,
  249.         PRICE: id + 2,
  250.         ADDRESS1: id + 3,
  251.         ADDRESS2: id + 4,
  252.         LONGITUDE: id + 5,
  253.         LATITUDE: id + 6
  254.     }
  255. });
  256. socket.emit("setObject", id + 1, {
  257.     _persistent: true,
  258.     Name: "SPRIT.SUPERE10:1.NAME",
  259.     TypeName: "HSSDP",
  260.     Parent: id
  261. });
  262. socket.emit("setObject", id + 2, {
  263.     _persistent: true,
  264.     Name: "SPRIT.SUPERE10:1.PRICE",
  265.     ValueUnit: "€",
  266.     TypeName: "HSSDP",
  267.     Parent: id
  268. });
  269. socket.emit("setObject", id + 3, {
  270.     _persistent: true,
  271.     Name: "SPRIT.SUPERE10:1.ADDRESS1",
  272.     TypeName: "HSSDP",
  273.     Parent: id
  274. });
  275. socket.emit("setObject", id + 4, {
  276.     _persistent: true,
  277.     Name: "SPRIT.SUPERE10:1.ADDRESS2",
  278.     TypeName: "HSSDP",
  279.     Parent: id
  280. });
  281. socket.emit("setObject", id + 5, {
  282.     _persistent: true,
  283.     Name: "SPRIT.SUPERE10:1.LONGITUDE",
  284.     TypeName: "HSSDP",
  285.     Parent: id
  286. });
  287. socket.emit("setObject", id + 6, {
  288.     _persistent: true,
  289.     Name: "SPRIT.SUPERE10:1.LATITUDE",
  290.     TypeName: "HSSDP",
  291.     Parent: id
  292. });
  293.  
  294. id += 7;
  295.  
  296. socket.emit("setObject", id, {
  297.     _persistent: true,
  298.     Name: "Super E10 Platz 2",
  299.     TypeName: "CHANNEL",
  300.     Address: "SPRIT.SUPERE10:2",
  301.     HssType: "SPRIT",
  302.     Parent: firstId + 22,
  303.     ChnLabel: "SPRIT",
  304.     DPs: {
  305.         NAME: id + 1,
  306.         PRICE: id + 2,
  307.         ADDRESS1: id + 3,
  308.         ADDRESS2: id + 4,
  309.         LONGITUDE: id + 5,
  310.         LATITUDE: id + 6
  311.     }
  312. });
  313. socket.emit("setObject", id + 1, {
  314.     _persistent: true,
  315.     Name: "SPRIT.SUPERE10:2.NAME",
  316.     TypeName: "HSSDP",
  317.     Parent: id
  318. });
  319. socket.emit("setObject", id + 2, {
  320.     _persistent: true,
  321.     Name: "SPRIT.SUPERE10:2.PRICE",
  322.     ValueUnit: "€",
  323.     TypeName: "HSSDP",
  324.     Parent: id
  325. });
  326. socket.emit("setObject", id + 3, {
  327.     _persistent: true,
  328.     Name: "SPRIT.SUPERE10:2.ADDRESS1",
  329.     TypeName: "HSSDP",
  330.     Parent: id
  331. });
  332. socket.emit("setObject", id + 4, {
  333.     _persistent: true,
  334.     Name: "SPRIT.SUPERE10:2.ADDRESS2",
  335.     TypeName: "HSSDP",
  336.     Parent: id
  337. });
  338. socket.emit("setObject", id + 5, {
  339.     _persistent: true,
  340.     Name: "SPRIT.SUPERE10:2.LONGITUDE",
  341.     TypeName: "HSSDP",
  342.     Parent: id
  343. });
  344. socket.emit("setObject", id + 6, {
  345.     _persistent: true,
  346.     Name: "SPRIT.SUPERE10:2.LATITUDE",
  347.     TypeName: "HSSDP",
  348.     Parent: id
  349. });
  350.  
  351. id += 7;
  352.  
  353. socket.emit("setObject", id, {
  354.     _persistent: true,
  355.     Name: "Super E10 Platz 3",
  356.     TypeName: "CHANNEL",
  357.     Address: "SPRIT.SUPERE10:3",
  358.     HssType: "SPRIT",
  359.     Parent: firstId + 22,
  360.     ChnLabel: "SPRIT",
  361.     DPs: {
  362.         NAME: id + 1,
  363.         PRICE: id + 2,
  364.         ADDRESS1: id + 3,
  365.         ADDRESS2: id + 4,
  366.         LONGITUDE: id + 5,
  367.         LATITUDE: id + 6
  368.     }
  369. });
  370. socket.emit("setObject", id + 1, {
  371.     _persistent: true,
  372.     Name: "SPRIT.SUPERE10:3.NAME",
  373.     TypeName: "HSSDP",
  374.     Parent: id
  375. });
  376. socket.emit("setObject", id + 2, {
  377.     _persistent: true,
  378.     Name: "SPRIT.SUPERE10:3.PRICE",
  379.     ValueUnit: "€",
  380.     TypeName: "HSSDP",
  381.     Parent: id
  382. });
  383. socket.emit("setObject", id + 3, {
  384.     _persistent: true,
  385.     Name: "SPRIT.SUPERE10:3.ADDRESS1",
  386.     TypeName: "HSSDP",
  387.     Parent: id
  388. });
  389. socket.emit("setObject", id + 4, {
  390.     _persistent: true,
  391.     Name: "SPRIT.SUPERE10:3.ADDRESS2",
  392.     TypeName: "HSSDP",
  393.     Parent: id
  394. });
  395. socket.emit("setObject", id + 5, {
  396.     _persistent: true,
  397.     Name: "SPRIT.SUPERE10:3.LONGITUDE",
  398.     TypeName: "HSSDP",
  399.     Parent: id
  400. });
  401. socket.emit("setObject", id + 6, {
  402.     _persistent: true,
  403.     Name: "SPRIT.SUPERE10:3.LATITUDE",
  404.     TypeName: "HSSDP",
  405.     Parent: id
  406. });
  407.  
  408. id += 7;
  409.  
  410. // -------- ENDE E10
  411.  
  412. socket.emit("setObject", id, {
  413.     _persistent: true,
  414.     Name: "Spritpreise Diesel",
  415.     TypeName: "DEVICE",
  416.     Interface: "SPRIT",
  417.     Address: "SPRIT.DIESEL",
  418.     HssType: "SPRIT",
  419.     Channels: [
  420.         id + 1,
  421.         id + 8,
  422.         id + 15
  423.     ]
  424. });
  425.  
  426. id += 1;
  427.  
  428. socket.emit("setObject", id, {
  429.     _persistent: true,
  430.     Name: "Diesel Platz 1",
  431.     TypeName: "CHANNEL",
  432.     Address: "SPRIT.DIESEL:1",
  433.     HssType: "SPRIT",
  434.     Parent: firstId + 44,
  435.     ChnLabel: "SPRIT",
  436.     DPs: {
  437.         NAME: id + 1,
  438.         PRICE: id + 2,
  439.         ADDRESS1: id + 3,
  440.         ADDRESS2: id + 4,
  441.         LONGITUDE: id + 5,
  442.         LATITUDE: id + 6
  443.     }
  444. });
  445. socket.emit("setObject", id + 1, {
  446.     _persistent: true,
  447.     Name: "SPRIT.DIESEL:1.NAME",
  448.     TypeName: "HSSDP",
  449.     Parent: id
  450. });
  451. socket.emit("setObject", id + 2, {
  452.     _persistent: true,
  453.     Name: "SPRIT.DIESEL:1.PRICE",
  454.     ValueUnit: "€",
  455.     TypeName: "HSSDP",
  456.     Parent: id
  457. });
  458. socket.emit("setObject", id + 3, {
  459.     _persistent: true,
  460.     Name: "SPRIT.DIESEL:1.ADDRESS1",
  461.     TypeName: "HSSDP",
  462.     Parent: id
  463. });
  464. socket.emit("setObject", id + 4, {
  465.     _persistent: true,
  466.     Name: "SPRIT.DIESEL:1.ADDRESS2",
  467.     TypeName: "HSSDP",
  468.     Parent: id
  469. });
  470. socket.emit("setObject", id + 5, {
  471.     _persistent: true,
  472.     Name: "SPRIT.DIESEL:1.LONGITUDE",
  473.     TypeName: "HSSDP",
  474.     Parent: id
  475. });
  476. socket.emit("setObject", id + 6, {
  477.     _persistent: true,
  478.     Name: "SPRIT.DIESEL:1.LATITUDE",
  479.     TypeName: "HSSDP",
  480.     Parent: id
  481. });
  482.  
  483. id += 7;
  484.  
  485. socket.emit("setObject", id, {
  486.     _persistent: true,
  487.     Name: "Diesel Platz 2",
  488.     TypeName: "CHANNEL",
  489.     Address: "SPRIT.DIESEL:2",
  490.     HssType: "SPRIT",
  491.     Parent: firstId + 44,
  492.     ChnLabel: "SPRIT",
  493.     DPs: {
  494.         NAME: id + 1,
  495.         PRICE: id + 2,
  496.         ADDRESS1: id + 3,
  497.         ADDRESS2: id + 4,
  498.         LONGITUDE: id + 5,
  499.         LATITUDE: id + 6
  500.     }
  501. });
  502. socket.emit("setObject", id + 1, {
  503.     _persistent: true,
  504.     Name: "SPRIT.DIESEL:2.NAME",
  505.     TypeName: "HSSDP",
  506.     Parent: id
  507. });
  508. socket.emit("setObject", id + 2, {
  509.     _persistent: true,
  510.     Name: "SPRIT.DIESEL:2.PRICE",
  511.     ValueUnit: "€",
  512.     TypeName: "HSSDP",
  513.     Parent: id
  514. });
  515. socket.emit("setObject", id + 3, {
  516.     _persistent: true,
  517.     Name: "SPRIT.DIESEL:2.ADDRESS1",
  518.     TypeName: "HSSDP",
  519.     Parent: id
  520. });
  521. socket.emit("setObject", id + 4, {
  522.     _persistent: true,
  523.     Name: "SPRIT.DIESEL:2.ADDRESS2",
  524.     TypeName: "HSSDP",
  525.     Parent: id
  526. });
  527. socket.emit("setObject", id + 5, {
  528.     _persistent: true,
  529.     Name: "SPRIT.DIESEL:2.LONGITUDE",
  530.     TypeName: "HSSDP",
  531.     Parent: id
  532. });
  533. socket.emit("setObject", id + 6, {
  534.     _persistent: true,
  535.     Name: "SPRIT.DIESEL:2.LATITUDE",
  536.     TypeName: "HSSDP",
  537.     Parent: id
  538. });
  539.  
  540. id += 7;
  541.  
  542. socket.emit("setObject", id, {
  543.     _persistent: true,
  544.     Name: "Diesel Platz 3",
  545.     TypeName: "CHANNEL",
  546.     Address: "SPRIT.DIESEL:3",
  547.     HssType: "SPRIT",
  548.     Parent: firstId + 44,
  549.     ChnLabel: "SPRIT",
  550.     DPs: {
  551.         NAME: id + 1,
  552.         PRICE: id + 2,
  553.         ADDRESS1: id + 3,
  554.         ADDRESS2: id + 4,
  555.         LONGITUDE: id + 5,
  556.         LATITUDE: id + 6
  557.     }
  558. });
  559. socket.emit("setObject", id + 1, {
  560.     _persistent: true,
  561.     Name: "SPRIT.DIESEL:3.NAME",
  562.     TypeName: "HSSDP",
  563.     Parent: id
  564. });
  565. socket.emit("setObject", id + 2, {
  566.     _persistent: true,
  567.     Name: "SPRIT.DIESEL:3.PRICE",
  568.     ValueUnit: "€",
  569.     TypeName: "HSSDP",
  570.     Parent: id
  571. });
  572. socket.emit("setObject", id + 3, {
  573.     _persistent: true,
  574.     Name: "SPRIT.DIESEL:3.ADDRESS1",
  575.     TypeName: "HSSDP",
  576.     Parent: id
  577. });
  578. socket.emit("setObject", id + 4, {
  579.     _persistent: true,
  580.     Name: "SPRIT.DIESEL:3.ADDRESS2",
  581.     TypeName: "HSSDP",
  582.     Parent: id
  583. });
  584. socket.emit("setObject", id + 5, {
  585.     _persistent: true,
  586.     Name: "SPRIT.DIESEL:3.LONGITUDE",
  587.     TypeName: "HSSDP",
  588.     Parent: id
  589. });
  590. socket.emit("setObject", id + 6, {
  591.     _persistent: true,
  592.     Name: "SPRIT.DIESEL:3.LATITUDE",
  593.     TypeName: "HSSDP",
  594.     Parent: id
  595. });
  596.  
  597.  
  598. var zip     = adapterSettings.zip;
  599. var radius  = adapterSettings.radius;
  600.  
  601. var e5 = adapterSettings.e5;
  602. var e10 = adapterSettings.e10;
  603. var diesel = adapterSettings.diesel;
  604.  
  605. function insertData(id, data) {
  606.     id = parseInt(id, 10);
  607.     for (var i = 0; i < data.length; i++) {
  608.         var price = data[i];
  609.         socket.emit("setState", [id + (i * 7) + 2, price.name]);
  610.         socket.emit("setState", [id + (i * 7) + 3, price.price]);
  611.         socket.emit("setState", [id + (i * 7) + 4, price.address1]);
  612.         socket.emit("setState", [id + (i * 7) + 5, price.address2]);
  613.         socket.emit("setState", [id + (i * 7) + 6, price.longitude]);
  614.         socket.emit("setState", [id + (i * 7) + 7, price.latitude]);
  615.     }
  616. }
  617.  
  618. function processData(data) {
  619.     //console.log(data);
  620.  
  621.     if (data.e5) {
  622.         insertData(firstId, data.e5.slice(0, 3));
  623.     }
  624.     if (data.e10) {
  625.         insertData(firstId + 22, data.e10.slice(0, 3));
  626.     }
  627.     if (data.diesel) {
  628.         insertData(firstId + 44, data.diesel.slice(0, 3));
  629.     }
  630.  
  631.     setTimeout(function () {
  632.         logger.info("adapter sprit terminating");
  633.         process.exit();
  634.     }, 60000);
  635. }
  636.  
  637. var priceObj = {};
  638.  
  639. if (e5) {
  640.     getPrices(zip, radius, 1, function (arr) {
  641.         priceObj.e5 = arr;
  642.         if (e10) {
  643.             getPrices(zip, radius, 2, function (arr) {
  644.                 priceObj.e10 = arr;
  645.                 if (diesel) {
  646.                     getPrices(zip, radius, 3, function (arr) {
  647.                         priceObj.diesel = arr;
  648.                         processData(priceObj);
  649.                     });
  650.                 } else {
  651.                     processData(priceObj);
  652.                 }
  653.             });
  654.         } else if (diesel) {
  655.             getPrices(zip, radius, 3, function (arr) {
  656.                 priceObj.diesel = arr;
  657.                 processData(priceObj);
  658.             });
  659.         } else {
  660.             processData(priceObj);
  661.         }
  662.     });
  663. } else if (e10) {
  664.     getPrices(zip, radius, 2, function (arr) {
  665.         priceObj.e10 = arr;
  666.         if (diesel) {
  667.             getPrices(zip, radius, 3, function (arr) {
  668.                 priceObj.diesel = arr;
  669.                 processData(priceObj);
  670.             });
  671.         } else {
  672.             processData(priceObj);
  673.         }
  674.     });
  675. } else if (diesel) {
  676.     getPrices(zip, radius, 3, function (arr) {
  677.         priceObj.diesel = arr;
  678.         processData(priceObj);
  679.     });
  680. }
  681.  
  682.  
  683. function getPrices(zip, radius, type, callback) {
  684.  
  685.  
  686. var userAgents = [
  687.     "Mozilla/5.0 (iPad; U; CPU OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B334b Safari/531.21.10",
  688.     "Mozilla/5.0 (Windows NT 5.1; rv:6.0.2) Gecko/20100101 Firefox/6.0.2",
  689.     "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; en-us) AppleWebKit/531.21.8 (KHTML, like Gecko) Version/4.0.4 Safari/5",
  690.     "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; CIBA; .NET4.0C; .NET4.0E; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)",
  691.     "Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2049.0 Safari/537.36"
  692. ];
  693.  
  694.  
  695.  
  696.     logger.info("adapter sprit getPrices zip="+zip+" radius="+radius+" type="+type);
  697.     var options = {
  698.         "url": "http://www.sparsamtanken.de/guenstigster-spritpreis?plz=" + zip + "&umkreis=" + radius + "&sorte=" + type,
  699.         "headers": {
  700.             "User-Agent": userAgents[4]
  701.         }
  702.     };
  703.     //console.log(options);
  704.     request(options, function (err, res) {
  705.  
  706.         //console.log(res.body);
  707.         var prices = [];
  708.         var lines = res.body.split("\n");
  709.         var descCount = 0;
  710.         var priceCount = 0;
  711.  
  712.         for (var i = 0; i < lines.length; i++) {
  713.             var line = lines[i];
  714.             var desc;
  715.             if (desc = line.match(/tankstellen-details\?[a-zA-Z0-9-_=\&%.]+">([^<]+)/)) {
  716.                 //console.log(desc);
  717.                 prices[descCount++] = {
  718.                     name: desc[1]
  719.                 };
  720.             }
  721.  
  722.             if (line.match(/marker\.push/)) {
  723.                 var positionLine = lines[i + 1];
  724.                 var titleLine = lines[i + 4];
  725.  
  726.                 var latLng = positionLine.match(/LatLng\(([0-9.]+), ([0-9.]+)\)/);
  727.  
  728.                 prices[priceCount].latitude = parseFloat(latLng[1]);
  729.                 prices[priceCount].longitude = parseFloat(latLng[2]);
  730.                 var tmpArr = titleLine.split("'");
  731.                 tmpArr = tmpArr[1].split(",");
  732.                 var priceArr = tmpArr[0].split(" ");
  733.                 var price = priceArr[priceArr.length - 2];
  734.                 var street = tmpArr[tmpArr.length - 2] || "";
  735.                 var city = tmpArr[tmpArr.length - 1] || "";
  736.                 prices[priceCount].price = parseFloat(price);
  737.                 prices[priceCount].address1 = street.trim();
  738.                 prices[priceCount].address2 = city.trim();
  739.  
  740.                 priceCount += 1;
  741.                 i += 4;
  742.             }
  743.         }
  744.         setTimeout(function (_prices) {
  745.             callback(_prices);
  746.         }, 3000, prices);
  747.  
  748.     });
  749. }
  750.  
  751. setTimeout(function () {
  752.     logger.info("adapter sprit force terminating");
  753.     process.exit();
  754. }, 600000);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement