def _CreateAudioDB(self): try: self._Connect() cursor = self.db.cursor() sqlQuery = "CREATE TABLE IF NOT EXISTS audios (audioTitle, audioID, audioFile, audioDownloadCount)" cursor.execute(sqlQuery) ColoredPrint.GreenPrint("Ses veri tabanı oluşturuldu.") except: self.logManager.AddLog( "Ses veri tabanı oluşturulurken bir hata meydana geldi!") ColoredPrint.RedPrint( "Ses veri tabanı oluşturulurken bir hata meydana geldi!") finally: self.db.close()
def _CreateUserDB(self): try: self._Connect() cursor = self.db.cursor() sqlQuery = "CREATE TABLE IF NOT EXISTS users (userID, userName, userVideoDownloadCount, userAudioDownloadCount, userSearchCount)" cursor.execute(sqlQuery) ColoredPrint.GreenPrint("Kullanıcı veri tabanı oluşturuldu.") except: self.logManager.AddLog( "Kullanıcı veri tabanı oluşturulurken bir hata meydana geldi!") ColoredPrint.RedPrint( "Kullanıcı veri tabanı oluşturulurken bir hata meydana geldi!") finally: self.db.close()
def _CreateBotStatsDB(self): try: self._Connect() cursor = self.db.cursor() sqlQuery = "CREATE TABLE IF NOT EXISTS stats (botID, audioDownloadCount, videoDownloadCount, searchCount, userCount)" cursor.execute(sqlQuery) ColoredPrint.GreenPrint("İstatistik veri tabanı oluşturuldu.") except: self.logManager.AddLog( "İstatistik veri tabanı oluşturulurken bir hata meydana geldi!" ) ColoredPrint.RedPrint( "İstatistik veri tabanı oluşturulurken bir hata meydana geldi!" ) finally: self.db.close()
def AddLog(self, errorText): _nowTime = datetime.now() _nowTime = datetime.strftime(_nowTime, "%c") logFile = open(os.getcwd() + "/logs/" + self._logFileName + ".txt", "a") try: with logFile as f: f.write(f"\nDate : {_nowTime}\nError: {errorText}\n") ColoredPrint.RedPrint(f'Date : {_nowTime}\nError: {errorText}\n') except: ColoredPrint.RedPrint( "Log oluşturulurken bir sorun meydana geldi!") finally: logFile.close() #endregion
def AddBot(self, botID=1): try: self._Connect() cursor = self.db.cursor() sqlQuery = "INSERT INTO stats (botID, audioDownloadCount, videoDownloadCount, searchCount, userCount) VALUES (?,?,?,?,?)" sqlValues = (botID, 0, 0, 0, 0) cursor.execute(sqlQuery, sqlValues) self.db.commit() ColoredPrint.GreenPrint(f"Bot eklendi. \nBot ID : {botID}") except: self.logManager.AddLog( f"Veri tabanına bot eklenirken bir hata meydana geldi! \nBot ID : {botID}" ) ColoredPrint.RedPrint( f"Veri tabanına bot eklenirken bir hata meydana geldi! \nBot ID : {botID}" ) finally: self.db.close()
def AddVideo(self, videoTitle, videoID, videoFile): try: self._Connect() cursor = self.db.cursor() sqlQuery = "INSERT INTO videos (videoTitle, videoID, videoFile, videoDownloadCount) VALUES (?,?,?,?)" sqlValues = (videoTitle, videoID, videoFile, 1) cursor.execute(sqlQuery, sqlValues) self.db.commit() ColoredPrint.GreenPrint( f"Video eklendi. \nVideo Başlığı : {videoTitle} \nVideo ID : {videoID}" ) except: self.logManager.AddLog( f"Veri tabanına video eklenirken bir hata meydana geldi! \nVideo Title : {videoTitle} \nVideo ID : {videoID}\nVideo File : {videoFile}" ) ColoredPrint.RedPrint( f"Veri tabanına video eklenirken bir hata meydana geldi! \nVideo Title : {videoTitle} \nVideo ID : {videoID}\nVideo File : {videoFile}" ) finally: self.db.close()
def AddUser(self, userID, userName): try: self._Connect() cursor = self.db.cursor() sqlQuery = "INSERT INTO users (userID, userName, userVideoDownloadCount, userAudioDownloadCount, userSearchCount) VALUES (?,?,?,?,?)" sqlValues = (userID, userName, 0, 0, 0) cursor.execute(sqlQuery, sqlValues) self.db.commit() ColoredPrint.GreenPrint( f"Kullanıcı eklendi. \nKullanıcı adı : {userName}\nKullanıcı ID : {userID}" ) except: self.logManager.AddLog( f"Veri tabanına kullanıcı eklenirken bir hata meydana geldi! \nKullanıcı ID : {userID}\nKullanıcı adı : {userName}" ) ColoredPrint.RedPrint( f"Veri tabanına kullanıcı eklenirken bir hata meydana geldi! \nKullanıcı ID : {userID}\nKullanıcı adı : {userName}" ) finally: self.db.close()
def AddAudio(self, audioTitle, audioID, audioFile): try: self._Connect() cursor = self.db.cursor() sqlQuery = "INSERT INTO audios (audioTitle, audioID, audioFile, audioDownloadCount) VALUES (?,?,?,?)" sqlValues = (audioTitle, audioID, audioFile, 1) cursor.execute(sqlQuery, sqlValues) self.db.commit() ColoredPrint.GreenPrint( f"Ses eklendi. \nSes Başlığı : {audioTitle} \nSes ID : {audioID}" ) except: self.logManager.AddLog( f"Veri tabanına ses eklenirken bir hata meydana geldi! \nAudio Title : {audioTitle} \nAudio ID : {audioID}\nAudio File : {audioFile}" ) ColoredPrint.RedPrint( f"Veri tabanına ses eklenirken bir hata meydana geldi! \nAudio Title : {audioTitle} \nAudio ID : {audioID}\nAudio File : {audioFile}" ) finally: self.db.close()
def SearchVideo(self, searchQuery): try: search = Search(searchQuery) return search.results except: self.logManager.AddLog( f"Video aranırken bir sorun meydana geldi! \nArama sorgusu : {searchQuery}" ) ColoredPrint.RedPrint( f"Video aranırken bir sorun meydana geldi! \nArama sorgusu : {searchQuery}" )
def BotDataGet(self, botID=1): try: self._Connect() cursor = self.db.cursor() sqlQuery = "SELECT * FROM stats WHERE botID = %s" % botID datas = cursor.execute(sqlQuery).fetchone() return datas except: self.logManager.AddLog( f"Veri tabanından bot verileri çekilirken bir sorun meydana geldi! \nBot ID : {botID}" ) ColoredPrint.RedPrint( f"Veri tabanından bot verileri çekilirken bir sorun meydana geldi! \nBot ID : {botID}" ) finally: self.db.close()
def BotUserCountUpdate(self, botID=1): try: self._Connect() cursor = self.db.cursor() sqlQuery = "UPDATE stats SET userCount = userCount + 1 WHERE botID = %s" % botID cursor.execute(sqlQuery) self.db.commit() except: self.logManager.AddLog( f"Veri tabanında kullanıcı sayısı arttırılırken bir sorun meydana geldi! \nBot ID : {botID} " ) ColoredPrint.RedPrint( f"Veri tabanında kullanıcı sayısı arttırılırken bir sorun meydana geldi! \nBot ID : {botID} " ) finally: self.db.close()
def UserSearchCountUpdate(self, userID): try: self._Connect() cursor = self.db.cursor() sqlQuery = " UPDATE users SET userSearchCount = userSearchCount + 1 WHERE userID = %s" % userID cursor.execute(sqlQuery) self.db.commit() return True except: self.logManager.AddLog( f"Veri tabanında kullanıcı arama sayısı arttırılırken bir sorun meydana geldi! \nUser ID : {userID}" ) ColoredPrint.RedPrint( f"Veri tabanında kullanıcı arama sayısı arttırılırken bir sorun meydana geldi! \nUser ID : {userID}" ) return False finally: self.db.close()
def VideoDownloadCountUpdate(self, videoID): try: self._Connect() cursor = self.db.cursor() sqlQuery = " UPDATE videos SET videoDownloadCount = videoDownloadCount + 1 WHERE videoID = '%s'" % videoID cursor.execute(sqlQuery) self.db.commit() return True except: self.logManager.AddLog( f"Veri tabanında video indirme sayısı arttırılırken bir sorun meydana geldi! \nVideo ID : {videoID}" ) ColoredPrint.RedPrint( f"Veri tabanında video indirme sayısı arttırılırken bir sorun meydana geldi! \nVideo ID : {videoID}" ) return False finally: self.db.close()
def DownloadVideo(self, videoURL): try: youtube = YouTube(f"https://www.youtube.com/watch?v={videoURL}") videoTitle = youtube.title fileName = self.FileNameFormatter(videoTitle) + ".mp4" if self.FileCheck(DownloadSettings.videoFolder + "/" + fileName) == False: youtube.streams.get_highest_resolution().download( output_path=DownloadSettings.videoFolder, filename=fileName) return videoTitle, videoURL, DownloadSettings.videoFolder + "/" + fileName except: self.logManager.AddLog( f"Video indirilirken bir sorun meydana geldi! \nVideo bağlantısı : {videoURL}" ) ColoredPrint.RedPrint( f"Video indirilirken bir sorun meydana geldi! \nVideo bağlantısı : {videoURL}" ) return False
def CheckAudioWithAudioID(self, audioID): try: self._Connect() cursor = self.db.cursor() sqlQuery = "SELECT * FROM audios WHERE audioID = '%s'" % audioID check = cursor.execute(sqlQuery).fetchall() if len(check) > 0: return True else: return False except: self.logManager.AddLog( f"Veri tabanında ses doğrulanırken bir sorun meydana geldi! \nAudio ID : {audioID}" ) ColoredPrint.RedPrint( f"Veri tabanında ses doğrulanırken bir sorun meydana geldi! \nAudio ID : {audioID}" ) return False finally: self.db.close()
def CheckUserWithID(self, userID): try: self._Connect() cursor = self.db.cursor() sqlQuery = "SELECT * FROM users WHERE userID = %s" % userID check = cursor.execute(sqlQuery).fetchall() if len(check) > 0: return True else: return False except: self.logManager.AddLog( f"Veri tabanında kullanıcı doğrulanırken bir sorun meydana geldi! \nUser ID : {userID}" ) ColoredPrint.RedPrint( f"Veri tabanında kullanıcı doğrulanırken bir sorun meydana geldi! \nUser ID : {userID}" ) return False finally: self.db.close()
def CheckBotStatsWithID(self, botID=1): try: self._Connect() cursor = self.db.cursor() sqlQuery = "SELECT * FROM stats WHERE botID = %s" % botID check = cursor.execute(sqlQuery).fetchall() if len(check) > 0: return True else: return False except: self.logManager.AddLog( f"Veri tabanında bot doğrulanırken bir sorun meydana geldi! \nBot ID : {botID}" ) ColoredPrint.RedPrint( f"Veri tabanında bot doğrulanırken bir sorun meydana geldi! \nBot ID : {botID}" ) return False finally: self.db.close()
def DownloadAudio(self, songURL): try: youtube = YouTube(f"https://www.youtube.com/watch?v={songURL}") songTitle = youtube.title fileName = self.FileNameFormatter(songTitle) + ".mp4" if self.FileCheck(DownloadSettings.musicFolder + "/" + fileName) == False: youtube.streams.get_audio_only().download( output_path=DownloadSettings.musicFolder, filename=fileName) return songTitle, songURL, DownloadSettings.musicFolder + "/" + fileName except: self.logManager.AddLog( f"Ses indirilirken bir sorun meydana geldi! \nSes bağlantısı : {songURL}" ) ColoredPrint.RedPrint( f"Ses indirilirken bir sorun meydana geldi! \nSes bağlantısı : {songURL}" ) return False #endregion
def SendMail(self, subject, content, toMail): try: message = MIMEMultipart("alternative") message["Subject"] = subject message["From"] = self.fromMail message["To"] = toMail _content = MIMEText(content.encode('utf-8'), _charset='utf-8') message.attach(_content) with smtplib.SMTP_SSL(self.smtpHost, self.smtpPort) as server: server.login(self.fromMail, self.fromPassword) server.sendmail(self.fromMail, toMail, message.as_string()) except Exception as e: self.logManager.AddLog( f"Mail gönderilemedi!\nHata Kodu: {e}\nMail başlığı : {subject} \nMail içeriği : {content} \nAlıcı : {toMail}" ) ColoredPrint.RedPrint( f"Mail gönderilemedi!\nHata Kodu: {e}\nMail başlığı : {subject} \nMail içeriği : {content} \nAlıcı : {toMail}" ) #endregion
#endregion #region Main def main(): updater = Updater(TelegramSettings.telegramAPI, use_context=True) dp = updater.dispatcher dp.add_handler(CommandHandler("start", StartCommand)) dp.add_handler(CommandHandler("legal", LegalInfoCommand)) dp.add_handler(CommandHandler("help", HelpCommand)) dp.add_handler(CommandHandler("stats", StatsCommand)) dp.add_handler(CommandHandler("urhoba", UrhobACommand)) dp.add_handler(CommandHandler("search", SearchCommand)) dp.add_handler(MessageHandler(Filters.text & ~Filters.command, Search)) dp.add_handler(CallbackQueryHandler(ButtonCallBack)) dp.add_error_handler(ErrorExcept) updater.start_polling(1) updater.idle() #endregion ColoredPrint.GreenPrint("Bot başlatıldı!") main()
def _Connect(self): self.db = sqlite3.connect(DBSettings.sqliteDB) ColoredPrint.GreenPrint("Veri tabanına bağlanıldı.")