Neler yeni

Foruma hoş geldin 👋, Ziyaretçi

Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı ya da giriş yapmalısınız. Foruma üye olmak tamamen ücretsizdir.

  • Forumdan daha fazla yararlanmak için, profilinizi telefon numaranız 📱 ile doğrulayın ve daha ayrıcalıklı olun 😉
    Daha fazla bilgi!

Python + NodeJS ile sunucu taraflı işlemleri Xenforoya entegre etme

Neden böyle bir şeye ihtiyacımız olur?>
NodeJS ve Python bir çok yararlı kütüphaneye sahip öğrenmesi kolay üretmesi daha kolay
entegre etmesi ise en kolayı, bir çok servisi bir kaç saatte kodlayıp foruma entegre
edebilirsiniz. Forumun içeriğine göre belirli kullanıcı gruplarının kullanabileceği araçlar yapabilirsiniz mesela yani..

Gerekenler>
Python > Sunucu taraflı işlemleri yaptıracağız, sadece NodeJS ile de yapılabilir fakat
NodeJS ile Pythonun etkileşimini de göstermek istedim.
NodeJS > API Oluşturarak Xenforo tarafından veri alıp, veri göndermek için
Xenforo > :)

Python ve NodeJS'i kurduktan sonra;

cmd veya powershell'e aşşağıdaki kodu yapıştırarak google translate kütüphanesini yüklüyoruz
Kod:
pip install googletrans==4.0.0rc1
Detaylar: googletrans

bir klasör oluşturup içinde
index.py isimli bir dosya oluşturuyoruz

dosya içerisinde komut satırını çalıştırıyoruz
shifte basılı tutup klasörün içine sağ tıklayarak hızlıca açabilirsiniz

sırayla komutları giriyoruz
Kod:
npm init -y
npm install express python-shell
Detaylar: python-shell , express

Şimdi kodlama vakti.

Pythondaki veriyi NodeJS projemize, NodeJS projemizdeki verileri ise hem Xenforoya hem de Pythona aktarmamız gerekiyor
API oluşturmak için gereken kütüphane Express, Python etkileşimi için de Python-Shell'i kurduk.

Py dosyamızdaki verileri NodeJS'ye aktarmak için py içerisinde print() fonksiyonunu kullanacağız
nodeJS'den pythona argüman aktarmak içinse sys.argv kullanacağız ve iletişimi
sağlayacağız. Durum bu.

Xenforoyu işin içine katmadan küçük bir test yapalım;
index.py kodları;

Kod:
from googletrans import Translator
    import sys

    translator = Translator()
    x = translator.translate(sys.argv[1])
    print(x.text)

api.js dosyası oluşturarak içerisine kodları giriyoruz;

Kod:
var express = require('express');
var app = express();
var {PythonShell} = require('python-shell');
 
var textwilltranslate = 'bunu çevir bakalım aslan';
app.get("/", (req, res, next)=>{
    let options = {
        mode: 'text',
        pythonOptions: ['-u'],
        args: [textwilltranslate]
    };
      
 
    PythonShell.run('index.py', options, function (err, result){
          if (err) throw err;
          console.log('result: ', result.toString());
          res.send(result.toString())
    });
});

const port=8000;
app.listen(port, ()=>console.log(`Server connected to ${port}`));

Kaydettikten sonra komut satırına node api yazarak çalıştıralım. ve localhost:8000
adresine gidelim.


Screenshot_3.png


Screenshot_1.png

Screenshot_2.png
textwilltranslate değişkenimize atadığımız 'Çevir bakalım aslan' ı çevirdi, demek ki doğru yoldayız.
şimdi textwilltranslate verisini xenforodan çekip, translate edilmiş veriyi geri göndermemiz gerekiyor.

app.get kısmını şu şekilde değiştiriyorum textwilltranslate değişkenini kodumuzun içerisinden çıkarıyorum;
Kod:
app.get(`/:textwill`, (req, res, next)=>{
    let options = {
        mode: 'text',
        pythonOptions: ['-u'],
        args: [req.params.textwill]
    };

artık 'localhost:8000/bunu çevir bakalım aslan' yazdığımda bana translate edilmiş veriyi verecektir

Screenshot_4.png


Screenshot_5.png
şimdi xenforoya geçelim.

ufak bir gösterim için custom thread fields kısmını kullanacağım

General Options > Value Display HTML;

Kod:
<div id="turkce">
    {$value}
</div>
<div id='ingilicce'>
    
</div>
<script>
    fetch(`http://localhost:8000/{$value}`)
  .then(function(response) {
    return response.json();
  }).then(function(data) {
    document.getElementById('ingilicce').innerHTML=data[0]
  });

</script>
Screenshot_6.png
Screenshot_7.png Screenshot_9.png
son dokunuşlar.. NodeJS'ye cors ekleyeceğiz.

komut satırı: npm install cors

ve api.js'mizin son hali

Kod:
var express = require('express');
var app = express();
var {PythonShell} = require('python-shell');
var cors = require('cors')

var translatedtext;

app.get(`/:textwill`, cors(), (req, res, next)=>{
    let options = {
        mode: 'text',
        pythonOptions: ['-u'],
        args: [req.params.textwill]
    };
    PythonShell.run('index.py', options, function (err, result){
          if (err) throw err;
          console.log('result: ', result.toString());
          translatedtext = result;
          res.send(translatedtext)
    });
});

const port=8000;
app.listen(port, ()=>console.log(`Server connected to ${port}`));

komut satırı: node api.js
yazarak tekrar başlatıyoruz, artık custom fielde girdiğimiz her şey ingilizce diline çevrilecek.

Screenshot_8.png
Screenshot_10.png
 

Ekli dosyalar

  • Screenshot_9.png
    Screenshot_9.png
    23.1 KB · Görüntüleme: 2
  • Screenshot_9.png
    Screenshot_9.png
    23.1 KB · Görüntüleme: 3
Soru ve sorunlarınız için iletişim Discord: destek sadece forumdan verile bilir ;)
 
Moderatör tarafında düzenlendi:
Emeklerinize sağlık, bu tür anlatımlar ile dikkat çekersiniz :) buna emin ola bilirsiniz. Ek olarak destek için forumu kullanmalısınız!
Eğer bu şekilde kaynaklar ile devam ederseniz size bir ayrıcalık tanına bilir bence :) şimdilik konu sayınızdaki sınır biraz artırılmıştır ;)
 
Emeklerinize sağlık, bu tür anlatımlar ile dikkat çekersiniz :) buna emin ola bilirsiniz. Ek olarak destek için forumu kullanmalısınız!
Eğer bu şekilde kaynaklar ile devam ederseniz size bir ayrıcalık tanına bilir bence :) şimdilik konu sayınızdaki sınır biraz artırılmıştır ;)
Teşekkür ederim :)
 

Foruma hoş geldin 👋, Ziyaretçi

Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı ya da giriş yapmalısınız. Foruma üye olmak tamamen ücretsizdir.