stormbrigade_sheriff/house_history_migrate.py

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()