Как брать из .txt файла 10 строк для 10 строк в БД?
У меня есть файл .txt с прокси, мне надо чтобы для 10 аккаунтов телеграмма брался 1 прокси и т.д, помогите, пожалуйста.
Код записи прокси в БД:
def get_proxy(proxy_str: str):
ptype = getattr(socks, config.proxy_type.upper())
credentials, address = proxy_str.split('@')
login, password = credentials.split(':')
ip, port = address.split(':')
port = int(port)
return ptype, ip, port, True, login, password
def get_new_proxy():
with DB() as db:
db_proxies = db.get_proxies()
with open(config.proxy_file, encoding="utf-8") as file:
file_proxies = file.read().split("\n")
for proxy in file_proxies:
if proxy not in db_proxies or db_proxies.count(proxy) < config.max_accs_per_proxy:
return proxy
return None
Конфиг:
group_links = ["XXXX"]
forward_to = ["XXXX"]
proxy_type = "socks5"
max_accs_per_proxy = 10
proxy_required = True # True/False
json_required = False
default_json = {
"phone": "",
"app_id": XXXXX,
"app_hash": "XXXX",
"sdk": "Windows 10",
"device": "PC 64bit",
"app_version": "4.8.10 x64",
"lang_pack": "en",
"system_lang_pack": "en-us"
}
proxy_file = "../malling_bot_payment/proxy.txt"
autoresponder_file = "autoresponder.txt"
comment_file = "text.txt"
database_path = "accounts.db"
accounts_path = r"F:\pythonProject\malling_bot_payment\accounts"
logs_path = "logs.log"
random_string_len = 0
small_delay = (5, 15)
delete_account_if_dead = True
загрузка акков в БД с прокси:
with DB() as db:
db.create_tables()
for account in accounts_files:
phone = Path(account).stem
with DB() as db:
db.insert_account(phone)
_, proxy, sent_time, joined, text_file, autoresponder_text = db.get_account(phone)
joined = "" if not joined else joined
if not proxy:
proxy = get_new_proxy()
if not proxy and proxy_required:
logger.warning(f"аккаунт {phone} не загружен. Причина: нет свободных прокси")
continue
with DB() as db:
db.update_proxy(phone, proxy)
if proxy:
proxy = get_proxy(proxy)
if os.path.exists(f"{accounts_path}\\{phone}.json"):
with open(f"{accounts_path}\\{phone}.json", encoding="utf-8") as file:
json_data = load(file)
elif not json_required:
json_data = {
"session_file": phone,
"phone": phone,
"app_id": 21682771,
"app_hash": "e271a7a8b85a4f96bf45d93a391cf2f2",
"sdk": "Windows 10",
"device": "PC 64bit",
"app_version": "4.8.10 x64",
"lang_pack": "en",
"system_lang_pack": "en-us"}
else:
logger.error(f"аккаунт {phone} не загружен. Причина: нет json аккаунта")
continue
client = TelegramClient(
session=account,
api_id=json_data["app_id"],
api_hash=json_data["app_hash"],
device_model=json_data["device"],
system_version=json_data["sdk"],
app_version=json_data["app_version"],
lang_code=json_data["lang_pack"],
system_lang_code=json_data["system_lang_pack"],
proxy=proxy
)
client.parse_mode = "html"
accounts.append(
{
"client": client,
"sent_time": sent_time,
"joined": joined,
"phone": phone,
}
)
logger.info(f"аккаунт {phone} загружен")
Файл proxy.txt: TG:proxysoxybot@XXXX TG:proxysoxybot@XXXX TG:proxysoxybot@XXXX TG:proxysoxybot@XXXX TG:proxysoxybot@XXXX TG:proxysoxybot@XXXX TG:proxysoxybot@XXXX TG:proxysoxybot@XXXX TG:proxysoxybot@XXXX TG:proxysoxybot@XXXX TG:proxysoxybot@XXXX TG:proxysoxybot@XXXX TG:proxysoxybot@XXXX TG:proxysoxybot@XXXX TG:proxysoxybot@XXXX TG:proxysoxybot@XXXX TG:proxysoxybot@XXXX TG:proxysoxybot@XXXX TG:proxysoxybot@XXXX TG:proxysoxybot@XXXX TG:proxysoxybot@XXXX
Тут 20 прокси, они должны использоваться для 10 акков, а в моём коде они используются для 20 акков, то есть 1 прокси = 1 акк, а надо 1 прокси = 10 акков
