Ayrıntılı referans
TikTok, YouTube, Twitch, Kick, Facebook, Instagram ve Trovo eventlerini ve hediye kataloglarını 14 dilde, tek ortak şemada listeler.
Bu sayfa platform-events API'sinin tam referansıdır: taksonomi, platform eventleri, dil kuralları, veri standardı, dosya düzeni ve sunucu notları. Kısa kullanım için API.md, Chrome eklentisi için INGEST.md.
Kimlikler
| Seviye | Biçim | Örnek |
|---|---|---|
| Platform eventi | {platform}.{native} | tiktok.comment, youtube.super_chat |
| Katalog öğesi | {platform}.{item_type}.{native_id} | tiktok.gift.5655, youtube.gift.football, twitch.power_up.celebration |
- Ayırıcı noktadır. Segmentler
[a-z0-9_], son segment (native_id)[A-Za-z0-9_-]. - Kimlikler kalıcıdır: bir kez yayınlanan kimlik değiştirilmez ve başka bir şey için kullanılmaz.
nativeplatformun kendi adına yakın tutulur (super_chat,cheer); ortak anlamkindalanındadır.
Seçici sözdizimi (tetikleyiciler için öneri)
| Seçici | Anlam |
|---|---|
tiktok.gift.5655 | Tam olarak bu hediye |
tiktok.gift.* | TikTok'taki herhangi bir hediye |
kind:gift | Herhangi bir platformdaki herhangi bir hediye |
kind:comment@youtube,twitch | YouTube ya da Twitch'te yorum |
category:moderation | Her türlü moderasyon eventi |
API seçici çözmez; aynı filtreler ?id=, ?kind=, ?category=, ?platform= ile sorgulanabilir.
Kategoriler ve kanonik türler
7 kategori: audience (izleyici), chat (sohbet), support (destek), membership (üyelik), moderation (moderasyon), stream (yayın), interaction (etkileşim).
| Kategori | kind | Türkçe | English |
|---|---|---|---|
audience | join | Yayına katılma | Joined the stream |
audience | follow | Takip | Follow |
audience | unfollow | Takibi bırakma | Unfollow |
audience | share | Paylaşım | Share |
audience | like | Beğeni | Like |
audience | viewer_count | İzleyici sayısı | Viewer count |
audience | leaderboard | Destekçi sıralaması | Leaderboard |
chat | comment | Yorum | Comment |
chat | question | Soru | Question |
chat | emote | Emote / sticker | Emote / sticker |
support | gift | Hediye | Gift |
support | donation | Bağış | Donation |
support | treasure_chest | Hazine sandığı | Treasure chest |
membership | subscribe | Abonelik | Subscription |
membership | resubscribe | Abonelik yenileme | Resubscription |
membership | subscription_gift | Hediye abonelik | Gifted subscription |
moderation | ban | Engelleme | Ban |
moderation | unban | Engel kaldırma | Unban |
moderation | mute | Susturma | Mute / timeout |
moderation | message_deleted | Mesaj silindi | Message deleted |
moderation | chat_cleared | Sohbet temizlendi | Chat cleared |
moderation | moderator_change | Moderatör değişikliği | Moderator change |
stream | stream_start | Yayın başladı | Stream started |
stream | stream_end | Yayın bitti | Stream ended |
stream | stream_update | Yayın bilgisi değişti | Stream updated |
stream | raid | Raid | Raid |
stream | shoutout | Shoutout | Shoutout |
stream | ad_break | Reklam arası | Ad break |
interaction | reward_redeem | Ödül kullanma | Reward redeemed |
interaction | poll | Anket | Poll |
interaction | prediction | Tahmin | Prediction |
interaction | battle | Battle | Battle |
interaction | goal | Hedef | Goal |
interaction | hype_train | Hype Train | Hype Train |
interaction | co_host | Konuk yayıncı | Co-host |
Aşamalı olaylar (anket, battle, hype train, hediye kombosu) katalogda tek event olarak durur. Aşama (start, progress, end), kombo ve beğeni paketi bilgisi EventFabric'in canlı eventlerinde taşınır. Katalog kombo için yalnızca flags.streakable bilgisini verir.
Platform eventleri
Aşağıdaki listeler data/platforms/*.json dosyalarından üretilmiştir. YouTube'da kanal aboneliği follow, kanal üyeliği subscribe türündedir. Facebook tepkileri like türündedir.
TikTok (tiktok)
Öğe türleri: gift · birim: tiktok_coin
| Kimlik | kind | Türkçe ad |
|---|---|---|
tiktok.join | join | Yayına katılma |
tiktok.comment | comment | Yorum |
tiktok.like | like | Beğeni |
tiktok.share | share | Paylaşım |
tiktok.follow | follow | Takip |
tiktok.subscribe | subscribe | Abonelik |
(hediyeler — items_order: 100) | gift | |
tiktok.question | question | Soru |
tiktok.emote | emote | Emote |
tiktok.sticker | emote | Sticker |
tiktok.treasure_chest | treasure_chest | Hazine sandığı |
tiktok.battle | battle | Battle |
tiktok.co_host | co_host | Konuk yayıncı |
tiktok.poll | poll | Anket |
tiktok.goal | goal | Hedef |
tiktok.viewer_count | viewer_count | İzleyici sayısı |
tiktok.leaderboard | leaderboard | Destekçi sıralaması |
tiktok.message_deleted | message_deleted | Mesaj silindi |
tiktok.stream_end | stream_end | Yayın bitti |
YouTube (youtube)
Öğe türleri: gift · birim: youtube_jewel
| Kimlik | kind | Türkçe ad |
|---|---|---|
youtube.comment | comment | Yorum |
youtube.like | like | Beğeni |
youtube.subscribe | follow | Kanala abone olma |
youtube.membership | subscribe | Kanal üyeliği |
youtube.membership_milestone | resubscribe | Üyelik dönüm noktası |
youtube.membership_gift | subscription_gift | Üyelik hediyesi |
youtube.super_chat | donation | Super Chat |
youtube.super_sticker | donation | Super Sticker |
youtube.poll | poll | Anket |
youtube.viewer_count | viewer_count | İzleyici sayısı |
youtube.message_deleted | message_deleted | Mesaj silindi |
youtube.stream_end | stream_end | Yayın bitti |
Twitch (twitch)
Öğe türleri: power_up · birim: twitch_bit
| Kimlik | kind | Türkçe ad |
|---|---|---|
twitch.comment | comment | Yorum |
twitch.follow | follow | Takip |
twitch.subscribe | subscribe | Abonelik |
twitch.resubscribe | resubscribe | Abonelik yenileme |
twitch.subscription_gift | subscription_gift | Hediye abonelik |
twitch.cheer | donation | Cheer (Bits) |
twitch.custom_power_up | gift | Kanala özel Power-up |
twitch.channel_points | reward_redeem | Kanal puanı ödülü |
twitch.raid | raid | Raid |
twitch.shoutout | shoutout | Shoutout |
twitch.hype_train | hype_train | Hype Train |
twitch.poll | poll | Anket |
twitch.prediction | prediction | Tahmin |
twitch.goal | goal | Hedef |
twitch.viewer_count | viewer_count | İzleyici sayısı |
twitch.message_deleted | message_deleted | Mesaj silindi |
twitch.chat_cleared | chat_cleared | Sohbet temizlendi |
twitch.timeout | mute | Susturma |
twitch.ban | ban | Engelleme |
twitch.unban | unban | Engel kaldırma |
twitch.moderator_change | moderator_change | Moderatör değişikliği |
twitch.ad_break | ad_break | Reklam arası |
twitch.stream_start | stream_start | Yayın başladı |
twitch.stream_end | stream_end | Yayın bitti |
twitch.stream_update | stream_update | Yayın bilgisi değişti |
twitch.power_up.message_effect | gift | Mesaj efekti (sabit öğe) |
twitch.power_up.celebration | gift | Ekran kutlaması (sabit öğe) |
twitch.power_up.gigantify_an_emote | gift | Emote büyütme (sabit öğe) |
Kick (kick)
Öğe türleri: gift · birim: kick_kick
| Kimlik | kind | Türkçe ad |
|---|---|---|
kick.comment | comment | Yorum |
kick.follow | follow | Takip |
kick.subscribe | subscribe | Abonelik |
kick.resubscribe | resubscribe | Abonelik yenileme |
kick.gift_subscription | subscription_gift | Hediye abonelik |
kick.channel_points | reward_redeem | Kanal puanı ödülü |
kick.raid | raid | Raid |
kick.viewer_count | viewer_count | İzleyici sayısı |
kick.timeout | mute | Susturma |
kick.ban | ban | Engelleme |
kick.stream_start | stream_start | Yayın başladı |
kick.stream_end | stream_end | Yayın bitti |
kick.stream_update | stream_update | Yayın bilgisi değişti |
Facebook Live (facebook)
| Kimlik | kind | Türkçe ad |
|---|---|---|
facebook.comment | comment | Yorum |
facebook.reaction | like | Tepki |
facebook.share | share | Paylaşım |
facebook.follow | follow | Takip |
facebook.stars | donation | Yıldız (Stars) |
facebook.viewer_count | viewer_count | İzleyici sayısı |
Instagram Live (instagram)
| Kimlik | kind | Türkçe ad |
|---|---|---|
instagram.join | join | Yayına katılma |
instagram.comment | comment | Yorum |
instagram.like | like | Beğeni |
instagram.follow | follow | Takip |
instagram.share | share | Paylaşım |
instagram.viewer_count | viewer_count | İzleyici sayısı |
Trovo (trovo)
Öğe türleri: spell · birim: trovo_mana, trovo_elixir
| Kimlik | kind | Türkçe ad |
|---|---|---|
trovo.join | join | Yayına katılma |
trovo.comment | comment | Yorum |
trovo.follow | follow | Takip |
trovo.unfollow | unfollow | Takibi bırakma |
trovo.subscribe | subscribe | Abonelik |
trovo.gift_subscription | subscription_gift | Hediye abonelik |
trovo.raid | raid | Raid |
trovo.stream_start | stream_start | Yayın başladı |
trovo.stream_end | stream_end | Yayın bitti |
Twitch'in varsayılan üç Power-up'ı sabit liste olduğu için eklentiyle toplanmaz; data/platforms/twitch.json içinde static_items olarak tanımlıdır. Kanala özel Power-up'lar katalogda yer almaz, twitch.custom_power_up eventi olarak seçilir.
Diller
14 dil desteklenir; varsayılan tr. Dil her zaman ?lang= ile seçilir, istek başlıkları okunmaz.
| Kod | Dil | Varsayılan locale | covers |
|---|---|---|---|
tr | Türkçe | tr-TR | az |
en | English | en-US | — |
de | Deutsch | de-DE | — |
fr | Français | fr-FR | — |
es | Español | es-ES | ca, gl |
pt | Português | pt-BR | — |
ru | Русский | ru-RU | uk, be, kk, ky, uz, tg |
ar | العربية | ar-SA | — |
zh-Hans | 简体中文 | zh-CN | zh, zh-CN, zh-SG |
zh-Hant | 繁體中文 | zh-TW | zh-TW, zh-HK, zh-MO |
ja | 日本語 | ja-JP | — |
ko | 한국어 | ko-KR | — |
vi | Tiếng Việt | vi-VN | — |
id | Bahasa Indonesia | id-ID | ms |
Çözümleme sırası: küçük harfe çevir ve _ yerine - koy → desteklenen kodla başlıyor mu (zh-Hant-TW) → tam kod → covers içinde tam eşleşme (zh-TW) → ilk alt etiket (tr-TR → tr) → ilk alt etiket covers içinde (uk-UA → ru) → tr.
covers yalnızca istemcinin işletim sistemi dilinden otomatik seçim yapması içindir; sistem bir dili başka bir dile çevirmez. Launcher hiçbir eşleşme bulamazsa arayüz için en seçmelidir.
Ad yedekleri: istenen dil → yakın dil (zh-Hant ↔ zh-Hans, pt ↔ es, id → en) → en → tr → öğenin bilinen ilk dili.
Ortak veri standardı
| Alan | Biçim | Kural |
|---|---|---|
id | metin | Yukarıdaki kimlik biçimi |
native_id | metin | Platformun kimliği; sayı olsa da metin |
platform | metin | tiktok, youtube, twitch, kick, facebook, instagram, trovo |
item_type | metin | gift, power_up, spell, sticker |
name, description | metin | İstenen dilde; açıklama yoksa null |
value | {amount, unit} | amount 0 ya da daha büyük tam sayı; bilinmiyorsa value: null |
icon | URL | Hediyelerde platformun URL'si (kopyalanmaz); sabit eventlerde bizim CDN'imiz |
flags | nesne | community, streakable (boolean, eksikse false) |
attributes | nesne | Anahtar {platform}.{alan}, değer skaler; API yorumlamaz |
| Zaman | ISO 8601 UTC | first_seen, last_seen, captured_at |
unit | Platform |
|---|---|
tiktok_coin | TikTok jetonu (diamond_count) |
youtube_jewel | YouTube Jewels |
twitch_bit | Twitch Bits |
kick_kick | Kick Kicks |
trovo_mana / trovo_elixir | Trovo spell'leri |
Sıralama
sort=default (Launcher sırası): platform sırası → order'ı platformun items_order değerinden küçük sabit eventler → normal öğeler değere göre artan, eşitse ada göre → community öğeleri → kalan sabit eventler. items_order yoksa öğeler bütün eventlerden sonra gelir. Öğe kayıtlarının order alanı bu değeri taşır. TikTok ve YouTube'da susturma/engelleme eventi yoktur (yalnızca message_deleted). q= ile arama yapıldığında community öğeleri ayrıca sona taşınmaz.
Gruplama
group parametresi düz listeyi iç içe gruplara böler; seviye sırası parametredeki sıradır:
| İstek | Yapı |
|---|---|
group=platform | platform (ad, ikonlar) → kayıtlar |
group=category | kategori → kayıtlar |
group=platform,category | platform → kategori → kayıtlar (Launcher için önerilen) |
group=platform,category,kind | platform → kategori → tür → kayıtlar |
Gruplar platform order ve taksonomi sırasıyla gelir; boş gruplar dönmez. Her en alt grup kendi kayıtlarının tamamını taşır; sayfalama yoktur.
Düzeltmeler (overrides)
data/overrides/{platform}.json ingest verisinin üstüne okuma sırasında uygulanır ve her zaman son sözü söyler:
{
"gift": {
"7934": { "flags": { "community": true } },
"5655": { "names": { "tr": "Gül" } }
}
}flags ve attributes birleştirilir; names dil başına adı değiştirir; diğer alanlar (value, icon) doğrudan değiştirilir.
Dosya düzeni
platform-events/
├─ API.md · README.md · INGEST.md
├─ index.php ← GET (okuma)
├─ ingest.php ← POST (Chrome eklentisi, launcher) · GET ?schema=1
├─ config.php ← base_url, ingest_token, diller, sınırlar
├─ schema/ingest.schema.json
├─ src/ ← Http, Lang, Store, Catalog, Ingest
├─ data/ ← elle yazılır (depoda)
│ ├─ taxonomy.json
│ ├─ platforms/{platform}.json
│ ├─ i18n/{lang}.json
│ └─ overrides/{platform}.json
├─ storage/ ← ingest yazar (depoya girmez, sunucuda kalıcı)
│ ├─ catalog/{platform}/{item_type}.json
│ ├─ catalog/{platform}/{item_type}.i18n/{lang}.json
│ ├─ submissions/{YYYY-MM-DD}/{submission_id}.json.gz
│ ├─ history/{platform}.{item_type}.jsonl
│ └─ throttle/{sha1} ← aynı içerik penceresi (30 dk)
├─ media/ ← yalnızca bizim ürettiğimiz ikonlar
│ ├─ platforms/{color,flat}/{platform}.webp
│ └─ {platform}/events/{native}.webp
└─ tools/tikfinity_import.php ← elle çalıştırılan yedekYeni platform eklemek: data/platforms/{id}.json oluşturun, gerekiyorsa data/i18n/*.json dosyalarına event.{id}.{native} anahtarlarını ekleyin ve ikonları media/{id}/events/ altına koyun. Kod değişikliği gerekmez.
Sunucu
- PHP 8.1+ (json, mbstring; gzip için zlib). Composer gerekmez.
storage/web sunucusu kullanıcısı tarafından yazılabilir olmalı ve kod dağıtımında ezilmemelidir.- nginx önerisi (
api.streamember.comköküapi/klasörü):
location ~ ^/platform-events/(src|data/overrides|storage/(submissions|history)|tools)/ { deny all; }
location = /platform-events/config.php { deny all; }
location ~ ^/platform-events/storage/.*\.lock$ { deny all; }Tikfinity yedeği
Eklenti kullanılamadığında TikTok listesi elle alınabilir:
php tools/tikfinity_import.php # 14 dil
php tools/tikfinity_import.php tr en # yalnızca bu diller
php tools/tikfinity_import.php --file=kayit.json trAraç ingest sözleşmesini kullanır (source.agent: tikfinity-import) ve yalnızca eksikleri tamamlar: yeni hediyeleri ve eksik çevirileri ekler, eklentinin topladığı değer, ikon ve bayrakları ezmez.