88 lines
2.9 KiB
Python
88 lines
2.9 KiB
Python
from pymongo import MongoClient
|
|
import sqlite3
|
|
import json
|
|
from datetime import datetime
|
|
import requests
|
|
|
|
# Connect to SQLite
|
|
sqlite_conn = sqlite3.connect('sbsheriff.sqlite')
|
|
sqlite_conn.row_factory = sqlite3.Row
|
|
sqlite_cursor = sqlite_conn.cursor()
|
|
|
|
# Connect to MongoDB
|
|
mongo_client = MongoClient('mongodb://sheriff:unnipus1213@192.168.1.109:27017/?retryWrites=true&serverSelectionTimeoutMS=5000&connectTimeoutMS=10000&authSource=stormbrigade&authMechanism=SCRAM-SHA-256')
|
|
mongo_db = mongo_client['stormbrigade']
|
|
mongo_collection = mongo_db['intel_screenshots']
|
|
|
|
# Fetch data from SQLite table
|
|
sqlite_cursor.execute("SELECT gID, name, castle_designs, attack_designs FROM players")
|
|
rows = sqlite_cursor.fetchall()
|
|
|
|
|
|
# Iterate over the rows and migrate data to MongoDB
|
|
for row in rows:
|
|
|
|
username = row['name']
|
|
guild_id = row['gID']
|
|
castle_design_json = row['castle_designs']
|
|
attack_design_json = row['attack_designs']
|
|
|
|
# Convert house_history JSON to Python dictionary
|
|
castle_dict = json.loads(castle_design_json)
|
|
attack_dict = json.loads(attack_design_json)
|
|
#print(castle_dict)
|
|
# Iterate over house_history elements and upsert to MongoDB
|
|
|
|
player_doc = mongo_db.players.find_one(filter={"in_game_name": {"$regex": f"^{username}$", "$options": "i"}})
|
|
if player_doc is None:
|
|
player_doc = {}
|
|
r = requests.get(f'http://login.strongholdkingdoms.com/ajaxphp/username_search.php?term={username}').json()
|
|
if len(r) > 0:
|
|
player_doc["in_game_name"] = r[0]
|
|
else:
|
|
print(username, len(castle_dict))
|
|
continue
|
|
#print(player_doc)
|
|
|
|
for filename in castle_dict.keys():
|
|
filter_query = {
|
|
"in_game_name": player_doc["in_game_name"],
|
|
"added_by" : {
|
|
"added_by_discord_id": 0,
|
|
"added_by_discord_name": "Old Submission",
|
|
"added_by_discord_server_id": 947398173805133834,
|
|
},
|
|
"type": "castle",
|
|
"filename": filename
|
|
}
|
|
update_query = {
|
|
"$set": {
|
|
"filename": filename
|
|
}
|
|
}
|
|
mongo_collection.update_one(filter_query, update_query, upsert=True)
|
|
for filename in attack_dict.keys():
|
|
filter_query = {
|
|
"in_game_name": player_doc["in_game_name"],
|
|
"added_by" : {
|
|
"added_by_discord_id": 0,
|
|
"added_by_discord_name": "Old Submission",
|
|
"added_by_discord_server_id": 947398173805133834,
|
|
},
|
|
"type": "attack",
|
|
"filename": filename
|
|
}
|
|
update_query = {
|
|
"$set": {
|
|
"filename": filename
|
|
}
|
|
}
|
|
mongo_collection.update_one(filter_query, update_query, upsert=True)
|
|
# Perform the upsert operation
|
|
|
|
|
|
# Close connections
|
|
sqlite_cursor.close()
|
|
sqlite_conn.close()
|
|
mongo_client.close()
|