Hocam evet mantıklı bir şey söylüyorsunuz ama chatgpt'nin internet erişimi yok bildiğim kadarıyla o yüzden bir url verip oradan mesajları oku demek çok mümkün olacak bir durum değil.
kod bu şekilde tam olarak.
from math import exp
import os # dosya okuma için içeri alınan kütüphane
import sys
import datetime # tarih işlemleri için içeri alınan kütüphane
from imap_tools import MailBox, AND # mail okumak için kütüphane
import smtplib # mail göndermek için kütüphane
from email.mime.multipart import MIMEMultipart # mail göndermek için kütüphane eki
from email.mime.text import MIMEText # mail göndermek için kütüphane eki
from pydub import AudioSegment # mp3 düzenleme için oluşturulan kütüphane
import speech_recognition as sr # sesi yazıya döken kütüphane. Kurulumu: pip install SpeechRecognition
r = sr.Recognizer() # ses to text kütüphanesi fonksiyonu
from pathlib import Path # dosya yolu okumakla ilgili kütüphane
import json # json kütüphanesi
import time # zaman kütüphanesi
from tkinter import * # tasarim kütüphanesi
from tkinter import ttk
def sabitlerNewWindow():[email protected]
def sabitlerDataSaveBtn():
with open('dosyayolu/sabitler.json') as f:
sabitlerOku = json.load(f)
sabitlerJson['aliciMail'] = aliciMail.get()
sabitlerJson['inenDosyalar'] = inenDosyalar.get()
sabitlerJson['yazilacakDosya'] = yazilacakDosya.get()
sabitlerJson['istenenDBFS'] = istenenDBFS.get()
with open('dosyayolusabitler.json', 'w') as j:
json.dump(sabitlerJson, j)
LABEL = Label(sabitlerNW, text='İşlem başarılı.').grid(row=6,column=1)
with open('dosyayolusabitler.json') as f:
sabitlerJson = json.load(f)
sabitlerNW = Toplevel()
sabitlerNW.geometry('500x170')
sabitlerNW.title('Sabitler')
aliciMail = Label(sabitlerNW, text="Alıcı E-Mailler")
aliciMail.grid(sticky="W", row=1,column=0)
aliciMail = Label(sabitlerNW, text="(Virgül ile ayırınız)")
aliciMail.grid(sticky="W", row=1,column=3)
aliciMail = Entry(sabitlerNW,width=35)
aliciMail.insert(END, sabitlerJson['aliciMail'])
aliciMail.grid(row=1,column=1)
inenDosyalar = Label(sabitlerNW, text="İnecek Dosya Yolu")
inenDosyalar.grid(sticky="W", row=2,column=0)
inenDosyalar = Entry(sabitlerNW,width=35)
inenDosyalar.insert(END, sabitlerJson['inenDosyalar'])
inenDosyalar.grid(row=2,column=1)
yazilacakDosya = Label(sabitlerNW, text="Yazılacak Dosya Yolu")
yazilacakDosya.grid(sticky="W", row=3,column=0)
yazilacakDosya = Entry(sabitlerNW,width=35)
yazilacakDosya.insert(END, sabitlerJson['yazilacakDosya'])
yazilacakDosya.grid(row=3,column=1)
istenenDBFS = Label(sabitlerNW, text="İstenilen DB")
istenenDBFS.grid(sticky="W", row=4,column=0)
istenenDBFS = Entry(sabitlerNW,width=35)
istenenDBFS.insert(END, sabitlerJson['istenenDBFS'])
istenenDBFS.grid(row=4,column=1)
kayitButton = Button(sabitlerNW, text='Kaydet', width=30, height=2, command=sabitlerDataSaveBtn)
kayitButton.grid(pady=10, row=5,column=1)
#▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼#
#▼▼▼▼▼▼▼ Ayarlar -> Email Menüsü ▼▼▼▼▼▼▼▼#
#▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼#
def emailNewWindow():
def emailDataSaveBtn():
with open('dosyayolusabitler.json') as f:
sabitlerOku = json.load(f)
sabitlerJson['emailKullanici'] = emailEntry.get()
sabitlerJson['emailSifre'] = sifreEntry.get()
sabitlerJson['kontrolEdilecekEmail'] = kontrolEdilecekEmailEntry.get()
sabitlerJson['islemSonuEmail'] = islemSonuEmail.get()
with open('dosyayolusabitler.json', 'w') as j:
json.dump(sabitlerJson, j)
LABEL = Label(emailNW, text='İşlem başarılı.').grid(row=8,column=1)
with open('dosyayolusabitler.json') as f:
sabitlerJson = json.load(f)
emailNW = Toplevel()
emailNW.geometry('450x225')
emailNW.title('E-mail Ayar Sayfası')
emailLabel = Label(emailNW, text="Ulaşılacak E-Mail")
emailLabel.grid(sticky="W", row=1,column=0)
emailEntry = Entry(emailNW,width=50)
emailEntry.insert(END, sabitlerJson['emailKullanici'])
emailEntry.grid(row=1,column=1, columnspan=2)
sifreLabel = Label(emailNW, text="Şifre")
sifreLabel.grid(sticky="W", row=2,column=0)
sifreEntry = Entry(emailNW,width=50)
sifreEntry.insert(END, sabitlerJson['emailSifre'])
sifreEntry.grid(row=2,column=1, columnspan=2)
ttk.Separator(emailNW, orient=HORIZONTAL).grid(row=3, columnspan=4, sticky='ew', pady=10)
kontrolEdilecekEmailLabel = Label(emailNW, text="Kontrol Edilecek Email")
kontrolEdilecekEmailLabel.grid(sticky="W", row=4,column=0)
kontrolEdilecekEmailEntry = Entry(emailNW,width=50)
kontrolEdilecekEmailEntry.insert(END, sabitlerJson['kontrolEdilecekEmail'])
kontrolEdilecekEmailEntry.grid(row=4,column=1, columnspan=2)
ttk.Separator(emailNW, orient=HORIZONTAL).grid(row=5, columnspan=4, sticky='ew', pady=10)
islemSonucuEmailLabel = Label(emailNW, text="İşlem Sonu Email")
islemSonucuEmailLabel.grid(sticky="W", row=6,column=0)
islemSonuEmail = IntVar()
R1 = Radiobutton(emailNW, text="Göndersin", variable=islemSonuEmail, value=True)
R1.config(indicatoron=0, bd=4, width=12)
R1.grid(row=6,column=1,sticky="w")
R2 = Radiobutton(emailNW, text="Göndermesin", variable=islemSonuEmail, value=False)
R2.config(indicatoron=0, bd=4, width=12)
R2.grid(row=6,column=2,sticky="w")
if(sabitlerJson['islemSonuEmail']==1):
R1.select()
else:
R2.select()
kayitButton = Button(emailNW, text='Kaydet', width=25, height=2, command=emailDataSaveBtn)
kayitButton.grid(pady=10, row=7,column=1)
#▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼#
#▼▼▼▼▼▼▼ Ayarlar -> Email Menüsü ▼▼▼▼▼▼▼▼#
#▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼#
#▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼#
#▼▼▼▼▼▼▼ İşlem Yap Btn ▼▼▼▼▼▼▼▼#
#▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼#
def islemYap():
reklamSorgu()
#▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼#
#▼▼▼▼▼▼▼ İşlem Yap Btn ▼▼▼▼▼▼▼▼#
#▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼#
#▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼#
#▼▼▼▼▼▼▼ TKinter (Tasarim) ▼▼▼▼▼▼▼▼#
#▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼#
ROOT = Tk()
ROOT.title('Reklam Oto Alım Programı')
ROOT.geometry("500x500")
ROOT.wm_iconbitmap("dosyayoluicon.ico")
BUTTON = Button(ROOT, text='Manuel Çek', width=30, height=2, command=islemYap, bg='green', fg='white')
BUTTON.place(anchor='n')
BUTTON.pack(pady=5)
LABEL = Label(ROOT, text='Program her dakika başı kontrol edecek.', font=(None,10), bg='red', fg='white', height=2, width=700)
LABEL.pack()
menubar = Menu(ROOT)
filemenu = Menu(menubar, tearoff=0)
filemenu.add_command(label="Sabitler", command=sabitlerNewWindow)
filemenu.add_command(label="E-Mail", command=emailNewWindow)
filemenu.add_separator()
filemenu.add_command(label="Exit", command=ROOT.destroy)
menubar.add_cascade(label="Menü", menu=filemenu)
editmenu = Menu(menubar, tearoff=0)
ROOT.config(menu=menubar)
main_frame = Frame(ROOT)
main_frame.pack(fill=BOTH, expand=1)
my_canvas = Canvas(main_frame)
my_canvas.pack(side=LEFT, fill=BOTH, expand=1)
my_scrollbar = ttk.Scrollbar(main_frame, orient=VERTICAL, command=my_canvas.yview)
my_scrollbar.pack(side=RIGHT, fill=Y)
my_canvas.configure(yscrollcommand=my_scrollbar.set)
my_canvas.bind('<Configure>', lambda e: my_canvas.configure(scrollregion=my_canvas.bbox("all")))
second_frame = Frame(my_canvas)
my_canvas.create_window((0,0), window=second_frame, anchor="nw")
#▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼#
#▼▼▼▼▼▼▼ TKinter (Tasarim) ▼▼▼▼▼▼▼▼#
#▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼#
#▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼#
#▼▼▼▼▼▼▼▼▼▼▼▼▼▼ SAAT ▼▼▼▼▼▼▼▼▼▼▼▼▼▼#
#▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼#
LABEL = Label(ROOT, font=("Boulder", 68, 'bold'), bg="#f2e750", fg="#363529", bd=25)
LABEL.pack()
def digital_clock():
time_live = time.strftime("%H:%M:%S")
LABEL.config(text=time_live)
LABEL.after(200, digital_clock)
digital_clock()
#▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼#
#▼▼▼▼▼▼▼▼▼▼▼▼▼▼ SAAT ▼▼▼▼▼▼▼▼▼▼▼▼▼▼#
#▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼#
#▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼#
#▼▼▼▼▼▼▼ Reklam Kontrol Fonksiyonu ▼▼▼▼▼▼▼▼#
#▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼#
def isimDegistir(data):
data = data.split('.')
data1 = data[0].split('-')
if(len(data1)>1):
return data1[1]
else:
return data1[0]
def reklamSorgu():
with open('dosyayolusabitler.json') as f:
sabitlerJson = json.load(f)
#▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼#
#▼▼▼▼▼▼▼ SABİT VERİLER ▼▼▼▼▼▼▼▼#
#▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼#
emailKullanici = str(sabitlerJson['emailKullanici']) # mail
emailSifre = str(sabitlerJson['emailSifre']) # şifre
aliciMail = str(sabitlerJson['aliciMail']) #mailin gönderileceği emailler
inenDosyalar = str(sabitlerJson['inenDosyalar']) # mailden inen dosyanın tutulduğu klasör
yazilacakDosya = str(sabitlerJson['yazilacakDosya']) # dosya yolu belirlendi.
istenenDBFS = int(sabitlerJson['istenenDBFS']) # ses seviyesinin getirilmesini istediğimiz ses seviyesi.
suffixes = (".mp3, wav, .MP3, .WAV")
mp3CiktiText = ""
liste = [] # boş liste oluşturuldu
#▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼#
#▼ MAİLİ OKU VE DOSYAYI İNDİR ▼#
#▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼#
#print('E-Mail e bağlanılıyor.')
posta_kutusu = MailBox('imap.gmail.com') #bağlanacağı yer
posta_kutusu.login(emailKullanici, emailSifre, initial_folder="INBOX") # login işlemi "initial_folder işlemi ana dizini okuması için"
#LABEL = Label(second_frame, text=str(time.strftime('%H:%M:%S'))+' E-Mail e bağlanıldı.', anchor="w")
#LABEL.pack(side=BOTTOM, fill='both')
#print(time.strftime('%H:%M:%S')+' E-Mail e bağlanıldı.')
# from_ şeklinde tanımlama yaparak sadece tek mail den gelen mailleri okutabiliyoruz.
# date_gte şu tarihten sonraki mailleri al ya da benzeri işlemler için
# seen True ve ya False denirse mail okunmuş ya da okunmamış filtrelemesi için.
kriter = AND(date_gte=datetime.date(2021,12,5), from_="[email protected]", seen=False) # filtreleme kriterlerini işliyorsun
postaKutusuVeri = posta_kutusu.fetch(kriter)
for mailVeri in postaKutusuVeri: # mesajlari for döngüsüne sokuyorsun
LABEL = Label(second_frame, text=time.strftime('%H:%M:%S')+' Yeni Email Tespit Edildi: ' + str(mailVeri.subject), anchor="w")
LABEL.pack(side=BOTTOM, fill='both')
#print(time.strftime('%H:%M:%S')+' Yeni Email Tespit Edildi: ' + str(mailVeri.subject))
mailText = mailVeri.text
for att in mailVeri.attachments: # dosya eki olan mailleri alıyor
with open(inenDosyalar+'{}'.format(att.filename), 'wb') as f:
f.write(att.payload)
#▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼#
#▼▼▼▼▼ DOSYA OKUMA İŞLEMİ ▼▼▼▼▼#
#▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼#
dosyalar = os.listdir(inenDosyalar) # dosyayi okuma fonksiyonu
for dosya in dosyalar: # for döngüsüne sokuldu
if dosya.endswith(tuple(suffixes)): # .mp3 olanlar seçildi.
dosya = dosya.split('.')
liste.append(dosya) # liste adındaki boş listeye eklendi.
#▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼#
#▼▼▼▼ MP3 DÜZENLEME İŞLEMİ ▼▼▼▼#
#▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼#
for mp3Isim in liste: # for döngüsü açıldı
mp3 = str(mp3Isim[0]) # for'un içindekinin biçimi belirlendi.
inenDosyalarBul = inenDosyalar + str(mp3Isim[0])+'.'+str(mp3Isim[1])
song = AudioSegment.from_file(inenDosyalarBul, format=mp3Isim[1]) # fonksiyon çalıştırıldı.
orginalDBFS = int(song.dBFS) # orjinal db yi veri
eklenecekDBFS = str(abs(orginalDBFS - istenenDBFS)) # aradaki farkı hesaplar
song = song.apply_gain("+"+eklenecekDBFS) # aradaki farkı sese işler
song.export(yazilacakDosya + isimDegistir(mp3)+'.mp3' , format='mp3', bitrate="320k") # mp3 ve 320k formatında dışarıya aktarır
song.export(yazilacakDosya + mp3+'.wav' , format='wav') # okuma için wav dosyası oluşturuluyor.
######### ses to text #########
file = sr.AudioFile(yazilacakDosya + mp3+'.wav')
with file as source:
r.adjust_for_ambient_noise(source)
audio = r.record(source)
sesToTextSonuc = r.recognize_google(audio,language='tr')
######### ses to text #########
LABEL = Label(second_frame, text=time.strftime('%H:%M:%S')+ ' ' +mp3+' adlı ses dosyasının işlenmesi bitti. ' + str(eklenecekDBFS) + ' db ekleme yapıldı.', anchor="w")
LABEL.pack(side=BOTTOM, fill='both')
#print(time.strftime('%H:%M:%S')+ ' ' +mp3+' adlı ses dosyasının işlenmesi bitti. ' + str(eklenecekDBFS) + ' db ekleme yapıldı.' )
#os.remove(inenDosyalarBul) # mailden gelen ses dosyası silindi.
os.remove(yazilacakDosya + mp3+'.wav') # mailden gelen ses dosyası silindi.
mp3CiktiText = mp3CiktiText + "<strong>" + mp3 + "</strong>" + str(" 'ün süresi => ") + str(song.duration_seconds) + "<strong>" + " | Metnin İçeriği: </strong>"+ sesToTextSonuc +"<br><br>"
#▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼#
#▼▼▼▼▼▼▼▼ MAİL GÖNDERM ▼▼▼▼▼▼▼▼#
#▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼#
try:
if(sabitlerJson['islemSonuEmail']==1):
mailIcerik = "--------SİSTEMDEN GELEN VERİ----------- <br>" + str(mp3CiktiText) + "<br> --------ORJİNAL MAİL İÇERİĞİ----------- <br>" + str(mailText) #mail içeriği
mail = smtplib.SMTP("smtp.gmail.com",587) #mail bağlantısı
mail.ehlo()
mail.starttls()
mail.login(emailKullanici, emailSifre) # gmail kullanıcı adımı ve şifremi giriyorum.
mesaj = MIMEMultipart()
mesaj["From"] = emailKullanici # Gönderen kişi
mesaj["To"] = aliciMail # Alıcı
mesaj["Subject"] = str(mailVeri.subject) + ' İşlem yapıldı' # Konu
body_text = MIMEText(mailIcerik, "html")
mesaj.attach(body_text)
mail.sendmail( mesaj["From"], mesaj["To"], mesaj.as_string())
mail.close()
LABEL = Label(second_frame, text=time.strftime('%H:%M:%S')+ ' ' + str(mesaj["Subject"]) + str(' <- adli mail gönderildi.'), anchor="w")
LABEL.pack(side=BOTTOM, fill='both')
#print(time.strftime('%H:%M:%S')+ ' ' + str(mesaj["Subject"]) + str(' <- adli mail gönderildi.'))
except:
LABEL = Label(second_frame, text=time.strftime('%H:%M:%S') + " Hata:" + sys.exc_info()[0], anchor="w")
LABEL.pack(side=BOTTOM, fill='both')
#print(time.strftime('%H:%M:%S') + " Hata:", sys.exc_info()[0])
else:
LABEL = Label(second_frame, text=time.strftime('%H:%M:%S')+' Yeni E-Mail Bulunamadı.', anchor="w")
LABEL.pack(side=BOTTOM, fill='both')
#print(time.strftime('%H:%M:%S')+' Yeni E-Mail Bulunamadı.')
#▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼#
#▼▼▼▼▼▼▼ Reklam Kontrol Fonksiyonu ▼▼▼▼▼▼▼▼#
#▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼#
while True:
zaman = time.gmtime()
ROOT.update()
if zaman.tm_sec == 00:
reklamSorgu()
kodu aldığımda command kısmında hata veriyor o bir değişken olması gerekli galiba.
python da yeni olduğum için anlamaıdm o kısımı tam olarak bir de bu kodu kendi kodumun içerisine mi eklemem gerekli acaba?
Sağolasın @tayfunerbilen hocam cevap vermişsin yeni gördüm :)
Sonradna sunucu firmam sağolsun hatamı buldu.
Ben HTTP'den HTTPS'ye istek attığım için cevap alamıyormuşum. Sonrasında HTTPS yapınca iki tarafı da sorun çözdüldü.
<?php
SELECT
k.*,
m.*,
c.*,
(SELECT SUM(miktar) AS c_miktar FROM cari WHERE k.kod = c.takip_kodu) AS c_miktar,
(k.alinacak - (SELECT SUM(miktar) AS c_miktar FROM cari WHERE k.kod = c.takip_kodu)) AS kalan,
k.id AS k_id,
m.id AS m_id,
c.id AS c_id
FROM kayitlar AS k
INNER JOIN musteriler AS m ON k.musteri = m.id
LEFT JOIN cari AS c ON k.kod = c.takip_kodu
GROUP BY k.kod
?>
Çözümü bu şekilde buldum arkadaşlar ihtiyacı olan olur diye buraya bırakıyorum.
mrknowitall ekledim hocam tüm kodları
crazzyman bu da olmadı ağa :S
mrknowitall dediğinizi yaptım fakat bir işe yaramadı maalesef. :(