Uygulamanızın belirli bir TikTok videosu hakkında bilgiye ihtiyacı varsa, tek bir istekle başlayıp hangi verileri döndürdüğünü kontrol etmek en kolayıdır. Ardından yanıt doğrulanarak depolama veya analiz için hazırlanabilir.
jsonscraper TikTok Scraper API sayfasında videolar, kullanıcılar, arama, hashtag’ler, müzik ve diğer veri türleri için rotalar listeleniyor. Aşağıda belgelenmiş getVideoByID isteğini ve yanıtını güvenli biçimde işleme yöntemlerini ele alacağız. Örnekler sağlayıcının materyallerine dayanıyor; kullanmadan önce geçerli bir anahtarla ve güncel belgelerle doğrulayın.
İlk istek: video bilgilerini alma
Postman’daki getVideoByID belgelerinde GET yöntemi ve video_id parametresi belirtiliyor. Örnekte ayrıca region ve cache_timeout da gösteriliyor. Hizmet sayfasında yayımlanan temel adres https://tiktok.evelode.com.
cURL ile örnek istek:
export JSONSCRAPER_LICENSE_KEY="anahtarınız"
curl --get "https://tiktok.evelode.com/getVideoByID" \
--data-urlencode "video_id=7106855913906081070" \
--data-urlencode "license_key=$JSONSCRAPER_LICENSE_KEY" \
--data-urlencode "region=US"
Örnekteki ID, yayımlanmış istekten alınmıştır. Kontrol etmek istediğiniz videonun ID’siyle değiştirin. Anahtarı bir ortam değişkeninde veya sır yöneticisinde saklayın: herkese açık bir depoya, istemci tarafındaki JavaScript’e ya da günlüklere eklemeyin.
Postman, region parametresini bir bölge kodu olarak tanımlıyor ve varsayılan değer olarak US belirtiyor. cache_timeout için belgelerde varsayılan önbelleğe alma süresi 3600 saniye olarak belirtilmiş; 0 değeri önbelleğe almayı devre dışı bırakıyor. Bu parametre senaryonuz için gerekliyse açıkça iletebilirsiniz:
curl --get "https://tiktok.evelode.com/getVideoByID" \
--data-urlencode "video_id=7106855913906081070" \
--data-urlencode "license_key=$JSONSCRAPER_LICENSE_KEY" \
--data-urlencode "region=US" \
--data-urlencode "cache_timeout=0"
Bu, rota için yayımlanmış parametrelerin uyarlanmış bir örneğidir; tüm yanıtların aynı yapıda olacağının veya önbelleğe almayı devre dışı bırakmanın her görev için uygun olduğunun garantisi değildir. Uygulamaya almadan önce kimlik doğrulamayı ve parametreleri güncel koleksiyonda kontrol edin: Postman anahtarı yapılandırılmış bir API Key üzerinden iletebilirken yukarıdaki cURL örneğinde anahtar URL parametresi olarak gösteriliyor.
Aynı isteği Python ile yapma
Aşağıda Python standart kitaplığını kullanan bir seçenek var. GET isteğini oluşturur, parametreleri iletir ve ağ hatalarını, HTTP hatalarını ve geçersiz JSON’u işler.
import json
import os
from urllib.error import HTTPError, URLError
from urllib.parse import urlencode
from urllib.request import Request, urlopen
base_url = "https://tiktok.evelode.com/getVideoByID"
license_key = os.environ.get("JSONSCRAPER_LICENSE_KEY")
if not license_key:
raise RuntimeError("JSONSCRAPER_LICENSE_KEY ortam değişkenini ayarlayın")
params = {
"video_id": "7106855913906081070",
"license_key": license_key,
"region": "US",
}
url = f"{base_url}?{urlencode(params)}"
request = Request(url, method="GET")
try:
with urlopen(request, timeout=30) as response:
status_code = response.status
payload = json.loads(response.read().decode("utf-8"))
except HTTPError as error:
print(f"HTTP hatası: {error.code}")
raise
except URLError as error:
print(f"Ağ hatası: {error.reason}")
raise
except json.JSONDecodeError:
raise RuntimeError("Hizmet yanıtı JSON olarak çözümlenemedi")
print("HTTP durumu:", status_code)
print("En üst düzey anahtarlar:", list(payload.keys()))
Bu, belgelenmiş isteğin uyarlanmış bir örneğidir; sağlayıcının Python için ayrıca test ettiği bir örnek değildir. Ayrıca hizmetin olası tüm yanıtlarını açıklamaz. Anahtar URL üzerinden iletildiği için tam URL’yi günlüklere yazdırmayın: URL içinde gizli bir bilgi bulunabilir.
JSON yanıtını doğrulama
Postman’da yayımlanan yanıtta status alanı ve video ile içerik üreticisinin verilerini içeren iç içe tiktok.aweme_detail nesnesi bulunuyor. Bu, tek bir yanıtın örnek biçimidir; şemanın değişmeden kalacağının garantisi değildir. getVideoByID yanıt örneğini inceleyebilirsiniz.
İç içe alanları okurken her düzeyi kontrol edin:
def get_video_details(payload):
tiktok = payload.get("tiktok")
if not isinstance(tiktok, dict):
return None
details = tiktok.get("aweme_detail")
if not isinstance(details, dict):
return None
return details
details = get_video_details(payload)
if details is None:
print("Yanıtta beklenen video verisi nesnesi yok")
else:
video_id = details.get("id")
description = details.get("desc")
author = details.get("author")
print("ID:", video_id)
print("Açıklama:", description)
print("Yazar:", author)
Alan adları yayımlanmış örnekten alınmıştır. .get() ile yapılan kontrol, alanların zorunlu olduğu anlamına gelmez; beklenen değerlerin bulunmadığı bir yanıtı işlemenizi sağlar. Uygulama mantığınız belirli bir alana bağlıysa, kendi senaryonuz için alınan yanıtlarda alanın bulunduğunu doğrulayın ve alan olmadığında ne yapılacağını belirleyin.
Üç kontrolü birbirinden ayırmak yararlıdır:
- Aktarım: HTTP yanıtı alındı mı ve durum kodu nedir?
- Biçim: Yanıt gövdesi JSON olarak çözümlenebildi mi?
- İçerik: Uygulamanın ihtiyaç duyduğu veriler mevcut mu?
JSON’un başarıyla çözümlenmesi, yanıtta gerekli nesnenin bulunduğu anlamına gelmez. Sorun giderme için teknik hataları ve kontrollerin sonuçlarını kaydedin; anahtarları maskeleyin.
Tek bir istekten çalışan bir işlem hattına
Bir prototip için isteği gönderip birkaç değeri yazdırmak yeterlidir. Düzenli işleme için süreci aşamalara ayırın:
İstek → doğrulama → normalleştirme → tekilleştirme → depolama.
- İstek. Belgelenmiş rotadan yanıt alın ve teknik durumu ayrıca kaydedin.
- Doğrulama. Gövdenin JSON olarak çözümlendiğini ve belirli görevin gerektirdiği verileri içerdiğini doğrulayın.
- Normalleştirme. Gerekli değerleri kendi veri modelinize aktarın. Uygulamanız yalnızca belirli alanlara ihtiyaç duyuyorsa, iç içe yapının tamamını veritabanına taşımayın.
- Tekilleştirme. Mevcut olduğunu ve görevinize uygun olduğunu doğruladıktan sonra bir tanımlayıcı seçin. Bunun tüm yanıtlarda her zaman bulunacağını varsaymayın.
- Depolama. Gerekirse istek zamanını ve ham yanıtı normalleştirilmiş kayıttan ayrı saklayın. Bu, uygulamanın hangi değişiklikleri yaptığını anlamaya yardımcı olur.
Bunlar uygulama tasarımıyla ilgili önerilerdir; hizmete atfedilmemesi gereken özelliklerdir. Harici yanıtı dahili modelden ayırmak, değişiklikleri ele almayı da kolaylaştırır: sorunlar kodun her yerinde değil, doğrulama veya normalleştirme aşamasında aranabilir.
Tekrarlanan istekler için verilerin ne zaman yenileneceğini ve hangi hataların yeniden denenmeye değer olduğunu önceden belirleyin. Yeniden deneme sayısını sınırlayın: sonsuz döngü, yanlış bir parametreyi veya kimlik doğrulama sorununu çözmez.
Önbelleğe alma ve bölge
getVideoByID rotasının açıklamasında cache_timeout parametresi önbelleğe alma süresini saniye cinsinden belirliyor: varsayılan değer 3600 saniye olarak belirtiliyor ve 0 önbelleğe almayı devre dışı bırakıyor. region parametresi ülke kodu olarak açıklanıyor; belgelerde US örneği veriliyor. Uygulamaya almadan önce bu bilgileri güncel Postman istek belgelerinde doğrulayın.
Bir önbellek ayarının bulunması, belirli bir yanıtın güncel olduğunu kanıtlamaz. Güncellik önemliyse kendi senaryonuzdaki verilerle yinelenen isteklerin sonuçlarını kontrol edin ve uygun davranışı seçin.
Sonrasında incelenebilecek görevler
Ürün sayfasında video ve kullanıcı arama, hashtag’ler, konumlar, müzik ve trendler için rotalar listeleniyor. Örnekler arasında searchVideo, searchHashtag, getUserFeed ve getTrendingFeed yer alıyor. Bu, sağlayıcının yayımladığı rota listesidir; her birinin bağımsız olarak doğrulandığı anlamına gelmez. Parametreleri ve yanıt biçimini ilgili rotanın belgelerinde inceleyin: getVideoByID örneğinden bunları otomatik olarak genelleyemezsiniz.
jsonscraper, anahtarı yapılandırmak ve istekleri çalıştırmak için Postman koleksiyonunu kullanmayı öneriyor. Bu, entegrasyon yazmadan önce tek bir rotayı denemenin kullanışlı bir yolu olabilir. Hizmet ayrıca otomasyon senaryolarını da listeliyor; ancak belirli bir iş akışının uyumluluğunu kendi yapılandırmanızda ayrıca doğrulayın. Koleksiyonu dışa aktarırken veya paylaşırken içinde çalışan bir anahtar kalmadığından emin olun.
Uygulamada kullanmadan önce kontrol edilecekler
İsteği düzenli bir sürece eklemeden önce, proje için gereken video ve parametrelerle test edin:
- İstek geçerli bir anahtar ve doğru bir ID ile çalışıyor mu?
- Uygulama yanlış veya eksik bir parametreyi nasıl işliyor?
- JSON geçerli olduğu hâlde gerekli alan bulunmazsa ne oluyor?
- HTTP hatası, ağ kesintisi ve zaman aşımı nasıl işleniyor?
- Görevinizde tanımlama ve tekilleştirme için hangi alanlar uygun?
- Bu parametreyi kullanıyorsanız farklı
cache_timeoutdeğerlerinde yinelenen isteğin sonucu nasıl değişiyor?
Kontrol tarihini, gizli bilgi içermeyen parametreleri ve anonimleştirilmiş bir yanıt örneğini kaydedin. Başarılı tek bir istek, yalnızca belirli koşullardaki belirli senaryonun çalıştığını doğrular; tüm rotaların ve yanıtların kararlı olduğunu kanıtlamaz.
Tekrarlanabilir tek bir senaryoyla başlayın
getVideoByID rotasını gereken bir videoda deneyin, gerçek JSON’u inceleyin ve eksik alanları ve hataları hesaba katan bir işleyici yazın. Ardından gerekirse süreci normalleştirme, tekilleştirme ve depolama adımlarıyla genişletin.
jsonscraper belgeleri başlangıç noktası olarak temel adresi ve rota listesini sunuyor. Üretim kodunda yine de belirli yanıtı doğrulamak, anahtarı korumak ve verilerin beklenen yapıdan farklı olduğu durumları hesaba katmak gerekir.