Translation is not possible.
Мини практика с API(для начинающих)
 
Когда изучаешь программирование бывает скучано делать какие-то примеры, решать задачки и т.д. Некоторые советуют учиться на каких-то реальных вещах, пытаться самому сделать что то типа игры, приложения, сайта. Это не значит что не надо решать задачки, просто когда человек видит применяемость тех знаний которые он пытается освоить, процесс может пойти на много приятнее и быстрее. Если на то будет воля Аллаха.
 
Даже когда только только изучаешь синтаксис языка можно делать маленькие порой забавные вещи. Например маленькие чат боты которые будут использовать inputы printы, калькулятор который будет использовать только(+ - / *),
игра по типу "кто хочет стать миллионером" на if else и т.д
На github есть целые коллекции готовых примеров легких и сложных которые можно изучать и пытаться переделать.
 
И вот один из таких маленьких примеров я хочу вам показать.
Для этого нам придется узнать что такое API.
 
Если попытаться объяснить своими словами что такое API, то это будет звучать примерно так: что это некий интерфейс одной программы для другой программы, то есть одна программа дает доступ другой программе через специальный интерфейс. Программа говорит другой "если хочешь доступ к моим данным, то обращайса по такому-то адресу таким-то образом". API очень распространенная вещь, она есть и в операционных системах и на сайтах, приложения на смартфоне могут работать по API. Если взять конкретно наш вариант когда мы исполььзуем API сайта, то это работает так:
мы открываем сайт и нам отображается интерфейс для людей, где есть картинки, кнопки, текст, оформления и прочее.
А когда мы обращаемся к сайту по API тот же сайт нам выдает уже только сами данные, ни тебе оформления ни тебе кнопочек только данные которые мы можем использовать уже в своем приложений или сайте.
 
Для демонстрации мы возьмем API c сайта https://aladhan.com
который выдает нам данные о временах намаза.
Выдает он нам данные в json формате. Json это текстовый формат данных очень часто используемый для передачи информации по сети. Если говорить упрощенно то json очень похож на словарь(dict) в python.
 
Важное замечание.
Перед тем как использовать данный метод для определения времени намаза и читать по нему намаз в той или иной местности, спросите у людей с шариатскими знаниями верно ли определяется время по этому методу в данной местности и правильно ли выбран метод рассчета времени(о котором я расскажу чуть ниже). Чтобы не было такого что вы или кто то прочитает намаз в неположенное время.
 
 
И так если мы откроем страницу:
 
https://aladhan.com/prayer-times-api
 
то увидим что нам объясняется по каким адресам с какими параметрами можно обращаться и какие данные в каком случае мы получим.
 
Рассмотрим 3 вариант где времена намазов выдаются по городу, вот эта ссылка:
 
"https://aladhan.com/prayer-times-api#getcalendarbycitys "
 
Там приводится некоторое количество параметров такие как:
 
"city" (string)
"country" (string)
"month" (number)
"year" (number)
 
и дальше по списку. В зависимости от значений которые мы будем передавать будут и данные которые мы будем получать.
 
Например если за страну возьмем Саудию, а за город Мекку то получим данные именно по этому городу, а если поменяем город на Медину то соответственно и данные получим другие. Можем параметр "month" поставить 1 и получим за январь, поставим 5 и получим за май и так можно менять параметры на нужные нам. Рядом с каждым параметром указан тот тип данных который должен быть поставлен именно в этот параметр. Например "city" (string) то есть именно должна быть строка, не подойдет если вы в "city" поставите цифру.
 
После параметров идет пример того как должна выглядеть ссылка для запроса. Я использую свой пример, вы же можете попробовать и мой пример, но так же попробуйте сделать и свой пример.
 
Вот пример ссылки запроса:
 
https: //api.aladhan.com/v1/calendarByCity? city=Mecca&country=SA&method=4&month=05&year=2022
в ссылке пара лишних пробелов, не смог без этого сделать так что бы отображалась польностью.
 
Разберем параметры которые начинаются после вопросительного знака.
И первый параметр это city в которую мы передаем значене Mecca и у нас получается city=Mecca, то есть передаем город который нам нужен.
 
Между параметрами идет знак &(амперсанд).
 
Следующий параметр country, в пояснений которого написано что можно передать названия страны или двухбуквенный код.
По мне легче двухбуквенный код, код которого можно взять для любой страны отсюда по ссылке:
 
https://ru.wikipedia.org/wiki/ISO_3166-1
 
И у нас получается country=SA, в метод передали код Саудии.
 
Дальше у нас идет параметр "method". Это тот метод рассчета времени о котором я говорил выше что рсскажу позже.
Этих методов больше десятка и я не могу сказать с уверенностью который из них будет более правильным в той или иной местности, поэтому спросите у обладающих шариатскими знаниями. Я же использую в примере метод под номером 4 (Umm Al-Qura University, Makkah)- университета в Мекке.
 
Вот так будет выглядеть этот параметр с нашим вариантом рассчета - method=4
 
А за ней идут параметры месяца и года, вот так они будут выглядеть на сегодня
month=05&year=2022
 
И так у нас получается вот такая ссылка
https: //api.aladhan.com/v1/calendarByCity? city=Mecca&country=SA&method=4&month=05&year=2022
 
по которому мы получим json файл с ответом за целый месяц.
Можете открыть в браузере и посмотреть как это выглядит.
 
Теперь немного практики, посмотрим как этим воспользоваться в python.
 
 
Для начала мы установим библиотеку requests данной командой
pip install requests
 
requests - эта библиотека для работы с интернет запросами, он может отправлять запрос на сайт и сохранять принятый ответ, а это нам и нужно. Нужно отправить запрос по ссылке выше и сохранить json файл для дальнейшей работы.
 
Потом импортируем requests
import requests
Также нам нужно импортировать класс datetime из модуля datetime, он входит в стандартную библиотеку и отдельно устанавливать не нужно.
from datetime import datetime
 
Модуль datetime очень полезен когда нужно рботать с различными данными связанными с временем, датой с промежутками между одного значения времени и другого.
 
Дальше мы присваиваем переменной url нашу ссылку.
url = "https: //api.aladhan.com/v1/calendarByCity?city=Mecca&country=SA&method=4&month=05&year=2022"
 
Делаем запрос по ссылке с requests
response = requests.get(url)
 
Теперь у нас в переменной response лежит json файл и мы его переводим в обычный словарь(dict) данной командой
data = response.json()
 
Передаем в переменную now текущую дату и время
now = datetime.now()
 
В переменную day кладем значение только дня.
day = now.day
 
Уменьшаем на один значения дня, это нужно для того что бы могли показывать расписание намазов на текущий день. А уменьшаем потому что дни находятся в python списке(list) который находится в словаре которую мы получили из json. А так как в списке элементы идут от нуля то текущее число будет находится на одну меньше в элементах списка.
 
Кладем расписание за целый день в переменную for_the_day, ответ нам пришел за целый месяц и можно вывести за целый месяц.
for_the_day = data['data'][day]
 
Время каждого отдельного намаза кладем в отдельную переменную.
fajr = for_the_day['timings']['Fajr'][0:5]
dhuhr = for_the_day['timings']['Dhuhr'][0:5]
asr = for_the_day['timings']['Asr'][0:5]
maghrib = for_the_day['timings']['Maghrib'][0:5]
isha = for_the_day['timings']['Isha'][0:5]
 
Выводим текущий день, месяц, год.
print('Расписание намазов на : now.strftime('%d %B %Y'))
 
И выводим расписание на сегодня.
print('Фаджр: '+fajr
'Зухр: '+dhuhr,
'Аср: '+asr,
'Магриб: '+maghrib,
'Иша: '+isha)
Символы переноса строки не отображаются в статье.
 
 
Вот и все.
 
Можете в конце ссылки добавить annual=true и получить данные за раз за целый год.
https: //api.aladhan.com/v1/calendarByCity ?city=Mecca&country=SA&method=4&month=05&year=2022&annual=true
Например если вы захотите сделать оффлайн расписание, так же можно собрать все населенные пункты какой либо сраны и сделать уже более полноценное приложение. Так же можно объявлять времена голосом, то есть синтезировать различными библиотеками для text to speech.
 
Это лишь маленький пример что можно делать для себя и не только, даже во время учебы да и учебе от этого думаю только лишь польза. Так же есть очень много других API от каких нибудь рецептов блюд до различных генераторов чего либо, когда ты делаешь запрос то генерируется что то и отправляется тебе. Если поищите в интернете то думаю легко найдете кучу различных подборок с API. И да не все API бывают бесплатные и такие открытые как в нашем примере, есть те которые стоят денег и есть те которые требуют регистрации.
 
Код целиком:
 
import requests
from datetime import datetime
 
 
url = "https: //api.aladhan.com/v1/calendarByCity?city=Mecca&country=SA&method=4&month=05&year=2022"
response = requests.get(url)
data = response.json()
 
now = datetime.now()
day = now.day
day = day - 1
 
for_the_day = data['data'][day]
 
 
 
fajr = for_the_day['timings']['Fajr'][0:5]
dhuhr = for_the_day['timings']['Dhuhr'][0:5]
asr = for_the_day['timings']['Asr'][0:5]
maghrib = for_the_day['timings']['Maghrib'][0:5]
isha = for_the_day['timings']['Isha'][0:5]
 
print('Расписание намазов на : now.strftime('%d %B %Y'))
 
print('Фаджр: '+fajr
'Зухр: '+dhuhr,
'Аср: '+asr,
'Магриб: '+maghrib,
'Иша: '+isha)
Send as a message
Share on my page
Share in the group