33import plistlib
44import sqlite3
55import subprocess
6+ import sys
67import time
78
89
910class SMS :
1011 def __init__ (self , computer ):
1112 self .computer = computer
12- self .database_path = self .resolve_database_path ()
13+ if sys .platform .lower () == "darwin" : # Only if macOS
14+ self .database_path = self .resolve_database_path ()
15+ else :
16+ self .database_path = None
1317
1418 def resolve_database_path (self ):
15- if os .geteuid () == 0 : # Running as root
16- home_directory = os .path .expanduser (f"~{ os .environ .get ('SUDO_USER' )} " )
17- else :
19+ try :
20+ if os .geteuid () == 0 : # Running as root
21+ home_directory = os .path .expanduser (f"~{ os .environ .get ('SUDO_USER' )} " )
22+ else :
23+ home_directory = os .path .expanduser ("~" )
24+ return f"{ home_directory } /Library/Messages/chat.db"
25+ except :
1826 home_directory = os .path .expanduser ("~" )
19- return f"{ home_directory } /Library/Messages/chat.db"
27+ return f"{ home_directory } /Library/Messages/chat.db"
2028
2129 def send (self , to , message ):
30+ if sys .platform .lower () != "darwin" :
31+ print ("Only supported on Mac." )
32+ return
2233 message_escaped = message .replace ('"' , '\\ "' ).replace ("\\ " , "\\ \\ " )
2334 script = f"""
2435 tell application "Messages"
@@ -30,6 +41,9 @@ def send(self, to, message):
3041 return "Message sent successfully"
3142
3243 def get (self , contact = None , limit = 10 , substring = None ):
44+ if sys .platform .lower () != "darwin" :
45+ print ("Only supported on Mac." )
46+ return
3347 if not self .can_access_database ():
3448 self .prompt_full_disk_access ()
3549
0 commit comments