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(): 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(',') if not is_valid_date(file_date): print("Hatalı giriş. Geçersiz tarih formatı. Lütfen tarihi 'YYYYMMDD' formatında girin.") return None, None # Hatalı giriş durumunda None döndür except ValueError: print("Hatalı giriş. Lütfen dosya adını ve tarihi ',' ile ayırarak ve boşluk bırakmadan girin.") return None, None # Hatalı giriş durumunda None döndür return file_name, file_date 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()