Metin2 için mini API

Legandalith

MT Üye
MT Üye
Mesaj
181
Çözümler
7
Beğeni
198
Puan
769
Ticaret Puanı
0
Discord için yapıldı, aşağıda discord için nasıl veri çekebileceğiniz de gösterilmiştir.

Herhangi bir cache/api tekrar sorgu süresi eklenmemiştir, kullanmak isteyenlerin biraz geliştirmesi gerekiyor, buradaki kod çok basit, daha çok nasıl yapılabilir konusunda fikir vermesi amaçlanmıştır.

Server konusunda freebsd de flask nasıl çalıştırılır internette biraz araştırma yaparsanız bulabilirsiniz, ben sunucuyu açtıktan sonra flask sunucusunu başlattım localde bir sorunla karşılaşmadım.

Sunucu taraflı:

Python:
Genişlet Daralt Kopyala
import socket
from flask import Flask, render_template, request, jsonify
import mysql.connector

app = Flask(__name__)



@app.route("/players/<string:name>")
def get_info(name):
    connection = mysql.connector.connect(
        host="192.168.1.45",
        user ="root",
        password = "123456789",
        database=""
    )
    cursor = connection.cursor()
    query = "SELECT * FROM player.player WHERE name=%s"
    cursor.execute(query, (name,))
    infos = cursor.fetchall()
    connection.close()
    
    infos_list = []

    for info in infos:
        info_dict = {
            "name": info[2],
            "job": info[3],
            "playtime": info[18],
            "level": info[19],
            "last_play": info[37]
        }
        infos_list.append(info_dict)


    return jsonify(infos_list)


if __name__ == "__main__":
    app.run(app.run(host="0.0.0.0"), debug=True)

Discord sorgusu:


Python:
Genişlet Daralt Kopyala
 ####### M2 API TEST #######

    if message.content.startswith('.player'):
        player_name = message.content.split(' ')[1]
        url = f"http://192.168.1.45:5000/players/{player_name}"
        try:
            response = requests.get(url)
            response.raise_for_status()
            data = response.json()
            playtime = data[0]["playtime"]
            hours = playtime // 60
            minutes = playtime % 60
            if data[0]["job"] in (0,4):
                txt = (f'Name: {data[0]["name"]}\n'
                    f'Level: {data[0]["level"]}\n'
                    f'Voc: Warrior\n'
                    f'Playtime: {hours}hrs {minutes}min\n'
                    f'Last Login: {data[0]["last_play"]}\n')
            elif data[0]["job"] in (3, 7):
                txt = (f'Name: {data[0]["name"]}\n'
                    f'Level: {data[0]["level"]}\n'
                    f'Voc: Shaman\n'
                    f'Playtime: {hours}hrs {minutes}min\n'
                    f'Last Login: {data[0]["last_play"]}\n')
            elif data[0]["job"] in (1, 5):
                txt = (f'Name: {data[0]["name"]}\n'
                    f'Level: {data[0]["level"]}\n'
                    f'Voc: Ninja\n'
                    f'Playtime: {hours}hrs {minutes}min\n'
                    f'Last Login: {data[0]["last_play"]}\n')
            elif data[0]["job"] in (2, 6):
                txt = (f'Name: {data[0]["name"]}\n'
                    f'Level: {data[0]["level"]}\n'
                    f'Voc: Sura\n'
                    f'Playtime: {hours}hrs {minutes}min\n'
                    f'Last Login: {data[0]["last_play"]}\n')
            else:
                txt = (f'Name: {data[0]["name"]}\n'
                    f'Level: {data[0]["level"]}\n'
                    f'Voc: Lycan\n'
                    f'Playtime: {hours}hrs {minutes}min\n'
                    f'Last Login: {data[0]["last_play"]}\n')
            await message.channel.send(txt)
        except requests.exceptions.HTTPError as e:
            await message.channel.send("An error occurred: " + str(e))
        except:
            await message.channel.send("An error occurred.")

legan.webp
 
Açık vs Yakalanırsa Server'a Müdahale Edilebilecegini Düşündüm Niyeyse
Ama Güzel Bir APİ'ye benziyor denenebilir.

Elinize Sağlık
İyi Forumlar
 
Uyarı: Bu konu açıldığından bu yana baya zaman geçmiş.
Muhtemelen daha fazla tartışma gerekli değildir ki bu durumda yeni bir konu başlatmayı öneririz. Eğer yine de cevabınızın gerekli olduğunu düşünüyorsanız buna rağmen cevap verebilirsiniz.
Geri
Üst