Сделал скрипт, для себя, для работы. В моей ситуации работает, кому необходимо могут подстроить под себя. Принцип примитивный, как и весь скрипт. Скрипт написан для python3
Требуется opepyxl. «База» это страница, в самом низу, где листы.
А дальше сама ячейка, с номерами и статусом. Если статус не стоит, то по номерам можно звонить. Мною он используется для холодных обзвонов. Работает хорошо в моей ситуации, упрощает надобность копировать и вставлять номера. Сделано на скорую руку, в моменты свободного времени в работе. Могут быть не доработки. Никакой гарантии и всё такое, как есть. I,G,B это буквы, в начале ячейки. acc с linphone, что после символа «@» в вашем случае
main.py, config.cfg:
#!/bin/python3
# Primitive Script
# For auto call people
import os, sys, configparser
import openpyxl
class AutoCaller():
config_path = 'config.cfg'
def __init__(self):
self.c = configparser.ConfigParser()
self.c.read(AutoCaller.config_path)
self.acc = self.c['account']['acc']
self.cell_status = self.c['cells']['status']
self.cell_numbers = self.c['cells']['numbers']
self.cell_info = self.c['cells']['info']
self.cellit = int(self.c['call']['from'])
def clean_number(self, number):
return number.replace("(", "").replace(" ", "").replace(")", "")
def do_call(self, number):
number = self.clean_number(number)
os.system('linphone "call sip-address={}@{}"'.format(number, self.acc))
def read_excel(self, file_path=None, sheet_name=None):
file_path = file_path or self.c.get('xsl', 'file', fallback='база.xlsx')
sheet_name = sheet_name or self.c.get('xsl', 'sheet', fallback='База')
workbook = openpyxl.load_workbook(file_path)
sheet = workbook[sheet_name]
while True:
numbers = sheet[str(self.cell_numbers + str(self.cellit))].value
print(numbers)
cell_status_value = sheet[str(self.cell_status + str(self.cellit))].value
if cell_status_value is None:
with open('was_calls.txt', 'a') as f:
print(sheet[self.cell_info + str(self.cellit)].value)
print(sheet[self.cell_info + str(self.cellit)].value, file=f)
print("Значение в ячейке {}{} пустое".format(self.cell_status, self.cellit))
for number in numbers.split(","):
print("Enter to continue. call {}".format(number))
self.do_call(number)
v = input()
if v == "next":
break
self.cellit += 1
with open(AutoCaller.config_path, 'w') as configfile:
self.c['call']['from'] = str(self.cellit)
self.c.write(configfile)
else:
print("Значение в ячейке {}{}: {}".format(self.cell_status, self.cellit, cell_status_value))
workbook.close()
def main():
c = AutoCaller()
if len(sys.argv) > 1:
for numbers in sys.argv[1:]:
for number in numbers.split(","):
print("Enter to continue. call {}".format(number))
c.do_call(number)
input()
else:
c.read_excel()
main()
[account]
acc = ***.***.***.**
[cells]
status = I
info = B
numbers = G
[call]
from = 2626
[xsl]
file = ***.xlsx
sheet = База