# region IMPORTS import tkinter from tkinter import filedialog from pathlib import Path import pickle from telegram.ext import CommandHandler, Updater from wplay.utils.helpers import data_folder_path from wplay.utils.Logger import Logger # endregion # region LOGGER __logger = Logger(Path(__file__).name) # endregion status_file_path = None def start_tkinter(): root_window = tkinter.Tk() root_window.withdraw() def ask_where_are_the_status_file(): print('Choose a status text file.') status_file_path = filedialog.askopenfile( initialdir=data_folder_path / 'tracking_data', title='Choose a status text file.', filetypes=(("text files", "*.txt"), ("all files", "*.*"))) if status_file_path == (): print("Error! Choose a status.")
from wplay import message_blast from wplay import message_timer from wplay import terminal_chat from wplay import save_chat from wplay import telegram_bot from wplay import schedule_message from wplay import about_changer from wplay import get_news from wplay import get_media from wplay.utils.Logger import Logger from wplay.utils.helpers import create_dirs from wplay.utils.helpers import kill_child_processes # endregion # region LOGGER __logger = Logger(Path(__file__).name) # endregion def print_logo(text_logo): figlet = Figlet(font='slant') print(figlet.renderText(text_logo)) # parse positional and optional arguments def get_arg_parser(): parser = argparse.ArgumentParser(description='WhatsApp-play') parser.add_argument( "target", metavar="TARGET", type=str,
class MessageStack(): def __init__(self): self.logger = Logger(Path(__file__).name) self.__create_json_file(helpers.messages_json_path) self.__ensure_valid_json(helpers.messages_json_path) self.__create_json_file(helpers.open_messages_json_path) self.__ensure_valid_json(helpers.open_messages_json_path) def __create_json_file(self, file_path: Path): if not file_path.is_file(): open(file_path, 'w').close() self.logger.info(f'{file_path.name} created.') def __write_json(self, data: dict, file_path: Path): with open(file_path, "w") as json_file: json.dump(data, json_file, indent=4) def __ensure_valid_json(self, file_path: Path): valid_data = {"messages": list()} try: with open(file_path) as json_file: data = json.load(json_file) if not 'messages' in data: self.__write_json(valid_data, file_path) except json.JSONDecodeError: # Empty or Invalid Json self.__write_json(valid_data, file_path) def append_message(self, message: dict, file_path: Path): """ Append messages into json file. Arguments: message -- dict with a message file_path {Path} -- open_messages_json_path or messages_json_path from helpers """ self.__ensure_valid_json(file_path) with open(file_path) as json_file: json_data = json.load(json_file) json_data['messages'].append(message) self.__write_json(json_data, file_path) self.logger.info(f'Message appended to {file_path.name}') def get_message( self, from_file_path: Path = helpers.messages_json_path ) -> Iterator[dict]: """ Yield a message from a file. Arguments: from_file_path {Path} -- open_messages_path or messages_path from helpers Exception: raise StopIteration, json.JSONDecodeError, KeyError if file is empty, or the iteration stopped or the key isn't finded. Yields: [dict] -- Yield a dict with all message data """ with open(from_file_path) as json_file: data = json.load(json_file) for message in data['messages']: yield message def get_all_messages( self, from_file_path: Path = helpers.messages_json_path) -> List[dict]: self.__ensure_valid_json(from_file_path) with open(from_file_path) as json_file: data = json.load(json_file) return data['messages'] def move_message(self, from_file_path: Path, to_file_path: Path, uuid: str): with open(from_file_path) as json_file: data = json.load(json_file) for message in data['messages']: if uuid in message['uuid']: self.append_message(message, to_file_path) self.remove_message(uuid, from_file_path) def move_all_messages(self, from_file_path: Path, to_file_path: Path): self.__ensure_valid_json(from_file_path) with open(from_file_path) as json_file: data = json.load(json_file) for message in data['messages']: self.append_message(message, to_file_path) self.remove_message(message['uuid'], from_file_path) def remove_message(self, uuid: str, file_path: Path): with open(file_path) as json_file: data = json.load(json_file) for i, message in enumerate(data['messages']): if uuid in message['uuid']: del data['messages'][i] self.__write_json(data, file_path) self.logger.info( f"Message Deleted Successfully from {file_path.name}") def remove_all_messages(self, file_path: Path): with open(file_path) as json_file: data = json.load(json_file) for i, message in enumerate(data['messages']): del data['messages'][i] self.__write_json(data, file_path) self.logger.info( f"Deleted Successfully all messages from {file_path.name}")
def __init__(self): self.logger = Logger(Path(__file__).name) self.__create_json_file(helpers.messages_json_path) self.__ensure_valid_json(helpers.messages_json_path) self.__create_json_file(helpers.open_messages_json_path) self.__ensure_valid_json(helpers.open_messages_json_path)
import time import json from wplay.utils import browser_config from wplay.utils.target_search import search_target_by_number from wplay.utils import target_select from wplay.utils import io from wplay.utils import helpers from wplay.utils import verify_internet from wplay.utils.Logger import Logger from wplay.utils.MessageStack import MessageStack # endregion # region LOGGER import logging __logger = Logger(Path(__file__).name, logging.DEBUG) # endregion """ Messages file structure, your program should add messages this way inside the file "messages.json" located at user/wplay/messagesJSON folder. { "messages": [ { "uuid": "33bf7c667f8011ea96971c3947562893", "number": "5562999999999", "message": "*Bold Hello World*" }, { "uuid": "46ca6d284f8058ee89354e2987862869", "number": "5562888888888",