Sosyal medya verilerini analiz eden, nesne tabanlı programlama prensipleriyle geliştirilmiş Java uygulaması.
Özellikler • Kurulum • Kullanım • API Kaynakları • Mimari • İletişim
SMATool (Social Media Analysis Tool), sosyal medya platformlarından veri çekerek çeşitli analizler yapabilen bir komut satırı uygulamasıdır. Nesne Tabanlı Programlama (OOP) prensipleri kullanılarak geliştirilmiştir.
- 🔴 Reddit API - Subreddit ve konu bazlı analiz
- 🌐 Custom Web API - Özel JSON API desteği
- 📁 JSON Dosyası - Yerel veri analizi
- 🧪 Dummy Data - Test ve geliştirme için sahte veri
| Özellik | Açıklama |
|---|---|
| 🔑 Keyword Analizi | En sık kullanılan kelimeleri tespit eder ve görselleştirir |
| 😊 Duygu Analizi | Pozitif, negatif ve nötr içerikleri sınıflandırır |
| 👥 Aktif Kullanıcılar | En çok paylaşım yapan kullanıcıları listeler |
| 📊 İstatistikler | Detaylı istatistiksel özet sunar |
| 💾 Rapor Kaydetme | Tüm analizleri TXT formatında dışa aktarır |
- Reddit API: Herhangi bir subreddit'ten veya konu aramasından gerçek zamanlı veri çekme
- Web API: Özel JSON endpoint'lerinden veri alma
- JSON Dosyası: Yerel JSON dosyalarını analiz etme
- Dummy Source: Offline test için hazır veri seti
- ☕ Java 11 veya üzeri
- 📦 Maven 3.6+ (veya dahil edilen Maven Wrapper)
-
Repository'yi klonlayın
git clone https://github.com/dusova/social-media-analyzer-tool/.git cd social-media-analyzer-tool -
Projeyi derleyin
# Windows .\mvnw.cmd clean compile # Linux/macOS ./mvnw clean compile
-
Uygulamayı çalıştırın
# Windows .\mvnw.cmd exec:java # Linux/macOS ./mvnw exec:java
Uygulama başlatıldığında aşağıdaki menü görüntülenir:
╔══════════════════════════════════════════════════════════╗
║ SOSYAL MEDYA ANALİZ ARACI (SMATool) ║
╚══════════════════════════════════════════════════════════╝
┌────────────────────────────────────────┐
│ VERİ KAYNAĞI SEÇİMİ │
└────────────────────────────────────────┘
1. Web API (Hosting)
2. JSON Dosyası
3. Sahte Veri (DummyAPI - Offline Test)
4. Reddit API (Subreddit/Topic Analizi)
- Seçenek 4'ü seçin
- Subreddit veya arama modunu belirleyin
- Konu/subreddit adını girin (örn:
technology,programming,python) - Çekilecek post sayısını belirleyin (max 100)
Örnek Subreddit'ler:
technology- Teknoloji haberleriprogramming- Programlama tartışmalarıpython- Python dilijava- Java geliştirmenews- Güncel haberler
┌────────────────────────────────────────┐
│ ANALİZ MENÜSÜ │
└────────────────────────────────────────┘
1. Keyword Analizi
2. Duygu Analizi (Sentiment)
3. En Aktif Kullanıcılar
4. İstatistiksel Özet
5. Tüm Analizleri Göster
6. Rapor Kaydet (TXT)
0. Çıkış
Keyword Analizi:
╔════════════════════════════════════════╗
║ KEYWORD ANALİZİ (TOP 10) ║
╚════════════════════════════════════════╝
1. technology │ 45 kez │ ████████████████████
2. programming │ 32 kez │ ██████████████
3. software │ 28 kez │ ████████████
İstatistiksel Özet:
╔════════════════════════════════════════╗
║ İSTATİSTİKSEL ÖZET ║
╚════════════════════════════════════════╝
Toplam gönderi : 50
Benzersiz kullanıcı : 45
Toplam kelime : 2787
Ortalama kelime : 55
SMATool/
├── src/main/java/com/codewithmad/smatool/
│ ├── SMATool.java # Ana sınıf (Entry point)
│ ├── analyzer/
│ │ └── SocialMediaAnalyzer.java # Analiz motoru (Singleton)
│ ├── model/
│ │ └── Post.java # Veri modeli
│ ├── source/
│ │ ├── DataSource.java # Interface (Abstraction)
│ │ ├── ApiSource.java # Web API implementasyonu
│ │ ├── JsonFileSource.java # JSON dosya implementasyonu
│ │ ├── DummySource.java # Test verisi implementasyonu
│ │ └── RedditSource.java # Reddit API implementasyonu
│ └── ui/
│ └── CLI.java # Komut satırı arayüzü
├── pom.xml # Maven yapılandırması
├── mvnw # Maven Wrapper (Linux/macOS)
└── mvnw.cmd # Maven Wrapper (Windows)
| Desen | Kullanım |
|---|---|
| Singleton | SocialMediaAnalyzer - Tek analiz motoru instance'ı |
| Strategy | DataSource interface - Farklı veri kaynakları |
| Factory | Veri kaynağı seçimine göre nesne oluşturma |
- Gson 2.10.1 - JSON parsing için Google Gson kütüphanesi
Web API seçeneğinde kendi JSON API'nizi kullanabilirsiniz. API'nizin aşağıdaki formatta veri döndürmesi gerekir:
[
{
"kullanici": "username",
"displayName": "Display Name",
"metin": "Post içeriği",
"tarih": "2025-01-01",
"id": "unique-id"
}
]- Bu repository'yi fork edin
- Feature branch oluşturun (
git checkout -b feature/YeniOzellik) - Değişikliklerinizi commit edin (
git commit -m 'Yeni özellik eklendi') - Branch'inizi push edin (
git push origin feature/YeniOzellik) - Pull Request açın
Bu proje MIT lisansı altında lisanslanmıştır. Detaylar için LICENSE dosyasına bakınız.
⭐ Bu projeyi beğendiyseniz yıldız vermeyi unutmayın! ⭐
Made with ❤️ by Mustafa Arda Düşova