{"_id":"@brafdlog/israeli-bank-scrapers-core","_rev":"2-6d4e182fc0488f1a4db13bdb0f50061e","name":"@brafdlog/israeli-bank-scrapers-core","dist-tags":{"latest":"0.9.2"},"versions":{"0.9.1":{"name":"@brafdlog/israeli-bank-scrapers-core","version":"0.9.1","description":"Provide scrapers for all major Israeli banks and credit card companies","engines":{"node":">= 8.2.1","npm":">= 5.3.0"},"main":"lib/index.js","types":"lib/index.d.ts","scripts":{"clean":"rimraf lib","test":"cross-env BABEL_ENV=test jest","test:ci":"ncp src/tests/.tests-config.tpl.js src/tests/.tests-config.js && npm run test","lint":"eslint src --ext .ts","type-check":"tsc --noEmit","dev":"npm run type-check -- --watch","build":"npm run lint && npm run clean && npm run build:types && npm run build:js && npm run build:puppeteer-config","build:types":"tsc --emitDeclarationOnly","build:puppeteer-config":"cp src/puppeteer-config.json lib","build:js":"babel src --out-dir lib --extensions \".ts\" --source-maps inline --verbose","prebuild":"node utils/update-puppeteer-config.js","postbuild":"rimraf lib/tests","prepare:core":"node utils/prepare-israeli-bank-scrapers-core.js && npm i --package-lock-only && npm ci && npm run build","prepare:default":"npm ci && npm run build","reset":"git reset --hard && npm ci","publish:core":"npm run prepare:core && npm publish --access public && npm run reset","publish:default":"npm run prepare:default && npm test && npm publish --access public && npm run reset","publish:all":"npm run publish:default && npm run publish:core"},"pre-commit":["lint"],"repository":{"type":"git","url":"git+https://github.com/brafdlog/israeli-bank-scrapers.git"},"keywords":["israel","israeli bank","israeli bank scraper"],"author":{"name":"Elad Shaham"},"license":"MIT","bugs":{"url":"https://github.com/eshaham/israeli-bank-scrapers/issues"},"homepage":"https://github.com/eshaham/israeli-bank-scrapers#readme","devDependencies":{"@babel/cli":"^7.4.4","@babel/core":"^7.4.5","@babel/preset-env":"^7.4.5","@babel/preset-typescript":"^7.9.0","@types/jest":"^25.1.5","@types/json2csv":"^5.0.1","@types/lodash":"^4.14.149","@types/node-fetch":"^2.5.6","@types/puppeteer":"^2.0.1","@types/source-map-support":"^0.5.1","@types/uuid":"^7.0.3","@typescript-eslint/eslint-plugin":"^2.27.0","@typescript-eslint/parser":"^2.26.0","babel-jest":"^25.3.0","babel-plugin-import-visitor":"^0.2.0","cross-env":"^6.0.3","eslint":"^6.6.0","eslint-config-airbnb-base":"^14.0.0","eslint-config-airbnb-typescript":"^7.2.1","eslint-plugin-import":"^2.20.2","jest":"^25.3.0","ncp":"^2.0.0","pre-commit":"^1.2.2","rimraf":"^3.0.0","source-map-support":"^0.5.16","ts-jest":"^25.3.0","typescript":"^3.8.3"},"dependencies":{"build-url":"^2.0.0","core-js":"^3.1.4","lodash":"^4.17.10","moment":"^2.22.2","node-fetch":"^2.2.0","uuid":"^3.3.2","json2csv":"^4.5.4","puppeteer-core":"^2.0.0"},"gitHead":"6a566bcaa83fe81deca8790083c4bd5a889bcf29","_id":"@brafdlog/israeli-bank-scrapers-core@0.9.1","_nodeVersion":"12.14.1","_npmVersion":"6.13.4","dist":{"integrity":"sha512-AdC+QO6BwLW2mafVGFy2wuJKQuMVO1OXc0nvsLbAFTaOrbgmTI42KkaZF/ceH/RrCNJPkzisUELWpreT/UQPwQ==","shasum":"e8b1bbde8ca6c080e34a038b90af6b5589ef0dc8","tarball":"https://registry.npmjs.org/@brafdlog/israeli-bank-scrapers-core/-/israeli-bank-scrapers-core-0.9.1.tgz","fileCount":76,"unpackedSize":558806,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfHCMqCRA9TVsSAnZWagAA00AP/3mN+Q/oNc1QfK4F5eBX\nLBc3KUAITlfiY5hGznKZAau4QdAUVgE6JHVBWBn1Q955tlQ4rJCeD5GL7fs9\ngU1AJN3BGVeBR1p7qz9Jfvirg6buwmK7bAGQkEO532mAY7v0olMu3tzWt/J2\nyIVYTTKAic4qXpJLIJ/L8YO2WDPbkg+2VXVaQ0ffG1yRx4dldrju3YbmvFET\nnBVpDaP9rWgExCh/Z/xeWh/lRMzlc/K9K7/hsUkDPXSc17CwAJ45pN6ECNvD\ne/bJRjkHcv66BuY7Y2GNZI6zCDPiP1QrJWWsfvGPZAhB2xlhosInoFQ1IUMz\n60azpqZ1fOBEvEX1Vs+3Gc+03DGEUOmqWXUZkV3WqJ/JLmWycSMWk8F4uMcl\nTlXRHWPCj0O5gJ+65VfN+vexDC/30K//4ZAQSmuaqdDoh89iUh7r8dWqxl14\nMyhtPEXdA/ezUEXsiUrX5MCeS1ZmSG5fo9JHT5b/25hLvaGnTbvc0p2JP3Tn\nJaeTbx9oPHD9FYjRxbo86+XfDzL5SG94Tn2lOl9ynxk7wJevb/GAizS0XYBc\nrhFhiqmFzZI1tHgtUB5Wd0Le9PyflU882vil6R7FlxQ9D3Po2RLOq6K0Mvpf\nUtBY1aVYYez/kzEBPjxh8xxFE2uElfmIR9zsDcf+pUNXE4iIm1u9z2GnND3J\nJsz2\r\n=C1oF\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC3KXg+HwpRV6F5njYO+ujp+Frz2tKJCPZ5aY/rLkqJ/gIhALRpALjunb/sTl/HgohwS4wxoLLINspPTd+fcn5XZaj5"}]},"maintainers":[{"name":"brafdlog","email":"brafdlog@gmail.com"}],"_npmUser":{"name":"brafdlog","email":"brafdlog@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/israeli-bank-scrapers-core_0.9.1_1595679529518_0.24774986051366454"},"_hasShrinkwrap":false},"0.9.2":{"name":"@brafdlog/israeli-bank-scrapers-core","version":"0.9.2","description":"Provide scrapers for all major Israeli banks and credit card companies","engines":{"node":">= 8.2.1","npm":">= 5.3.0"},"main":"lib/index.js","types":"lib/index.d.ts","scripts":{"clean":"rimraf lib","test":"cross-env BABEL_ENV=test jest","test:ci":"ncp src/tests/.tests-config.tpl.js src/tests/.tests-config.js && npm run test","lint":"eslint src --ext .ts","type-check":"tsc --noEmit","dev":"npm run type-check -- --watch","build":"npm run lint && npm run clean && npm run build:types && npm run build:js && npm run build:puppeteer-config","build:types":"tsc --emitDeclarationOnly","build:puppeteer-config":"cp src/puppeteer-config.json lib","build:js":"babel src --out-dir lib --extensions \".ts\" --source-maps inline --verbose","prebuild":"node utils/update-puppeteer-config.js","postbuild":"rimraf lib/tests","prepare:core":"node utils/prepare-israeli-bank-scrapers-core.js && npm i --package-lock-only && npm ci && npm run build","prepare:default":"npm ci && npm run build","reset":"git reset --hard && npm ci","publish:core":"npm run prepare:core && npm publish --access public && npm run reset","publish:default":"npm run prepare:default && npm test && npm publish --access public && npm run reset","publish:all":"npm run publish:default && npm run publish:core"},"pre-commit":["lint"],"repository":{"type":"git","url":"git+https://github.com/brafdlog/israeli-bank-scrapers.git"},"keywords":["israel","israeli bank","israeli bank scraper"],"author":{"name":"Elad Shaham"},"license":"MIT","bugs":{"url":"https://github.com/eshaham/israeli-bank-scrapers/issues"},"homepage":"https://github.com/eshaham/israeli-bank-scrapers#readme","devDependencies":{"@babel/cli":"^7.4.4","@babel/core":"^7.4.5","@babel/preset-env":"^7.4.5","@babel/preset-typescript":"^7.9.0","@types/jest":"^25.1.5","@types/json2csv":"^5.0.1","@types/lodash":"^4.14.149","@types/node-fetch":"^2.5.6","@types/puppeteer":"^2.0.1","@types/source-map-support":"^0.5.1","@types/uuid":"^7.0.3","@typescript-eslint/eslint-plugin":"^2.27.0","@typescript-eslint/parser":"^2.26.0","babel-jest":"^25.3.0","babel-plugin-import-visitor":"^0.2.0","cross-env":"^6.0.3","eslint":"^6.6.0","eslint-config-airbnb-base":"^14.0.0","eslint-config-airbnb-typescript":"^7.2.1","eslint-plugin-import":"^2.20.2","jest":"^25.3.0","ncp":"^2.0.0","pre-commit":"^1.2.2","rimraf":"^3.0.0","source-map-support":"^0.5.16","ts-jest":"^25.3.0","typescript":"^3.8.3"},"dependencies":{"build-url":"^2.0.0","core-js":"^3.1.4","lodash":"^4.17.10","moment":"^2.22.2","node-fetch":"^2.2.0","uuid":"^3.3.2","json2csv":"^4.5.4","puppeteer-core":"^2.0.0","puppeteer":"^2.0.0"},"gitHead":"6a566bcaa83fe81deca8790083c4bd5a889bcf29","_id":"@brafdlog/israeli-bank-scrapers-core@0.9.2","_nodeVersion":"12.14.1","_npmVersion":"6.13.4","dist":{"integrity":"sha512-wiRvfG3vrPQFkOEmyJh5SYryoF1ASYai8UZkfRS3QLJtglZ7qepM9EyKD0g9ALjA4zeapd6QUCcZFEwZaKrX5A==","shasum":"933b9d84c946d850cd34be89c010db68657b582a","tarball":"https://registry.npmjs.org/@brafdlog/israeli-bank-scrapers-core/-/israeli-bank-scrapers-core-0.9.2.tgz","fileCount":76,"unpackedSize":558820,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfHEKLCRA9TVsSAnZWagAAcOsP/AzOaHjvqvcQuHqf0gVW\nD1tLWXweYu7DoaHoTeF/EjJjWaWGDbI/+KRnDCdvNvFoQm+uuaCIh6PHCBYO\nxYYbIw2NQMcNrqj/oz3vMHwIYUDJJy3zMU0VokmyZhHoIK+2eKHP5+IwsIYq\nggJhF5cZRRPyPFYO2Ugv5re43XxFDw3+p+Gix6oFDm5/paT+G+8jeZxrommX\n2nhYcL9FVqcZZOnBQanmLYMDHUBNg7UC7JE1Bsz0J2lto5dn4O71uGq/+ZFw\na/beYOZrpxeynmKo416DzAlhTJVw9+6BncYgUaEEhlW1jvWmWLf5NiXlzPUp\nJqOqbuL0tCPEay8c+yo4W7KdZeVjuTq4bB9J4+9q3byO1s18NiigNocU55hZ\nroq3A3S1Yki9tua45PidU9vcgrpqQejMWCn4dC4lcL2MQcRGGe3oDVa0bcQx\netw308EogdtUyYJCT1sW9g2f6FVXLgyLHl+/tt0MSTUDSgpIRIdHF+lC0NuZ\n2qwwQYXp4qoubqmOSKt2xp8r26mGH8zWfuc+ibHak7pJ4+rsZ3LgCALWvZcW\nlJqQX9E78Dp0I7Fvr/F3TIdevs8ey7b5osBazJ+MaNcH5V2GM4Sbi4CF7WUE\nYTaUo3n6ioZgMgHEzsZ3uHvSbkqiqiAGYP5e4yRNyxsSKoTEL4kGHylFrurl\nOy5y\r\n=16w1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDTxcI3K0k+INayxvpCzpHg3jwwCcwBrKRQ8c6ENnl1cAIgD6HlgkfIUZNYx8SDfBFhhlgYEsHotuz6btr/FVafUlA="}]},"maintainers":[{"name":"brafdlog","email":"brafdlog@gmail.com"}],"_npmUser":{"name":"brafdlog","email":"brafdlog@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/israeli-bank-scrapers-core_0.9.2_1595687563407_0.6260672475098166"},"_hasShrinkwrap":false}},"time":{"created":"2020-07-25T12:18:49.479Z","0.9.1":"2020-07-25T12:18:49.729Z","modified":"2022-04-04T20:20:24.502Z","0.9.2":"2020-07-25T14:32:43.581Z"},"maintainers":[{"name":"brafdlog","email":"brafdlog@gmail.com"}],"description":"Provide scrapers for all major Israeli banks and credit card companies","homepage":"https://github.com/eshaham/israeli-bank-scrapers#readme","keywords":["israel","israeli bank","israeli bank scraper"],"repository":{"type":"git","url":"git+https://github.com/brafdlog/israeli-bank-scrapers.git"},"author":{"name":"Elad Shaham"},"bugs":{"url":"https://github.com/eshaham/israeli-bank-scrapers/issues"},"license":"MIT","readme":"Israeli Bank Scrapers - Get closer to your own data\n========\n<img src=\"./logo.png\" width=\"100\" height=\"100\" alt=\"Logo\" align=\"left\" />\n\n[![NPM](https://nodei.co/npm/israeli-bank-scrapers.png)](https://nodei.co/npm/israeli-bank-scrapers/)\n\n[![npm version](https://badge.fury.io/js/israeli-bank-scrapers.svg)](https://badge.fury.io/js/israeli-bank-scrapers)\n[![dependencies Status](https://david-dm.org/eshaham/israeli-bank-scrapers/status.svg)](https://david-dm.org/eshaham/israeli-bank-scrapers)\n[![devDependencies Status](https://david-dm.org/eshaham/israeli-bank-scrapers/dev-status.svg)](https://david-dm.org/eshaham/israeli-bank-scrapers?type=dev)\n\n# What's here?\nWhat you can find here is scrapers for all major Israeli banks and credit card companies. That's the plan at least.\nCurrently only the following banks are supported:\n- Bank Hapoalim (thanks [@sebikaplun](https://github.com/sebikaplun))\n- Leumi Bank (thanks [@esakal](https://github.com/esakal))\n- Discount Bank\n- Mizrahi Bank (thanks [@baruchiro](https://github.com/baruchiro))\n- Otsar Hahayal Bank (thanks [@matanelgabsi](https://github.com/matanelgabsi))\n- Visa Cal (thanks [@nirgin](https://github.com/nirgin))\n- Max (Formerly Leumi Card)\n- Isracard\n- Amex (thanks [@erezd](https://github.com/erezd))\n- Union Bank (Thanks to Intuit FDP OpenSource Team [@dratler](https://github.com/dratler),[@kalinoy](https://github.com/kalinoy),[@shanigad](https://github.com/shanigad),[@dudiventura](https://github.com/dudiventura) and [@NoamGoren](https://github.com/NoamGoren))\n- Beinleumi (Thanks to [@dudiventura](https://github.com/dudiventura) from the Intuit FDP OpenSource Team)\n\n# Prerequisites\nTo use this you will need to have [Node.js](https://nodejs.org) >= 8.10.0 installed.\n\n# Getting started\nTo use these scrapers you'll need to install the package from npm:\n```sh\nnpm install israeli-bank-scrapers --save\n```\nThen you can simply import and use it in your node module:\n\n```node\nimport { CompanyTypes, createScraper } from 'israeli-bank-scrapers';\n\n(async function() {\n  try {\n    // read documentation below for available options\n    const options = {\n      companyId: CompanyTypes.leumi, \n      startDate: new Date('2020-05-01'),\n      combineInstallments: false,\n      showBrowser: true \n    };\n\n    // read documentation below for information about credentials\n    const credentials = {\n      username: 'vr29485',\n      password: 'sometingsomething'\n    };\n\n    const scraper = createScraper(options);\n    const scrapeResult = await scraper.scrape(credentials);\n\n    if (scrapeResult.success) {\n      scrapeResult.accounts.forEach((account) => {\n        console.log(`found ${account.txns.length} transactions for account number ${account.accountNumber}`);\n      });\n    }\n    else {\n      throw new Error(scrapeResult.errorType);\n    }\n  } catch(e) {\n    console.error(`scraping failed for the following reason: ${e.message}`);\n  }\n})();\n```\n\nCheck the options declaration [here](./src/scrapers/base-scraper.ts) for available options.\n\nRegarding credentials, you should provide the relevant credentials for the chosen company. See [this file](./src/definitions.ts) with list of credentials per company.\n\n```\nThe structure of the result object is as follows:\n```node\n{\n  success: boolean,\n  accounts: [{\n    accountNumber: string,\n    txns: [{\n      type: string, // can be either 'normal' or 'installments'\n      identifier: int, // only if exists\n      date: string, // ISO date string\n      processedDate: string, // ISO date string\n      originalAmount: double,\n      originalCurrency: string,\n      chargedAmount: double,\n      description: string,\n      memo: string, // can be null or empty\n      installments: { // only if exists\n        number: int, // the current installment number\n        total: int, // the total number of installments\n      },\n      status: string //can either be 'completed' or 'pending'\n    }],\n  }],\n  errorType: \"invalidPassword\"|\"changePassword\"|\"timeout\"|\"generic\", // only on success=false\n  errorMessage: string, // only on success=false\n}\n```\n\nYou can also use the `SCRAPERS` list to get scraper metadata:\n```node\nimport { SCRAPERS } from 'israeli-bank-scrapers';\n```\n\nThe return value is a list of scraper metadata:\n```node\n{\n  <companyId>: {\n    name: string, // the name of the scraper\n    loginFields: [ // a list of login field required by this scraper\n      '<some field>' // the name of the field\n    ]\n  }\n}\n```\n\n# Getting deployed version of latest changes in master\nThis library is currently deployed to NPM manually and not as part of automatic process. You should expect situations when code was pushed to master and wasn't deployed to NPM yet.\n\nIf you are a developer and want to access the `next` version, install the library with `next` tag as shown below:\n```sh\nnpm install israeli-bank-scrapers@next --save\n```  \n\n> Keep in mind that although this `next` version should be stable as it passed our code review, it was deployed automatically using github action workflow without the usual tests we run manually before we deploy the official version.  \n\n# `Israeli-bank-scrapers-core` library\n\n> TL;DR this is the same library as the default library. The only difference is that it is using `puppeteer-core` instead of `puppeteer` which is useful if you are using frameworks like Electron to pack your application. \n>\n> In most cases you will probably want to use the default library (read [Getting Started](#getting-started) section).\n\nIsraeli bank scrapers library is published  twice:\n 1. [israeli-bank-scrapers](https://www.npmjs.com/package/israeli-bank-scrapers) - the default variation, great for common usage as node dependency in server application or cli.\n 2. [israeli-bank-scrapers-core](https://www.npmjs.com/package/israeli-bank-scrapers-core) - extremely useful for applications that bundle `node_modules` like Electron applications. \n \n ## Differences between default and core variations\n  \n The default variation [israeli-bank-scrapers](https://www.npmjs.com/package/israeli-bank-scrapers) is using [puppeteer](https://www.npmjs.com/package/puppeteer) which handles the installation of local chroumium on its' own. This behavior is very handy since it takes care on all the hard work figuring which chromium to download and manage the actual download process.  As a side effect it increases node_modules by several hounded megabytes. \n \n The core variation [israeli-bank-scrapers-core](https://www.npmjs.com/package/israeli-bank-scrapers-core) is using [puppeteer-core](https://www.npmjs.com/package/puppeteer-core) which is exactly the same library as `puppeteer` except that it doesn't download chromium when installed by npm. It is up to you to make sure the specific version of chromium is installed locally and provide a path to that version. It is useful in Electron applications since it doesn't bloat the size of the application and you can provide a much friendlier experience like loading the application and download it later when needed. \n \n To install `israeli-bank-scrapers-core`:\n```sh\nnpm install israeli-bank-scrapers-core --save\n```\n\n## Getting chromium version used by puppeteer-core\nWhen using the `israeli-bank-scrapers-core` it is up to you to make sure the relevant chromium version exists. You must:\n1. query for the specific chromium revision required by the `puppeteer-core` library being used.\n2. make sure that you have local version of that revision.\n3. provide an absolute path to `israeli-bank-scrapers-core` scrapers.\n\nPlease read the following to learn more about the process: \n1. To get the required chromium revision use the following code:\n```\nimport { getPuppeteerConfig } from 'israeli-bank-scrapers-core';\n\nconst chromiumVersion = getPuppeteerConfig().chromiumRevision;\n```\n\n2. Once you have the chromium revision, you can either download it manually or use other liraries like [download-chromium](https://www.npmjs.com/package/download-chromium) to fetch that version. The mentioned library is very handy as it caches the download and provide useful helpers like download progress information.\n \n 3. provide the path to chromium to the library using the option key `executablePath`. \n\n# Specific definitions per scraper\n\n## Bank Hapoalim scraper\nThis scraper expects the following credentials object:\n```node\nconst credentials = {\n  userCode: <user identification code>,\n  password: <user password>\n};\n```\nThis scraper supports fetching transaction from up to one year.\n\n## Bank Leumi scraper\nThis scraper expects the following credentials object:\n```node\nconst credentials = {\n  username: <user name>,\n  password: <user password>\n};\n```\nThis scraper supports fetching transaction from up to one year.\n\n## Discount scraper\nThis scraper expects the following credentials object:\n```node\nconst credentials = {\n  id: <user identification number>,\n  password: <user password>,\n  num: <user identificaiton code>\n};\n```\nThis scraper supports fetching transaction from up to one year (minus 1 day).\n\n### Known Limitations\n- Missing memo field\n\n## Mizrahi scraper\nThis scraper expects the following credentials object:\n```node\nconst credentials = {\n  username: <user identification number>,\n  password: <user password>\n};\n```\nThis scraper supports fetching transaction from up to one year.\n\n## Bank Otsar Hahayal scraper\nThis scraper expects the following credentials object:\n```node\nconst credentials = {\n  username: <user name>,\n  password: <user password>\n};\n```\nThis scraper supports fetching transaction from up to one year.\n\n## Visa Cal scraper\nThis scraper expects the following credentials object:\n```node\nconst credentials = {\n  username: <user name>,\n  password: <user password>\n};\n```\nThis scraper supports fetching transaction from up to one year.\n\n## Max scraper (Formerly Leumi-Card)\nThis scraper expects the following credentials object:\n```node\nconst credentials = {\n  username: <user name>,\n  password: <user password>\n};\n```\nThis scraper supports fetching transaction from up to one year.\n\n## Isracard scraper\nThis scraper expects the following credentials object:\n```node\nconst credentials = {\n  id: <user identification number>,\n  card6Digits: <6 last digits of card>\n  password: <user password>\n};\n```\nThis scraper supports fetching transaction from up to one year.\n\n## Amex scraper\nThis scraper expects the following credentials object:\n```node\nconst credentials = {\n  id: <user identification number>,\n  card6Digits: <6 last digits of card>\n  password: <user password>\n};\n```\nThis scraper supports fetching transaction from up to one year.\n\n# Known projects\nThese are the projects known to be using this module:\n- [Israeli YNAB updater](https://github.com/eshaham/israeli-ynab-updater) - A command line tool for exporting banks data to CSVs, formatted specifically for [YNAB](https://www.youneedabudget.com)\n- [Israel Finance Telegram Bot](https://github.com/GuyLewin/israel-finance-telegram-bot) - A simple telegram bot that sends notifications about new transactions and interacts with them\n- [Automated budget tracking app](https://github.com/brafdlog/budget-tracking) - An app for automatically sending transactions from Israeli banks and credit cards to budget tracking apps\n\nBuilt something interesting you want to share here? [Let me know](https://goo.gl/forms/5Fb9JAjvzMIpmzqo2).\n\n# License\nThe MIT License\n","readmeFilename":"README.md"}