Çözüldü "Bu kaydedilmiş bir MCI aygıtı değil" Hatası

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.

Eymen1001

Decapat
Katılım
1 Mart 2021
Mesajlar
80
Daha fazla  
Cinsiyet
Erkek
Merhaba. Bir yapılacaklar listesi programı yazıyordum ve kullanıcının kararına göre ekrana yazdırılan yazıların sesli okunmasını istedim. İlk kodladığımda sorunsuz çalışıyordu fakat diğer fonksiyonları biraz düzenlediğimde çalışmaz hale geldi(Bazı fonksiyonlar yarım yamalak çünkü daha onları bitirmeye zamanım olmadı ama hatalı çalışan fonksiyonun diğerleriyle bir bağlantısı yok).Hatalı fonksiyon = say()

Python:
import pickle
import time
import gtts
import playsound
import os
import datetime

operations = ["görev_ekle", "görev_çıkart", "görevleri_say",
              "görev_hatırlatıcısı",
              "görev_düzenleme", "yardım", "sessiz_ol", "konuş"
    , "sıfırla"
              ]


class Görev:
    def __init__(self, name="Yok", details="Yok", alarm="Yok"):
        self.alarm = alarm
        self.name = name
        self.details = details

    def set_alarm(self, new):
        self.alarm = new

    def set_name(self, new):
        self.name = new

    def set_details(self, new):
        self.details = new

    def tell_name(self):
        return self.name

    def tell_details(self):
        return self.details

    def tell_alarm(self):
        return self.alarm


try:
    with open("Tasks.pkl", "rb") as file:
        file.seek(0)
        data = pickle.load(file)
        if not isinstance(data, dict):
            raise TypeError
except:
    with open("Tasks.pkl", "wb") as file:
        data = {}
        pickle.dump(data, file)

try:
    with open("Sound.pkl", "rb") as file:
        file.seek(0)
        speak = pickle.load(file)
        if not (speak is True or speak is False):
            raise FileNotFoundError
except FileNotFoundError:
    with open("Sound.pkl", "wb") as file:
        pickle.dump(False, file)
        speak = False

# Hatalı fonksiyon
def say(what):
    global speak
    print(what)
    if speak:
        talk = gtts.gTTS(str(what), lang="tr", slow=False)
        talk.save("saying.mp3")
        time.sleep(0.5)
        playsound.playsound("saying.mp3")
        os.remove("saying.mp3")


def görev_ekle():
    say("ad dışındakiler optioneldir")
    name = input("Görev adı: ")
    details = input("Görev detayları: ")

    with open("Tasks.pkl", "rb") as file:
        file.seek(0)
        data = pickle.load(file)
        if name in data.keys():
            say("Üzgünüm, bu isimde bir öğe zaten kaydedilmiş")
            return
        data[name] = Görev(name=name, details=details)
    with open("Tasks.pkl", "wb") as file:
        pickle.dump(data, file)
    say("Listeye eklendi!")


def görev_çıkart():
    name = input("Görev adı: ")
    with open("Tasks.pkl", "rb") as file:
        file.seek(0)
        data = pickle.load(file)
    if name not in data:
        say("Üzgünüm, aradığınız öğeyi bulamadım")
        return
    del data[name]
    with open("Tasks.pkl", "wb") as file:
        pickle.dump(data, file)


def görevleri_say():
    with open("Tasks.pkl", "rb") as file:
        file.seek(0)
        data = pickle.load(file)
        for details in data.values():
            say(f"{details.tell_name()} : ({details.tell_details()} | {details.tell_alarm()})")


def sessiz_ol():
    do_I = False
    with open("Sound.pkl", "wb") as file:
        pickle.dump(do_I, file)
        talk()


def konuş():
    do_I = True
    with open("Sound.pkl", "wb") as file:
        pickle.dump(do_I, file)
        talk()


def talk():
    global speak
    with open("Sound.pkl", "rb") as file:
        file.seek(0)
        speak = pickle.load(file)
    say("Başarılı!")


def sıfırla():
    with open("Tasks.pkl", "wb") as file:
        data = {}
        pickle.dump(data, file)
    say("Başarılı")


def correction(sentence):
    returned_sentence = sentence
    if " " in sentence:
        for letter in returned_sentence:
            if letter == " ":
                returned_sentence = returned_sentence.replace(letter, "_")
    return returned_sentence.lower()


def görev_hatırlatıcısı():
    say("İstenilen verileri boş bırakırsanız o anki tarihe ayarlanır.")
    say("yani yılı boş bırakınca 2023 olarak ayarlanması gibi.")
    tarih_yıl = input("Yıl: ")
    tarih_yıl = datetime.datetime.now().year if len(tarih_yıl.strip()) == 0 else int(tarih_yıl)

    tarih_ay = input("Ay: ")
    tarih_ay = datetime.datetime.now().month if len(tarih_ay.strip()) == 0 else int(tarih_ay)

    tarih_gün = input("Gün: ")
    tarih_gün = datetime.datetime.now().day if len(tarih_gün.strip()) == 0 else int(tarih_gün)

    tarih_saat = input("Saat: ")
    tarih_saat = datetime.datetime.now().hour if len(tarih_saat.strip()) == 0 else int(tarih_saat)

    tarih_dakika = input("Dakika: ")
    tarih_dakika = datetime.datetime.now().minute if len(tarih_dakika.strip()) == 0 else int(tarih_dakika)

    tarih = datetime.datetime(tarih_yıl, tarih_ay, tarih_gün, tarih_saat, tarih_dakika)


def yardım():
    print("""
        /Yardım = Size komutları söyler.
/Sessiz ol = Konuşmayı devre dışı bırakır.
/Konuş = Konuşmayı açar.
/Görev ekle = Görev eklemenizi sağlar. Başlık (zorunlu), açıklama (isteğe bağlı).
/Görev çıkart = Görev çıkartmanızı sağlar. Aradığınız başlık bulunamazsa uyarır.
/Görevleri say = Kayıtlı görevlerinizi söyler.
Görev hatırlatıcısı = Görevinizi istediğiniz zaman hatırlatır.
Görev düzenleme = Adını söylediğiniz görevi düzenlemenizi sağlar
/Sıfırla = Görev listesini sıfırlar sistemde hata oluşursa düzeltmede yararlıdır
NOT: Başdaki \"/\" işaretini koymayınız
        """.strip()
          )

# Kodu exe dosyası olarak çıkarttığımda kodun açıldığı bir konsol olacak o yüzden bu satırı ekledim ayrıca görev hatırlatıcısı daha tam bitmedi
say("Bu pencere Görev hatırlatıcılarının çalışması için gereklidir kapatmak yerine alta alın")
say("Komutları öğrenmek için yardım yazın")

while True:
    operation = input("İşleminiz:")
    operation = correction(operation)
    say(f"komutunuz: {operation}")
    if operation in operations:
        say("Başarılı!")
        exec(f"{operation}()")
    else:
        say("Başarısız(komut bulunamadı)")
 
Son düzenleyen: Moderatör:
Çözüm
Sanırım birkaç çözüm yolu mevcut. playsound kütüphanesinin versiyonunu indirgemek bunlardan bir tanesi. Diğeri de playsound.playsound() komutuna absolute path (tam dosya yolu) vermek.

Potansiyel çözüm yolu 1:
- Komut satırına aşağıdaki kodu yazın. (venv kullanıyorsanız termialde aktif olduğuna emin olun.)​
Bash:
pip install playsound==1.2.2
Potansiyel çözüm yolu 2:
- say() fonksiyonunu aşağıdaki gibi değiştirin.​
Python:
def say(what):
    global speak
    print(what)
    if speak:
        talk = gtts.gTTS(str(what), lang="tr", slow=False)
        talk.save("saying.mp3")
        time.sleep(0.5)
        sound_path = os.path.join(os.getcwd(), "saying.mp3")
        playsound.playsound(sound_path)
        os.remove("saying.mp3")

Bunlar işe yaramazsa lütfen saying.mp3 adlı dosyanın bozuk olup olmadığını kontrol edin.

Edit: Aşağıya kaynakları bırakayım.

Sanırım birkaç çözüm yolu mevcut. playsound kütüphanesinin versiyonunu indirgemek bunlardan bir tanesi. Diğeri de playsound.playsound() komutuna absolute path (tam dosya yolu) vermek.

Potansiyel çözüm yolu 1:
- Komut satırına aşağıdaki kodu yazın. (venv kullanıyorsanız termialde aktif olduğuna emin olun.)​
Bash:
pip install playsound==1.2.2
Potansiyel çözüm yolu 2:
- say() fonksiyonunu aşağıdaki gibi değiştirin.​
Python:
def say(what):
    global speak
    print(what)
    if speak:
        talk = gtts.gTTS(str(what), lang="tr", slow=False)
        talk.save("saying.mp3")
        time.sleep(0.5)
        sound_path = os.path.join(os.getcwd(), "saying.mp3")
        playsound.playsound(sound_path)
        os.remove("saying.mp3")

Bunlar işe yaramazsa lütfen saying.mp3 adlı dosyanın bozuk olup olmadığını kontrol edin.

Edit: Aşağıya kaynakları bırakayım.

 
Çözüm

Geri
Yukarı