From 6cd4ef56d86f6dc347f8131b8247e4d4b55247aa Mon Sep 17 00:00:00 2001 From: Ilya <107418613+polonskyilya@users.noreply.github.com> Date: Fri, 21 Oct 2022 10:38:39 +0300 Subject: [PATCH 01/64] Create test.txt --- test.txt | 1 + 1 file changed, 1 insertion(+) create mode 100644 test.txt diff --git a/test.txt b/test.txt new file mode 100644 index 0000000..9daeafb --- /dev/null +++ b/test.txt @@ -0,0 +1 @@ +test From b6402dd3a7fc8b72fba49e56613e1146702f4fe5 Mon Sep 17 00:00:00 2001 From: Ilya <107418613+polonskyilya@users.noreply.github.com> Date: Fri, 21 Oct 2022 11:20:09 +0300 Subject: [PATCH 02/64] Delete test.txt --- test.txt | 1 - 1 file changed, 1 deletion(-) delete mode 100644 test.txt diff --git a/test.txt b/test.txt deleted file mode 100644 index 9daeafb..0000000 --- a/test.txt +++ /dev/null @@ -1 +0,0 @@ -test From 81a4829c1981d70d538e5a009bc228e939832737 Mon Sep 17 00:00:00 2001 From: root Date: Fri, 21 Oct 2022 09:38:36 +0000 Subject: [PATCH 03/64] testfile --- test_ilya.txt | 1 + 1 file changed, 1 insertion(+) create mode 100644 test_ilya.txt diff --git a/test_ilya.txt b/test_ilya.txt new file mode 100644 index 0000000..089af3c --- /dev/null +++ b/test_ilya.txt @@ -0,0 +1 @@ +ec2-user From 19fcb6827e73057130a29a06ee12dba89722f38f Mon Sep 17 00:00:00 2001 From: Ilya <107418613+polonskyilya@users.noreply.github.com> Date: Fri, 21 Oct 2022 12:41:39 +0300 Subject: [PATCH 04/64] Delete test_ilya.txt Delete testilya --- test_ilya.txt | 1 - 1 file changed, 1 deletion(-) delete mode 100644 test_ilya.txt diff --git a/test_ilya.txt b/test_ilya.txt deleted file mode 100644 index 089af3c..0000000 --- a/test_ilya.txt +++ /dev/null @@ -1 +0,0 @@ -ec2-user From d3cf5d25faa391b29e5b20377c8b0d70c1b22bda Mon Sep 17 00:00:00 2001 From: Ilya <107418613+polonskyilya@users.noreply.github.com> Date: Fri, 21 Oct 2022 12:56:17 +0300 Subject: [PATCH 05/64] Add files via upload --- Docker-compose.yaml | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 Docker-compose.yaml diff --git a/Docker-compose.yaml b/Docker-compose.yaml new file mode 100644 index 0000000..42e9336 --- /dev/null +++ b/Docker-compose.yaml @@ -0,0 +1,34 @@ +version: "3.7" +services: + app: + env_file: + - .env + container_name: ilyaapp55 + image: ilyaapp:007 + build: + context: . + dockerfile: Dockerfile + networks: + bond: + aliases: + - ilyaapp + ipv4_address: 192.168.20.100 + depends_on: + - db-node + db-node: + container_name: db-node65 + image: mysql:latest + restart: always + env_file: + - .env + networks: + bond: + aliases: + - mysql + ipv4_address: 192.168.20.200 +networks: + bond: + driver: bridge + external: true +#sudo docker network create bond --driver=bridge --subnet=192.0.0.0/8 +#https://onexlab-io.medium.com/docker-compose-mysql-initdb-4c3388047dea \ No newline at end of file From 90f7a70003396d4f988ec06ba799ac36d16b15b2 Mon Sep 17 00:00:00 2001 From: polonskyilya Date: Fri, 21 Oct 2022 13:13:13 +0300 Subject: [PATCH 06/64] test 123 --- 123.txt | 1 + 1 file changed, 1 insertion(+) create mode 100644 123.txt diff --git a/123.txt b/123.txt new file mode 100644 index 0000000..b6fc4c6 --- /dev/null +++ b/123.txt @@ -0,0 +1 @@ +hello \ No newline at end of file From 954ed71d9094e56d5da19307bbd41573af7d6794 Mon Sep 17 00:00:00 2001 From: polonskyilya Date: Fri, 21 Oct 2022 13:14:23 +0300 Subject: [PATCH 07/64] 123 deleted --- 123.txt | 1 - 1 file changed, 1 deletion(-) delete mode 100644 123.txt diff --git a/123.txt b/123.txt deleted file mode 100644 index b6fc4c6..0000000 --- a/123.txt +++ /dev/null @@ -1 +0,0 @@ -hello \ No newline at end of file From cd14435b86868148e9918e81aceb0099eb4c45b6 Mon Sep 17 00:00:00 2001 From: Ilya <107418613+polonskyilya@users.noreply.github.com> Date: Fri, 21 Oct 2022 14:59:45 +0300 Subject: [PATCH 08/64] Create deleteASAP.txt DELETEASAP --- deleteASAP.txt | 1 + 1 file changed, 1 insertion(+) create mode 100644 deleteASAP.txt diff --git a/deleteASAP.txt b/deleteASAP.txt new file mode 100644 index 0000000..fa569a6 --- /dev/null +++ b/deleteASAP.txt @@ -0,0 +1 @@ +5683443990:AAHvz0aQwW8ZI92KqIEnxw-6hh2jxy_6MDw From 51d5af3aa2afc225651ba54e1aa0c726cab134f7 Mon Sep 17 00:00:00 2001 From: root Date: Fri, 21 Oct 2022 12:11:18 +0000 Subject: [PATCH 09/64] deleted file --- deleteASAP.txt | 1 - 1 file changed, 1 deletion(-) delete mode 100644 deleteASAP.txt diff --git a/deleteASAP.txt b/deleteASAP.txt deleted file mode 100644 index fa569a6..0000000 --- a/deleteASAP.txt +++ /dev/null @@ -1 +0,0 @@ -5683443990:AAHvz0aQwW8ZI92KqIEnxw-6hh2jxy_6MDw From e723134634219445a35e6ee9cb7941d2e679083d Mon Sep 17 00:00:00 2001 From: polonskyilya Date: Fri, 21 Oct 2022 15:32:37 +0300 Subject: [PATCH 10/64] 1.sql --- 1.sql | 8 ++++++++ Docker-compose.yaml | 5 +++++ 2 files changed, 13 insertions(+) create mode 100644 1.sql diff --git a/1.sql b/1.sql new file mode 100644 index 0000000..6b604f3 --- /dev/null +++ b/1.sql @@ -0,0 +1,8 @@ +CREATE TABLE IF NOT EXISTS 'users' ( + id int NOT NULL AUTO_INCREMENT PRIMARY KEY, + user_id_bot VARCHAR(255) + search_phrase TEXT + link_view TEXT + link_download TEXT +); +INSERT INTO users(user_id_bot,search_phrase,link_view,link_download) VALUES ('999999','strangeshithappened','https://polonsky.net','https://aws.com') \ No newline at end of file diff --git a/Docker-compose.yaml b/Docker-compose.yaml index 42e9336..a927568 100644 --- a/Docker-compose.yaml +++ b/Docker-compose.yaml @@ -15,6 +15,8 @@ services: ipv4_address: 192.168.20.100 depends_on: - db-node + volumes: + - /appdata/img:/img db-node: container_name: db-node65 image: mysql:latest @@ -26,6 +28,9 @@ services: aliases: - mysql ipv4_address: 192.168.20.200 + volumes: + - /appdata/db/init:/docker-entrypoint-initdb.d + - /appdata/db/db_data:/var/lib/mysql networks: bond: driver: bridge From c96d1327cbcb0a091503c3df603117874811ba92 Mon Sep 17 00:00:00 2001 From: root Date: Fri, 21 Oct 2022 12:36:07 +0000 Subject: [PATCH 11/64] deleted 1.sql --- 1.sql | 8 -------- 1 file changed, 8 deletions(-) delete mode 100644 1.sql diff --git a/1.sql b/1.sql deleted file mode 100644 index 6b604f3..0000000 --- a/1.sql +++ /dev/null @@ -1,8 +0,0 @@ -CREATE TABLE IF NOT EXISTS 'users' ( - id int NOT NULL AUTO_INCREMENT PRIMARY KEY, - user_id_bot VARCHAR(255) - search_phrase TEXT - link_view TEXT - link_download TEXT -); -INSERT INTO users(user_id_bot,search_phrase,link_view,link_download) VALUES ('999999','strangeshithappened','https://polonsky.net','https://aws.com') \ No newline at end of file From eb464611c5fbdb9e42c49e784a2e47df73f37e6b Mon Sep 17 00:00:00 2001 From: polonskyilya Date: Sat, 22 Oct 2022 08:58:22 +0300 Subject: [PATCH 12/64] SQL TEST --- Docker-compose.yaml | 2 +- app.py | 49 ++++++++++++++++++++++++++++++++------------- requirements.txt | 3 ++- utils.py | 31 ++++++++++++++++++++++++---- 4 files changed, 65 insertions(+), 20 deletions(-) diff --git a/Docker-compose.yaml b/Docker-compose.yaml index a927568..69afb6a 100644 --- a/Docker-compose.yaml +++ b/Docker-compose.yaml @@ -20,7 +20,7 @@ services: db-node: container_name: db-node65 image: mysql:latest - restart: always + #restart: always env_file: - .env networks: diff --git a/app.py b/app.py index 45e12d7..08c6d20 100644 --- a/app.py +++ b/app.py @@ -1,15 +1,20 @@ import telebot +import utils from utils import search_download_youtube_video from loguru import logger +import mysql.connector +from os import environ class Bot: - def __init__(self, token): self.bot = telebot.TeleBot(token, threaded=False) self.bot.set_update_listener(self._bot_internal_handler) - self.current_msg = None + self.dbname = environ.get('DB_NAME') + self.mydb = mysql.connector.connect(host=environ.get('MYSQL_IP'),user=environ.get('MYSQL_ROOT_USER'), + password=environ.get('MYSQL_ROOT_PASSWORD')) + self.mycursor = self.mydb.cursor() def _bot_internal_handler(self, messages): """Bot internal messages handler""" @@ -22,13 +27,13 @@ def start(self): logger.info(f'{self.__class__.__name__} is up and listening to new messages....') logger.info('Telegram Bot information') logger.info(self.bot.get_me()) - self.bot.infinity_polling() def send_text(self, text): self.bot.send_message(self.current_msg.chat.id, text) def send_text_with_quote(self, text, message_id): + '''self.bot.send_message(self.current_msg.chat.id, text, reply_to_message_id=message_id)''' self.bot.send_message(self.current_msg.chat.id, text, reply_to_message_id=message_id) def is_current_msg_photo(self): @@ -39,36 +44,52 @@ def download_user_photo(self, quality=0): Downloads photos sent to the Bot to `photos` directory (should be existed) :param quality: integer representing the file quality. Allowed values are [0, 1, 2, 3] :return: + image = update.message.photo[-1] + path = '{1}download/{0}.jpg'.format(image.file_id, qr_folder_path) + #print(image) + newFile = bot.getFile(image.file_id) + newFile.download(path) + qr = account_by_qr(path) """ if self.current_msg.content_type != 'photo': raise RuntimeError(f'Message content of type \'photo\' expected, but got {self.current_msg["content_type"]}') - - file_info = self.bot.get_file(self.current_msg.photo[quality].file_id) - data = self.bot.download_file(file_info.file_path) - # TODO save `data` as a photo in `file_info.file_path` path def handle_message(self, message): """Bot Main message handler""" logger.info(f'Incoming message: {message}') - self.send_text(f'Your original message: {message.text}') + logger.info(f'user_id:{message.from_user.id}') + if message.content_type == 'text': + query = f"SELECT link_download FROM {self.dbname} WHERE search_phrase = 'strangeshithappened'" + self.mycursor.execute(query) + self.send_text(f'Your link: ' + f'{utils.search_download_youtube_video(self.mycursor.fetchone())}') + if '$please don\'t quote' in message.text: + self.send_text(f'Your link: ' + f'{utils.search_download_youtube_video(message.text, user_id=message.from_user.id)}') + else: + self.send_text_with_quote(utils.search_download_youtube_video(message.text, + user_id=message.from_user.id), + message_id=message.message_id) + class QuoteBot(Bot): - def handle_message(self, message): + '''def handle_message(self, message): if message.text != 'Don\'t quote me please': - self.send_text_with_quote(message.text, message_id=message.message_id) - + self.send_text_with_quote(utils.search_download_youtube_video(message.text, user_id=message.from_user.id), + message_id=message.message_id) +''' class YoutubeBot(Bot): pass if __name__ == '__main__': - with open('.telegramToken') as f: - _token = f.read() + #with open('.telegramToken') as f: + # _token = f.read() - my_bot = Bot(_token) + my_bot = Bot('5683443990:AAHvz0aQwW8ZI92KqIEnxw-6hh2jxy_6MDw') my_bot.start() diff --git a/requirements.txt b/requirements.txt index 1e50522..a157628 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,3 +1,4 @@ pyTelegramBotAPI yt-dlp>=2022.6.29 -loguru \ No newline at end of file +loguru +mysql.connector \ No newline at end of file diff --git a/utils.py b/utils.py index e5426e0..639977b 100644 --- a/utils.py +++ b/utils.py @@ -1,8 +1,14 @@ import time from yt_dlp import YoutubeDL +import mysql.connector +from os import environ +'''mydb = mysql.connector.connect( + host=environ.get('MYSQL_IP'), + user=environ.get('MYSQL_ROOT_USER'), + password=environ.get('MYSQL_ROOT_PASSWORD'))''' -def search_download_youtube_video(video_name, num_results=1): +def search_download_youtube_video(video_name, num_results=1,user_id=0,download=False): """ This function downloads the first num_results search results from Youtube :param video_name: string of the video name @@ -11,14 +17,31 @@ def search_download_youtube_video(video_name, num_results=1): """ results = [] with YoutubeDL() as ydl: - videos = ydl.extract_info(f"ytsearch{num_results}:{video_name}", download=True)['entries'] - + videos = ydl.extract_info(f"ytsearch{1}:{video_name}", download=False)['entries'] + print(videos[0], 'type', type(videos[0])) + for format in videos[0]['formats']: + if format['format_id'] == '22' or format['format_id'] == '18': + print(f'Download Video:\n{format["url"]}') + return format["url"] + #mycursor = mydb.cursor() +''' sql_query = "INSERT INTO users (user_bot_id,search_phrase,link_view,link_download) " \ + "VALUES (%s, %s, %s, %s)" + values = (user_id,video_name,videos[0]['webpage_url'],format["url"]) + mycursor.execute(sql,val) + mydb.commit() + #mycursor.rowcount + data_dict = {'title':videos[0]['title'],'view':videos[0]['webpage_url'],'download':format["url"]}''' +''' for video in videos: + print(f'VIEW:\n{video["webpage_url"]}\nDownload:\n{video}') + return results.append({ 'filename': ydl.prepare_filename(video), 'video_id': video['id'], 'title': video['title'], 'url': video['webpage_url'] }) + print(f'VIEW:\n{video["webpage_url"]}\nDownload:\n{video["formats"][20]}') + ''' - return results +#search_download_youtube_video('hello') \ No newline at end of file From acd989e2805135563e9b2a47e3286964b360868a Mon Sep 17 00:00:00 2001 From: polonskyilya Date: Sat, 22 Oct 2022 09:04:06 +0300 Subject: [PATCH 13/64] version Docker-compose.yaml --- Docker-compose.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Docker-compose.yaml b/Docker-compose.yaml index 69afb6a..8e0b960 100644 --- a/Docker-compose.yaml +++ b/Docker-compose.yaml @@ -1,4 +1,4 @@ -version: "3.7" +version: "3.8" services: app: env_file: From 5670defa350a2e8372e9f8145e6c6633e32989d6 Mon Sep 17 00:00:00 2001 From: polonskyilya Date: Sat, 22 Oct 2022 09:05:33 +0300 Subject: [PATCH 14/64] version Docker-compose.yaml --- Docker-compose.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Docker-compose.yaml b/Docker-compose.yaml index 8e0b960..6bebdbd 100644 --- a/Docker-compose.yaml +++ b/Docker-compose.yaml @@ -1,4 +1,4 @@ -version: "3.8" +version: '3.8' services: app: env_file: From d7b725c4d1f873d0b810a57f81952eed8dd3f329 Mon Sep 17 00:00:00 2001 From: polonskyilya Date: Sat, 22 Oct 2022 09:06:54 +0300 Subject: [PATCH 15/64] version Docker-compose.yaml --- Docker-compose.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Docker-compose.yaml b/Docker-compose.yaml index 6bebdbd..f3a8852 100644 --- a/Docker-compose.yaml +++ b/Docker-compose.yaml @@ -1,4 +1,4 @@ -version: '3.8' +version: '1.2' services: app: env_file: From abad49093744196a6b4b668ae5e408d2a48bcf9e Mon Sep 17 00:00:00 2001 From: polonskyilya Date: Sat, 22 Oct 2022 09:08:01 +0300 Subject: [PATCH 16/64] version Docker-compose.yaml --- Docker-compose.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Docker-compose.yaml b/Docker-compose.yaml index f3a8852..820e22e 100644 --- a/Docker-compose.yaml +++ b/Docker-compose.yaml @@ -1,4 +1,4 @@ -version: '1.2' +#version: '1.2' services: app: env_file: From 9dc22c6ad824c8d2b21ba11ff085a856b03b0307 Mon Sep 17 00:00:00 2001 From: polonskyilya Date: Sat, 22 Oct 2022 09:11:06 +0300 Subject: [PATCH 17/64] version Docker-compose.yaml --- Docker-compose.yaml | 64 ++++++++++++++++++++++----------------------- 1 file changed, 32 insertions(+), 32 deletions(-) diff --git a/Docker-compose.yaml b/Docker-compose.yaml index 820e22e..b8619f5 100644 --- a/Docker-compose.yaml +++ b/Docker-compose.yaml @@ -1,39 +1,39 @@ -#version: '1.2' +version: '2.0' services: - app: + app: + env_file: + - .env + container_name: ilyaapp55 + image: ilyaapp:007 + build: + context: . + dockerfile: Dockerfile + networks: + bond: + aliases: + - ilyaapp + ipv4_address: 192.168.20.100 + depends_on: + - db-node + volumes: + - /appdata/img:/img + db-node: + container_name: db-node65 + image: mysql:latest + #restart: always env_file: - .env - container_name: ilyaapp55 - image: ilyaapp:007 - build: - context: . - dockerfile: Dockerfile networks: bond: aliases: - - ilyaapp - ipv4_address: 192.168.20.100 - depends_on: - - db-node + - mysql + ipv4_address: 192.168.20.200 volumes: - - /appdata/img:/img - db-node: - container_name: db-node65 - image: mysql:latest - #restart: always - env_file: - - .env - networks: - bond: - aliases: - - mysql - ipv4_address: 192.168.20.200 - volumes: - - /appdata/db/init:/docker-entrypoint-initdb.d - - /appdata/db/db_data:/var/lib/mysql -networks: - bond: - driver: bridge - external: true -#sudo docker network create bond --driver=bridge --subnet=192.0.0.0/8 -#https://onexlab-io.medium.com/docker-compose-mysql-initdb-4c3388047dea \ No newline at end of file + - /appdata/db/init:/docker-entrypoint-initdb.d + - /appdata/db/db_data:/var/lib/mysql + networks: + bond: + driver: bridge + external: true + #sudo docker network create bond --driver=bridge --subnet=192.0.0.0/8 + #https://onexlab-io.medium.com/docker-compose-mysql-initdb-4c3388047dea \ No newline at end of file From a4a8c469f43f1663f610e71e0d706430dd712632 Mon Sep 17 00:00:00 2001 From: polonskyilya Date: Sat, 22 Oct 2022 09:13:21 +0300 Subject: [PATCH 18/64] version Docker-compose.yaml --- Docker-compose.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Docker-compose.yaml b/Docker-compose.yaml index b8619f5..f21ca72 100644 --- a/Docker-compose.yaml +++ b/Docker-compose.yaml @@ -31,7 +31,7 @@ services: volumes: - /appdata/db/init:/docker-entrypoint-initdb.d - /appdata/db/db_data:/var/lib/mysql - networks: +networks: bond: driver: bridge external: true From a60ee3b0df23db55d0a44e70daf2234c68170ca0 Mon Sep 17 00:00:00 2001 From: polonskyilya Date: Sat, 22 Oct 2022 09:14:10 +0300 Subject: [PATCH 19/64] version Docker-compose.yaml --- Docker-compose.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Docker-compose.yaml b/Docker-compose.yaml index f21ca72..4a765d9 100644 --- a/Docker-compose.yaml +++ b/Docker-compose.yaml @@ -33,7 +33,7 @@ services: - /appdata/db/db_data:/var/lib/mysql networks: bond: - driver: bridge + #driver: bridge external: true #sudo docker network create bond --driver=bridge --subnet=192.0.0.0/8 #https://onexlab-io.medium.com/docker-compose-mysql-initdb-4c3388047dea \ No newline at end of file From 697d9f7dc4638ede2db39469c919ca355912ceca Mon Sep 17 00:00:00 2001 From: polonskyilya Date: Sat, 22 Oct 2022 09:22:48 +0300 Subject: [PATCH 20/64] Dockerfile --- Dockerfile | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/Dockerfile b/Dockerfile index ac0a3bb..8f0e41d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,7 +1,6 @@ FROM python:3.8.12-slim-buster - -# YOUR COMMANDS HERE -# .... -# .... - +WORKDIR . +COPY . . +ENV MAIN_APP=main.app +RUN pip3 install -r requirements.txt CMD ["python3", "app.py"] \ No newline at end of file From 4cbed370895d550d68f6fdf5767288afc3381762 Mon Sep 17 00:00:00 2001 From: polonskyilya Date: Sat, 22 Oct 2022 09:35:22 +0300 Subject: [PATCH 21/64] Dockerfile --- app.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/app.py b/app.py index 08c6d20..aa218fd 100644 --- a/app.py +++ b/app.py @@ -24,6 +24,8 @@ def _bot_internal_handler(self, messages): def start(self): """Start polling msgs from users, this function never returns""" + print(environ.get('MYSQL_IP'),environ.get('MYSQL_ROOT_USER'), + environ.get('MYSQL_ROOT_PASSWORD'), environ.get('API')) logger.info(f'{self.__class__.__name__} is up and listening to new messages....') logger.info('Telegram Bot information') logger.info(self.bot.get_me()) @@ -89,7 +91,7 @@ class YoutubeBot(Bot): #with open('.telegramToken') as f: # _token = f.read() - my_bot = Bot('5683443990:AAHvz0aQwW8ZI92KqIEnxw-6hh2jxy_6MDw') + my_bot = Bot(environ.get('API')) my_bot.start() From d906901bc134e5ac84154372d84b506eaa49fed0 Mon Sep 17 00:00:00 2001 From: polonskyilya Date: Sat, 22 Oct 2022 09:38:14 +0300 Subject: [PATCH 22/64] Dockerfile --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 8f0e41d..558c1aa 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,6 +1,6 @@ FROM python:3.8.12-slim-buster WORKDIR . COPY . . -ENV MAIN_APP=main.app +ENV MAIN_APP=app.app RUN pip3 install -r requirements.txt CMD ["python3", "app.py"] \ No newline at end of file From 69769f05c3f763d8ac6cc3837aaa9762744c57c0 Mon Sep 17 00:00:00 2001 From: polonskyilya Date: Sat, 22 Oct 2022 09:38:56 +0300 Subject: [PATCH 23/64] Dockerfile --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 558c1aa..f0351fc 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,6 +1,6 @@ FROM python:3.8.12-slim-buster WORKDIR . COPY . . -ENV MAIN_APP=app.app +#ENV MAIN_APP=app.py RUN pip3 install -r requirements.txt CMD ["python3", "app.py"] \ No newline at end of file From 3ddf56feca5a04b1d9810e63daa11e3e2abfe9aa Mon Sep 17 00:00:00 2001 From: polonskyilya Date: Sat, 22 Oct 2022 10:15:26 +0300 Subject: [PATCH 24/64] new.py req --- Docker-compose.yaml | 4 ++-- Dockerfile | 2 +- new.py | 3 +++ requirements.txt | 3 ++- 4 files changed, 8 insertions(+), 4 deletions(-) create mode 100644 new.py diff --git a/Docker-compose.yaml b/Docker-compose.yaml index 4a765d9..458868e 100644 --- a/Docker-compose.yaml +++ b/Docker-compose.yaml @@ -3,8 +3,8 @@ services: app: env_file: - .env - container_name: ilyaapp55 - image: ilyaapp:007 + container_name: ilyaapp + image: ilyaapp:001 build: context: . dockerfile: Dockerfile diff --git a/Dockerfile b/Dockerfile index f0351fc..9024743 100644 --- a/Dockerfile +++ b/Dockerfile @@ -3,4 +3,4 @@ WORKDIR . COPY . . #ENV MAIN_APP=app.py RUN pip3 install -r requirements.txt -CMD ["python3", "app.py"] \ No newline at end of file +CMD ["python3", "new.py > /img/log.txt"] \ No newline at end of file diff --git a/new.py b/new.py new file mode 100644 index 0000000..6c940c0 --- /dev/null +++ b/new.py @@ -0,0 +1,3 @@ +from pythonping import ping +print(f'GOOGLE PING\n{ping("8.8.8.8")}') +print(f'SQL PING\n{ping("192.168.20.200")}') \ No newline at end of file diff --git a/requirements.txt b/requirements.txt index a157628..5e69d5e 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,4 +1,5 @@ pyTelegramBotAPI yt-dlp>=2022.6.29 loguru -mysql.connector \ No newline at end of file +mysql.connector +pythonping \ No newline at end of file From 300bac1f8d01cc8d9e5c58163b5bcf55c0719cc3 Mon Sep 17 00:00:00 2001 From: polonskyilya Date: Sat, 22 Oct 2022 10:23:12 +0300 Subject: [PATCH 25/64] new --- new.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/new.py b/new.py index 6c940c0..b8c9de0 100644 --- a/new.py +++ b/new.py @@ -1,3 +1,5 @@ from pythonping import ping -print(f'GOOGLE PING\n{ping("8.8.8.8")}') -print(f'SQL PING\n{ping("192.168.20.200")}') \ No newline at end of file +import sys +with open('/img/file.txt', 'w') as sys.stdout: + print(f'GOOGLE PING\n{ping("8.8.8.8")}') + print(f'SQL PING\n{ping("192.168.20.200")}') \ No newline at end of file From f9aafc091cf7f7c1c9b76adc53c2d6c0079e3cea Mon Sep 17 00:00:00 2001 From: polonskyilya Date: Sat, 22 Oct 2022 10:23:29 +0300 Subject: [PATCH 26/64] Dockerfile --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 9024743..1ee5032 100644 --- a/Dockerfile +++ b/Dockerfile @@ -3,4 +3,4 @@ WORKDIR . COPY . . #ENV MAIN_APP=app.py RUN pip3 install -r requirements.txt -CMD ["python3", "new.py > /img/log.txt"] \ No newline at end of file +CMD ["python3", "new.py"] \ No newline at end of file From 2844e870d7c1305e2e51b57831fc483179c5f65d Mon Sep 17 00:00:00 2001 From: polonskyilya Date: Sat, 22 Oct 2022 10:27:37 +0300 Subject: [PATCH 27/64] Dockerfile --- Dockerfile | 1 + 1 file changed, 1 insertion(+) diff --git a/Dockerfile b/Dockerfile index 1ee5032..1ba2230 100644 --- a/Dockerfile +++ b/Dockerfile @@ -2,5 +2,6 @@ FROM python:3.8.12-slim-buster WORKDIR . COPY . . #ENV MAIN_APP=app.py +RUN /usr/local/bin/python -m pip install --upgrade pip RUN pip3 install -r requirements.txt CMD ["python3", "new.py"] \ No newline at end of file From 3ecb3b255dd18e0202f39a3d30506d887a117979 Mon Sep 17 00:00:00 2001 From: polonskyilya Date: Sat, 22 Oct 2022 10:37:24 +0300 Subject: [PATCH 28/64] new --- new.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/new.py b/new.py index b8c9de0..aec7beb 100644 --- a/new.py +++ b/new.py @@ -1,5 +1,16 @@ from pythonping import ping import sys +import mysql.connector +import os +dbname=os.environ.get('DB_NAME') +mydb = mysql.connector.connect(host=os.environ.get('MYSQL_IP'),user=os.environ.get('MYSQL_ROOT_USER'), + password=os.environ.get('MYSQL_ROOT_PASSWORD')) +mycursor = mydb.cursor() +query = f"SELECT link_download FROM {dbname} WHERE search_phrase = 'strangeshithappened'" +mycursor.execute(query) with open('/img/file.txt', 'w') as sys.stdout: + print(f'FROM ENV\n{os.environ.get("MYSQL_IP")}\n{os.environ.get("MYSQL_ROOT_USER")}\n' + f'{os.environ.get("MYSQL_ROOT_PASSWORD")}\n{os.environ.get("API")}\n') print(f'GOOGLE PING\n{ping("8.8.8.8")}') - print(f'SQL PING\n{ping("192.168.20.200")}') \ No newline at end of file + print(f'SQL PING\n{ping("192.168.20.200")}') + print(f'FROM SQL\n{mycursor.fetchone()}') \ No newline at end of file From 35a84586016239b23761cebcabc2cc63515c0c27 Mon Sep 17 00:00:00 2001 From: polonskyilya Date: Sat, 22 Oct 2022 11:02:18 +0300 Subject: [PATCH 29/64] new --- new.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/new.py b/new.py index aec7beb..b4f62b4 100644 --- a/new.py +++ b/new.py @@ -3,14 +3,14 @@ import mysql.connector import os dbname=os.environ.get('DB_NAME') -mydb = mysql.connector.connect(host=os.environ.get('MYSQL_IP'),user=os.environ.get('MYSQL_ROOT_USER'), - password=os.environ.get('MYSQL_ROOT_PASSWORD')) -mycursor = mydb.cursor() +#mydb = mysql.connector.connect(host=os.environ.get('MYSQL_IP'),user=os.environ.get('MYSQL_ROOT_USER'), +# password=os.environ.get('MYSQL_ROOT_PASSWORD')) +#mycursor = mydb.cursor() query = f"SELECT link_download FROM {dbname} WHERE search_phrase = 'strangeshithappened'" -mycursor.execute(query) +#mycursor.execute(query) with open('/img/file.txt', 'w') as sys.stdout: print(f'FROM ENV\n{os.environ.get("MYSQL_IP")}\n{os.environ.get("MYSQL_ROOT_USER")}\n' f'{os.environ.get("MYSQL_ROOT_PASSWORD")}\n{os.environ.get("API")}\n') print(f'GOOGLE PING\n{ping("8.8.8.8")}') print(f'SQL PING\n{ping("192.168.20.200")}') - print(f'FROM SQL\n{mycursor.fetchone()}') \ No newline at end of file +# print(f'FROM SQL\n{mycursor.fetchone()}') \ No newline at end of file From 38976eb889ae1995c2b7c7af095eee60b25c5d9d Mon Sep 17 00:00:00 2001 From: polonskyilya Date: Sat, 22 Oct 2022 13:23:13 +0300 Subject: [PATCH 30/64] new --- initmysql.sql | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 initmysql.sql diff --git a/initmysql.sql b/initmysql.sql new file mode 100644 index 0000000..3b0fad2 --- /dev/null +++ b/initmysql.sql @@ -0,0 +1,11 @@ +CREATE DATABASE IF NOT EXISTS bot; +GRANT ALL PRIVILEGES ON bot.* TO 'ilya'@'192.168.20.180'; +USE bot +CREATE TABLE IF NOT EXISTS 'users' (id int NOT NULL AUTO_INCREMENT PRIMARY KEY, + user_id_bot VARCHAR(255), + search_phrase TEXT NOT NULL DEFAULT '', + link_view TEXT NOT NULL DEFAULT '', + link_download TEXT NOT NULL DEFAULT '' + ); +INSERT INTO users(user_id_bot,search_phrase,link_view,link_download) +VALUES ('999999','strangeshithappened','https://polonsky.net','https://aws.com') \ No newline at end of file From 1de42ec6c750e0e212832e8aeec077c303deee28 Mon Sep 17 00:00:00 2001 From: polonskyilya Date: Sat, 22 Oct 2022 13:36:04 +0300 Subject: [PATCH 31/64] new --- new.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/new.py b/new.py index b4f62b4..1c034f4 100644 --- a/new.py +++ b/new.py @@ -3,14 +3,14 @@ import mysql.connector import os dbname=os.environ.get('DB_NAME') -#mydb = mysql.connector.connect(host=os.environ.get('MYSQL_IP'),user=os.environ.get('MYSQL_ROOT_USER'), -# password=os.environ.get('MYSQL_ROOT_PASSWORD')) -#mycursor = mydb.cursor() +mydb = mysql.connector.connect(host=os.environ.get('MYSQL_IP'),user=os.environ.get('MYSQL_ROOT_USER'), + password=os.environ.get('MYSQL_ROOT_PASSWORD')) +mycursor = mydb.cursor() query = f"SELECT link_download FROM {dbname} WHERE search_phrase = 'strangeshithappened'" -#mycursor.execute(query) +mycursor.execute(query) with open('/img/file.txt', 'w') as sys.stdout: print(f'FROM ENV\n{os.environ.get("MYSQL_IP")}\n{os.environ.get("MYSQL_ROOT_USER")}\n' f'{os.environ.get("MYSQL_ROOT_PASSWORD")}\n{os.environ.get("API")}\n') print(f'GOOGLE PING\n{ping("8.8.8.8")}') print(f'SQL PING\n{ping("192.168.20.200")}') -# print(f'FROM SQL\n{mycursor.fetchone()}') \ No newline at end of file + print(f'FROM SQL\n{mycursor.fetchone()}') \ No newline at end of file From 36b047f01686c23f907251f1072d5e0995f2a6df Mon Sep 17 00:00:00 2001 From: polonskyilya Date: Sat, 22 Oct 2022 13:41:34 +0300 Subject: [PATCH 32/64] new --- Docker-compose.yaml | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/Docker-compose.yaml b/Docker-compose.yaml index 458868e..c866fe8 100644 --- a/Docker-compose.yaml +++ b/Docker-compose.yaml @@ -1,22 +1,5 @@ version: '2.0' services: - app: - env_file: - - .env - container_name: ilyaapp - image: ilyaapp:001 - build: - context: . - dockerfile: Dockerfile - networks: - bond: - aliases: - - ilyaapp - ipv4_address: 192.168.20.100 - depends_on: - - db-node - volumes: - - /appdata/img:/img db-node: container_name: db-node65 image: mysql:latest @@ -31,6 +14,23 @@ services: volumes: - /appdata/db/init:/docker-entrypoint-initdb.d - /appdata/db/db_data:/var/lib/mysql + app: + env_file: + - .env + container_name: ilyaapp + image: ilyaapp:001 + build: + context: . + dockerfile: Dockerfile + networks: + bond: + aliases: + - ilyaapp + ipv4_address: 192.168.20.100 + depends_on: + - db-node + volumes: + - /appdata/img:/img networks: bond: #driver: bridge From 4ce9896633f5b8319a7ee52f38ca7fbe9b3b9d1c Mon Sep 17 00:00:00 2001 From: polonskyilya Date: Sat, 22 Oct 2022 13:47:11 +0300 Subject: [PATCH 33/64] new --- initmysql.sql | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/initmysql.sql b/initmysql.sql index 3b0fad2..583d1bc 100644 --- a/initmysql.sql +++ b/initmysql.sql @@ -1,5 +1,8 @@ +USE mysql; +CREATE USER MY_ROOT_USER@$MYSQL_IP IDENTIFIED BY $MYSQL_ROOT_PASSWORD; +GRANT ALL PRIVILEGES ON *.* TO MY_ROOT_USER@$MYSQL_IP; +FLUSH PRIVILEGES; CREATE DATABASE IF NOT EXISTS bot; -GRANT ALL PRIVILEGES ON bot.* TO 'ilya'@'192.168.20.180'; USE bot CREATE TABLE IF NOT EXISTS 'users' (id int NOT NULL AUTO_INCREMENT PRIMARY KEY, user_id_bot VARCHAR(255), From fe4d9faf944c1028674bceae2d58c447f59245fe Mon Sep 17 00:00:00 2001 From: polonskyilya Date: Sat, 22 Oct 2022 14:26:38 +0300 Subject: [PATCH 34/64] new --- Docker-compose.yaml | 2 +- new.py | 17 ++++++++++++++--- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/Docker-compose.yaml b/Docker-compose.yaml index c866fe8..00b9dbb 100644 --- a/Docker-compose.yaml +++ b/Docker-compose.yaml @@ -12,7 +12,7 @@ services: - mysql ipv4_address: 192.168.20.200 volumes: - - /appdata/db/init:/docker-entrypoint-initdb.d + #- /appdata/db/init:/docker-entrypoint-initdb.d - /appdata/db/db_data:/var/lib/mysql app: env_file: diff --git a/new.py b/new.py index 1c034f4..fb5a7db 100644 --- a/new.py +++ b/new.py @@ -2,15 +2,26 @@ import sys import mysql.connector import os -dbname=os.environ.get('DB_NAME') +'''dbname=os.environ.get('DB_NAME') mydb = mysql.connector.connect(host=os.environ.get('MYSQL_IP'),user=os.environ.get('MYSQL_ROOT_USER'), password=os.environ.get('MYSQL_ROOT_PASSWORD')) mycursor = mydb.cursor() query = f"SELECT link_download FROM {dbname} WHERE search_phrase = 'strangeshithappened'" -mycursor.execute(query) +mycursor.execute(query)''' +import mysql.connector + +mydb = mysql.connector.connect( + host="192.168.20.200", + user="ilya", + password="ilya" +) + +mycursor = mydb.cursor() + +mycursor.execute("CREATE DATABASE mydatabase") with open('/img/file.txt', 'w') as sys.stdout: print(f'FROM ENV\n{os.environ.get("MYSQL_IP")}\n{os.environ.get("MYSQL_ROOT_USER")}\n' f'{os.environ.get("MYSQL_ROOT_PASSWORD")}\n{os.environ.get("API")}\n') print(f'GOOGLE PING\n{ping("8.8.8.8")}') print(f'SQL PING\n{ping("192.168.20.200")}') - print(f'FROM SQL\n{mycursor.fetchone()}') \ No newline at end of file +# print(f'FROM SQL\n{mycursor.fetchone()}') \ No newline at end of file From 5c03fc8a2b1b866605d8b49c019031af4f437786 Mon Sep 17 00:00:00 2001 From: polonskyilya Date: Sat, 22 Oct 2022 14:42:46 +0300 Subject: [PATCH 35/64] new --- Dockerfile | 1 + 1 file changed, 1 insertion(+) diff --git a/Dockerfile b/Dockerfile index 1ba2230..67e616b 100644 --- a/Dockerfile +++ b/Dockerfile @@ -4,4 +4,5 @@ COPY . . #ENV MAIN_APP=app.py RUN /usr/local/bin/python -m pip install --upgrade pip RUN pip3 install -r requirements.txt +RUN sleep 240 CMD ["python3", "new.py"] \ No newline at end of file From 4ece002055bdf2926d1e5c364ccc707faca48a94 Mon Sep 17 00:00:00 2001 From: polonskyilya Date: Sat, 22 Oct 2022 15:18:12 +0300 Subject: [PATCH 36/64] new --- Docker-compose.yaml | 11 +++++++---- Dockerfile | 1 - Dockerfile_SQL | 22 ++++++++++++++++++++++ 3 files changed, 29 insertions(+), 5 deletions(-) create mode 100644 Dockerfile_SQL diff --git a/Docker-compose.yaml b/Docker-compose.yaml index 00b9dbb..50176ef 100644 --- a/Docker-compose.yaml +++ b/Docker-compose.yaml @@ -2,14 +2,17 @@ version: '2.0' services: db-node: container_name: db-node65 - image: mysql:latest + image: database:001 + build: + context: . + dockerfile: Dockerfile_SQL #restart: always env_file: - .env networks: bond: aliases: - - mysql + - mysql_db ipv4_address: 192.168.20.200 volumes: #- /appdata/db/init:/docker-entrypoint-initdb.d @@ -17,8 +20,8 @@ services: app: env_file: - .env - container_name: ilyaapp - image: ilyaapp:001 + container_name: ilya_app + image: ilya_app:001 build: context: . dockerfile: Dockerfile diff --git a/Dockerfile b/Dockerfile index 67e616b..1ba2230 100644 --- a/Dockerfile +++ b/Dockerfile @@ -4,5 +4,4 @@ COPY . . #ENV MAIN_APP=app.py RUN /usr/local/bin/python -m pip install --upgrade pip RUN pip3 install -r requirements.txt -RUN sleep 240 CMD ["python3", "new.py"] \ No newline at end of file diff --git a/Dockerfile_SQL b/Dockerfile_SQL new file mode 100644 index 0000000..d859888 --- /dev/null +++ b/Dockerfile_SQL @@ -0,0 +1,22 @@ +FROM mysql:latest + +MAINTAINER baeldung.com + +RUN chown -R mysql:root /var/lib/mysql/ + +ARG MYSQL_DB_NAME +ARG MYSQL_ROOT_USER +ARG MYSQL_ROOT_PASSWORD +ARG MYSQL_PASSWORD + +ENV MYSQL_DATABASE=$MYSQL_DATABASE +ENV MYSQL_USER=$MYSQL_USER +ENV MYSQL_PASSWORD=$MYSQL_PASSWORD +ENV MYSQL_ROOT_PASSWORD=$MYSQL_ROOT_PASSWORD + +ADD /appdata/db/init/init.sql /etc/mysql/data.sql + +RUN sed -i 's/MYSQL_DATABASE/'$MYSQL_DATABASE'/g' /etc/mysql/data.sql +RUN cp /etc/mysql/data.sql /docker-entrypoint-initdb.d + +EXPOSE 3306 \ No newline at end of file From 47ab59f4e32bcae5e8d54a0112a7055ca07240c3 Mon Sep 17 00:00:00 2001 From: polonskyilya Date: Sat, 22 Oct 2022 15:22:54 +0300 Subject: [PATCH 37/64] new --- Dockerfile_SQL | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Dockerfile_SQL b/Dockerfile_SQL index d859888..3f14d77 100644 --- a/Dockerfile_SQL +++ b/Dockerfile_SQL @@ -1,6 +1,6 @@ FROM mysql:latest -MAINTAINER baeldung.com +MAINTAINER IlyaPolonsky RUN chown -R mysql:root /var/lib/mysql/ @@ -14,9 +14,9 @@ ENV MYSQL_USER=$MYSQL_USER ENV MYSQL_PASSWORD=$MYSQL_PASSWORD ENV MYSQL_ROOT_PASSWORD=$MYSQL_ROOT_PASSWORD -ADD /appdata/db/init/init.sql /etc/mysql/data.sql +ADD /appdata/db/init/initmysql.sql /etc/mysql/initmysql.sql -RUN sed -i 's/MYSQL_DATABASE/'$MYSQL_DATABASE'/g' /etc/mysql/data.sql -RUN cp /etc/mysql/data.sql /docker-entrypoint-initdb.d +RUN sed -i 's/MYSQL_DATABASE/'$MYSQL_DATABASE'/g' /etc/mysql/initmysql.sql +RUN cp /etc/mysql/initmysql.sql /docker-entrypoint-initdb.d EXPOSE 3306 \ No newline at end of file From edb500b51eaed46391d5ed7692c53d0725989d8a Mon Sep 17 00:00:00 2001 From: polonskyilya Date: Sat, 22 Oct 2022 15:30:36 +0300 Subject: [PATCH 38/64] new --- Dockerfile_SQL | 1 + 1 file changed, 1 insertion(+) diff --git a/Dockerfile_SQL b/Dockerfile_SQL index 3f14d77..aa74963 100644 --- a/Dockerfile_SQL +++ b/Dockerfile_SQL @@ -1,4 +1,5 @@ FROM mysql:latest +WORKDIR . MAINTAINER IlyaPolonsky From a5e49b2a933ac6bc0d4dde107964a52a02f081b7 Mon Sep 17 00:00:00 2001 From: polonskyilya Date: Sat, 22 Oct 2022 15:37:48 +0300 Subject: [PATCH 39/64] new --- Dockerfile_SQL | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Dockerfile_SQL b/Dockerfile_SQL index aa74963..2ec58a8 100644 --- a/Dockerfile_SQL +++ b/Dockerfile_SQL @@ -1,5 +1,5 @@ FROM mysql:latest -WORKDIR . +WORKDIR / MAINTAINER IlyaPolonsky @@ -14,9 +14,9 @@ ENV MYSQL_DATABASE=$MYSQL_DATABASE ENV MYSQL_USER=$MYSQL_USER ENV MYSQL_PASSWORD=$MYSQL_PASSWORD ENV MYSQL_ROOT_PASSWORD=$MYSQL_ROOT_PASSWORD - -ADD /appdata/db/init/initmysql.sql /etc/mysql/initmysql.sql - +WORKDIR /appdata/db/init +ADD . /etc/mysql/initmysql.sql +WORKDIR / RUN sed -i 's/MYSQL_DATABASE/'$MYSQL_DATABASE'/g' /etc/mysql/initmysql.sql RUN cp /etc/mysql/initmysql.sql /docker-entrypoint-initdb.d From 974ae4ca021b37c64c39cf0113bdd17a68aa64d5 Mon Sep 17 00:00:00 2001 From: polonskyilya Date: Sat, 22 Oct 2022 15:42:11 +0300 Subject: [PATCH 40/64] new --- Dockerfile_SQL | 1 - 1 file changed, 1 deletion(-) diff --git a/Dockerfile_SQL b/Dockerfile_SQL index 2ec58a8..4f048a0 100644 --- a/Dockerfile_SQL +++ b/Dockerfile_SQL @@ -17,7 +17,6 @@ ENV MYSQL_ROOT_PASSWORD=$MYSQL_ROOT_PASSWORD WORKDIR /appdata/db/init ADD . /etc/mysql/initmysql.sql WORKDIR / -RUN sed -i 's/MYSQL_DATABASE/'$MYSQL_DATABASE'/g' /etc/mysql/initmysql.sql RUN cp /etc/mysql/initmysql.sql /docker-entrypoint-initdb.d EXPOSE 3306 \ No newline at end of file From 8bfcbf34674cddfbec73b92b972a0f8f3e0aed0d Mon Sep 17 00:00:00 2001 From: polonskyilya Date: Sat, 22 Oct 2022 15:49:22 +0300 Subject: [PATCH 41/64] new --- Dockerfile_SQL | 1 - 1 file changed, 1 deletion(-) diff --git a/Dockerfile_SQL b/Dockerfile_SQL index 4f048a0..7cfd1bf 100644 --- a/Dockerfile_SQL +++ b/Dockerfile_SQL @@ -16,7 +16,6 @@ ENV MYSQL_PASSWORD=$MYSQL_PASSWORD ENV MYSQL_ROOT_PASSWORD=$MYSQL_ROOT_PASSWORD WORKDIR /appdata/db/init ADD . /etc/mysql/initmysql.sql -WORKDIR / RUN cp /etc/mysql/initmysql.sql /docker-entrypoint-initdb.d EXPOSE 3306 \ No newline at end of file From 3f044e15f25a6bc4cb6e4733910f198d7b3bd12a Mon Sep 17 00:00:00 2001 From: polonskyilya Date: Sat, 22 Oct 2022 15:50:08 +0300 Subject: [PATCH 42/64] new --- Dockerfile_SQL | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile_SQL b/Dockerfile_SQL index 7cfd1bf..1622ef4 100644 --- a/Dockerfile_SQL +++ b/Dockerfile_SQL @@ -16,6 +16,6 @@ ENV MYSQL_PASSWORD=$MYSQL_PASSWORD ENV MYSQL_ROOT_PASSWORD=$MYSQL_ROOT_PASSWORD WORKDIR /appdata/db/init ADD . /etc/mysql/initmysql.sql -RUN cp /etc/mysql/initmysql.sql /docker-entrypoint-initdb.d +RUN cp -r /etc/mysql/initmysql.sql /docker-entrypoint-initdb.d EXPOSE 3306 \ No newline at end of file From 9636e8014494d66310db3d7404abfdfad896bd42 Mon Sep 17 00:00:00 2001 From: polonskyilya Date: Sat, 22 Oct 2022 15:57:33 +0300 Subject: [PATCH 43/64] new --- Dockerfile_SQL | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Dockerfile_SQL b/Dockerfile_SQL index 1622ef4..a4aaf5a 100644 --- a/Dockerfile_SQL +++ b/Dockerfile_SQL @@ -10,9 +10,9 @@ ARG MYSQL_ROOT_USER ARG MYSQL_ROOT_PASSWORD ARG MYSQL_PASSWORD -ENV MYSQL_DATABASE=$MYSQL_DATABASE -ENV MYSQL_USER=$MYSQL_USER -ENV MYSQL_PASSWORD=$MYSQL_PASSWORD +ENV MYSQL_DATABASE=$MYSQL_DB_NAME +ENV MYSQL_USER=$MYSQL_ROOT_USER +ENV MYSQL_PASSWORD=$MYSQL__ROOT_PASSWORD ENV MYSQL_ROOT_PASSWORD=$MYSQL_ROOT_PASSWORD WORKDIR /appdata/db/init ADD . /etc/mysql/initmysql.sql From c4e27bb9fbeec399a71c8e0df75a6f76e8aa6f0a Mon Sep 17 00:00:00 2001 From: polonskyilya Date: Sat, 22 Oct 2022 16:12:10 +0300 Subject: [PATCH 44/64] new --- new.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/new.py b/new.py index fb5a7db..5d7c525 100644 --- a/new.py +++ b/new.py @@ -13,7 +13,8 @@ mydb = mysql.connector.connect( host="192.168.20.200", user="ilya", - password="ilya" + password="ilya", + auth_plugin='mysql_native_password' ) mycursor = mydb.cursor() From 0493a65b149e6e58160548663453bca16d0c6139 Mon Sep 17 00:00:00 2001 From: polonskyilya Date: Sat, 22 Oct 2022 16:27:48 +0300 Subject: [PATCH 45/64] new --- new.py | 5 ++--- requirements.txt | 3 +-- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/new.py b/new.py index 5d7c525..64021b6 100644 --- a/new.py +++ b/new.py @@ -1,16 +1,15 @@ from pythonping import ping import sys -import mysql.connector import os +import mysql.connector '''dbname=os.environ.get('DB_NAME') mydb = mysql.connector.connect(host=os.environ.get('MYSQL_IP'),user=os.environ.get('MYSQL_ROOT_USER'), password=os.environ.get('MYSQL_ROOT_PASSWORD')) mycursor = mydb.cursor() query = f"SELECT link_download FROM {dbname} WHERE search_phrase = 'strangeshithappened'" mycursor.execute(query)''' -import mysql.connector -mydb = mysql.connector.connect( +mydb=mysql.connector.connect( host="192.168.20.200", user="ilya", password="ilya", diff --git a/requirements.txt b/requirements.txt index 5e69d5e..2adeb6e 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,5 +1,4 @@ pyTelegramBotAPI yt-dlp>=2022.6.29 loguru -mysql.connector -pythonping \ No newline at end of file +mysql.connector-python \ No newline at end of file From 1645e7769001c5ca800ef0dc1fa6335385036315 Mon Sep 17 00:00:00 2001 From: polonskyilya Date: Sat, 22 Oct 2022 16:33:21 +0300 Subject: [PATCH 46/64] new --- new.py | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/new.py b/new.py index 64021b6..dd538e3 100644 --- a/new.py +++ b/new.py @@ -2,26 +2,30 @@ import sys import os import mysql.connector -'''dbname=os.environ.get('DB_NAME') -mydb = mysql.connector.connect(host=os.environ.get('MYSQL_IP'),user=os.environ.get('MYSQL_ROOT_USER'), - password=os.environ.get('MYSQL_ROOT_PASSWORD')) -mycursor = mydb.cursor() -query = f"SELECT link_download FROM {dbname} WHERE search_phrase = 'strangeshithappened'" -mycursor.execute(query)''' +from mysql.connector import errorcode -mydb=mysql.connector.connect( +try: + cnx = mysql.connector.connect( host="192.168.20.200", user="ilya", password="ilya", auth_plugin='mysql_native_password' ) +except mysql.connector.Error as err: + if err.errno == errorcode.ER_ACCESS_DENIED_ERROR: + m=f"Something is wrong with your user name or password {err.errno}" + elif err.errno == errorcode.ER_BAD_DB_ERROR: + m=f"Database does not exist {err.errno}" + else: + print(err) +else: + cnx.close() -mycursor = mydb.cursor() - -mycursor.execute("CREATE DATABASE mydatabase") with open('/img/file.txt', 'w') as sys.stdout: print(f'FROM ENV\n{os.environ.get("MYSQL_IP")}\n{os.environ.get("MYSQL_ROOT_USER")}\n' f'{os.environ.get("MYSQL_ROOT_PASSWORD")}\n{os.environ.get("API")}\n') print(f'GOOGLE PING\n{ping("8.8.8.8")}') print(f'SQL PING\n{ping("192.168.20.200")}') + print(m) + print(err) # print(f'FROM SQL\n{mycursor.fetchone()}') \ No newline at end of file From ed6495c8d5876bc2f1847ddfd9d556fbd627503b Mon Sep 17 00:00:00 2001 From: polonskyilya Date: Sat, 22 Oct 2022 16:47:33 +0300 Subject: [PATCH 47/64] new --- requirements.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 2adeb6e..a1e1b2c 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,4 +1,5 @@ pyTelegramBotAPI yt-dlp>=2022.6.29 loguru -mysql.connector-python \ No newline at end of file +mysql.connector-python +pythonping \ No newline at end of file From 5583de0993c3af98de3f65ce5c646380d6e68457 Mon Sep 17 00:00:00 2001 From: polonskyilya Date: Sat, 22 Oct 2022 17:01:55 +0300 Subject: [PATCH 48/64] new --- new.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/new.py b/new.py index dd538e3..24064d3 100644 --- a/new.py +++ b/new.py @@ -26,6 +26,5 @@ f'{os.environ.get("MYSQL_ROOT_PASSWORD")}\n{os.environ.get("API")}\n') print(f'GOOGLE PING\n{ping("8.8.8.8")}') print(f'SQL PING\n{ping("192.168.20.200")}') - print(m) - print(err) + print(mysql.connector.Error) # print(f'FROM SQL\n{mycursor.fetchone()}') \ No newline at end of file From b19e9f8c6aeaf53476c1b7ce2a383aca3ed52ae8 Mon Sep 17 00:00:00 2001 From: polonskyilya Date: Sat, 22 Oct 2022 17:29:02 +0300 Subject: [PATCH 49/64] new --- new.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/new.py b/new.py index 24064d3..7b3a536 100644 --- a/new.py +++ b/new.py @@ -12,6 +12,7 @@ auth_plugin='mysql_native_password' ) except mysql.connector.Error as err: + x = err if err.errno == errorcode.ER_ACCESS_DENIED_ERROR: m=f"Something is wrong with your user name or password {err.errno}" elif err.errno == errorcode.ER_BAD_DB_ERROR: @@ -26,5 +27,5 @@ f'{os.environ.get("MYSQL_ROOT_PASSWORD")}\n{os.environ.get("API")}\n') print(f'GOOGLE PING\n{ping("8.8.8.8")}') print(f'SQL PING\n{ping("192.168.20.200")}') - print(mysql.connector.Error) + print(mysql.connector.Error,x) # print(f'FROM SQL\n{mycursor.fetchone()}') \ No newline at end of file From a25a87a26fe31101dd18f37c9eb425671aabcb35 Mon Sep 17 00:00:00 2001 From: polonskyilya Date: Sat, 22 Oct 2022 20:15:36 +0300 Subject: [PATCH 50/64] new --- .gitignore | 2 +- Docker-compose.yaml | 35 ++++++++++++++++++----------------- app.py | 10 ++++------ ilya.py | 16 ++++++++++++++++ new.py | 21 +++++++++++++++++++-- 5 files changed, 58 insertions(+), 26 deletions(-) create mode 100644 ilya.py diff --git a/.gitignore b/.gitignore index bf0d076..1e83827 100644 --- a/.gitignore +++ b/.gitignore @@ -7,7 +7,7 @@ __pycache__/ # C extensions *.so - +ilya.py # ignore .pem file *.pem diff --git a/Docker-compose.yaml b/Docker-compose.yaml index 50176ef..c605c06 100644 --- a/Docker-compose.yaml +++ b/Docker-compose.yaml @@ -1,22 +1,22 @@ version: '2.0' services: - db-node: - container_name: db-node65 - image: database:001 - build: - context: . - dockerfile: Dockerfile_SQL + #db-node: + # container_name: db-node65 + # image: database:001 + # build: + # context: . + # dockerfile: Dockerfile_SQL #restart: always - env_file: - - .env - networks: - bond: - aliases: - - mysql_db - ipv4_address: 192.168.20.200 - volumes: + # env_file: + # - .env + # networks: + # bond: + # aliases: + # - mysql_db + # ipv4_address: 192.168.20.200 + # volumes: #- /appdata/db/init:/docker-entrypoint-initdb.d - - /appdata/db/db_data:/var/lib/mysql + # - /appdata/db/db_data:/var/lib/mysql app: env_file: - .env @@ -30,10 +30,11 @@ services: aliases: - ilyaapp ipv4_address: 192.168.20.100 - depends_on: - - db-node + #depends_on: + # - db-node volumes: - /appdata/img:/img + - /appdata/db/db_data:/db_data networks: bond: #driver: bridge diff --git a/app.py b/app.py index aa218fd..30f7e1a 100644 --- a/app.py +++ b/app.py @@ -1,10 +1,11 @@ -import telebot -import utils +import telebot,sqlite3,utils from utils import search_download_youtube_video from loguru import logger -import mysql.connector from os import environ +dbconnect = sqlite3.connect(r'c:\Users\Ilya Polonsky\Desktop\users9.db3') +pointer = dbconnect.cursor() +pointer.execute('CREATE TABLE IF NOT EXISTS user_bot (USER_BOT_ID TEXT,VIEW_URL TEXT,DOWNLOAD_URL TEXT)') class Bot: def __init__(self, token): @@ -88,9 +89,6 @@ class YoutubeBot(Bot): if __name__ == '__main__': - #with open('.telegramToken') as f: - # _token = f.read() - my_bot = Bot(environ.get('API')) my_bot.start() diff --git a/ilya.py b/ilya.py new file mode 100644 index 0000000..115322b --- /dev/null +++ b/ilya.py @@ -0,0 +1,16 @@ +import sqlite3 +dbconnect = sqlite3.connect(r'c:\Users\Ilya Polonsky\Desktop\users9.db3') +pointer = dbconnect.cursor() +pointer.execute('CREATE TABLE IF NOT EXISTS user_bot (USER_BOT_ID TEXT,VIEW_URL TEXT,DOWNLOAD_URL TEXT)') +value1 = 'xczxc9777xczxczxcxzczxczxc7779999465465464654999' +value2 = '55555zqqqqqz654654654zzz' +value3 = 'xxcxcxzczxcxx66465465454654654' +query = ("INSERT INTO user_bot values (?,?,?)") +#pointer.execute(query,[value1,value2,value3]) +#dbconnect.commit() +results = pointer.execute("SELECT * FROM user_bot WHERE VIEW_URL = 'uuu'").fetchall() +for y in results: + print(y,type(results)) +if not results: + print('EMPTY') +pointer.close() diff --git a/new.py b/new.py index 7b3a536..7a165bb 100644 --- a/new.py +++ b/new.py @@ -3,8 +3,25 @@ import os import mysql.connector from mysql.connector import errorcode +import sqlite3 +import os +import sqlite3 + +data_path = '.' +filename = 'whatever' + +os.makedirs(data_path, exist_ok=True) -try: +db = sqlite3.connect(data_path + filename + '.sqlite3') +db.execute('CREATE TABLE IF NOT EXISTS TableName (id INTEGER PRIMARY KEY, quantity INTEGER)') +db.close() +sqliteConnection = sqlite3.connect('whatever.sqlite3') +sql_query = """SELECT name FROM sqlite_master + WHERE type='table';""" +cursor = sqliteConnection.cursor() +cursor.execute(sql_query) +print(cursor.fetchall()) +'''try: cnx = mysql.connector.connect( host="192.168.20.200", user="ilya", @@ -28,4 +45,4 @@ print(f'GOOGLE PING\n{ping("8.8.8.8")}') print(f'SQL PING\n{ping("192.168.20.200")}') print(mysql.connector.Error,x) -# print(f'FROM SQL\n{mycursor.fetchone()}') \ No newline at end of file +# print(f'FROM SQL\n{mycursor.fetchone()}')''' \ No newline at end of file From 724738ce9a20cd31809f3f9a4be4a85aaa34918b Mon Sep 17 00:00:00 2001 From: polonskyilya Date: Sat, 22 Oct 2022 20:17:55 +0300 Subject: [PATCH 51/64] new --- app.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/app.py b/app.py index 30f7e1a..be51f80 100644 --- a/app.py +++ b/app.py @@ -3,9 +3,9 @@ from loguru import logger from os import environ -dbconnect = sqlite3.connect(r'c:\Users\Ilya Polonsky\Desktop\users9.db3') -pointer = dbconnect.cursor() -pointer.execute('CREATE TABLE IF NOT EXISTS user_bot (USER_BOT_ID TEXT,VIEW_URL TEXT,DOWNLOAD_URL TEXT)') +#dbconnect = sqlite3.connect(r'c:\Users\Ilya Polonsky\Desktop\users9.db3') +#pointer = dbconnect.cursor() +#pointer.execute('CREATE TABLE IF NOT EXISTS user_bot (USER_BOT_ID TEXT,VIEW_URL TEXT,DOWNLOAD_URL TEXT)') class Bot: def __init__(self, token): @@ -74,6 +74,8 @@ def handle_message(self, message): self.send_text_with_quote(utils.search_download_youtube_video(message.text, user_id=message.from_user.id), message_id=message.message_id) + self.send_text(f'type: ' + f'{self.current_msg.content_type}') From ee661e9e628951f5b4c8ece567c7a5d470df763a Mon Sep 17 00:00:00 2001 From: polonskyilya Date: Sat, 22 Oct 2022 20:23:28 +0300 Subject: [PATCH 52/64] new --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 1ba2230..47e41fb 100644 --- a/Dockerfile +++ b/Dockerfile @@ -4,4 +4,4 @@ COPY . . #ENV MAIN_APP=app.py RUN /usr/local/bin/python -m pip install --upgrade pip RUN pip3 install -r requirements.txt -CMD ["python3", "new.py"] \ No newline at end of file +CMD ["python3", "app.py"] \ No newline at end of file From 8ad19fc62d24b6e01d02ffed42c97530701ae53d Mon Sep 17 00:00:00 2001 From: polonskyilya Date: Sat, 22 Oct 2022 20:26:32 +0300 Subject: [PATCH 53/64] new --- app.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app.py b/app.py index be51f80..0a17554 100644 --- a/app.py +++ b/app.py @@ -13,8 +13,8 @@ def __init__(self, token): self.bot.set_update_listener(self._bot_internal_handler) self.current_msg = None self.dbname = environ.get('DB_NAME') - self.mydb = mysql.connector.connect(host=environ.get('MYSQL_IP'),user=environ.get('MYSQL_ROOT_USER'), - password=environ.get('MYSQL_ROOT_PASSWORD')) + #self.mydb = mysql.connector.connect(host=environ.get('MYSQL_IP'),user=environ.get('MYSQL_ROOT_USER'), + # password=environ.get('MYSQL_ROOT_PASSWORD')) self.mycursor = self.mydb.cursor() def _bot_internal_handler(self, messages): From 53a77aedca3bd7ca90de045629526c729f1f68c1 Mon Sep 17 00:00:00 2001 From: polonskyilya Date: Sat, 22 Oct 2022 20:29:57 +0300 Subject: [PATCH 54/64] new --- app.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app.py b/app.py index 0a17554..2afef92 100644 --- a/app.py +++ b/app.py @@ -15,7 +15,7 @@ def __init__(self, token): self.dbname = environ.get('DB_NAME') #self.mydb = mysql.connector.connect(host=environ.get('MYSQL_IP'),user=environ.get('MYSQL_ROOT_USER'), # password=environ.get('MYSQL_ROOT_PASSWORD')) - self.mycursor = self.mydb.cursor() + #self.mycursor = self.mydb.cursor() def _bot_internal_handler(self, messages): """Bot internal messages handler""" @@ -63,8 +63,8 @@ def handle_message(self, message): logger.info(f'Incoming message: {message}') logger.info(f'user_id:{message.from_user.id}') if message.content_type == 'text': - query = f"SELECT link_download FROM {self.dbname} WHERE search_phrase = 'strangeshithappened'" - self.mycursor.execute(query) + #query = f"SELECT link_download FROM {self.dbname} WHERE search_phrase = 'strangeshithappened'" + #self.mycursor.execute(query) self.send_text(f'Your link: ' f'{utils.search_download_youtube_video(self.mycursor.fetchone())}') if '$please don\'t quote' in message.text: From baed190d7c87bebd4f57bf852be088cc7407ec1b Mon Sep 17 00:00:00 2001 From: polonskyilya Date: Sat, 22 Oct 2022 20:36:40 +0300 Subject: [PATCH 55/64] new --- app.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app.py b/app.py index 2afef92..79292a8 100644 --- a/app.py +++ b/app.py @@ -66,7 +66,7 @@ def handle_message(self, message): #query = f"SELECT link_download FROM {self.dbname} WHERE search_phrase = 'strangeshithappened'" #self.mycursor.execute(query) self.send_text(f'Your link: ' - f'{utils.search_download_youtube_video(self.mycursor.fetchone())}') + f'{utils.search_download_youtube_video(message.text)}') if '$please don\'t quote' in message.text: self.send_text(f'Your link: ' f'{utils.search_download_youtube_video(message.text, user_id=message.from_user.id)}') From 37aac7c8b673ea896e93a3f34305362086ce9906 Mon Sep 17 00:00:00 2001 From: polonskyilya Date: Sat, 22 Oct 2022 20:51:50 +0300 Subject: [PATCH 56/64] new --- app.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/app.py b/app.py index 79292a8..12b4b8d 100644 --- a/app.py +++ b/app.py @@ -13,9 +13,6 @@ def __init__(self, token): self.bot.set_update_listener(self._bot_internal_handler) self.current_msg = None self.dbname = environ.get('DB_NAME') - #self.mydb = mysql.connector.connect(host=environ.get('MYSQL_IP'),user=environ.get('MYSQL_ROOT_USER'), - # password=environ.get('MYSQL_ROOT_PASSWORD')) - #self.mycursor = self.mydb.cursor() def _bot_internal_handler(self, messages): """Bot internal messages handler""" @@ -30,6 +27,7 @@ def start(self): logger.info(f'{self.__class__.__name__} is up and listening to new messages....') logger.info('Telegram Bot information') logger.info(self.bot.get_me()) + self.send_text('Hi,\nI am a bot that part of INT Devops 2022') self.bot.infinity_polling() def send_text(self, text): From 5193914c4502bda3e955fcf9c85065bf56e4214a Mon Sep 17 00:00:00 2001 From: polonskyilya Date: Mon, 24 Oct 2022 18:29:55 +0300 Subject: [PATCH 57/64] app.py --- app.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/app.py b/app.py index 12b4b8d..5c9148c 100644 --- a/app.py +++ b/app.py @@ -9,16 +9,26 @@ class Bot: def __init__(self, token): + self.__token = token self.bot = telebot.TeleBot(token, threaded=False) self.bot.set_update_listener(self._bot_internal_handler) self.current_msg = None self.dbname = environ.get('DB_NAME') + self.help_message = f'Hello {}\n If you wish to have my responses\nto be a seprerate message, please enter command \\noqoute\n' \ + f'FYI every photo you send me, will be stored.\n' + def set_token(self,token): def _bot_internal_handler(self, messages): """Bot internal messages handler""" for message in messages: self.current_msg = message self.handle_message(message) + @telebot.TeleBot(token, threaded=False).bot.message_handler(commands=['start']) + def start_command(self,message): + return + @self.bot.message_handler(commands=['noqoute']) + def noqoute_command(self,message): + return def start(self): """Start polling msgs from users, this function never returns""" From 8c003d2af20163eaca93419e26def8308147c052 Mon Sep 17 00:00:00 2001 From: polonskyilya Date: Thu, 27 Oct 2022 16:35:30 +0300 Subject: [PATCH 58/64] new --- app.py | 84 +++++++++------------------------------------------------- 1 file changed, 13 insertions(+), 71 deletions(-) diff --git a/app.py b/app.py index 12b4b8d..1b78119 100644 --- a/app.py +++ b/app.py @@ -6,40 +6,7 @@ #dbconnect = sqlite3.connect(r'c:\Users\Ilya Polonsky\Desktop\users9.db3') #pointer = dbconnect.cursor() #pointer.execute('CREATE TABLE IF NOT EXISTS user_bot (USER_BOT_ID TEXT,VIEW_URL TEXT,DOWNLOAD_URL TEXT)') - -class Bot: - def __init__(self, token): - self.bot = telebot.TeleBot(token, threaded=False) - self.bot.set_update_listener(self._bot_internal_handler) - self.current_msg = None - self.dbname = environ.get('DB_NAME') - - def _bot_internal_handler(self, messages): - """Bot internal messages handler""" - for message in messages: - self.current_msg = message - self.handle_message(message) - - def start(self): - """Start polling msgs from users, this function never returns""" - print(environ.get('MYSQL_IP'),environ.get('MYSQL_ROOT_USER'), - environ.get('MYSQL_ROOT_PASSWORD'), environ.get('API')) - logger.info(f'{self.__class__.__name__} is up and listening to new messages....') - logger.info('Telegram Bot information') - logger.info(self.bot.get_me()) - self.send_text('Hi,\nI am a bot that part of INT Devops 2022') - self.bot.infinity_polling() - - def send_text(self, text): - self.bot.send_message(self.current_msg.chat.id, text) - - def send_text_with_quote(self, text, message_id): - '''self.bot.send_message(self.current_msg.chat.id, text, reply_to_message_id=message_id)''' - self.bot.send_message(self.current_msg.chat.id, text, reply_to_message_id=message_id) - - def is_current_msg_photo(self): - return self.current_msg.content_type == 'photo' - +''' def download_user_photo(self, quality=0): """ Downloads photos sent to the Bot to `photos` directory (should be existed) @@ -52,44 +19,19 @@ def download_user_photo(self, quality=0): newFile.download(path) qr = account_by_qr(path) """ - if self.current_msg.content_type != 'photo': - raise RuntimeError(f'Message content of type \'photo\' expected, but got {self.current_msg["content_type"]}') - # TODO save `data` as a photo in `file_info.file_path` path - - def handle_message(self, message): - """Bot Main message handler""" - logger.info(f'Incoming message: {message}') - logger.info(f'user_id:{message.from_user.id}') - if message.content_type == 'text': - #query = f"SELECT link_download FROM {self.dbname} WHERE search_phrase = 'strangeshithappened'" - #self.mycursor.execute(query) - self.send_text(f'Your link: ' - f'{utils.search_download_youtube_video(message.text)}') - if '$please don\'t quote' in message.text: - self.send_text(f'Your link: ' - f'{utils.search_download_youtube_video(message.text, user_id=message.from_user.id)}') - else: - self.send_text_with_quote(utils.search_download_youtube_video(message.text, - user_id=message.from_user.id), - message_id=message.message_id) - self.send_text(f'type: ' - f'{self.current_msg.content_type}') - - - -class QuoteBot(Bot): - '''def handle_message(self, message): - if message.text != 'Don\'t quote me please': - self.send_text_with_quote(utils.search_download_youtube_video(message.text, user_id=message.from_user.id), - message_id=message.message_id) +''' +''' +text, audio, document, photo, sticker, video, video_note, voice, location, contact, new_chat_members, left_chat_member, +new_chat_title, new_chat_photo, delete_chat_photo, group_chat_created, supergroup_chat_created, channel_chat_created, +migrate_to_chat_id, migrate_from_chat_id, pinned_message, web_app_data ''' -class YoutubeBot(Bot): - pass - +bot = telebot.TeleBot('5683443990:AAHvz0aQwW8ZI92KqIEnxw-6hh2jxy_6MDw') # creating a instance +@bot.message_handler(content_types=['audio','voice','location']) +def not_relevant(message): + bot.reply_to(message,'Not Relevant') +def main(): + bot.polling() # looking for message if __name__ == '__main__': - my_bot = Bot(environ.get('API')) - my_bot.start() - - + main() From 1d65434f2557413b578847ae2d35d07f1f3b6482 Mon Sep 17 00:00:00 2001 From: Ilya Polonsky Date: Fri, 28 Oct 2022 07:10:16 +0300 Subject: [PATCH 59/64] app.py --- app.py | 58 +++++++++++++++++++++++++++++++++++--------------------- utils.py | 2 +- 2 files changed, 37 insertions(+), 23 deletions(-) diff --git a/app.py b/app.py index 1b78119..2891cdc 100644 --- a/app.py +++ b/app.py @@ -1,4 +1,4 @@ -import telebot,sqlite3,utils +import telebot,sqlite3,utils,re from utils import search_download_youtube_video from loguru import logger from os import environ @@ -6,32 +6,46 @@ #dbconnect = sqlite3.connect(r'c:\Users\Ilya Polonsky\Desktop\users9.db3') #pointer = dbconnect.cursor() #pointer.execute('CREATE TABLE IF NOT EXISTS user_bot (USER_BOT_ID TEXT,VIEW_URL TEXT,DOWNLOAD_URL TEXT)') -''' - def download_user_photo(self, quality=0): - """ - Downloads photos sent to the Bot to `photos` directory (should be existed) - :param quality: integer representing the file quality. Allowed values are [0, 1, 2, 3] - :return: - image = update.message.photo[-1] - path = '{1}download/{0}.jpg'.format(image.file_id, qr_folder_path) - #print(image) - newFile = bot.getFile(image.file_id) - newFile.download(path) - qr = account_by_qr(path) - """ -''' -''' -text, audio, document, photo, sticker, video, video_note, voice, location, contact, new_chat_members, left_chat_member, -new_chat_title, new_chat_photo, delete_chat_photo, group_chat_created, supergroup_chat_created, channel_chat_created, -migrate_to_chat_id, migrate_from_chat_id, pinned_message, web_app_data -''' bot = telebot.TeleBot('5683443990:AAHvz0aQwW8ZI92KqIEnxw-6hh2jxy_6MDw') # creating a instance -@bot.message_handler(content_types=['audio','voice','location']) +dbconnect = sqlite3.connect(r'c:\Users\Ilya Polonsky\Desktop\users9.db3') +pointer = dbconnect.cursor() +pointer.execute('CREATE TABLE IF NOT EXISTS user_bot (USER_BOT_ID TEXT,VIEW_URL TEXT,DOWNLOAD_URL TEXT,PHOTO_ROOT TEXT, SEARCH_PHRASE TEXT)') + + +def database_check(text_to_search,user_id,photo_root=''): + sql_query = (f'''SELECT * WHERE SEARCH_PHRASE = {text_to_search}''') + result = pointer.execute(sql_query).fetchone() + if result: + return result[0][3] + else: + sql_query = (f'''INSERT INTO user_bot (USER_BOT_ID,VIEW_URL,DOWNLOAD_URL,PHOTO_ROOT, SEARCH_PHRASE) VALUES(?,?,?,?,?)''') + links = utils.search_download_youtube_video() + data = (user_id,links['youtube_url'], links['download_url'],photo_root,text_to_search) + pointer.execute(sql_query,data) + return links['download_url'] + + +@bot.message_handler(content_types=['audio', 'document','sticker','video','video_note','voice', 'location', 'contact', 'new_chat_members', 'left_chat_member', +'new_chat_title', 'new_chat_photo', 'delete_chat_photo', 'group_chat_created', 'supergroup_chat_created', 'channel_chat_created', +'migrate_to_chat_id', 'migrate_from_chat_id', 'pinned_message', 'web_app_data']) def not_relevant(message): - bot.reply_to(message,'Not Relevant') + bot.reply_to(message,'Sorry, but at this point of time\nthis type of enterence is not supported.') + + +@bot.message_handler(content_types=['photo']) +def down_(message): + bot.reply_to(message, 'Not Relevant') + +@bot.message_handler(content_types=['text']) +def text_message(message): + clean_text = message.text + bot.reply_to(message, database_check(clean_text)) + + def main(): bot.polling() # looking for message + if __name__ == '__main__': main() diff --git a/utils.py b/utils.py index 639977b..2cc5a9f 100644 --- a/utils.py +++ b/utils.py @@ -22,7 +22,7 @@ def search_download_youtube_video(video_name, num_results=1,user_id=0,download=F for format in videos[0]['formats']: if format['format_id'] == '22' or format['format_id'] == '18': print(f'Download Video:\n{format["url"]}') - return format["url"] + return {'download':format["url"],'youtube_url':videos[0]['webpage_url']} #mycursor = mydb.cursor() ''' sql_query = "INSERT INTO users (user_bot_id,search_phrase,link_view,link_download) " \ "VALUES (%s, %s, %s, %s)" From f51ec41cbddeee31b13103ddeee08b45853a8e11 Mon Sep 17 00:00:00 2001 From: polonskyilya Date: Fri, 28 Oct 2022 13:38:23 +0300 Subject: [PATCH 60/64] changes in app.py for container changes in Docker-compose.yaml changes in requirements.txt changes in utils.py --- .gitignore | 1 - Docker-compose.yaml | 20 ------ app.py | 146 ++++++++++++++++++++++++++++++++++++-------- requirements.txt | 6 +- utils.py | 42 +------------ 5 files changed, 127 insertions(+), 88 deletions(-) diff --git a/.gitignore b/.gitignore index 1e83827..ba12a9c 100644 --- a/.gitignore +++ b/.gitignore @@ -7,7 +7,6 @@ __pycache__/ # C extensions *.so -ilya.py # ignore .pem file *.pem diff --git a/Docker-compose.yaml b/Docker-compose.yaml index c605c06..83c0b6a 100644 --- a/Docker-compose.yaml +++ b/Docker-compose.yaml @@ -1,22 +1,5 @@ version: '2.0' services: - #db-node: - # container_name: db-node65 - # image: database:001 - # build: - # context: . - # dockerfile: Dockerfile_SQL - #restart: always - # env_file: - # - .env - # networks: - # bond: - # aliases: - # - mysql_db - # ipv4_address: 192.168.20.200 - # volumes: - #- /appdata/db/init:/docker-entrypoint-initdb.d - # - /appdata/db/db_data:/var/lib/mysql app: env_file: - .env @@ -30,14 +13,11 @@ services: aliases: - ilyaapp ipv4_address: 192.168.20.100 - #depends_on: - # - db-node volumes: - /appdata/img:/img - /appdata/db/db_data:/db_data networks: bond: - #driver: bridge external: true #sudo docker network create bond --driver=bridge --subnet=192.0.0.0/8 #https://onexlab-io.medium.com/docker-compose-mysql-initdb-4c3388047dea \ No newline at end of file diff --git a/app.py b/app.py index 2891cdc..343ddab 100644 --- a/app.py +++ b/app.py @@ -1,50 +1,144 @@ -import telebot,sqlite3,utils,re -from utils import search_download_youtube_video +import telebot,sqlite3,utils,os,uuid,datetime from loguru import logger -from os import environ +api=os.environ.get('API') +img_path=('/appdata/img') +bot = telebot.TeleBot(api) +sql_path=('/appdata/db/db_data/bot_sql.db3') +logger.info(f'{__name__} Bot instance created') +dbconnect = sqlite3.connect(sql_path,check_same_thread=False) +logger.info(f'{__name__} Database connected') +pointer = dbconnect.cursor() +pointer.execute('CREATE TABLE IF NOT EXISTS user_bot (USER_BOT_ID TEXT,VIEW_URL TEXT,DOWNLOAD_URL TEXT' + ',PHOTO_ROOT TEXT, SEARCH_PHRASE TEXT)') +pointer.execute('CREATE TABLE IF NOT EXISTS user_data (USER_BOT_ID TEXT,REPLY TEXT)') -#dbconnect = sqlite3.connect(r'c:\Users\Ilya Polonsky\Desktop\users9.db3') -#pointer = dbconnect.cursor() -#pointer.execute('CREATE TABLE IF NOT EXISTS user_bot (USER_BOT_ID TEXT,VIEW_URL TEXT,DOWNLOAD_URL TEXT)') -bot = telebot.TeleBot('5683443990:AAHvz0aQwW8ZI92KqIEnxw-6hh2jxy_6MDw') # creating a instance -dbconnect = sqlite3.connect(r'c:\Users\Ilya Polonsky\Desktop\users9.db3') -pointer = dbconnect.cursor() -pointer.execute('CREATE TABLE IF NOT EXISTS user_bot (USER_BOT_ID TEXT,VIEW_URL TEXT,DOWNLOAD_URL TEXT,PHOTO_ROOT TEXT, SEARCH_PHRASE TEXT)') +def user_reply_check(user_id): + logger.info(f"{__name__} Check Reply or not User's preference in user_data table") + result = pointer.execute('''SELECT REPLY FROM user_data WHERE USER_BOT_ID=?''', (str(user_id),)).fetchone() + if not result: + pointer.execute('''INSERT INTO user_data (USER_BOT_ID,REPLY) VALUES(?,?)''', (str(user_id), 'true',)) + dbconnect.commit() + return True + else: + if result[0] == '1': + logger.info(f"{__name__} User's prefernce is reply") + return True + else: + logger.info(f"{__name__} User's prefernce is not reply") + return False def database_check(text_to_search,user_id,photo_root=''): - sql_query = (f'''SELECT * WHERE SEARCH_PHRASE = {text_to_search}''') - result = pointer.execute(sql_query).fetchone() + logger.info(f"{__name__} Check id search phrase exists in database") + sql_query = (f'''SELECT DOWNLOAD_URL FROM user_bot WHERE SEARCH_PHRASE=?;''') + result = pointer.execute(sql_query, (text_to_search,)).fetchone() if result: - return result[0][3] + return result[0] else: - sql_query = (f'''INSERT INTO user_bot (USER_BOT_ID,VIEW_URL,DOWNLOAD_URL,PHOTO_ROOT, SEARCH_PHRASE) VALUES(?,?,?,?,?)''') - links = utils.search_download_youtube_video() - data = (user_id,links['youtube_url'], links['download_url'],photo_root,text_to_search) - pointer.execute(sql_query,data) + logger.info(f"{__name__} Search phrase doesn't exist in database, the data inserted") + sql_query = (f'''INSERT INTO user_bot + (USER_BOT_ID,VIEW_URL,DOWNLOAD_URL,PHOTO_ROOT, SEARCH_PHRASE) VALUES(?,?,?,?,?)''') + links = utils.search_download_youtube_video(text_to_search) + logger.info(f"{__name__} Recieved data from youtube") + data = (user_id,links['youtube_url'], links['download_url'], photo_root, text_to_search) + pointer.execute(sql_query, data) + dbconnect.commit() return links['download_url'] -@bot.message_handler(content_types=['audio', 'document','sticker','video','video_note','voice', 'location', 'contact', 'new_chat_members', 'left_chat_member', -'new_chat_title', 'new_chat_photo', 'delete_chat_photo', 'group_chat_created', 'supergroup_chat_created', 'channel_chat_created', -'migrate_to_chat_id', 'migrate_from_chat_id', 'pinned_message', 'web_app_data']) +@bot.message_handler(commands=['start', 'help', 'START', 'HELP']) +def help_start_commands(message): + start_time = datetime.datetime.now() + logger.info(f"{__name__} Response to help/start command") + bot.send_message(chat_id=message.chat.id,text=f'Hello {message.from_user.username}\nThe supported inputs are:' + f' Text and Photos.\nYou type a text and will recieve a link\n' + f'to a video from youtube that you can\neasily to save on your device.\nI will only send you a HQ ' + f'videos, otherwise you shall recieve\n' + f'No video with a decent quality available\n' + f'\nOnce you send a photo it will be downloaded and saved.\n' + f'For help use /help command.\n' + f'By default all the message from me are in reply mode\nHowever, If you wish\n' + f'to have message from me to be in not reply mode,' + f' use /noqoute command\nand /qoute command\nreturn the default.' + f'\nIt took:{datetime.datetime.now() - start_time}') + + +@bot.message_handler(commands=['noqoute', 'NOQOUTE']) +def noqoute_on(message): + start_time = datetime.datetime.now() + logger.info(f"{__name__} NoReply set") + pointer.execute('''UPDATE user_data SET REPLY=false WHERE USER_BOT_ID=?''',(str(message.from_user.id),)) + dbconnect.commit() + bot.send_message(chat_id=message.chat.id,text=f'Dear {message.from_user.username}\n' + f'Qoute Mode is OFF\nIt took:{datetime.datetime.now() - start_time}') + + +@bot.message_handler(commands=['qoute', 'QOUTE']) +def qoute_on(message): + start_time = datetime.datetime.now() + logger.info(f"{__name__} Replay set") + pointer.execute('''UPDATE user_data SET REPLY=true WHERE USER_BOT_ID=?''', (str(message.from_user.id),)) + dbconnect.commit() + bot.reply_to(message,f'Dear {message.from_user.username}\n' + f'Qoute Mode is ON\nIt took:{datetime.datetime.now() - start_time}') + + +@bot.message_handler(content_types=['audio', 'document','sticker','video','video_note','voice', 'location', 'contact', + 'new_chat_members', 'left_chat_member', 'new_chat_title', 'new_chat_photo', + 'delete_chat_photo', 'group_chat_created', 'supergroup_chat_created', + 'channel_chat_created', 'migrate_to_chat_id', 'migrate_from_chat_id', + 'pinned_message', 'web_app_data']) def not_relevant(message): - bot.reply_to(message,'Sorry, but at this point of time\nthis type of enterence is not supported.') + start_time = datetime.datetime.now() + logger.info(f"{__name__} Response to all the content types except text or photo") + if user_reply_check(message.from_user.id): + bot.reply_to(message,'Sorry, but at this point of time\nthis type of enterence is not supported.') + else: + bot.send_message(chat_id=message.chat.id, text=f'Sorry, but at this point of time\nthis typ' + f'e of enterence is not supported.\n' + f'It took:{datetime.datetime.now() - start_time}') @bot.message_handler(content_types=['photo']) -def down_(message): - bot.reply_to(message, 'Not Relevant') +def download_photo(message): + start_time = datetime.datetime.now() + fileID = message.photo[-1].file_id + file_info = bot.get_file(fileID) + downloaded_file = bot.download_file(file_info.file_path) + img=f'{img_path}/{message.from_user.id}' + if not os.path.exists(img): + os.makedirs(img) + file_name = f'{message.from_user.id}_{str(uuid.uuid4())}.jpg' + with open(r"{path}/{filename}.jpg".format(path=img,filename=f'{file_name}' + ,user_id=message.from_user.id), 'wb') as new_file: + new_file.write(downloaded_file) + logger.info(f"{__name__} Photo downloaded to {img} as {file_name}") + if user_reply_check(message.from_user.id): + bot.reply_to(message, f'Your photo:\nfileId:{fileID}\nFile Info:{file_info}\n' + f'saved with an Unique name in jpg format\nIt took' + f':{datetime.datetime.now() - start_time}') + else: + bot.send_message(chat_id=message.chat.id, + text=f'Your photo:\nfileId:{fileID}\nFile Info:{file_info}\n' + f'saved with an Unique name in jpg format\nIt took' + f':{datetime.datetime.now() - start_time}') + @bot.message_handler(content_types=['text']) def text_message(message): - clean_text = message.text - bot.reply_to(message, database_check(clean_text)) + start_time = datetime.datetime.now() + logger.info(f"{__name__} Main text content type handle executing") + if user_reply_check(message.from_user.id): + bot.reply_to(message, f'{database_check(message.text,message.from_user.id)}\n' + f'It took: {datetime.datetime.now() - start_time}') + else: + bot.send_message(chat_id=message.chat.id,text=f'{database_check(message.text,message.from_user.id)}\n' + f'It took: {datetime.datetime.now() - start_time}') def main(): - bot.polling() # looking for message + bot.polling() if __name__ == '__main__': diff --git a/requirements.txt b/requirements.txt index a1e1b2c..3e7e410 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,5 +1,7 @@ pyTelegramBotAPI yt-dlp>=2022.6.29 loguru -mysql.connector-python -pythonping \ No newline at end of file +sqlite3 +os +datetime +uuid diff --git a/utils.py b/utils.py index 2cc5a9f..23017d3 100644 --- a/utils.py +++ b/utils.py @@ -1,47 +1,11 @@ -import time from yt_dlp import YoutubeDL -import mysql.connector -from os import environ -'''mydb = mysql.connector.connect( - host=environ.get('MYSQL_IP'), - user=environ.get('MYSQL_ROOT_USER'), - password=environ.get('MYSQL_ROOT_PASSWORD'))''' +from loguru import logger def search_download_youtube_video(video_name, num_results=1,user_id=0,download=False): - """ - This function downloads the first num_results search results from Youtube - :param video_name: string of the video name - :param num_results: integer representing how many videos to download - :return: list of paths to your downloaded video files - """ - results = [] with YoutubeDL() as ydl: + logger.info(f"{__name__}YoutubeDL from Util initiated") videos = ydl.extract_info(f"ytsearch{1}:{video_name}", download=False)['entries'] - print(videos[0], 'type', type(videos[0])) for format in videos[0]['formats']: if format['format_id'] == '22' or format['format_id'] == '18': - print(f'Download Video:\n{format["url"]}') - return {'download':format["url"],'youtube_url':videos[0]['webpage_url']} - #mycursor = mydb.cursor() -''' sql_query = "INSERT INTO users (user_bot_id,search_phrase,link_view,link_download) " \ - "VALUES (%s, %s, %s, %s)" - values = (user_id,video_name,videos[0]['webpage_url'],format["url"]) - mycursor.execute(sql,val) - mydb.commit() - #mycursor.rowcount - data_dict = {'title':videos[0]['title'],'view':videos[0]['webpage_url'],'download':format["url"]}''' -''' - for video in videos: - print(f'VIEW:\n{video["webpage_url"]}\nDownload:\n{video}') - return - results.append({ - 'filename': ydl.prepare_filename(video), - 'video_id': video['id'], - 'title': video['title'], - 'url': video['webpage_url'] - }) - print(f'VIEW:\n{video["webpage_url"]}\nDownload:\n{video["formats"][20]}') - ''' - -#search_download_youtube_video('hello') \ No newline at end of file + return {'download_url':format["url"],'youtube_url':videos[0]['webpage_url']} From cb5c887f1a9507303571557a0190f5ca883d84c7 Mon Sep 17 00:00:00 2001 From: polonskyilya Date: Fri, 28 Oct 2022 13:45:53 +0300 Subject: [PATCH 61/64] removing built in libraries from requirements.txt --- Dockerfile_SQL | 21 --------------------- ilya.py | 16 ---------------- initmysql.sql | 14 -------------- new.py | 48 ------------------------------------------------ requirements.txt | 4 ---- 5 files changed, 103 deletions(-) delete mode 100644 Dockerfile_SQL delete mode 100644 ilya.py delete mode 100644 initmysql.sql delete mode 100644 new.py diff --git a/Dockerfile_SQL b/Dockerfile_SQL deleted file mode 100644 index a4aaf5a..0000000 --- a/Dockerfile_SQL +++ /dev/null @@ -1,21 +0,0 @@ -FROM mysql:latest -WORKDIR / - -MAINTAINER IlyaPolonsky - -RUN chown -R mysql:root /var/lib/mysql/ - -ARG MYSQL_DB_NAME -ARG MYSQL_ROOT_USER -ARG MYSQL_ROOT_PASSWORD -ARG MYSQL_PASSWORD - -ENV MYSQL_DATABASE=$MYSQL_DB_NAME -ENV MYSQL_USER=$MYSQL_ROOT_USER -ENV MYSQL_PASSWORD=$MYSQL__ROOT_PASSWORD -ENV MYSQL_ROOT_PASSWORD=$MYSQL_ROOT_PASSWORD -WORKDIR /appdata/db/init -ADD . /etc/mysql/initmysql.sql -RUN cp -r /etc/mysql/initmysql.sql /docker-entrypoint-initdb.d - -EXPOSE 3306 \ No newline at end of file diff --git a/ilya.py b/ilya.py deleted file mode 100644 index 115322b..0000000 --- a/ilya.py +++ /dev/null @@ -1,16 +0,0 @@ -import sqlite3 -dbconnect = sqlite3.connect(r'c:\Users\Ilya Polonsky\Desktop\users9.db3') -pointer = dbconnect.cursor() -pointer.execute('CREATE TABLE IF NOT EXISTS user_bot (USER_BOT_ID TEXT,VIEW_URL TEXT,DOWNLOAD_URL TEXT)') -value1 = 'xczxc9777xczxczxcxzczxczxc7779999465465464654999' -value2 = '55555zqqqqqz654654654zzz' -value3 = 'xxcxcxzczxcxx66465465454654654' -query = ("INSERT INTO user_bot values (?,?,?)") -#pointer.execute(query,[value1,value2,value3]) -#dbconnect.commit() -results = pointer.execute("SELECT * FROM user_bot WHERE VIEW_URL = 'uuu'").fetchall() -for y in results: - print(y,type(results)) -if not results: - print('EMPTY') -pointer.close() diff --git a/initmysql.sql b/initmysql.sql deleted file mode 100644 index 583d1bc..0000000 --- a/initmysql.sql +++ /dev/null @@ -1,14 +0,0 @@ -USE mysql; -CREATE USER MY_ROOT_USER@$MYSQL_IP IDENTIFIED BY $MYSQL_ROOT_PASSWORD; -GRANT ALL PRIVILEGES ON *.* TO MY_ROOT_USER@$MYSQL_IP; -FLUSH PRIVILEGES; -CREATE DATABASE IF NOT EXISTS bot; -USE bot -CREATE TABLE IF NOT EXISTS 'users' (id int NOT NULL AUTO_INCREMENT PRIMARY KEY, - user_id_bot VARCHAR(255), - search_phrase TEXT NOT NULL DEFAULT '', - link_view TEXT NOT NULL DEFAULT '', - link_download TEXT NOT NULL DEFAULT '' - ); -INSERT INTO users(user_id_bot,search_phrase,link_view,link_download) -VALUES ('999999','strangeshithappened','https://polonsky.net','https://aws.com') \ No newline at end of file diff --git a/new.py b/new.py deleted file mode 100644 index 7a165bb..0000000 --- a/new.py +++ /dev/null @@ -1,48 +0,0 @@ -from pythonping import ping -import sys -import os -import mysql.connector -from mysql.connector import errorcode -import sqlite3 -import os -import sqlite3 - -data_path = '.' -filename = 'whatever' - -os.makedirs(data_path, exist_ok=True) - -db = sqlite3.connect(data_path + filename + '.sqlite3') -db.execute('CREATE TABLE IF NOT EXISTS TableName (id INTEGER PRIMARY KEY, quantity INTEGER)') -db.close() -sqliteConnection = sqlite3.connect('whatever.sqlite3') -sql_query = """SELECT name FROM sqlite_master - WHERE type='table';""" -cursor = sqliteConnection.cursor() -cursor.execute(sql_query) -print(cursor.fetchall()) -'''try: - cnx = mysql.connector.connect( - host="192.168.20.200", - user="ilya", - password="ilya", - auth_plugin='mysql_native_password' -) -except mysql.connector.Error as err: - x = err - if err.errno == errorcode.ER_ACCESS_DENIED_ERROR: - m=f"Something is wrong with your user name or password {err.errno}" - elif err.errno == errorcode.ER_BAD_DB_ERROR: - m=f"Database does not exist {err.errno}" - else: - print(err) -else: - cnx.close() - -with open('/img/file.txt', 'w') as sys.stdout: - print(f'FROM ENV\n{os.environ.get("MYSQL_IP")}\n{os.environ.get("MYSQL_ROOT_USER")}\n' - f'{os.environ.get("MYSQL_ROOT_PASSWORD")}\n{os.environ.get("API")}\n') - print(f'GOOGLE PING\n{ping("8.8.8.8")}') - print(f'SQL PING\n{ping("192.168.20.200")}') - print(mysql.connector.Error,x) -# print(f'FROM SQL\n{mycursor.fetchone()}')''' \ No newline at end of file diff --git a/requirements.txt b/requirements.txt index 3e7e410..4e35a49 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,7 +1,3 @@ pyTelegramBotAPI yt-dlp>=2022.6.29 loguru -sqlite3 -os -datetime -uuid From c332adf1462eb702da02be0308c8445f2a789b23 Mon Sep 17 00:00:00 2001 From: polonskyilya Date: Fri, 28 Oct 2022 13:54:44 +0300 Subject: [PATCH 62/64] app.py Fixing paths --- app.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app.py b/app.py index 343ddab..bd80b0f 100644 --- a/app.py +++ b/app.py @@ -1,9 +1,9 @@ import telebot,sqlite3,utils,os,uuid,datetime from loguru import logger api=os.environ.get('API') -img_path=('/appdata/img') +img_path=('/img') bot = telebot.TeleBot(api) -sql_path=('/appdata/db/db_data/bot_sql.db3') +sql_path=('/db_data/bot_sql.db3') logger.info(f'{__name__} Bot instance created') dbconnect = sqlite3.connect(sql_path,check_same_thread=False) logger.info(f'{__name__} Database connected') From f7d35bd143f17b4641d8a16e45fb7fd553226dc6 Mon Sep 17 00:00:00 2001 From: polonskyilya Date: Fri, 28 Oct 2022 15:40:55 +0300 Subject: [PATCH 63/64] app.py Documentations PEP 8 Corrections --- Docker-compose.yaml | 2 - app.py | 145 ++++++++++++++++++++++++++++++++++++-------- 2 files changed, 120 insertions(+), 27 deletions(-) diff --git a/Docker-compose.yaml b/Docker-compose.yaml index 83c0b6a..70bafeb 100644 --- a/Docker-compose.yaml +++ b/Docker-compose.yaml @@ -19,5 +19,3 @@ services: networks: bond: external: true - #sudo docker network create bond --driver=bridge --subnet=192.0.0.0/8 - #https://onexlab-io.medium.com/docker-compose-mysql-initdb-4c3388047dea \ No newline at end of file diff --git a/app.py b/app.py index bd80b0f..a612be8 100644 --- a/app.py +++ b/app.py @@ -1,11 +1,41 @@ -import telebot,sqlite3,utils,os,uuid,datetime +""" + By: Ilya Polonsky + For: INT College + Chat Bot on the basis of Telegram telebot + Designed for Linux and Docker container with Docker-compose configuration. + bot name IP0810. + The code designed to recieve an text from the user, find it in youtube and return to the user downloadable + link with synchronised audio and video. + the link contain video not less then 360p. + The code designed with multiple handlers based on commands: + /help - Responses with text explaining the bot + /start - Responses with text explaining the bot + /quote - Sets the desired method of messaging from the bot as reply mode --> every message will be a reply + to the user's input + /noquote - Sets the desired method of messaging from the bot as NO Reply mode. + Code designed to work with SQL Database (configured with sqlite but can be migrated to any database) + user_bot table: + USER_BOT_ID TEXT --> user's id + VIEW_URL TEXT --> youtube url - NOT DOWNLOADABLE + DOWNLOAD_URL TEXT --> long url DONLOADABLE + PHOTO_ROOT TEXT --> photo root NOT IN USE, YET + SEARCH_PHRASE TEXT --> search phrase from user + + user_data table: + USER_BOT_ID TEXT --> user's id + REPLY --> 0/1 Whether user chose to have a reply mode or not + all bot's actions measured with time and users recievs a time it took in every request. + TODOs list all the updates that will increase code's functionality and security. +""" + +import telebot, sqlite3, utils, os, uuid, datetime from loguru import logger -api=os.environ.get('API') -img_path=('/img') +api = os.environ.get('API') +img_path = '/img' bot = telebot.TeleBot(api) -sql_path=('/db_data/bot_sql.db3') +sql_path = '/db_data/bot_sql.db3' logger.info(f'{__name__} Bot instance created') -dbconnect = sqlite3.connect(sql_path,check_same_thread=False) +dbconnect = sqlite3.connect(sql_path, check_same_thread=False) logger.info(f'{__name__} Database connected') pointer = dbconnect.cursor() pointer.execute('CREATE TABLE IF NOT EXISTS user_bot (USER_BOT_ID TEXT,VIEW_URL TEXT,DOWNLOAD_URL TEXT' @@ -14,6 +44,11 @@ def user_reply_check(user_id): + ''' + Function that checks the use's prefered mode Reply or Not + :param user_id: + :return: boolean + ''' logger.info(f"{__name__} Check Reply or not User's preference in user_data table") result = pointer.execute('''SELECT REPLY FROM user_data WHERE USER_BOT_ID=?''', (str(user_id),)).fetchone() if not result: @@ -29,9 +64,17 @@ def user_reply_check(user_id): return False -def database_check(text_to_search,user_id,photo_root=''): +def database_check(text_to_search, user_id, photo_root=''): + ''' + function that checks if the input text is in database that saves search time + and prevents additional requests with utils. + :param text_to_search: + :param user_id: + :param photo_root: + :return: string + ''' logger.info(f"{__name__} Check id search phrase exists in database") - sql_query = (f'''SELECT DOWNLOAD_URL FROM user_bot WHERE SEARCH_PHRASE=?;''') + sql_query = f'''SELECT DOWNLOAD_URL FROM user_bot WHERE SEARCH_PHRASE=?;''' result = pointer.execute(sql_query, (text_to_search,)).fetchone() if result: return result[0] @@ -41,7 +84,7 @@ def database_check(text_to_search,user_id,photo_root=''): (USER_BOT_ID,VIEW_URL,DOWNLOAD_URL,PHOTO_ROOT, SEARCH_PHRASE) VALUES(?,?,?,?,?)''') links = utils.search_download_youtube_video(text_to_search) logger.info(f"{__name__} Recieved data from youtube") - data = (user_id,links['youtube_url'], links['download_url'], photo_root, text_to_search) + data = (user_id, links['youtube_url'], links['download_url'], photo_root, text_to_search) pointer.execute(sql_query, data) dbconnect.commit() return links['download_url'] @@ -49,9 +92,15 @@ def database_check(text_to_search,user_id,photo_root=''): @bot.message_handler(commands=['start', 'help', 'START', 'HELP']) def help_start_commands(message): + ''' + Function handles commands start and help + :param message: object message from Telegram + :return: Function send messages to user within bot + ''' start_time = datetime.datetime.now() logger.info(f"{__name__} Response to help/start command") - bot.send_message(chat_id=message.chat.id,text=f'Hello {message.from_user.username}\nThe supported inputs are:' + # TODO adding try and except + bot.send_message(chat_id=message.chat.id, text=f'Hello {message.from_user.username}\nThe supported inputs are:' f' Text and Photos.\nYou type a text and will recieve a link\n' f'to a video from youtube that you can\neasily to save on your device.\nI will only send you a HQ ' f'videos, otherwise you shall recieve\n' @@ -66,35 +115,56 @@ def help_start_commands(message): @bot.message_handler(commands=['noqoute', 'NOQOUTE']) def noqoute_on(message): + ''' + Function handles commands noquite command + :param message: object message from Telegram + :return: Function send messages to user within bot + ''' start_time = datetime.datetime.now() logger.info(f"{__name__} NoReply set") - pointer.execute('''UPDATE user_data SET REPLY=false WHERE USER_BOT_ID=?''',(str(message.from_user.id),)) + # TODO adding try and except + pointer.execute('''UPDATE user_data SET REPLY=false WHERE USER_BOT_ID=?''', (str(message.from_user.id),)) dbconnect.commit() - bot.send_message(chat_id=message.chat.id,text=f'Dear {message.from_user.username}\n' - f'Qoute Mode is OFF\nIt took:{datetime.datetime.now() - start_time}') + # TODO adding try and except + bot.send_message(chat_id=message.chat.id, text=f'Dear {message.from_user.username}\n' + f'Qoute Mode is OFF\nIt took:{datetime.datetime.now() - start_time}') @bot.message_handler(commands=['qoute', 'QOUTE']) def qoute_on(message): + ''' + Function handles commands quite command + :param message: object message from Telegram + :return: Function send messages to user within bot + ''' start_time = datetime.datetime.now() logger.info(f"{__name__} Replay set") + # TODO adding try and except pointer.execute('''UPDATE user_data SET REPLY=true WHERE USER_BOT_ID=?''', (str(message.from_user.id),)) dbconnect.commit() - bot.reply_to(message,f'Dear {message.from_user.username}\n' - f'Qoute Mode is ON\nIt took:{datetime.datetime.now() - start_time}') + # TODO adding try and except + bot.reply_to(message, f'Dear {message.from_user.username}\n' + f'Qoute Mode is ON\nIt took:{datetime.datetime.now() - start_time}') -@bot.message_handler(content_types=['audio', 'document','sticker','video','video_note','voice', 'location', 'contact', - 'new_chat_members', 'left_chat_member', 'new_chat_title', 'new_chat_photo', - 'delete_chat_photo', 'group_chat_created', 'supergroup_chat_created', - 'channel_chat_created', 'migrate_to_chat_id', 'migrate_from_chat_id', - 'pinned_message', 'web_app_data']) +@bot.message_handler(content_types=['audio', 'document', 'sticker', 'video', 'video_note', 'voice', 'location', + 'contact', 'new_chat_members', 'left_chat_member', 'new_chat_title', + 'new_chat_photo', 'delete_chat_photo', 'group_chat_created', + 'supergroup_chat_created', 'channel_chat_created', 'migrate_to_chat_id', + 'migrate_from_chat_id', 'pinned_message', 'web_app_data']) def not_relevant(message): + ''' + Function handles all content types except photo and text. + :param message: object message from Telegram + :return: Function send messages to user within bot + ''' start_time = datetime.datetime.now() logger.info(f"{__name__} Response to all the content types except text or photo") if user_reply_check(message.from_user.id): - bot.reply_to(message,'Sorry, but at this point of time\nthis type of enterence is not supported.') + # TODO adding try and except + bot.reply_to(message, 'Sorry, but at this point of time\nthis type of enterence is not supported.') else: + # TODO adding try and except bot.send_message(chat_id=message.chat.id, text=f'Sorry, but at this point of time\nthis typ' f'e of enterence is not supported.\n' f'It took:{datetime.datetime.now() - start_time}') @@ -102,42 +172,67 @@ def not_relevant(message): @bot.message_handler(content_types=['photo']) def download_photo(message): + ''' + Function handles photo content type message. Donloads a photo and stores it in + {img_path}/{message.from_user.id}/{message.from_user.id}_UUID.jpg + :param message: object message from Telegram + :return: Function send messages to user within bot + ''' start_time = datetime.datetime.now() fileID = message.photo[-1].file_id file_info = bot.get_file(fileID) downloaded_file = bot.download_file(file_info.file_path) - img=f'{img_path}/{message.from_user.id}' + img = f'{img_path}/{message.from_user.id}' if not os.path.exists(img): os.makedirs(img) file_name = f'{message.from_user.id}_{str(uuid.uuid4())}.jpg' - with open(r"{path}/{filename}.jpg".format(path=img,filename=f'{file_name}' - ,user_id=message.from_user.id), 'wb') as new_file: + # TODO adding try and except + with open(r"{path}/{filename}.jpg".format(path=img, filename=f'{file_name}', + user_id=message.from_user.id), 'wb') as new_file: new_file.write(downloaded_file) logger.info(f"{__name__} Photo downloaded to {img} as {file_name}") if user_reply_check(message.from_user.id): + # TODO adding try and except bot.reply_to(message, f'Your photo:\nfileId:{fileID}\nFile Info:{file_info}\n' f'saved with an Unique name in jpg format\nIt took' f':{datetime.datetime.now() - start_time}') else: + # TODO adding try and except bot.send_message(chat_id=message.chat.id, text=f'Your photo:\nfileId:{fileID}\nFile Info:{file_info}\n' f'saved with an Unique name in jpg format\nIt took' f':{datetime.datetime.now() - start_time}') +# TODO adding regex validation for input preventing injections. +# TODO adding parsing of the input from special charachters along with right and left trims. +# TODO adding validation preventing code with white space input or another abnormal input. + @bot.message_handler(content_types=['text']) def text_message(message): + ''' + Function handles text content type message. invokes a function database_check. + :param message: object message from Telegram + :return: Function send messages to user within bot + ''' start_time = datetime.datetime.now() logger.info(f"{__name__} Main text content type handle executing") if user_reply_check(message.from_user.id): + # TODO adding try and except bot.reply_to(message, f'{database_check(message.text,message.from_user.id)}\n' f'It took: {datetime.datetime.now() - start_time}') else: - bot.send_message(chat_id=message.chat.id,text=f'{database_check(message.text,message.from_user.id)}\n' - f'It took: {datetime.datetime.now() - start_time}') + # TODO adding try and except + bot.send_message(chat_id=message.chat.id, text=f'{database_check(message.text,message.from_user.id)}\n' + f'It took: {datetime.datetime.now() - start_time}') def main(): + # TODO adding try and except + ''' + :return: No return + Function main activates bot polling + ''' bot.polling() From cdb56ad26807af03186d15fc3c0357164c9184fd Mon Sep 17 00:00:00 2001 From: polonskyilya Date: Fri, 28 Oct 2022 15:50:24 +0300 Subject: [PATCH 64/64] app.py Documentations PEP 8 Corrections utils.py Documentation PEP 8 Corrections --- utils.py | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/utils.py b/utils.py index 23017d3..e018469 100644 --- a/utils.py +++ b/utils.py @@ -2,10 +2,21 @@ from loguru import logger -def search_download_youtube_video(video_name, num_results=1,user_id=0,download=False): +def search_download_youtube_video(video_name, num_results=1, download=False): + ''' + Function that fetches the urls of videos from youtube + :param video_name: Search text from user + :param num_results: number of results to show, default 1 + :param download: boolean download --> if download as a file or not + :return: dictionary + ''' with YoutubeDL() as ydl: logger.info(f"{__name__}YoutubeDL from Util initiated") - videos = ydl.extract_info(f"ytsearch{1}:{video_name}", download=False)['entries'] + videos = ydl.extract_info(f"ytsearch{num_results}:{video_name}", download=download)['entries'] for format in videos[0]['formats']: if format['format_id'] == '22' or format['format_id'] == '18': - return {'download_url':format["url"],'youtube_url':videos[0]['webpage_url']} + ''' + url --> url that allows to download a file on any + device (auto download in pc) save to galery in android + ''' + return {'download_url': format["url"], 'youtube_url': videos[0]['webpage_url']}