Δημοσιεύτηκε: 28 Μαρ 2024, 00:43
Διόρθωσα την συνάρτηση search_files.
Πλέον εμφανίζει αρχεία που τροποποιήθηκαν σήμερα, ή χθες, ή προχθές, ή τριήμερο ... μέχρι και δέκα μέρες.

Γενικά στην αναζήτηση πετάει. Μου είναι σίγουρα πρωτόγωρο το να βρίσκω ´τοσο γρήγορα ένα αρχείο. Είτε τοιυ βάζεις ως κριτήριο το όνομα έιτε του βάζεις ημέρα.
Βέβαια μόνο για 10 μέρες έχω κάνει. Θα το επεικτείνω κάποια στιγμή
Επίσης του πρόσθεσα δυνατότητα να στέλνει sms αμέσως με την εντολή
"στείλε μύνημα στην μαρία καλημέρα τι κάνεις"
Φυσικά ερωτηματικό δεν μπορώ να το κάνω να βάζει στο τέλος. Ούτε να αρχίζει με κεφαλαίο. Αλλά και πάλι είναι λειτουργικό.
Το sms το στέλνει μέ το kdeconnect-cli.
Τα κομμάτια που πρόσθεσα
- Κώδικας: Επιλογή όλων
def search_files(self, query, period=None):
query = unidecode(query).lower()
results = []
try:
if period:
find_command_family = f"find /home/family -type f -not -path '*/\.*' -mtime {period} -exec stat -c '%y %n' {{}} +"
find_command_selini = f"find /media/SELINI -type f -not -path '*/\.*' -mtime {period} -exec stat -c '%y %n' {{}} +"
else:
find_command_family = "find /home/family -type f -not -path '*/\.*' -exec stat -c '%y %n' {{}} +"
find_command_selini = "find /media/SELINI -type f -not -path '*/\.*' -exec stat -c '%y %n' {{}} +"
result_family = subprocess.run(find_command_family, shell=True, capture_output=True, text=True)
if result_family.returncode == 0:
results.extend(result_family.stdout.split('\n'))
result_selini = subprocess.run(find_command_selini, shell=True, capture_output=True, text=True)
if result_selini.returncode == 0:
results.extend(result_selini.stdout.split('\n'))
except Exception as e:
print(f"An error occurred while executing find command: {e}")
# Αναζήτηση με βάση το όνομα του αρχείου στον φάκελο family
for root, dirs, files in os.walk("/home/family"):
for file in files:
file_name = unidecode(file).lower()
if query in file_name:
file_path = os.path.join(root, file)
results.append(file_path)
# Αναζήτηση με βάση το όνομα του αρχείου στον φάκελο family
for root, dirs, files in os.walk("/media/SELINI"):
for file in files:
file_name = unidecode(file).lower()
if query in file_name:
file_path = os.path.join(root, file)
results.append(file_path)
return results
def show_results_window(self, results):
self.results_window = ResultsWindow(results)
self.results_window.show()
Πλέον εμφανίζει αρχεία που τροποποιήθηκαν σήμερα, ή χθες, ή προχθές, ή τριήμερο ... μέχρι και δέκα μέρες.
- Κώδικας: Επιλογή όλων
def execute_command(self, command):
if command:
if command.startswith("ψάξε τοπικά") or command.startswith("δείξε") or command.startswith("μείξε") or command.startswith("λήξη") or command.startswith("ρίξε") or command.startswith("ληξε"):
query = command.split(" ", 2)[-1]
period = None
if "σήμερα" in command:
period = "0"
elif "χθες" in command:
period = "1"
elif "χτες" in command:
period = "1"
elif "προχθές" in command:
period = "2"
elif "προχτές" in command:
period = "2"
elif "τριήμερο" in command:
period = "3"
elif "τετραήμερο" in command:
period = "4"
elif "πενθήμερο" in command:
period = "5"
elif "πενταήμερο" in command:
period = "5"
elif "εξαήμερο" in command:
period = "6"
elif "εβδομάδα" in command:
period = "7"
elif "βδομάδα" in command:
period = "7"
elif "οκταήμερο" in command:
period = "8"
elif "οxταήμερο" in command:
period = "8"
elif "8ήμερο" in command:
period = "8"
elif "9ήμερο" in command:
period = "9"
elif "9 ήμερο" in command:
period = "9"
elif "ένα ήμερο" in command:
period = "9"
elif "δεκαήμερο" in command:
period = "10"
search_results = self.search_files(query, period)
if search_results:
print("Αποτελέσματα αναζήτησης:")
for result in search_results:
print(result)
self.show_results_window(search_results)
else:
print("Δεν βρέθηκαν αρχεία που να ταιριάζουν στην αναζήτηση.")
os.system('notify-send "Δεν βρέθηκαν αρχεία που να ταιριάζουν στην αναζήτηση." --icon=/home/family/Εικόνες/χρήση/icons/desperate4.png')

Γενικά στην αναζήτηση πετάει. Μου είναι σίγουρα πρωτόγωρο το να βρίσκω ´τοσο γρήγορα ένα αρχείο. Είτε τοιυ βάζεις ως κριτήριο το όνομα έιτε του βάζεις ημέρα.
Βέβαια μόνο για 10 μέρες έχω κάνει. Θα το επεικτείνω κάποια στιγμή
Επίσης του πρόσθεσα δυνατότητα να στέλνει sms αμέσως με την εντολή
"στείλε μύνημα στην μαρία καλημέρα τι κάνεις"
Φυσικά ερωτηματικό δεν μπορώ να το κάνω να βάζει στο τέλος. Ούτε να αρχίζει με κεφαλαίο. Αλλά και πάλι είναι λειτουργικό.
Το sms το στέλνει μέ το kdeconnect-cli.
Τα κομμάτια που πρόσθεσα
- Κώδικας: Επιλογή όλων
def execute_command(self, command):
if command:
.........................................................................................................................................
.........................................................................................................................................
υπόλοιπες γραμμές για τις λειτουργίες της αναζήτησης και εμφάνισης τοπικών αρχείων
καθώς
αναζήτησης στο google με την εντολή "ψάξε"
.........................................................................................................................................
.........................................................................................................................................
elif command.startswith(("στείλε μήνυμα στον", "στείλε μήνυμα στην")):
parts = command.split("στον" if "στείλε μήνυμα στον" in command else "στην")
if len(parts) == 2:
contact_name, message = parts[1].strip().split(" ", 1) if " " in parts[1].strip() else (parts[1].strip(), "")
contact_number = self.find_contact(contact_name)
if contact_number:
self.send_sms(contact_number, message)
else:
print("Η επαφή δε βρέθηκε στον κατάλογο.")
os.system('notify-send "Η επαφή δε βρέθηκε στον κατάλογο." --icon=/home/family/Εικόνες/χρήση/icons/desperate.png')
else:
print("Σφάλμα: Παρακαλώ προσδιορίστε την επαφή και το μήνυμα.")
os.system('notify-send "Σφάλμα: Παρακαλώ προσδιορίστε την επαφή και το μήνυμα." --icon=/home/family/Εικόνες/χρήση/icons/oh.png')
else:
print("Η εντολή δεν αναγνωρίζεται.")
os.system(f'notify-send "Η εντολή δεν αναγνωρίζεται" --icon=/home/family/Εικόνες/χρήση/icons/desperate2.png')
#Και έξω από την συνάρτηση execute-command
def send_sms(self, contact_number, message):
try:
command = f"kdeconnect-cli -n 'Redmi Note 8 Pro' --send-sms '{message}' --destination '{contact_number}'"
subprocess.run(command, shell=True)
print(f"Το μήνυμα '{message}' στάλθηκε στον αριθμό {contact_number}.")
os.system(f'notify-send "Το μήνυμα {message} στάλθηκε στον αριθμό {contact_number}." --icon=/home/family/Εικόνες/χρήση/icons/hey8.png')
except Exception as e:
print("Προέκυψε σφάλμα κατά την αποστολή SMS:", str(e))
os.system('notify-send "Προέκυψε σφάλμα κατά την αποστολή SMS:" --icon=/home/family/Εικόνες/χρήση/icons/oh.png')
#και
def find_contact(self, contact_name):
contact_name_lower = contact_name.lower()
try:
with open("contacts.txt", "r") as file:
for line in file:
name, number = line.strip().split()
if name.lower() == contact_name_lower:
return number # Επιστρέφουμε τον αριθμό επαφής αν βρεθεί η επαφή
except FileNotFoundError:
print("Το αρχείο contacts.txt δεν βρέθηκε.")
return None # Επιστρέφουμε None αν δεν βρεθεί η επαφή