73 lines
2.5 KiB
Python
73 lines
2.5 KiB
Python
import requests
|
|
|
|
# Stałe konfiguracyjne
|
|
API_KEY = 'patXWerdvwWJHRGBz.26eb663a53b03fa137ad219857cc935c514340086681d2ef8d762063bd3153cb' # Zamień na swój klucz API
|
|
BASE_ID = 'appSTkCUy8IPoutrO' # Zamień na swój identyfikator bazy danych
|
|
TABLE_NAME = 'tbl1Q8MNq8EGCzOHp' # Zamień na nazwę swojej tabeli
|
|
|
|
def record_exists(api_key, base_id, table_name, link):
|
|
"""
|
|
Sprawdza, czy rekord z podanym linkiem już istnieje w Airtable.
|
|
|
|
:param api_key: Klucz API Airtable
|
|
:param base_id: Identyfikator bazy danych
|
|
:param table_name: Nazwa tabeli
|
|
:param link: Link do sprawdzenia
|
|
:return: True, jeśli rekord istnieje, False w przeciwnym razie
|
|
"""
|
|
url = f'https://api.airtable.com/v0/{base_id}/{table_name}'
|
|
headers = {
|
|
'Authorization': f'Bearer {api_key}',
|
|
'Content-Type': 'application/json'
|
|
}
|
|
params = {
|
|
'filterByFormula': f'{{Link}}="{link}"'
|
|
}
|
|
|
|
response = requests.get(url, headers=headers, params=params)
|
|
|
|
if response.status_code == 200:
|
|
records = response.json().get('records', [])
|
|
return len(records) > 0
|
|
else:
|
|
print(f"Nie udało się sprawdzić rekordu. Status: {response.status_code}")
|
|
print(response.json())
|
|
return False
|
|
|
|
def add_record_to_airtable(wydawnictwo, link):
|
|
"""
|
|
Dodaje rekord do tabeli Airtable, jeśli nie istnieje już rekord z tym linkiem.
|
|
|
|
:param wydawnictwo: Wydawnictwo do dodania
|
|
:param link: Link do dodania
|
|
:return: Odpowiedź z API Airtable lub komunikat o istnieniu rekordu
|
|
"""
|
|
response = None # Inicjalizowanie zmiennej `response`
|
|
|
|
if not record_exists(API_KEY, BASE_ID, TABLE_NAME, link):
|
|
url = f'https://api.airtable.com/v0/{BASE_ID}/{TABLE_NAME}'
|
|
headers = {
|
|
'Authorization': f'Bearer {API_KEY}',
|
|
'Content-Type': 'application/json'
|
|
}
|
|
data = {
|
|
"fields": {
|
|
"Wydawnictwo": wydawnictwo,
|
|
"Link": link,
|
|
"Status": "Nowy"
|
|
}
|
|
}
|
|
response = requests.post(url, headers=headers, json=data)
|
|
|
|
if response.status_code == 201:
|
|
print("Rekord został dodany pomyślnie.")
|
|
print(response.json()) # Wyświetla odpowiedź API (nowo dodany rekord)
|
|
else:
|
|
print(f"Nie udało się dodać rekordu. Status: {response.status_code}")
|
|
print(response.json()) # Wyświetla szczegóły błędu
|
|
else:
|
|
print("Rekord z tym linkiem już istnieje.")
|
|
|
|
return response
|
|
|