sitwatch-npm
v1.1.0
Published
Official Node.js client for SitWatch API
Maintainers
Readme
SitWatch NPM Modülü
SitWatch API'si için resmi Node.js istemci kütüphanesi. Bu modül, SitWatch platformunun tüm API özelliklerine kolay erişim sağlar.
📦 Kurulum
npm install sitwatch-npm🚀 Hızlı Başlangıç
const SitWatch = require('sitwatch-npm');
// İstemciyi oluştur
const client = new SitWatch();
// Async/await ile kullanım
async function main() {
try {
// Giriş yap
const login = await client.login('username', 'password');
console.log('Giriş başarılı:', login.user.username);
// Video bilgisi al
const video = await client.getVideoInfo(123);
console.log('Video başlığı:', video.title);
} catch (error) {
console.error('Hata:', error.message);
}
}
main();📋 Özellikler
🔐 Kimlik Doğrulama İşlemleri
Giriş (Login)
const response = await client.login('username', 'password');- Kullanıcı girişi yapar
- Başarılı girişte otomatik olarak token ayarlanır
- Dönüş değeri:
{
success: true,
user: {
id: number,
username: string,
email: string,
profile_image: string,
is_admin: boolean
},
tokens: {
access_token: string,
refresh_token: string
}
}Kayıt (Register)
const response = await client.register(
'username',
'password',
'[email protected]',
'Turkey'
);Çıkış (Logout)
const response = await client.logout();🎥 Video İşlemleri
Video Bilgisi
const video = await client.getVideoInfo(videoId);Video Listeleme
// En son videolar
const latest = await client.getLatestVideos();
// Trend videolar
const trending = await client.getTrendingVideos();
// Top 50 video
const top50 = await client.getTop50Videos();Video Arama
const results = await client.searchVideos({
query: 'arama kelimesi',
type: 'video',
sortBy: 'views',
page: 1,
perPage: 10,
filterApproved: true,
minViews: 1000,
maxDuration: 3600,
uploadDateAfter: '2024-01-01',
uploadDateBefore: '2024-12-31'
});Video Yorumları
const comments = await client.getVideoComments(videoId);İzleme Geçmişi
const history = await client.getWatchHistory();🔄 Canlı Video İzleme
SitWatch API'si, yeni yüklenen videoları otomatik olarak tespit etmek için iki farklı yöntem sunar:
Event Listener API (Önerilen)
// Yeni videoları dinlemeye başla
const listener = client.on('newVideo', (video) => {
console.log('Yeni video yüklendi!', {
id: video.id,
başlık: video.title,
yükleyen: video.uploader.username,
yüklenme_tarihi: video.upload_date
});
}, {
interval: 5000 // 5 saniyede bir kontrol (varsayılan)
});
// Dinleyici durumunu kontrol et
if (listener.isActive()) {
console.log('Dinleyici aktif');
}
// Kontrol aralığını öğren
console.log('Kontrol aralığı:', listener.getInterval(), 'ms');
// Dinlemeyi durdur
listener.stop();Klasik API (Eski)
// Yeni videoları izlemeye başla
const observerId = client.observeNewVideos((video) => {
console.log('Yeni video yüklendi:', video.title);
}, {
interval: 10000 // 10 saniyede bir kontrol
});
// İzlemeyi durdur
client.stopObserving(observerId);
// Tüm izlemeleri durdur
client.stopAllObserving();Video Nesnesi Yapısı
{
id: number, // Video ID
title: string, // Video başlığı
description: string, // Video açıklaması
thumbnail_url: string,// Küçük resim URL'i
video_url: string, // Video URL'i
upload_date: string, // Yüklenme tarihi
views: number, // İzlenme sayısı
uploader: {
username: string, // Yükleyen kullanıcı adı
profile_image: string// Profil resmi
}
}Örnek Kullanım
const SitWatch = require('sitwatch-npm');
const client = new SitWatch();
// Video işleme fonksiyonu
const handleNewVideo = (video) => {
console.log('\n🎥 Yeni Video!');
console.log('━━━━━━━━━━━━━━━━');
console.log('📝 Başlık:', video.title);
console.log('👤 Yükleyen:', video.uploader.username);
console.log('⏰ Tarih:', video.upload_date);
console.log('🔗 URL:', `https://sitwatch.net/watch/${video.id}`);
};
async function watchNewVideos() {
try {
// Giriş yap (isteğe bağlı)
await client.login('username', 'password');
// Yeni videoları dinle (10 saniyede bir)
const listener = client.on('newVideo', handleNewVideo, {
interval: 10000
});
// Ctrl+C ile durdurma
process.on('SIGINT', () => {
listener.stop();
process.exit(0);
});
} catch (error) {
console.error('Hata:', error.message);
}
}
watchNewVideos();Özellikler
- Otomatik Tespit: Yeni videolar otomatik olarak tespit edilir
- Özelleştirilebilir Aralık: Kontrol sıklığı ayarlanabilir (varsayılan: 5 saniye)
- Temiz Kapatma: Dinleyici düzgün bir şekilde kapatılabilir
- Durum Kontrolü: Dinleyicinin aktif olup olmadığı kontrol edilebilir
- Hata Yönetimi: Hatalar otomatik olarak yakalanır ve raporlanır
Öneriler
- Çok kısa kontrol aralıkları kullanmaktan kaçının (5 saniyeden az)
- Her zaman try-catch bloğu kullanın
- Programı kapatırken dinleyiciyi durdurun
- Event Listener API'sini tercih edin (yeni versiyon)
- Uzun süreli kullanımlarda bellek kullanımını takip edin
👥 Kullanıcı İşlemleri
Profil Bilgileri
const profile = await client.getUserProfile('username');Kullanıcı Videoları
const videos = await client.getUserVideos(userId);Kullanıcı Listeleme
// En çok abonesi olanlar
const topUsers = await client.getTopSubscribers();
// Önerilen kullanıcılar
const recommended = await client.getRecommendedUsers();
// Aktif kullanıcılar
const active = await client.getActiveUsers();🌐 Topluluk Özellikleri
Topluluk Gönderileri
const posts = await client.getCommunityPosts({
page: 1,
perPage: 10
});Kullanıcı Gönderileri
const userPosts = await client.getUserPosts(userId, {
page: 1,
perPage: 10
});🎬 İçerik Üretici Araçları
Stüdyo Videoları
const studioVideos = await client.getStudioVideos();🔔 Bildirimler
const notifications = await client.getNotifications();⚠️ Hata Yönetimi
try {
const response = await client.someMethod();
} catch (error) {
console.error({
status: error.status, // HTTP durum kodu
message: error.message, // Hata mesajı
details: error.data // Detaylı hata bilgisi
});
}🛠️ Özellikler
- JWT token tabanlı kimlik doğrulama
- Otomatik token yönetimi
- Detaylı hata yönetimi
- Tüm yanıtlar için tip tanımları
- Kapsamlı API desteği
- Sayfalama desteği
- FormData desteği
- Timeout yönetimi
- Özelleştirilebilir base URL
📚 Teknik Detaylar
- HTTP İstemcisi: axios
- Timeout: 10 saniye
- Content-Type: application/json
- Kimlik Doğrulama: Bearer token
- Base URL: https://api.sitwatch.net/api
API URL Kişiselleştirme
// İstemciyi özel bir API URL'i ile oluşturma
const client = new SitWatch({
baseURL: 'https://api.sitwatch.net/api'
});
// API URL'ini sonradan değiştirme
client.setBaseURL('https://api.sitwatch.net/api');
// Mevcut API URL'ini alma
const baseURL = client.getBaseURL();👨💻 Geliştirici Bilgileri
📊 Proje İstatistikleri
- Versiyon: 1.0.1
- Node.js Gereksinimi: >= 22
- Ana Bağımlılık: axios
- Lisans: MIT
- Paket Boyutu: Minimal (~100KB)
🤝 Katkıda Bulunma
- Bu depoyu fork edin
- Yeni bir özellik dalı oluşturun (
git checkout -b yeni-ozellik) - Değişikliklerinizi commit edin (
git commit -am 'Yeni özellik: XYZ') - Dalınıza push yapın (
git push origin yeni-ozellik) - Bir Pull Request oluşturun
📝 Sürüm Geçmişi
v1.0.1 - Güncel versiyon
- Token yönetimi iyileştirmeleri
- Hata yönetimi geliştirmeleri
- Dokümantasyon güncellemeleri
v1.0.0 - İlk sürüm
- Temel API özellikleri
- JWT tabanlı kimlik doğrulama
- Kapsamlı API desteği
📞 İletişim
⭐ Projeyi Destekle
Eğer bu proje işinize yaradıysa, GitHub üzerinde yıldız vermeyi unutmayın!
🔒 Güvenlik
- SSL/TLS şifrelemesi
- JWT token güvenliği
- API rate limiting desteği
- Hassas veri yönetimi
💡 Öneriler
- Token'ı güvenli şekilde saklayın
- Hata yönetimini her zaman kullanın
- Büyük listelerde sayfalama kullanın
- API limitlerini göz önünde bulundurun
- Dökümantasyonu takip edin
🆘 Destek
- GitHub Issues üzerinden destek alabilirsiniz
- API dökümantasyonu için: https://sitwatch.net/docs/api
- Sürüm notları için: https://github.com/iphysicc/sitwatch-npm/
📄 Lisans
Bu modül, SitWatch platformunun tüm özelliklerine programmatik erişim sağlar ve modern web standartlarını takip eder.
🔑 Token Yönetimi
Token'ı Kaydetme
const SitWatch = require('sitwatch-npm');
// Token değiştiğinde çağrılacak fonksiyon
const handleTokenChange = (token) => {
if (token) {
// Token'ı güvenli bir şekilde sakla (örn: localStorage, secure cookie, vb.)
localStorage.setItem('sitwatch_token', token);
} else {
// Token'ı temizle
localStorage.removeItem('sitwatch_token');
}
};
// İstemciyi oluştur ve kaydedilmiş token'ı kullan
const client = new SitWatch({
token: localStorage.getItem('sitwatch_token'), // Kaydedilmiş token'ı kullan
onTokenChange: handleTokenChange // Token değişikliklerini takip et
});Token Kontrolü
// Token'ın varlığını kontrol et
if (client.hasValidToken()) {
console.log('Token mevcut:', client.getToken());
} else {
console.log('Token bulunamadı');
}Token'ı Manuel Yönetme
// Token'ı manuel olarak ayarla
client.setToken('your_jwt_token');
// Mevcut token'ı al
const token = client.getToken();
// Token'ı temizle
client.clearToken();