From 255fc65db5a1f7a84a8af4999270e2022cebe21f Mon Sep 17 00:00:00 2001 From: Guhan Sensam Date: Mon, 1 Jan 2024 01:21:00 +0530 Subject: [PATCH 1/2] Added Packaging and Some Bug Fixes ->Added Packaging for Windows and Linux -> Reduced message rate to prevent soft bans -> Made selection not necessary for accounts to proceed and only required to delete accounts --- .github/workflows/build_release.yaml | 54 ++++++++++++ README.md | 11 ++- backend/session.py | 4 +- main.py | 27 +++++- requirements-dev.txt | 6 ++ requirements.txt | 2 +- ui/accountselectscreen/accountselectscreen.py | 21 ++++- ui/assets/Splash Screen.png | Bin 0 -> 103075 bytes ui/assets/icon.ico | Bin 0 -> 3902 bytes ui/components/confirmmessagedialog.py | 1 + ui/messagescreen/messagescreen.py | 81 ++++-------------- ui/progressscreen/progressscreen.py | 38 ++++++-- ui/welcomescreen/welcomescreen.py | 14 ++- 13 files changed, 170 insertions(+), 89 deletions(-) create mode 100644 .github/workflows/build_release.yaml create mode 100644 requirements-dev.txt create mode 100644 ui/assets/Splash Screen.png create mode 100644 ui/assets/icon.ico diff --git a/.github/workflows/build_release.yaml b/.github/workflows/build_release.yaml new file mode 100644 index 0000000..935b483 --- /dev/null +++ b/.github/workflows/build_release.yaml @@ -0,0 +1,54 @@ +name: Buid Windows and Linux Executables + +on: + push: + branches: + - main + +jobs: + Windows Build: + runs-on: windows-latest + steps: + - name: Checkout code + uses: actions/checkout@v2 + - name: Set up Python + uses: actions/setup-python@v2 + with: + python-version: 3.10.6 + - name: Install dependencies + run: pip install -r requirements.txt + + - name: Build Windows Executable + run: pyinstaller windows.spec + + - name: Generate Pre Release + uses: marvinpinto/action-automatic-releases@latest + with: + repo_token: ${{ secrets.TOKEN }} + prerelease: true + files: | + dist/MR.DM.exe + + Linux Build: + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v2 + - name: Set up Python + uses: actions/setup-python@v2 + with: + python-version: 3.10.6 + - name: Install dependencies + run: pip install -r requirements.txt + + - name: Build Linux Executable + run: pyinstaller linux.spec + + - name: Generate Pre Release + uses: marvinpinto/action-automatic-releases@latest + with: + repo_token: ${{ secrets.TOKEN }} + prerelease: true + files: | + dist/MR.DM + diff --git a/README.md b/README.md index ecfb2cb..3d7caa1 100644 --- a/README.md +++ b/README.md @@ -101,6 +101,9 @@ MR.DM will take care of the rest. It will send the message to all the accounts y MR.DM is a desktop application. It is available for Windows, Linux, and Mac. You can download the latest executable version from [github releases](https://github.com/oxlac/mr.dm/releases). Or you can build it from the source with the following instructions. +> [!WARNING] +> You must disable your antivirus before running the executable on windows. For more information, please read [this](https://github.com/pyinstaller/pyinstaller/issues?q=label%3Aantivirus-false-positives+is%3Aclosed) + ### Installation @@ -150,12 +153,12 @@ You can view the status of the messages being sent on the progress screen. MR.DM ## Roadmap -- [ ] Add Accounts that have posted with a specific hashtag. (In Progress) -- [ ] Add Accounts that have interacted with certain hashtags. (In Progress) +- [ ] Add Accounts that have posted with a specific hashtag. +- [ ] Add Accounts that have interacted with certain hashtags. - [ ] Add an account from their Instagram profile link. - [ ] Add accounts that have interacted with a specific post. -- [ ] Ability to send pictures and videos. (Need Contributors) -- [ ] Cleaning up Documentation and Adding Sphinx Autodoc. ( Under Progress) +- [ ] Ability to send pictures and videos. +- [ ] Cleaning up Documentation and Adding Sphinx Autodoc. ( Under Progress by admins) See the [open issues](https://github.com/oxlac/mr.dm/issues) for a full list of proposed features (and known issues). If you have any other ideas, please open an issue and let us know. diff --git a/backend/session.py b/backend/session.py index ddd1fa2..c8c7c16 100644 --- a/backend/session.py +++ b/backend/session.py @@ -1,5 +1,3 @@ -from typing import Self - from instaloader import Instaloader, Profile from selenium import webdriver @@ -16,7 +14,7 @@ class Session: driver: webdriver.Chrome = None username: str = None - def __new__(cls) -> Self: + def __new__(cls): if cls._instance is None: cls._instance = super(Session, cls).__new__(cls) cls._instance.loader = Instaloader() diff --git a/main.py b/main.py index b6bb6dd..e1704d7 100644 --- a/main.py +++ b/main.py @@ -3,9 +3,22 @@ from kivy.uix.screenmanager import ScreenManager from kivymd.app import MDApp - from backend import DatabaseManager, Session from ui.welcomescreen import WelcomeScreen +import sys +import os + + +# Define the path for the icon +if getattr(sys, "frozen", False) and hasattr(sys, "_MEIPASS"): + # Running as a bundled executable (PyInstaller) + ICON = os.path.abspath( + os.path.join(os.path.dirname(__file__), "ui/assets/icon.png") + ) + +else: + # Inside a normal Python environment" + ICON = "ui/assets/icon.png" class MyApp(MDApp): @@ -13,7 +26,8 @@ class MyApp(MDApp): :param MDApp: KivyMD App Class :type MDApp: class `MDApp` from `kivymd.app` module - """ + """ + backend_sess = Session() """ Backend Session @@ -24,7 +38,7 @@ class MyApp(MDApp): Title of the application """ - icon = "ui/assets/icon.png" + icon = ICON """ Icon of the application """ @@ -44,6 +58,13 @@ def build(self): # Create Database inspector.create_inspector(Window, sm) DatabaseManager().create_tables() + # dismiss the splash screen + try: + import pyi_splash + + pyi_splash.close() + except Exception: + pass return sm diff --git a/requirements-dev.txt b/requirements-dev.txt new file mode 100644 index 0000000..2941d92 --- /dev/null +++ b/requirements-dev.txt @@ -0,0 +1,6 @@ +instaloader==4.10.2 +Kivy==2.2.1 +selenium==4.16.0 +plyer==2.1.0 +kivymd @ git+https://github.com/kivymd/KivyMD.git@master#egg=kivymd +pyinstaller==5.6.2 \ No newline at end of file diff --git a/requirements.txt b/requirements.txt index fb39a26..6886772 100644 --- a/requirements.txt +++ b/requirements.txt @@ -2,4 +2,4 @@ instaloader==4.10.2 Kivy==2.2.1 selenium==4.16.0 plyer==2.1.0 --e git+https://github.com/kivymd/KivyMD.git@master#egg=kivymd +kivymd @ git+https://github.com/kivymd/KivyMD.git@master#egg=kivymd diff --git a/ui/accountselectscreen/accountselectscreen.py b/ui/accountselectscreen/accountselectscreen.py index 410e582..36e9bc9 100644 --- a/ui/accountselectscreen/accountselectscreen.py +++ b/ui/accountselectscreen/accountselectscreen.py @@ -25,6 +25,7 @@ ManualDialog, ) from ui.messagescreen import MessageScreen +from kivy.clock import Clock class AccountSelectScreen(Screen): @@ -66,7 +67,17 @@ class AccountSelectScreen(Screen): """ def __init__(self, **kw): - Builder.load_file("ui/accountselectscreen/accountselectscreen.kv") + if getattr(sys, "frozen", False) and hasattr(sys, "_MEIPASS"): + # Running as a bundled executable (PyInstaller) + Builder.load_file( + os.path.abspath( + os.path.join(os.path.dirname(__file__), "accountselectscreen.kv") + ) + ) + else: + # Inside a normal Python environment + Builder.load_file("ui/accountselectscreen/accountselectscreen.kv") + super().__init__(**kw) # add the MDDataTable to the layout self.ids.tablecontainer.add_widget(self.create_datatable(), 1) @@ -104,10 +115,8 @@ def edit_selection(self, *args): """ self.selection = self.table.get_row_checks() if len(self.selection) > 0: - self.ids.next.disabled = False self.ids.Delete.disabled = False else: - self.ids.next.disabled = True self.ids.Delete.disabled = True def verify_delete(self): @@ -129,11 +138,17 @@ def delete_selected(self, widget): """ Removes the selected accounts from the list """ + + def deselect_rows(*args): + self.table.table_data.select_all("normal") + widget.parent.parent.parent.parent.dismiss() for selected in self.selection: for stuff in self.data: if stuff[1] == selected[1]: self.data.remove(stuff) + # remove the check from the table + Clock.schedule_once(deselect_rows) self._update_table() def open_filepicker(self): diff --git a/ui/assets/Splash Screen.png b/ui/assets/Splash Screen.png new file mode 100644 index 0000000000000000000000000000000000000000..16d51eb11a16f0002b907150f4877af2e5b3dfe2 GIT binary patch literal 103075 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 literal 0 HcmV?d00001 diff --git a/ui/assets/icon.ico b/ui/assets/icon.ico new file mode 100644 index 0000000000000000000000000000000000000000..8a1b09fd25947f76db8870664c5b2f45725afd45 GIT binary patch literal 3902 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 Any: - Builder.load_file("ui/messagescreen/messagescreen.kv") + if getattr(sys, "frozen", False) and hasattr(sys, "_MEIPASS"): + # Running as a bundled executable (PyInstaller) + Builder.load_file( + os.path.abspath( + os.path.join(os.path.dirname(__file__), "messagescreen.kv") + ) + ) + else: + # Inside a normal Python environment + Builder.load_file("ui/messagescreen/messagescreen.kv") self.data = data return super().__init__(*args, **kwds) @@ -109,6 +120,7 @@ def confirm_send(self): ) self.confirm_send_dialogue.open() + @mainthread def navigate_to_progress(self, *args): """ Navigates to the progress screen @@ -125,68 +137,7 @@ def navigate_to_progress(self, *args): } ) self.manager.add_widget( - ProgressScreen( - name="progress_screen", messages=self.messages, accounts=self.data - ) + ProgressScreen(name="progress", messages=self.messages, accounts=self.data) ) - self.manager.current = "progress_screen" - - def message_loop(self): - """ - This is the main function that deals with sending messages - to each user in the list - """ - for user in self.data: - # compose a new message for the user - self.find_element( - "/html/body/div[2]/div/div/div[2]/div/div/div[1]/div[1]/div[2]/section/div/div/div/div[1]/div/div[1]/div/div[1]/div[2]/div/div" - ).click() - sleep(3) - actions = webdriver.ActionChains(self.session.driver) - actions.send_keys(user[1]) - actions.perform() - sleep(2) - actions = webdriver.ActionChains(self.session.driver) - actions.send_keys(Keys.TAB) - actions.send_keys(Keys.ENTER) - actions.perform() - sleep(2) - actions = webdriver.ActionChains(self.session.driver) - actions.send_keys(Keys.TAB) - actions.send_keys(Keys.ENTER) - actions.perform() - sleep(3) - # start typing the message - actions = webdriver.ActionChains(self.session.driver) - actions.send_keys(self.reel_link) - actions.send_keys(Keys.ENTER) - actions.perform() - sleep(2) - # send the message - actions = webdriver.ActionChains(self.session.driver) - actions.send_keys(self.message) - actions.send_keys(Keys.ENTER) - actions.perform() - sleep(10) - # add the user to the processed list - self.processed_accounts.append(user[0]) - # update the progress bar - self.update_progress() - - # finish the process - self.finish() - - @mainthread - def update_progress(self): - self.ids.progress.value = len(self.processed_accounts) - self.ids.progress_label.text = ( - str(len(self.processed_accounts)) + "/" + str(len(self.data)) - ) - - def finish(self): - self.ids.progress_label.text = "Finished" - self.ids.progress.label.bg_color = (0, 1, 0, 1) - # save the processed accounts to a file - with open("processed_accounts.txt", "w") as f: - for account in self.processed_accounts: - f.write(account + "\n") + self.manager.current = "progress" + self.manager.remove_widget(self) diff --git a/ui/progressscreen/progressscreen.py b/ui/progressscreen/progressscreen.py index e47bdf1..23bc662 100644 --- a/ui/progressscreen/progressscreen.py +++ b/ui/progressscreen/progressscreen.py @@ -1,3 +1,5 @@ +import os +import sys from threading import Thread from time import sleep @@ -40,7 +42,16 @@ class ProgressScreen(Screen): """ def __init__(self, messages, accounts, **kw): - Builder.load_file("ui/progressscreen/progressscreen.kv") + if getattr(sys, "frozen", False) and hasattr(sys, "_MEIPASS"): + # Running as a bundled executable (PyInstaller) + Builder.load_file( + os.path.abspath( + os.path.join(os.path.dirname(__file__), "progressscreen.kv") + ) + ) + else: + # Inside a normal Python environment + Builder.load_file("ui/progressscreen/progressscreen.kv") super().__init__(**kw) self.messages = messages self.accounts = accounts @@ -62,7 +73,6 @@ def create_datatable(self): table = MDDataTable( size_hint=(1, 1), use_pagination=True, - rows_num=10, column_data=[ ("S.No", dp(30)), ("Status", dp(30)), @@ -70,6 +80,7 @@ def create_datatable(self): ("Account Source", dp(40)), ], check=True, + rows_num=10, ) self.table = table self.table.bind(on_check_press=self.edit_selection) @@ -81,8 +92,9 @@ def set_table_data(self): Sets the initial data of the MDTable Adds a red clock icon to the status column """ + temp = [] for account in self.accounts: - self.table.add_row( + temp.append( [ account[0], ("clock-outline", [0.8, 0.3, 0.3, 1], "Pending"), @@ -90,6 +102,7 @@ def set_table_data(self): account[2], ] ) + self.table.row_data = temp def edit_selection(self, instance_table, current_row): """ @@ -233,9 +246,6 @@ def start_message_loop(self, *args): """ count = 0 for user in self.accounts: - # reset by reloading to the DM page - self.session.driver.get("https://www.instagram.com/direct/inbox/") - sleep(5) # set the account to processing self.set_account_to_processing(count) # open the user chat @@ -243,7 +253,7 @@ def start_message_loop(self, *args): sleep(3) # Find the user search field and enter the keys self.find_element(SELECTORS["dm_type_username"]).send_keys(user[1]) - # # We press teh bacl key and enter the last key again to fix a bug on insta that causes the account names to not show up + # # We press teh back key and enter the last key again to fix a bug on insta that causes the account names to not show up # self.find_element(SELECTORS["dm_type_username"]).send_keys(Keys.BACKSPACE) # sleep(2) # self.find_element(SELECTORS["dm_type_username"]).send_keys(user[1][-1]) @@ -258,14 +268,26 @@ def start_message_loop(self, *args): sleep(1) for message in self.messages: # start typing the message + self.simulate_human(message["content"]) + # send the message actions = webdriver.ActionChains(self.session.driver) - actions.send_keys(message["content"]) actions.send_keys(Keys.ENTER) actions.perform() sleep(5) # set the account to completed self.set_account_to_completed(count) count += 1 + sleep(30) + + def simulate_human(self, text): + """ + Simulates human typing + """ + for char in text: + sleep(0.2) + actions = webdriver.ActionChains(self.session.driver) + actions.send_keys(char) + actions.perform() @mainthread def wrong_password(self): diff --git a/ui/welcomescreen/welcomescreen.py b/ui/welcomescreen/welcomescreen.py index c94abdf..0a9035e 100644 --- a/ui/welcomescreen/welcomescreen.py +++ b/ui/welcomescreen/welcomescreen.py @@ -1,4 +1,6 @@ import json +import os +import sys from functools import partial from threading import Thread @@ -27,8 +29,16 @@ class WelcomeScreen(Screen): processing: BooleanProperty = BooleanProperty(False) def __init__(self, **kw): - # check if the file is already loaded - Builder.load_file("ui/welcomescreen/welcomescreen.kv") + if getattr(sys, "frozen", False) and hasattr(sys, "_MEIPASS"): + # Running as a bundled executable (PyInstaller) + Builder.load_file( + os.path.abspath( + os.path.join(os.path.dirname(__file__), "welcomescreen.kv") + ) + ) + else: + # Inside a normal Python environment + Builder.load_file("ui/welcomescreen/welcomescreen.kv") super().__init__(**kw) def on_pre_enter(self, *args): From de11229ec0258426d014517797236a2a3127fc23 Mon Sep 17 00:00:00 2001 From: Guhan Sensam Date: Mon, 1 Jan 2024 01:23:22 +0530 Subject: [PATCH 2/2] Lint Fixes --- ui/messagescreen/messagescreen.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/ui/messagescreen/messagescreen.py b/ui/messagescreen/messagescreen.py index 89fe7a6..e34aeb5 100644 --- a/ui/messagescreen/messagescreen.py +++ b/ui/messagescreen/messagescreen.py @@ -1,6 +1,5 @@ import os import sys -from time import sleep from typing import Any from kivy.clock import mainthread @@ -10,7 +9,6 @@ from kivymd.uix.button import MDFlatButton from kivymd.uix.dialog import MDDialog from selenium import webdriver -from selenium.webdriver.common.keys import Keys from ui.components import MessageMenu from ui.components.message_components import LinkMessage, PostMessage, TextMessage