ابن سعید اردو
محفلین
پچھلے دنوں مجھے محسوس ہو کہ میرے کاروبار (پرنٹنگ کا کاروبار ہے میرا) میں سست روی ہے۔ چنانچہ کیوں ناں اپنے کاروبار کی تشہیر کی جائے مگر مفت میں ۔ سو یہ سوچ کر میں نے اپنی پراڈکٹس کو واٹس ایپ گروپ میں بھیجنا شروع کردیا۔ مگر یہ کیا؟ میں تو صرف چند گروپس میں ہی ایڈ تھا۔ جس پر پوسٹنگ کا کچھ خاص ردعمل بھی نہیں آیا۔
پھر دماغ لڑایا تو ذہن میں ایک بات آئی، کیوں نہ اپنے کسٹمرز کو ہی واٹس ایپ پر میسج بھیجا جائے؟ میں اپنے کسٹمرز کا ریکارڈ رکھتا ہوں، میرے پاس تقریبا 1200 ایسے نمبرز موجود ہیں جو کہ واٹس ایپ پر متحرک ہیں۔ مگرانھیں پیغام بھیجے کیسے؟ واٹس ایپ نے کچھ عرصہ قبل انڈیا میں واٹس ایپ کے ذریعے افواہیں پھیلنے کی بنا پر میسج آگے بھیجنے کی حد 256 سے کم کرکے صرف 5 کردی تھی۔ اگر میں پانچ پانچ کرکے میسج بھیجتا تو اس میں اچھا خاصا وقت لگ جاتا۔ اور پیغام بھیجتے وقت، جن کو پیغام نہیں بھیجا ہے، انھیں ڈھونڈنا اور منتخب کرنا، اچھا خاصا مغز ماری کا کام تھا۔
چنانچہ کافی سوچ بچار کے بعد میرے ذہن میں یہ خیال آیا کہ کیوں نہ پائتھون کے ذریعے سے واٹس ایپ ویب کو خودکار کردیا جائے۔ اور میں نے اس خیال کو عملی جامہ پہنانے کا فیصلہ کیا۔ دودن کی محنت کے بعد میں میرا پروگرام اس قابل تھا کہ وہ واٹس ایپ ویب پر نمبر کو ڈھونڈھے، انھیں منتخب کرے اور ایک پرسنالائز میسج لکھے اور بھیج دے۔ ساتھ میں پراڈکٹ کی تصاویر بھی بھیجیے۔
اس طرح میرا کافی سارا وقت بھی بچ گیا، اور کچھ دوسری خصوصیات کے حامل پیغام بھی ارصال ہونے لیے۔ مطلب پرسنلائز میسجز، ملٹی میڈیا میسج وغیرہ۔۔۔۔
تو آپ میں سے کوئی اس اسکرپٹ کو بہتر بنانے میں دلچسپی رکھتا ہے؟ محب علوی بھائی، اگر آپ تعاون کا ارادہ بنائے تو میں بے حد مشکور ہونگا۔
پھر دماغ لڑایا تو ذہن میں ایک بات آئی، کیوں نہ اپنے کسٹمرز کو ہی واٹس ایپ پر میسج بھیجا جائے؟ میں اپنے کسٹمرز کا ریکارڈ رکھتا ہوں، میرے پاس تقریبا 1200 ایسے نمبرز موجود ہیں جو کہ واٹس ایپ پر متحرک ہیں۔ مگرانھیں پیغام بھیجے کیسے؟ واٹس ایپ نے کچھ عرصہ قبل انڈیا میں واٹس ایپ کے ذریعے افواہیں پھیلنے کی بنا پر میسج آگے بھیجنے کی حد 256 سے کم کرکے صرف 5 کردی تھی۔ اگر میں پانچ پانچ کرکے میسج بھیجتا تو اس میں اچھا خاصا وقت لگ جاتا۔ اور پیغام بھیجتے وقت، جن کو پیغام نہیں بھیجا ہے، انھیں ڈھونڈنا اور منتخب کرنا، اچھا خاصا مغز ماری کا کام تھا۔
چنانچہ کافی سوچ بچار کے بعد میرے ذہن میں یہ خیال آیا کہ کیوں نہ پائتھون کے ذریعے سے واٹس ایپ ویب کو خودکار کردیا جائے۔ اور میں نے اس خیال کو عملی جامہ پہنانے کا فیصلہ کیا۔ دودن کی محنت کے بعد میں میرا پروگرام اس قابل تھا کہ وہ واٹس ایپ ویب پر نمبر کو ڈھونڈھے، انھیں منتخب کرے اور ایک پرسنالائز میسج لکھے اور بھیج دے۔ ساتھ میں پراڈکٹ کی تصاویر بھی بھیجیے۔
اس طرح میرا کافی سارا وقت بھی بچ گیا، اور کچھ دوسری خصوصیات کے حامل پیغام بھی ارصال ہونے لیے۔ مطلب پرسنلائز میسجز، ملٹی میڈیا میسج وغیرہ۔۔۔۔
تو آپ میں سے کوئی اس اسکرپٹ کو بہتر بنانے میں دلچسپی رکھتا ہے؟ محب علوی بھائی، اگر آپ تعاون کا ارادہ بنائے تو میں بے حد مشکور ہونگا۔
کوڈ:
import os, pyautogui, openpyxl, pyperclip, time, winsound, sys
# Ask user for directory that contain referance images
#work_dir = str(input('Absolute path of directory that contain images: '))
work_dir = r'C:\Users\Tossot\Desktop\whatsapp_message_forwarder'
os.chdir(work_dir)
# Check for required image files
msg_forward_icon = 'msg_forward_icon.png'
search_box = 'search_box.png'
search_box_back_icon = 'search_box_back_icon.png'
contact_selection_unselect = 'contact_selection_unselect.png'
contact_selection_selected = 'contact_selection_selected.png'
send_button = 'send_button.png'
msg_box = 'msg_box.png'
check_if_contact_exist = 'check_if_contact_exist.png'
if not os.path.isfile(msg_forward_icon):
print('Image "' + msg_forward_icon + '" missing')
if not os.path.isfile(search_box):
print('Image "' + search_box + '" missing')
if not os.path.isfile(search_box_back_icon):
print('Image "' + search_box_back_icon + '" missing')
if not os.path.isfile(contact_selection_unselect):
print('Image "' + contact_selection_unselect + '" missing')
if not os.path.isfile(contact_selection_selected):
print('Image "' + contact_selection_selected + '" missing')
if not os.path.isfile(send_button):
print('Image "' + send_button + '" missing')
if not os.path.isfile(msg_box):
print('Image "' + msg_box + '" missing')
if not os.path.isfile(check_if_contact_exist):
print('Image "' + check_if_contact_exist + '" missing')
def click_on_msg_forward_icon():
msg_forward_icon_trace = pyautogui.locateOnScreen(msg_forward_icon, confidence=0.5)
if msg_forward_icon_trace == None:
# Try to close opened message forward dialog
pyautogui.press('Esc', presses=2)
time.sleep(1)
msg_forward_icon_trace = pyautogui.locateOnScreen(msg_forward_icon, confidence=0.5)
if msg_forward_icon_trace == None:
#Search for source message, then forward it.
pyautogui.click(pyautogui.locateOnScreen('main_window_search_box.png', confidence=0.8))
pyautogui.write('+92 21 32290223')
time.sleep(1)
pyautogui.click(pyautogui.locateOnScreen('source_message_sender.png', confidence=0.8))
time.sleep(0.5)
msg_forward_icon_trace = pyautogui.locateOnScreen(msg_forward_icon, confidence=0.5)
pyautogui.click(msg_forward_icon_trace)
def click_on_search_box(c):
step_two = pyautogui.locateOnScreen(search_box, confidence=c)
pyautogui.click(step_two)
def click_on_search_box_back_icon(c):
step_three = pyautogui.locateOnScreen(search_box_back_icon, confidence=c)
pyautogui.click(step_three)
def click_on_contact_selection_unselect():
not_select = pyautogui.locateOnScreen(contact_selection_unselect, confidence=0.9)
pyautogui.click(not_select)
def check_if_contact_selected(c):
selected = pyautogui.locateOnScreen(contact_selection_selected, confidence=c)
return selected == None
def click_on_send_button(c):
send_msg = pyautogui.locateOnScreen(send_button, confidence=c)
pyautogui.click(send_msg, interval=0.5)
def click_on_msg_box(c):
click_to_write = pyautogui.locateOnScreen(msg_box, confidence=c)
pyautogui.click(click_to_write)
# TODO:
# Add feature that check if message already sent
# by checking excel cell style.
def check_if_message_already_sent(cell_i):
sheet.cell(cell_i, 1).style = 'Good'
return True
def open_chrome():
pyautogui.click(pyautogui.locateOnScreen('chrome_icon.png', confidence=0.9))
# Open excel list of contacts
wb = openpyxl.load_workbook('contact_list.xlsx')
sheet = wb.worksheets[0]
i = sheet.max_row
open_chrome()
while i != 1:
click_on_msg_forward_icon()
time.sleep(1)
pyperclip.copy(sheet.cell(i, 4).value)
pyautogui.write(pyperclip.paste())
#Compose Message:
business_name = sheet.cell(i, 1).value
if sheet.cell(i, 1).value != None:
business_name = '*' + sheet.cell(i, 1).value + '*'
business_name = business_name.replace('\n', '')
else:
business_name = ''
product_url = 'https://bharosa.solutions/product/self-destructive-egg-shell-warranty-stickers-25mm-x-8mm/'
unsub_msg = '_Reply UNSUB to opt-out from promotional msgs. UNSUB ALL to opt-out from all types of msgs_'
message = 'Hi ' + business_name + ' \nComputers, Laptops, Mobiles aur Electronics kay liyeh High Quality Tamper Evident, *Warranty VOID Sticker* Labels banwaiyeh. Multicolor Digital Priting, Fast Service, Competitive Price. \n Order Online:' + product_url
#Compose Message: End
click_on_contact_selection_unselect()
time.sleep(1)
click_on_send_button(0.8)
time.sleep(2)
pyautogui.write(message, interval=0.01)
pyautogui.press('Enter')
time.sleep(0.2)
pyautogui.write(unsub_msg, interval=0.01)
pyautogui.press('Enter')
time.sleep(1)
sheet.cell(i, 4).style = 'Good'
i = i - 1
wb.save('contact_list.xlsx')
# TODO:
# Add feature that multiple forward icons found,
# Click on forward button from 'First Message Forwarded'