Esselamü Aleyküm,
Zamanında f"https://www.haberturk.com/namaz-vakitleri/{sehir}"
sitesinden vakitleri elde eden bir program yazmıştım, belki işinize yarar. Diyanet ile aynı zannediyorum veriler, oradan alıyorlar büyük ihtimalle. Bir API şeklinde yazmamıştım ama programın bulunduğu dizinde sehirler
isminde bir boş klasör oluşturursanız, 81 vilayet için 81 tane .txt dosyası oluşturur. Programın yaptığı, bu .txt dosyalarına içinde bulunduğumuz ayın namaz vakitlerini
{
...
26: {'sab': Saat(hour='05', minute='58'),
'ogl': Saat(hour='12', minute='46'),
'iki': Saat(hour='16', minute='26'),
'aks': Saat(hour='19', minute='23'),
'yat': Saat(hour='20', minute='43')},
...
}
formunda yazmak. Dosyaya yazmak yerine istediğiniz gibi kullanabilirsiniz. Tabii siz kendiniz de bu siteden bu verileri çeken bir program da yazabilirsiniz :d.
import calendar
import itertools as it
import json
import re
from collections import namedtuple
from datetime import datetime as dt
from urllib.request import urlopen
from bs4 import BeautifulSoup
sehirler = ("adana", "adiyaman", "afyonkarahisar", "agri", "amasya", "ankara",
"antalya", "artvin", "aydin", "balikesir", "bilecik", "bingol",
"bitlis", "bolu", "burdur", "bursa", "canakkale", "cankiri",
"corum", "denizli", "diyarbakir", "edirne", "elazig", "erzincan",
"erzurum", "eskisehir", "gaziantep", "giresun", "gumushane",
"hakkari", "hatay", "isparta", "mersin", "istanbul", "izmir",
"kars", "kastamonu", "kayseri", "kirklareli", "kirsehir",
"kocaeli", "konya", "kutahya", "malatya", "manisa",
"kahramanmaras", "mardin", "mugla", "mus", "nevsehir", "nigde",
"ordu", "rize", "sakarya", "samsun", "siirt", "sinop", "sivas",
"tekirdag", "tokat", "trabzon", "tunceli", "sanliurfa", "usak",
"van", "yozgat", "zonguldak", "aksaray", "bayburt", "karaman",
"kirikkale", "batman", "sirnak", "bartin", "ardahan", "igdir",
"yalova", "karabuk", "kilis", "osmaniye", "duzce")
bes_vakit = ("sab", "ogl", "iki", "aks", "yat")
Saat = namedtuple("Saat", ["hour", "minute"], defaults=["00", "00"])
# number of days in the current month
num_days = calendar.monthrange(dt.now().year, dt.now().month)[1]
# bugün ayın kaçı?
today = dt.now().day
vakit_dict = dict.fromkeys(bes_vakit, None)
days_dict = dict.fromkeys(range(1, num_days + 1), vakit_dict)
cities_dict = dict.fromkeys(sehirler, days_dict)
# WARNING: sehirler slice-by-slice process edilebilir hata verirse
# (e.g. 25 vilayet at a time)
for sehir in sehirler:
site = f"https://www.haberturk.com/namaz-vakitleri/{sehir}"
html_source = urlopen(site)
soup = BeautifulSoup(html_source, 'html.parser')
imsakiye_table = soup.find(id="imsakiye-table")
# skipping \n, thead and \n
imsakiye_body = imsakiye_table.contents[3]
imsakiye_contents = (
"".join(str(ibc).split("\n"))
for ibc in imsakiye_body.children
if ibc != "\n"
)
vakitler = [(Saat(*vakit)
for vakit in re.findall(r">\s*(\d{2}):(\d{2})\s*</",
content)[1:])
for content in imsakiye_contents]
sehir_aylik = cities_dict[sehir]
# if wanted from today, make it <today-1>
starting_day = 0
for day in it.islice(sehir_aylik, starting_day, num_days):
sehir_aylik[day] = dict(zip(bes_vakit, vakitler[day-1]))
# Bir şehrin verileri elde edildi, kaydediyoruz
with open(f"sehirler/{sehir}.txt", mode="w") as f:
f.write(json.dumps(sehir_aylik, indent=4))
print(f"{sehir} processed.")