Automatyzacja kodów QR w Pythonie: biblioteka czy REST API?
Co potrafi biblioteka Pythona
Kto chce generować kody QR w Pythonie, znajdzie kilka darmowych bibliotek. Zamieniają tekst w obraz, często też w SVG, lokalnie i bez usługi. Do etykiet z numerami seryjnymi, dokumentów wewnętrznych czy dostępu do Wi-Fi to dokładnie to, czego trzeba.
Gdzie obrazy statyczne napotykają granice
Tak wygenerowany kod QR jest statyczny, treść siedzi we wzorze. Jeśli cel zmieni się po relaunchu, literówka wyjdzie na jaw dopiero po wydruku albo chcesz wiedzieć, ile razy był skanowany, to nie pomoże. Od tego są dynamiczne kody QR: Same-QR zapisuje cel za krótkim, niezmiennym adresem, liczy skanowania i w nocy sprawdza, czy każdy cel jest osiągalny.
Dynamiczne kody QR przez REST API
API znajduje się pod adresem https://sameqr.com/api/v1. Utwórz w panelu w sekcji Konto, „Dostęp dla CLI, skryptów i agentów”, klucz, „odczyt + zapis” do zakładania, i ustaw go jako zmienną środowiskową SAMEQR_API_KEY. Ten przykład korzysta tylko z biblioteki standardowej:
import json, os, urllib.request
API = "https://sameqr.com/api/v1"
KEY = os.environ["SAMEQR_API_KEY"]
def rufe(methode, weg, daten=None):
req = urllib.request.Request(
API + weg, method=methode,
data=json.dumps(daten).encode() if daten else None,
headers={"Authorization": f"Bearer {KEY}", "Content-Type": "application/json"})
with urllib.request.urlopen(req) as r:
return json.load(r)
code = rufe("POST", "/qr", {"name": "Anleitung Modell A", "targetUrl": "https://example.com/anleitung-a"})
print(code["id"])Jeśli API odpowie błędem, urlopen zgłasza wyjątek. Treść odpowiedzi zawiera zawsze obiekt error ze statusem, kodem i komunikatem. Obsłuż go, zamiast ślepo pozwalać skryptowi działać dalej.
Proces z praktyki
Producent drukuje na każdym opakowaniu kod QR do instrukcji:
- Skrypt wczytuje listę produktów z pliku CSV.
- Dla każdego nowego produktu zakłada kod QR i zapamiętuje jego identyfikator obok numeru artykułu.
- Gdy pojawia się nowa wersja instrukcji, zmienia przez PATCH na /qr/<id> tylko cel. Potrzebuje do tego klucza „pełny” i nagłówka X-Confirm z odczytanym stanem.
- Drugi skrypt z kluczem do odczytu raz w miesiącu pobiera liczby skanowań.
Uwzględnij limity: najwyżej 10 zmian celu na godzinę i 30 na dobę przez API, 120 zapytań na minutę na klucz, na godzinę 60 w taryfie bezpłatnej, 300 w Start, 1.000 w Pro i 5.000 w Agentur. Przy 429 odczekaj tyle sekund, ile podaje nagłówek Retry-After.
Bezpieczny klucz w skrypcie
- Nigdy nie zapisuj klucza w pliku .py, tylko odczytuj go ze środowiska.
- Dla skryptów, które tylko czytają, używaj klucza „tylko odczyt”.
- Dla każdego skryptu osobny klucz z czytelną nazwą i odpowiednim okresem ważności.
Podsumowanie: dlaczego Same-QR
Dla statycznych kodów QR wystarczy biblioteka. Gdy tylko coś idzie do druku, lepszą podstawą jest Same-QR: lekkie REST API w każdej taryfie, zrozumiałe błędy, ochrona przed równoległym nadpisywaniem i cele, które możesz zmienić po wydruku.
Zacznij od razu: zarejestruj się za darmo na sameqr.com, 20 dynamicznych kodów QR jest na stałe bezpłatne. API, CLI i serwer MCP są w każdej taryfie, dokumentacja jest na sameqr.com/entwickler.
Najczęściej zadawane pytania
Nie. REST API działa z biblioteką standardową lub dowolną biblioteką do zapytań webowych.
Tak. Do stałych treści wystarczy statyczny kod QR, do wszystkiego, co jest drukowane i może się zmienić, użyj dynamicznego.
W panelu jako PNG, SVG lub PDF albo przez API tym samym kluczem. Sposoby opisuje dokumentacja na sameqr.com/entwickler.
Nowe artykuły prosto na Twoją skrzynkę
Wskazówki o dynamicznych kodach QR, nowości, bez spamu. Wypisać się można w każdej chwili.
Zapisując się, wyrażasz zgodę na otrzymywanie newslettera. Zgodę możesz w każdej chwili wycofać za pomocą linku do wypisania się w każdej wiadomości.