Forumel.Com

Geri Git   Forumel.Com > Webmaster > Webmaster Forum > Web Programlama

Web Programlama Bir web programlama dili ve veritabanı ile dinamik içerikli web siteleri yapmayı amaçlar.


Otomatik Haber Botu — vBulletin Entegrasyonu

Bir web programlama dili ve veritabanı ile dinamik içerikli web siteleri yapmayı amaçlar.



Konu Bilgileri
Konu Başlığı
Otomatik Haber Botu — vBulletin Entegrasyonu
Konudaki Cevap Sayısı
1
Şuan Bu Konuyu Görüntüleyenler
 
Görüntülenme Sayısı
253

Kullanıcı Etiket Listesi

2Beğeniler
  • 1 Post By DEKO
  • 1 Post By Evillusions

 
 
LinkBack Seçenekler Stil
Prev önceki Mesaj   sonraki Mesaj Next
Eski 30 Nisan 2026, 19:50   #1
Çevrimiçi
DEKO
DEKO - ait Kullanıcı Resmi (Avatar)
Üyelerin profil bilgilerini yalnızca kayıtlı üyeler görüntüleyebilir. Lütfen kaydol bağlantısından üye olunuz.
new Otomatik Haber Botu — vBulletin Entegrasyonu

Otomatik Haber Botu — vBulletin Entegrasyonu




Otomatik Haber Botu — vBulletin Entegrasyonu
RSS Çekme · Görsel İşleme · Yeniden Yazma · Otomatik Paylaşım
PHP 8.2+ · MySQL · Cron Job · 2026 Güncel

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

SİSTEM NELER YAPIYOR?

Bu sistem belirlediginiz RSS kaynaklarini otomatik olarak tarar, haberlerin gorsellerini indirir ve isler, icerigi kendi cumlelerinizle yeniden yazar, duplikatlari eler ve forum hesabinizdan ozgun bir konu olarak paylaşir. Hicbir manuel mudahale gerekmez.





━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

DOSYA YAPISI

Kod:
sitem.com/
└── bot/
    ├── config.php          ← API anahtarlari, DB, RSS listesi
    ├── newsbot.php         ← Ana calisma dosyasi (cron buraya bakar)
    ├── rss_parser.php      ← RSS/Atom feed okuyucu
    ├── rewriter.php        ← Icerik yeniden yazici
    ├── image_handler.php   ← Gorsel indirme, yeniden boyutlandirma
    ├── vb_poster.php       ← vBulletin API / veritabani yazici
    ├── duplicate_check.php ← Hash bazli duplikat kontrolu
    ├── logger.php          ← Hata ve basari loglari
    └── logs/
        └── bot.log
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

VERİTABANI TABLOLARI

Tablolar ilk calistirmada otomatik olusturulur:

Kod:
-- Yayinlanan haberlerin kaydı (duplikat engeli)
CREATE TABLE IF NOT EXISTS bot_posts (
    id          INT AUTO_INCREMENT PRIMARY KEY,
    rss_url     VARCHAR(512) NOT NULL,
    title_hash  CHAR(64)     NOT NULL UNIQUE,  -- SHA-256
    topic_id    INT          NULL,             -- vBulletin thread ID
    posted_at   DATETIME     DEFAULT NOW(),
    INDEX idx_hash (title_hash)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- Hata ve basari loglari
CREATE TABLE IF NOT EXISTS bot_logs (
    id         INT AUTO_INCREMENT PRIMARY KEY,
    level      ENUM('info','warn','error') DEFAULT 'info',
    message    TEXT,
    created_at DATETIME DEFAULT NOW()
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

config.php

Kod:
<?php
// ── Veritabani ─────────────────────────────────────────────
define('DB_HOST', 'localhost');
define('DB_NAME', 'forum_db');
define('DB_USER', 'forum_user');
define('DB_PASS', 'guclu_sifre');

// ── vBulletin Bot Hesabi ────────────────────────────────────
define('VB_BOT_USER_ID',  99);          // Bot hesabinin user ID'si
define('VB_TABLE_PREFIX', 'vb_');       // vBulletin tablo oneki
define('VB_DEFAULT_FORUM_ID', 12);      // Haberlerin acilacagi forum ID

// ── Yeniden Yazma Ayarlari ──────────────────────────────────
// Secenekler: 'openai', 'anthropic', 'local' (kendi algoritmasi)
define('REWRITER_ENGINE', 'openai');
define('OPENAI_API_KEY',  'sk-...');
define('OPENAI_MODEL',    'gpt-4o-mini');

// ── Gorsel Ayarlari ─────────────────────────────────────────
define('IMG_SAVE_PATH',  '/home/user/public_html/bot/images/');
define('IMG_PUBLIC_URL', 'https://sitem.com/bot/images/');
define('IMG_MAX_WIDTH',   900);
define('IMG_MAX_HEIGHT',  500);
define('IMG_WATERMARK',   false);        // Watermark eklensin mi?
define('IMG_WM_TEXT',    'sitem.com');

// ── RSS Kaynaklari ──────────────────────────────────────────
define('RSS_SOURCES', [
    ['url' => 'https://www.ntv.com.tr/son-dakika-haberleri.rss',  'forum_id' => 12, 'kategori' => 'Gundem'],
    ['url' => 'https://www.haberturk.com/rss',                   'forum_id' => 13, 'kategori' => 'Ekonomi'],
    ['url' => 'https://shiftdelete.net/feed',                    'forum_id' => 14, 'kategori' => 'Teknoloji'],
    // Buraya istediginiz kadar RSS ekleyebilirsiniz
]);

// ── Genel Ayarlar ───────────────────────────────────────────
define('BOT_MIN_WORD_COUNT',  80);   // Bu kadar kelimeden az haberi atla
define('BOT_MAX_AGE_HOURS',   12);   // Bu saatten eski haberi atla
define('BOT_SLEEP_BETWEEN',    2);   // Haberler arasi bekleme (saniye)
define('BOT_DRY_RUN',        false); // true = forum'a yazma, sadece test et
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

newsbot.php — ANA DOSYA

Kod:
<?php
require_once __DIR__ . '/config.php';
require_once __DIR__ . '/rss_parser.php';
require_once __DIR__ . '/rewriter.php';
require_once __DIR__ . '/image_handler.php';
require_once __DIR__ . '/vb_poster.php';
require_once __DIR__ . '/duplicate_check.php';
require_once __DIR__ . '/logger.php';

$pdo = new PDO(
    'mysql:host=' . DB_HOST . ';dbname=' . DB_NAME . ';charset=utf8mb4',
    DB_USER, DB_PASS,
    [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]
);

bot_ensure_tables($pdo);

foreach (RSS_SOURCES as $source) {
    bot_log($pdo, 'info', "Kaynak taranıyor: " . $source['url']);

    $items = rss_parse($source['url']);
    if (!$items) {
        bot_log($pdo, 'warn', "Okunamadı: " . $source['url']);
        continue;
    }

    foreach ($items as $item) {
        // --- Yas kontrolu ---
        $pub = strtotime($item['pubDate'] ?? 'now');
        if ((time() - $pub) > BOT_MAX_AGE_HOURS * 3600) continue;

        // --- Duplikat kontrolu ---
        $hash = hash('sha256', $item['title']);
        if (duplicate_exists($pdo, $hash)) {
            bot_log($pdo, 'info', "Duplikat atlandı: " . $item['title']);
            continue;
        }

        // --- Gorsel islemle ---
        $img_url = image_process($item['image'] ?? null);

        // --- Icerik yeniden yaz ---
        $yazi = rewrite_content(
            $item['title'],
            $item['description'] ?? '',
            $source['kategori']
        );

        // --- Kelime sayisi kontrolu ---
        if (str_word_count($yazi) < BOT_MIN_WORD_COUNT) {
            bot_log($pdo, 'warn', "Yetersiz icerik: " . $item['title']);
            continue;
        }

        // --- Forum'a paylas ---
        if (!BOT_DRY_RUN) {
            $topic_id = vb_post_thread(
                $pdo,
                $source['forum_id'],
                $item['title'],
                $yazi,
                $img_url
            );
            if ($topic_id) {
                duplicate_save($pdo, $hash, $source['url'], $topic_id);
                bot_log($pdo, 'info', "Paylasıldı (topic: $topic_id): " . $item['title']);
            }
        } else {
            bot_log($pdo, 'info', "[DRY RUN] Paylasılacaktı: " . $item['title']);
        }

        sleep(BOT_SLEEP_BETWEEN);
    }
}

bot_log($pdo, 'info', "--- Bot turu tamamlandi ---");
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

rss_parser.php

Kod:
<?php
function rss_parse(string $url): array {
    $ctx = stream_context_create(['http' => [
        'timeout'     => 15,
        'user_agent'  => 'Mozilla/5.0 (NewsBot/2.0)',
        'ignore_errors' => true,
    ]]);

    $xml_str = @file_get_contents($url, false, $ctx);
    if (!$xml_str) return [];

    $xml = @Simplexml_load_string($xml_str, 'SimpleXMLElement', LIBXML_NOCDATA);
    if (!$xml) return [];

    $items = [];

    // RSS 2.0 ve Atom destegi
    $entries = $xml->channel->item ?? $xml->entry ?? [];

    foreach ($entries as $entry) {
        $ns    = $entry->getNamespaces(true);
        $media = isset($ns['media']) ? $entry->children($ns['media']) : null;

        // Gorsel bul: media:content > enclosure > og:image
        $img = null;
        if ($media && isset($media->content)) {
            $img = (string)($media->content->attributes()['url'] ?? '');
        }
        if (!$img && isset($entry->enclosure)) {
            $type = (string)($entry->enclosure->attributes()['type'] ?? '');
            if (str_starts_with($type, 'image/')) {
                $img = (string)($entry->enclosure->attributes()['url'] ?? '');
            }
        }
        if (!$img) {
            // Ozet icerisinden ilk img src'yi cek
            preg_match('/<img[^>]+src=["\']([^"\']+)["\']/', (string)($entry->description ?? ''), $m);
            $img = $m[1] ?? null;
        }

        $items[] = [
            'title'       => trim(strip_tags((string)($entry->title ?? ''))),
            'description' => trim(strip_tags((string)($entry->description ?? $entry->summary ?? ''))),
            'link'        => trim((string)($entry->link ?? '')),
            'pubDate'     => trim((string)($entry->pubDate ?? $entry->updated ?? '')),
            'image'       => $img,
        ];
    }

    return $items;
}
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

rewriter.php — İçerik Yeniden Yazıcı

Kod:
<?php
function rewrite_content(string $baslik, string $ozet, string $kategori): string {
    if (REWRITER_ENGINE === 'openai') {
        return rewrite_openai($baslik, $ozet, $kategori);
    }
    return rewrite_local($baslik, $ozet);
}

// ── OpenAI ile yeniden yaz ──────────────────────────────────
function rewrite_openai(string $baslik, string $ozet, string $kategori): string {
    $prompt = "Sen bir Turkce haber editörüsün. Asagidaki haber basligini ve ozetini kullanarak "
            . "tamamen senden geliyormus gibi, ozgun, akici ve bilgilendirici bir haber metni yaz. "
            . "Kaynak belirtme, alinti yapma, URL verme. "
            . "Kategori: $kategori. "
            . "Minimum 4 paragraf, her paragraf en az 3 cumle. "
            . "Sadece metni dondur, baska hicbir sey yazma.\n\n"
            . "Baslik: $baslik\nOzet: $ozet";

    $ch = curl_init('https://api.openai.com/v1/chat/completions');
    curl_setopt_array($ch, [
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_POST           => true,
        CURLOPT_HTTPHEADER     => [
            'Content-Type: application/json',
            'Authorization: Bearer ' . OPENAI_API_KEY,
        ],
        CURLOPT_POSTFIELDS => json_encode([
            'model'    => OPENAI_MODEL,
            'messages' => [['role' => 'user', 'content' => $prompt]],
            'max_tokens' => 800,
            'temperature' => 0.75,
        ]),
        CURLOPT_TIMEOUT => 30,
    ]);

    $resp = curl_exec($ch);
    curl_close($ch);

    $data = json_decode($resp, true);
    return trim($data['choices'][0]['message']['content'] ?? '');
}

// ── Yerel algoritma (API olmadan) ──────────────────────────
function rewrite_local(string $baslik, string $ozet): string {
    // Cumleler arası farklılık yaratan basit bir yeniden yazdirici
    $cumleler  = preg_split('/(?<=[.!?])\s+/', $ozet);
    $yeni      = [];

    $giris = ["Bu gelismeler gundeme tasindi.", "Konu genis kitlelerin ilgisini cekiyor.",
              "Detaylar netlik kazaniyor.", "Gelismeler dikkat cekici boyutlara ulasti."];

    $yeni[] = $baslik . " konusundaki gelismeler surmeye devam ediyor. " . $giris[array_rand($giris)];

    foreach ($cumleler as $c) {
        $c = trim($c);
        if (mb_strlen($c) > 20) $yeni[] = $c;
    }

    $sonuc = ["Bu konudaki gelismeleri takip etmeye devam edin.",
              "Konuya iliskin yeni bilgiler paylasildikca guncellenecektir.",
              "Detayli bilgi icin forumumuzu takip edin."];

    $yeni[] = $sonuc[array_rand($sonuc)];

    return implode("\n\n", $yeni);
}
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

image_handler.php — Görsel işleme

Kod:
<?php
function image_process(?string $url): ?string {
    if (!$url || !filter_var($url, FILTER_VALIDATE_URL)) return null;

    $ext      = strtolower(pathinfo(parse_url($url, PHP_URL_PATH), PATHINFO_EXTENSION));
    $izinli   = ['jpg', 'jpeg', 'png', 'webp'];
    if (!in_array($ext, $izinli)) $ext = 'jpg';

    $dosya_adi = uniqid('haber_', true) . '.' . $ext;
    $kaydet    = IMG_SAVE_PATH . $dosya_adi;

    // Indir
    $ctx  = stream_context_create(['http' => ['timeout' => 15, 'user_agent' => 'Mozilla/5.0']]);
    $veri = @file_get_contents($url, false, $ctx);
    if (!$veri) return null;

    file_put_contents($kaydet, $veri);

    // GD ile boyutlandir
    $bilgi = @getimagesize($kaydet);
    if (!$bilgi) { unlink($kaydet); return null; }

    [$w, $h, $tip] = $bilgi;

    if ($w > IMG_MAX_WIDTH || $h > IMG_MAX_HEIGHT) {
        $oran  = min(IMG_MAX_WIDTH / $w, IMG_MAX_HEIGHT / $h);
        $yw    = (int)($w * $oran);
        $yh    = (int)($h * $oran);

        $kaynak = match($tip) {
            IMAGETYPE_JPEG => imagecreatefromjpeg($kaydet),
            IMAGETYPE_PNG  => imagecreatefrompng($kaydet),
            IMAGETYPE_WEBP => imagecreatefromwebp($kaydet),
            default        => null,
        };

        if ($kaynak) {
            $hedef = imagecreatetruecolor($yw, $yh);
            imagecopyresampled($hedef, $kaynak, 0, 0, 0, 0, $yw, $yh, $w, $h);

            // Watermark
            if (IMG_WATERMARK) {
                $renk = imagecolorallocatealpha($hedef, 255, 255, 255, 80);
                imagestring($hedef, 3, 8, $yh - 20, IMG_WM_TEXT, $renk);
            }

            imagejpeg($hedef, $kaydet, 88);
            imagedestroy($kaynak);
            imagedestroy($hedef);
        }
    }

    return IMG_PUBLIC_URL . $dosya_adi;
}
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

vb_poster.php — Forum'a Yazma

Kod:
<?php
function vb_post_thread(PDO $pdo, int $forum_id, string $baslik, string $icerik, ?string $img_url): ?int {
    $prefix  = VB_TABLE_PREFIX;
    $user_id = VB_BOT_USER_ID;
    $now     = time();

    // Gorsel BB kodunu hazirla
    $gorsel_bb = $img_url
        ? "
[IMG]{$img_url}[/IMG]
\n\n" : ''; // Tam paylasim metni $paylasim = $gorsel_bb . $icerik . "\n\nBu icerik otomatik olarak derlenmistir."; $pdo->beginTransaction(); try { // Thread kaydi $st = $pdo->prepare(" INSERT INTO {$prefix}thread (forumid, title, firstpostid, lastpostid, open, replycount, lastpost, lastposter, lastposterid, postuserid, username, dateline, visible, attach, threadid) SELECT :fid, :title, 0, 0, 1, 0, :now, (SELECT username FROM {$prefix}user WHERE userid = :uid LIMIT 1), :uid2, :uid3, (SELECT username FROM {$prefix}user WHERE userid = :uid4 LIMIT 1), :now2, 1, 0, NULL "); $st->execute([ ':fid' => $forum_id, ':title' => $baslik, ':now' => $now, ':now2' => $now, ':uid' => $user_id, ':uid2' => $user_id, ':uid3' => $user_id, ':uid4' => $user_id, ]); $thread_id = (int)$pdo->lastInsertId(); // Post kaydi $sp = $pdo->prepare(" INSERT INTO {$prefix}post (threadid, parentid, username, userid, title, dateline, pagetext, allowsmilie, showsignature, ipaddress, visible, attach) SELECT :tid, 0, (SELECT username FROM {$prefix}user WHERE userid = :uid LIMIT 1), :uid2, :title, :now, :icerik, 1, 1, '127.0.0.1', 1, 0 "); $sp->execute([ ':tid' => $thread_id, ':uid' => $user_id, ':uid2' => $user_id, ':title' => $baslik, ':now' => $now, ':icerik' => $paylasim, ]); $post_id = (int)$pdo->lastInsertId(); // Thread firstpostid / lastpostid guncelle $pdo->prepare("UPDATE {$prefix}thread SET firstpostid = :pid, lastpostid = :pid2 WHERE threadid = :tid") ->execute([':pid' => $post_id, ':pid2' => $post_id, ':tid' => $thread_id]); // Forum sayacini guncelle $pdo->prepare("UPDATE {$prefix}forum SET threadcount = threadcount + 1, replycount = replycount + 1, lastpost = :now, lastposter = (SELECT username FROM {$prefix}user WHERE userid = :uid LIMIT 1), lastposterid = :uid2, lastthread = :title, lastthreadid = :tid WHERE forumid = :fid") ->execute([':now' => $now, ':uid' => $user_id, ':uid2' => $user_id, ':title' => $baslik, ':tid' => $thread_id, ':fid' => $forum_id]); $pdo->commit(); return $thread_id; } catch (Exception $e) { $pdo->rollBack(); error_log("vb_post_thread hatasi: " . $e->getMessage()); return null; } }
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

duplicate_check.php ve logger.php

Kod:
<?php
// ── duplicate_check.php ─────────────────────────────────────
function bot_ensure_tables(PDO $pdo): void {
    $pdo->exec("CREATE TABLE IF NOT EXISTS bot_posts (
        id INT AUTO_INCREMENT PRIMARY KEY,
        rss_url VARCHAR(512) NOT NULL,
        title_hash CHAR(64) NOT NULL UNIQUE,
        topic_id INT NULL,
        posted_at DATETIME DEFAULT NOW()
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4");

    $pdo->exec("CREATE TABLE IF NOT EXISTS bot_logs (
        id INT AUTO_INCREMENT PRIMARY KEY,
        level ENUM('info','warn','error') DEFAULT 'info',
        message TEXT,
        created_at DATETIME DEFAULT NOW()
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4");
}

function duplicate_exists(PDO $pdo, string $hash): bool {
    $st = $pdo->prepare("SELECT 1 FROM bot_posts WHERE title_hash = ? LIMIT 1");
    $st->execute([$hash]);
    return (bool)$st->fetchColumn();
}

function duplicate_save(PDO $pdo, string $hash, string $url, int $topic_id): void {
    $pdo->prepare("INSERT IGNORE INTO bot_posts (rss_url, title_hash, topic_id) VALUES (?,?,?)")
        ->execute([$url, $hash, $topic_id]);
}

// ── logger.php ──────────────────────────────────────────────
function bot_log(PDO $pdo, string $level, string $msg): void {
    // Hem dosyaya hem DB'ye yaz
    $satirr = "[" . date('Y-m-d H:i:s') . "] [$level] $msg\n";
    file_put_contents(__DIR__ . '/logs/bot.log', $satirr, FILE_APPEND);

    try {
        $pdo->prepare("INSERT INTO bot_logs (level, message) VALUES (?,?)")
            ->execute([$level, $msg]);
    } catch (Exception $e) {}
}
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

VBULLETIN BOT HESABI KURULUMU




Adim 1 — Bot Kullanicisi Olustur

Admin Panel → Kullaniciler → Kullanici Ekle kismina gidin. Kullanici adini HaberBotu, e-postasini bot@sitem.com olarak ayarlayin. Gercek bir e-posta adresi kullanin, aktivasyon maili buraya gelecek.

Adim 2 — Ozel Grup Olustur

Admin Panel → Kullanici Grupları → Yeni Grup Ekle kismina gidin. Grup adini "Haber Botlari" yapın. Asagidaki izinleri tam olarak bu sekilde yapilandirin:
  • AKTIF — Konu acma izni
  • AKTIF — Mesaj gonderme izni
  • AKTIF — Moderasyon onayi olmadan yayin
  • AKTIF — Flood kontrol devre disi (zorunlu — bot hizli yazar)
  • AKTIF — Mesaj limiti yok
  • KAPALI — Ozel mesaj gonderme (gereksiz ve guvenlik riski)
  • KAPALI — Rep puan verme / alma
  • KAPALI — Profil duzenleme
  • KAPALI — Avatar degistirme (admin panelinden siz ayarlayın)

Adim 3 — Botu Gruba Ata

Admin Panel → Kullaniciler → HaberBotu hesabini duzenle → Birincil Grup: Haber Botlari sec → Kaydet.

Adim 4 — Forum Izinleri

Haberlerin acilacagi her forum icin: Forum Yonetimi → Izinler → Haber Botlari grubuna konu acma ve yanitlama izni verin. Diger forumlara erisimi tamamen kapatin.

Adim 5 — Bot User ID'sini Bul

Admin Panel → Kullaniciler → HaberBotu → URL'de userid=XX yazar. Bu sayiyi config.php dosyasindaki VB_BOT_USER_ID alani ile guncelle.

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

CRON JOB KURULUMU

Kod:
# cPanel → Cron Jobs veya SSH ile crontab -e komutu

# Her 30 dakikada bir calistir
*/30 * * * * /usr/bin/php /home/kullanici/public_html/bot/newsbot.php >> /home/kullanici/public_html/bot/logs/cron.log 2>&1

# Alternatif: Sadece mesai saatlerinde (08:00 - 23:00)
*/30 8-23 * * * /usr/bin/php /home/kullanici/public_html/bot/newsbot.php >> /home/kullanici/public_html/bot/logs/cron.log 2>&1

# Eski log dosyalarini her gece temizle (30 gunden eski)
0 3 * * * find /home/kullanici/public_html/bot/logs/ -name "*.log" -mtime +30 -delete
Cron kurulmadan once tek seferlik test:
Kod:
php /home/kullanici/public_html/bot/newsbot.php
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

ÖNEMLI NOTLAR VE TAVSİYELER
  • BOT_DRY_RUN: config.php'de önce true yapın, foruma hiç yazmadan her şeyin doğru çalıştığını logs/bot.log dosyasından doğrulayın. Sonra false yapın.
  • OpenAI Maliyeti: gpt-4o-mini modeli cok uygun maliyetlidir. Günluk 100 haber icin aylık 1-2 USD civarindadir.
  • API Olmadan Kullanim: REWRITER_ENGINE'i 'local' yaparsanız API'siz calısır, ancak üretilen metinler daha basit olur.
  • Gorsel Klasoru: bot/images/ klasorune PHP'nin yazma izni olmasi gerekir. SSH: chmod 755 bot/images/
  • RSS Kalitesi: Her RSS kaynagi farkli yapi kullanir. Rss_parser.php dosyasi Atom ve RSS 2.0'i destekler. Sorun yasarsaniz kaynak URL'yi manuel kontrol edin.
  • Hash Carpismasi: Baslik degistiginde (bazi siteler gunceller) duplikat kontrolu basarısız olabilir. URL bazli ek kontrol ekleyebilirsiniz.
  • Flood Korumasi: BOT_SLEEP_BETWEEN degeri sunucunuza gore ayarlayin. Paylasimlar arasi en az 2 saniye onerilir.
  • Log Takibi: bot/logs/bot.log dosyasini duzenli kontrol edin. Buyuk hatalar error seviyesinde, kucuk sorunlar warn seviyesinde loglanir.

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

GEREKSİNİMLER
  • PHP 8.0 veya uzeri (8.2 onerilir)
  • PDO + PDO_MySQL extension
  • cURL extension (OpenAI API icin)
  • GD extension (gorsel islemler icin)
  • MySQL 5.7 / MariaDB 10.3 veya uzeri
  • vBulletin 4.x veya 5.x
  • Cron job erisimi (cPanel veya SSH)
  • OpenAI API anahtari (isteğe bagli, yerel yeniden yazici de kullanilabilir)

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━



Test ortami: PHP 8.2 / MariaDB 10.6 / vBulletin 4.2.5 / cPanel. OpenAI API: gpt-4o-mini modeli. Gorsel isleme: GD Library.



Fallen code. Broken systems. No mercy.
 
 

Yer İmleri


Konuyu 1 kişi okuyor: (0 üye ve 1 misafir)
 

Gönderim Kuralları
Yeni konu açamazsınız
Cevap yazamazsınız
Ek dosya gönderemezsiniz
Mesajlarınızı düzenleyemezsiniz

BB code is Açık
İfadeler Açık
[IMG] kodu Açık
HTML kodu Kapalı
Trackbacks are Açık
Pingbacks are Açık
Refbacks are Açık



Tüm saatler GMT +3 biçimindedir. Şu anki saat 23:47.

Forum Bilgilendirme Künye
Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2026, vBulletin Solutions Inc.

Forumel, lisanslı vBulletin kullanmaktadır!
Forum Sahibi: Dea Dia ve Gece

Sitemiz; yer sağlayıcı bir forum sitesidir. Forumel.Com adresimizde yapılan paylaşımlar, moderasyon ekibimizin onayına dahil olmadan direkt olarak yayınlanmaktadır. 5237 sayılı TCK (Türk Ceza Kanunu) ve 5651 Sayılı Kanun'un ilgili maddelerini ihlal eden kişilerin IP adresleri de dahil olmak üzere sair kişi veya adli mercilere müzekkere (Resmi Üst Yazı), tarafımıza tanzim edildiği takdirde paylaşılacaktır. Hukuka aykırı bir paylaşımın olduğunu düşündüğünüz mesaj ya da konuyu; İLETİŞİM linkine bildirim yoluyla iletebilirsiniz. 48 saat içerisinde mevcut şikâyetiniz üzerinden tarafınıza ulaşılacak, gerekli işlemler tesis edilecektir.

Eğlenceli Genel Forum Sitesi, Genel Forum Sitesi, Genel Forum Siteleri, Genel Forum