Now CSV format is a command line parameter.
authorPhilipp Spitzer <philipp@spitzer.priv.at>
Wed, 14 Oct 2015 18:11:45 +0000 (20:11 +0200)
committerPhilipp Spitzer <philipp@spitzer.priv.at>
Wed, 14 Oct 2015 18:11:45 +0000 (20:11 +0200)
bob_download.py

index 151c059151e7455da4d71347307b2ab6302dd0a8..bcba0625eff1e7fd336b3d4b7dd6f4f3f6f7738f 100644 (file)
@@ -21,7 +21,7 @@ import requests # pip install requests
 from bs4 import BeautifulSoup # pip install beautifulsoup4
 
 
-def main(user_name, password, dest_dir):
+def main(user_name, password, dest_dir, csv_format):
     session = requests.Session()
     session.headers.update({
         'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', # otherwise site with content '<HTML></HTML>' is returned
@@ -79,7 +79,7 @@ def main(user_name, password, dest_dir):
         assert 'OBP.utils.reloadAfterDelay("/bill.ctn.cdr.set.obp",5);' not in response.text
         html = BeautifulSoup(response.text, 'html.parser')
         assert html.find('a', id='link_csv_download') is not None
-        response = session.get('https://rechnung.bob.at/download.table.obp?fmt=TAB&table=obp.calls.table')
+        response = session.get('https://rechnung.bob.at/download.table.obp?fmt={}&table=obp.calls.table'.format(csv_format))
         assert response.status_code == 200
         filename = response.headers['Content-Disposition'].split('=')[1] # e.g. 'EVN_1509_523260091_1_069911934859.txt'
         assert filename.startswith('EVN_')
@@ -91,8 +91,9 @@ def main(user_name, password, dest_dir):
 
 if __name__ == '__main__':
     parser = argparse.ArgumentParser(description='Downloads invoices from BOB.')
+    parser.add_argument('--csv-format', choices=['CSV-DE', 'CSV', 'TAB'], default='TAB', help='Which CSV variant to use (CSV-DE is semicolon, CSV is comma and TAB is tab separated)')
     parser.add_argument('user_name', help="login user name is phone number (e.g. '4369911111111')")
     parser.add_argument('password', help="login password")
     parser.add_argument('dest_dir', help="directory where the invoices should be saved to")
     args = parser.parse_args()
-    main(args.user_name, args.password, args.dest_dir)
+    main(args.user_name, args.password, args.dest_dir, args.csv_format)