import os import requests import json from pathlib import Path import datetime def is_valid_date(date_str): try: datetime.datetime.strptime(date_str, '%Y%m%d') return True except ValueError: return False def get_user_input(): while True: try: file_info = input("İndirmek istediğiniz dosyanın adını ve tarihini girin (örn: PP_GUNSONUFIYATHACIM.M.202209.csv,20220930): ") file_name, file_date = file_info.split(',') # Dosya adı ve tarih girişi kontrolü if ' ' in file_name or ' ' in file_date: raise ValueError("Dosya adı ve tarih girişi arasında boşluk bırakmayın.") # Tarih formatını kontrol et if not is_valid_date(file_date): raise ValueError("Geçersiz tarih formatı. Lütfen tarihi 'YYYYMMDD' formatında girin.") return file_name, file_date except ValueError as e: print(f"Hatalı giriş: {e}") def download_file(access_token, datastore_folder, file_name, file_date): download_url = f"https://datastore.borsaistanbul.com/api/file?file-name={file_name}&file-date={file_date}" download_headers = {"Content-Type": "application/json", "x-auth-token": access_token} download_response = requests.get(download_url, headers=download_headers) if download_response.status_code == 200: save_path = datastore_folder / file_name with open(save_path, 'wb') as file: file.write(download_response.content) print(f"{file_name} başarıyla indirildi ve {datastore_folder} klasörüne kaydedildi.") elif download_response.status_code == 400: print("İndirme başarısız. Geçersiz parametreler. Lütfen dosya adını ve tarihi kontrol edin.") else: print(f"Dosya indirme başarısız. HTTP Status Code: {download_response.status_code}") def main(): email = input("E-posta adresinizi girin: ") password = input("Şifrenizi girin: ") login_url = "https://datastore.borsaistanbul.com/api/login" login_data = { "email": email, "password": password } login_response = requests.post(login_url, data=json.dumps(login_data), headers={"Content-Type": "application/json"}) if login_response.status_code == 200: access_token = login_response.json()["accessToken"] print("Giriş başarılı. Access Token:", access_token) desktop_path = Path(os.path.expanduser("~/Desktop")) datastore_folder = desktop_path / "Datastore" datastore_folder.mkdir(exist_ok=True) file_name, file_date = get_user_input() if file_name and file_date: download_file(access_token, datastore_folder, file_name, file_date) while True: answer = input("Başka bir dosya indirmek istiyor musunuz? (evet/hayır): ").lower() if answer != 'evet': print("Program sonlandırılıyor.") break file_name, file_date = get_user_input() if file_name and file_date: download_file(access_token, datastore_folder, file_name, file_date) else: print(f"Giriş başarısız. HTTP Status Code: {login_response.status_code}") print(f"Hata mesajı: {login_response.text}") if __name__ == "__main__": main()