From 9d38622528e9be715b4ef1d8d18217871413f6f1 Mon Sep 17 00:00:00 2001 From: Dan Dembinski Date: Tue, 31 Dec 2019 13:26:16 -0500 Subject: [PATCH 01/33] Made a few changes to allow docker useage. --- Dockerfile | 11 +++++++++++ main.py | 21 ++++++++++++--------- 2 files changed, 23 insertions(+), 9 deletions(-) create mode 100644 Dockerfile diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..a0258d8 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,11 @@ +FROM python:3 +ADD main.py / + +VOLUME /download/ + +RUN pip install manga-py +RUN pip install sqlalchemy +RUN pip install pymysql + + +CMD ["python", "./main.py"] \ No newline at end of file diff --git a/main.py b/main.py index cae5e21..3d43179 100644 --- a/main.py +++ b/main.py @@ -22,8 +22,9 @@ def download(): url = [] base = [] name = [] - PATH = 'Manga/' + #PATH = 'Manga/' # PATH = 'smb://MediaServer._smb._tcp.local/Downloads/Manga/' + PATH = '/download/' for x in result: # print(result[y][0]) url.append(result[y][0]) @@ -40,7 +41,8 @@ def download(): if active[0] != 0: print("""manga-py """ + base[y]+url[y] + """ -n \"""" + name[y] + """\" -d \"""" + PATH + """\" -z -g """) - execute = """manga-py """ + base[y]+url[y] + """ -n \"""" + name[y] + """\" -d \"""" + PATH + """\" -z -g """ + + execute = """manga-py """ + base[y]+url[y] + """ -n \"""" + name[y] + """\" -d \"""" + PATH + """\" -z""" os.system(execute) y = y+1 @@ -85,10 +87,11 @@ def upload_jason(): while True: print("1. Download \n 2. Upload\n 3. Exit") - val = input(">>>") - if val == "1": - download() - elif val == "2": - upload_jason() - elif val == "3": - exit() \ No newline at end of file + download() + # val = input(">>>") + # if val == "1": + # download() + # elif val == "2": + # upload_jason() + # elif val == "3": + # exit() \ No newline at end of file From 4fc3096e7c792bf33f23930301a2d88c65f063fb Mon Sep 17 00:00:00 2001 From: Dan Dembinski Date: Tue, 31 Dec 2019 13:40:21 -0500 Subject: [PATCH 02/33] made changes to save path --- main.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/main.py b/main.py index 3d43179..4a270a0 100644 --- a/main.py +++ b/main.py @@ -24,7 +24,7 @@ def download(): name = [] #PATH = 'Manga/' # PATH = 'smb://MediaServer._smb._tcp.local/Downloads/Manga/' - PATH = '/download/' + PATH = """"\download""" for x in result: # print(result[y][0]) url.append(result[y][0]) From 0d08420067d3f717aec535d2d833ae384d54dc08 Mon Sep 17 00:00:00 2001 From: Dan Dembinski Date: Tue, 31 Dec 2019 13:41:11 -0500 Subject: [PATCH 03/33] made changes to save path. v2 --- main.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/main.py b/main.py index 4a270a0..cb10849 100644 --- a/main.py +++ b/main.py @@ -24,7 +24,7 @@ def download(): name = [] #PATH = 'Manga/' # PATH = 'smb://MediaServer._smb._tcp.local/Downloads/Manga/' - PATH = """"\download""" + PATH = """"/download""" for x in result: # print(result[y][0]) url.append(result[y][0]) From 31accab702cf9ed3c07fbdded74049dadefd1d39 Mon Sep 17 00:00:00 2001 From: Dan Dembinski Date: Tue, 31 Dec 2019 14:01:03 -0500 Subject: [PATCH 04/33] made changes to save path. v3 --- main.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/main.py b/main.py index cb10849..fd689cc 100644 --- a/main.py +++ b/main.py @@ -24,7 +24,7 @@ def download(): name = [] #PATH = 'Manga/' # PATH = 'smb://MediaServer._smb._tcp.local/Downloads/Manga/' - PATH = """"/download""" + PATH = '/download' for x in result: # print(result[y][0]) url.append(result[y][0]) From c032895e932e6e06e3aab40de86ae03246260757 Mon Sep 17 00:00:00 2001 From: Dan Dembinski Date: Tue, 31 Dec 2019 14:18:24 -0500 Subject: [PATCH 05/33] Updated execute to handle new volume name argument --- main.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/main.py b/main.py index fd689cc..3ae2a2e 100644 --- a/main.py +++ b/main.py @@ -40,9 +40,9 @@ def download(): con = engine.connect() if active[0] != 0: - print("""manga-py """ + base[y]+url[y] + """ -n \"""" + name[y] + """\" -d \"""" + PATH + """\" -z -g """) + print("""manga-py """ + base[y]+url[y] + """ -n \"""" + name[y] + """\" -d \"""" + PATH + """\" -z -N """) - execute = """manga-py """ + base[y]+url[y] + """ -n \"""" + name[y] + """\" -d \"""" + PATH + """\" -z""" + execute = """manga-py """ + base[y]+url[y] + """ -n \"""" + name[y] + """\" -d \"""" + PATH + """\" -z -N""" os.system(execute) y = y+1 From 9fadc23a5f34caa27b3af8347be9754acfe61cb7 Mon Sep 17 00:00:00 2001 From: Dan Dembinski Date: Tue, 31 Dec 2019 15:06:42 -0500 Subject: [PATCH 06/33] Took out docker autostart. Made change to exit instead of looping for testing. --- Dockerfile | 2 -- main.py | 1 + 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index a0258d8..ff6838a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -7,5 +7,3 @@ RUN pip install manga-py RUN pip install sqlalchemy RUN pip install pymysql - -CMD ["python", "./main.py"] \ No newline at end of file diff --git a/main.py b/main.py index 3ae2a2e..c4d4582 100644 --- a/main.py +++ b/main.py @@ -88,6 +88,7 @@ def upload_jason(): while True: print("1. Download \n 2. Upload\n 3. Exit") download() + exit() # val = input(">>>") # if val == "1": # download() From abb101a8a74c516f541a51b4de6c8d68b91c2d81 Mon Sep 17 00:00:00 2001 From: Dan Dembinski Date: Tue, 31 Dec 2019 15:21:48 -0500 Subject: [PATCH 07/33] Alright, you do in fact need to have the docker file actually start something. I also swapped the exit command out for a sleep command. It should loop through everything once an hour --- Dockerfile | 2 ++ main.py | 3 ++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index ff6838a..a0258d8 100644 --- a/Dockerfile +++ b/Dockerfile @@ -7,3 +7,5 @@ RUN pip install manga-py RUN pip install sqlalchemy RUN pip install pymysql + +CMD ["python", "./main.py"] \ No newline at end of file diff --git a/main.py b/main.py index c4d4582..007ea09 100644 --- a/main.py +++ b/main.py @@ -1,5 +1,6 @@ import sqlalchemy as db import json +import time # from manga_py1.parser import Parser # from manga_py1.info import Info # from Downloader import my_awesome_handler @@ -88,7 +89,7 @@ def upload_jason(): while True: print("1. Download \n 2. Upload\n 3. Exit") download() - exit() + time.sleep(3600) # val = input(">>>") # if val == "1": # download() From 4581fce3b45751d15ad7d177ba2b7774e36e3f0d Mon Sep 17 00:00:00 2001 From: Dan Dembinski Date: Wed, 11 Mar 2020 14:34:49 -0400 Subject: [PATCH 08/33] Reworked download method use ORM instead of straight SQL. Hoping this fixes the database timeout issue. Also added requirements.txt with all the python packages needed --- Dockerfile | 4 +- main.py | 166 +++++++++++++++++++++++------------------------ requirements.txt | 8 +++ 3 files changed, 93 insertions(+), 85 deletions(-) create mode 100644 requirements.txt diff --git a/Dockerfile b/Dockerfile index a0258d8..47dc959 100644 --- a/Dockerfile +++ b/Dockerfile @@ -3,9 +3,9 @@ ADD main.py / VOLUME /download/ +RUN pip install -r requirements.txt RUN pip install manga-py -RUN pip install sqlalchemy -RUN pip install pymysql + CMD ["python", "./main.py"] \ No newline at end of file diff --git a/main.py b/main.py index 007ea09..14647dc 100644 --- a/main.py +++ b/main.py @@ -1,4 +1,6 @@ -import sqlalchemy as db +from flask_sqlalchemy import SQLAlchemy +from flask import Flask + import json import time # from manga_py1.parser import Parser @@ -6,94 +8,92 @@ import time # from Downloader import my_awesome_handler import os +app = Flask(__name__) + +app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False +app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://mdownload:mdownload@192.168.86.198:3306/Downloads' + +db = SQLAlchemy(app) + +class downloaderSettings(db.Model): + ID = db.Column(db.Integer, primary_key=True) + path = db.Column(db.Text) + + +class manga(db.Model): + manga_id = db.Column(db.Integer, primary_key=True) + name = db.Column(db.Text) + url = db.Column(db.Text) + url_flag = db.Column(db.Text) + view_format = db.Column(db.Integer) + unknown_value = db.Column(db.Integer) + active = db.Column(db.Boolean, default=1) + + +class url_metadata(db.Model): + url_id = db.Column(db.Integer, primary_key=True) + source_name = db.Column(db.VARCHAR(length=10000)) + flag = db.Column(db.Text) + base_url = db.Column(db.VARCHAR(length=10000)) + + +@app.route('/download', methods=['GET']) def download(): - db_URI = 'mysql+pymysql://mdownload:mdownload@192.168.86.198:3306/Downloads' + # db_URI = 'mysql+pymysql://mdownload:mdownload@192.168.86.198:3306/Downloads' - engine = db.create_engine(db_URI) - con = engine.connect() - - metadata = db.MetaData() - - url_metadata = db.Table('url_metadata', metadata, autoload = True, autoload_with= engine) - manga = db.Table('manga', metadata, autoload=True, autoload_with=engine) # query = db.select([manga.columns.url, url_metadata.columns.base_url, manga.columns.url_flag]) - query = db.text(""" select manga.url, url_metadata.base_url , manga.name from manga join url_metadata on manga.url_flag = url_metadata.flag """) - result = con.execute(query).fetchall() - y=0 - url = [] - base = [] - name = [] - #PATH = 'Manga/' + + # result = db.session.query(manga.base_url, manga.name, manga.url, url_metadata.base_url, url_metadata.flag).join(manga.url_flag == url_metadata.flag).all() + result = db.session.query(manga, url_metadata).join(url_metadata, manga.url_flag==url_metadata.flag).all() + + # PATH = 'Manga/' # PATH = 'smb://MediaServer._smb._tcp.local/Downloads/Manga/' PATH = '/download' - for x in result: - # print(result[y][0]) - url.append(result[y][0]) - base.append(result[y][1]) - name.append(result[y][2]) - # print(base[y]+url[y]) - query = """ select active from manga where manga_id = """ + str(y+1) - try: - active = con.execute(query).fetchone() - except engine.Error as e: - if 'MySQL server has gone away' in str(e): - con = engine.connect() + for each in result: + print("""manga-py """ + each.url_metadata.base_url+each.manga.url + """ -n \"""" + each.manga.name + """\" -d \"""" + PATH + """\" -z -N""") + # os.system(execute) - if active[0] != 0: - print("""manga-py """ + base[y]+url[y] + """ -n \"""" + name[y] + """\" -d \"""" + PATH + """\" -z -N """) + return "neat" - execute = """manga-py """ + base[y]+url[y] + """ -n \"""" + name[y] + """\" -d \"""" + PATH + """\" -z -N""" - os.system(execute) - y = y+1 +# def upload_jason(): +# url = [] +# base = [] +# name = [] +# y = 0 +# z = 0 +# +# db_URI = 'mysql+pymysql://mdownload:mdownload@192.168.86.198:3306/Downloads' +# +# engine = db.create_engine(db_URI) +# con = engine.connect() +# metadata = db.MetaData() +# manga = db.Table('manga', metadata, autoload=True, autoload_with=engine) +# +# with open("tach.json", "r") as tf: +# data = json.load(tf) +# for x in data["mangas"]: +# # Manga Name +# name.append(data["mangas"][y]["manga"][1]) +# # Mange URL +# url.append(data["mangas"][y]["manga"][0]) +# # Mange Base URL +# base.append(data["mangas"][y]["manga"][2]) +# y=y+1 +# # query = """ Delete from manga""" +# # con.execute(query) +# # query = """ Alter table manga auto_increment = 1 """ +# # con.execute(query) +# for x in name: +# query = """select name from manga where name = \"""" + name[z] + """\"""" +# exists = con.execute(query).fetchone() +# if exists == None or exists[0] != name[z]: +# query = """ insert into manga(name, url, url_flag, view_format, unknown_value) values (\"""" + name[z] + """\",\"""" + url[z] + """\",\"""" + str(base[z]) + """\",\"0\",\"0\")""" +# print(query) +# con.execute(query) +# else: +# continue +# z=z+1 -def upload_jason(): - url = [] - base = [] - name = [] - y = 0 - z = 0 - - db_URI = 'mysql+pymysql://mdownload:mdownload@192.168.86.198:3306/Downloads' - - engine = db.create_engine(db_URI) - con = engine.connect() - metadata = db.MetaData() - manga = db.Table('manga', metadata, autoload=True, autoload_with=engine) - - with open("tach.json", "r") as tf: - data = json.load(tf) - for x in data["mangas"]: - # Manga Name - name.append(data["mangas"][y]["manga"][1]) - # Mange URL - url.append(data["mangas"][y]["manga"][0]) - # Mange Base URL - base.append(data["mangas"][y]["manga"][2]) - y=y+1 - # query = """ Delete from manga""" - # con.execute(query) - # query = """ Alter table manga auto_increment = 1 """ - # con.execute(query) - for x in name: - query = """select name from manga where name = \"""" + name[z] + """\"""" - exists = con.execute(query).fetchone() - if exists == None or exists[0] != name[z]: - query = """ insert into manga(name, url, url_flag, view_format, unknown_value) values (\"""" + name[z] + """\",\"""" + url[z] + """\",\"""" + str(base[z]) + """\",\"0\",\"0\")""" - print(query) - con.execute(query) - else: - continue - z=z+1 - -while True: - print("1. Download \n 2. Upload\n 3. Exit") - download() - time.sleep(3600) - # val = input(">>>") - # if val == "1": - # download() - # elif val == "2": - # upload_jason() - # elif val == "3": - # exit() \ No newline at end of file +if __name__ == "__main__": + app.run(host='0.0.0.0', debug=True) diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..88ec1ca --- /dev/null +++ b/requirements.txt @@ -0,0 +1,8 @@ +click==7.1.1 +Flask==1.1.1 +Flask-SQLAlchemy==2.4.1 +itsdangerous==1.1.0 +Jinja2==2.11.1 +MarkupSafe==1.1.1 +PyMySQL==0.9.3 +Werkzeug==1.0.0 From c0003ec6d7b978b18351aa044de418ec6c39dce0 Mon Sep 17 00:00:00 2001 From: Dan Dembinski Date: Wed, 11 Mar 2020 14:46:16 -0400 Subject: [PATCH 09/33] Updated Docker file to work. --- Dockerfile | 1 + 1 file changed, 1 insertion(+) diff --git a/Dockerfile b/Dockerfile index 47dc959..eaf69fe 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,6 @@ FROM python:3 ADD main.py / +ADD requirements.txt VOLUME /download/ From b609c1b587bcd81f4dc3921fdb769d8cb1d22c74 Mon Sep 17 00:00:00 2001 From: Dan Dembinski Date: Wed, 11 Mar 2020 14:55:04 -0400 Subject: [PATCH 10/33] Updated Docker file to work. --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index eaf69fe..940e5c5 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,6 +1,6 @@ FROM python:3 ADD main.py / -ADD requirements.txt +ADD requirements.txt / VOLUME /download/ From 0568f7af9de1c3163a020e0bc3df09dd21929f38 Mon Sep 17 00:00:00 2001 From: Dan Dembinski Date: Wed, 11 Mar 2020 14:56:34 -0400 Subject: [PATCH 11/33] Turned on downloading. --- main.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/main.py b/main.py index 14647dc..11100f1 100644 --- a/main.py +++ b/main.py @@ -51,8 +51,8 @@ def download(): PATH = '/download' for each in result: - print("""manga-py """ + each.url_metadata.base_url+each.manga.url + """ -n \"""" + each.manga.name + """\" -d \"""" + PATH + """\" -z -N""") - # os.system(execute) + execute = """manga-py """ + each.url_metadata.base_url+each.manga.url + """ -n \"""" + each.manga.name + """\" -d \"""" + PATH + """\" -z -N""" + os.system(execute) return "neat" From 2db2898d2fbf7cb2a27ea6990c29c71a079d6647 Mon Sep 17 00:00:00 2001 From: Dan Dembinski Date: Wed, 11 Mar 2020 16:14:12 -0400 Subject: [PATCH 12/33] Added active filter to download method query. --- main.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/main.py b/main.py index 11100f1..53fca0a 100644 --- a/main.py +++ b/main.py @@ -1,5 +1,5 @@ from flask_sqlalchemy import SQLAlchemy -from flask import Flask +from flask import Flask, jsonify import json import time @@ -39,12 +39,13 @@ class url_metadata(db.Model): @app.route('/download', methods=['GET']) def download(): + # updated = [] # db_URI = 'mysql+pymysql://mdownload:mdownload@192.168.86.198:3306/Downloads' # query = db.select([manga.columns.url, url_metadata.columns.base_url, manga.columns.url_flag]) # result = db.session.query(manga.base_url, manga.name, manga.url, url_metadata.base_url, url_metadata.flag).join(manga.url_flag == url_metadata.flag).all() - result = db.session.query(manga, url_metadata).join(url_metadata, manga.url_flag==url_metadata.flag).all() + result = db.session.query(manga, url_metadata).filter_by(active=1).join(url_metadata, manga.url_flag==url_metadata.flag).all() # PATH = 'Manga/' # PATH = 'smb://MediaServer._smb._tcp.local/Downloads/Manga/' @@ -52,9 +53,11 @@ def download(): for each in result: execute = """manga-py """ + each.url_metadata.base_url+each.manga.url + """ -n \"""" + each.manga.name + """\" -d \"""" + PATH + """\" -z -N""" + # print("""manga-py """ + each.url_metadata.base_url+each.manga.url + """ -n \"""" + each.manga.name + """\" -d \"""" + PATH + """\" -z -N""") os.system(execute) + # updated.append(each.manga.name) - return "neat" + return jsonify(updated='done') # def upload_jason(): # url = [] From 3d67df0f7d46894647eabd8d98e40141bf299c98 Mon Sep 17 00:00:00 2001 From: Dan Dembinski Date: Wed, 11 Mar 2020 16:50:52 -0400 Subject: [PATCH 13/33] Converted upload method to ORM and added route. --- main.py | 75 +++++++++++++++++++++++++-------------------------------- 1 file changed, 33 insertions(+), 42 deletions(-) diff --git a/main.py b/main.py index 53fca0a..4f1c100 100644 --- a/main.py +++ b/main.py @@ -8,6 +8,10 @@ import time # from Downloader import my_awesome_handler import os +# PATH = 'Manga/' +# PATH = 'smb://MediaServer._smb._tcp.local/Downloads/Manga/' +PATH = '/download' + app = Flask(__name__) app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False @@ -47,10 +51,6 @@ def download(): # result = db.session.query(manga.base_url, manga.name, manga.url, url_metadata.base_url, url_metadata.flag).join(manga.url_flag == url_metadata.flag).all() result = db.session.query(manga, url_metadata).filter_by(active=1).join(url_metadata, manga.url_flag==url_metadata.flag).all() - # PATH = 'Manga/' - # PATH = 'smb://MediaServer._smb._tcp.local/Downloads/Manga/' - PATH = '/download' - for each in result: execute = """manga-py """ + each.url_metadata.base_url+each.manga.url + """ -n \"""" + each.manga.name + """\" -d \"""" + PATH + """\" -z -N""" # print("""manga-py """ + each.url_metadata.base_url+each.manga.url + """ -n \"""" + each.manga.name + """\" -d \"""" + PATH + """\" -z -N""") @@ -59,44 +59,35 @@ def download(): return jsonify(updated='done') -# def upload_jason(): -# url = [] -# base = [] -# name = [] -# y = 0 -# z = 0 -# -# db_URI = 'mysql+pymysql://mdownload:mdownload@192.168.86.198:3306/Downloads' -# -# engine = db.create_engine(db_URI) -# con = engine.connect() -# metadata = db.MetaData() -# manga = db.Table('manga', metadata, autoload=True, autoload_with=engine) -# -# with open("tach.json", "r") as tf: -# data = json.load(tf) -# for x in data["mangas"]: -# # Manga Name -# name.append(data["mangas"][y]["manga"][1]) -# # Mange URL -# url.append(data["mangas"][y]["manga"][0]) -# # Mange Base URL -# base.append(data["mangas"][y]["manga"][2]) -# y=y+1 -# # query = """ Delete from manga""" -# # con.execute(query) -# # query = """ Alter table manga auto_increment = 1 """ -# # con.execute(query) -# for x in name: -# query = """select name from manga where name = \"""" + name[z] + """\"""" -# exists = con.execute(query).fetchone() -# if exists == None or exists[0] != name[z]: -# query = """ insert into manga(name, url, url_flag, view_format, unknown_value) values (\"""" + name[z] + """\",\"""" + url[z] + """\",\"""" + str(base[z]) + """\",\"0\",\"0\")""" -# print(query) -# con.execute(query) -# else: -# continue -# z=z+1 +@app.route('/upload', METHODS=['GET']) +def upload_jason(): + url = [] + base = [] + name = [] + y = 0 + z = 0 + + with open(PATH+"tach.json", "r") as tf: + data = json.load(tf) + for x in data["mangas"]: + # Manga Name + name.append(data["mangas"][y]["manga"][1]) + # Mange URL + url.append(data["mangas"][y]["manga"][0]) + # Mange Base URL + base.append(data["mangas"][y]["manga"][2]) + y=y+1 + + for x in name: + + if not manga.query.filter_by(name=name[z]): + query = manga(name=name[z], url=url[z], url_flag=str(base[z]), view_format=0, unkown_value=0) + db.session.add(query) + else: + continue + z=z+1 + db.session.commit() + return jsonify(uploaded='done') if __name__ == "__main__": app.run(host='0.0.0.0', debug=True) From 469e2457a3b3da3c306489f248709c3ac431935f Mon Sep 17 00:00:00 2001 From: Dan Dembinski Date: Wed, 11 Mar 2020 22:29:09 -0400 Subject: [PATCH 14/33] Tweaks --- main.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/main.py b/main.py index 4f1c100..87dbe25 100644 --- a/main.py +++ b/main.py @@ -59,7 +59,7 @@ def download(): return jsonify(updated='done') -@app.route('/upload', METHODS=['GET']) +@app.route('/upload', methods=['GET']) def upload_jason(): url = [] base = [] From f2a3bd075b863dccb6174a408ad1d5437d9ffa88 Mon Sep 17 00:00:00 2001 From: Dan Dembinski Date: Wed, 11 Mar 2020 22:41:51 -0400 Subject: [PATCH 15/33] Tweaks --- main.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/main.py b/main.py index 87dbe25..a613344 100644 --- a/main.py +++ b/main.py @@ -67,7 +67,7 @@ def upload_jason(): y = 0 z = 0 - with open(PATH+"tach.json", "r") as tf: + with open(PATH+"/tach.json", "r") as tf: data = json.load(tf) for x in data["mangas"]: # Manga Name From 0654235eb573e8ace3fcca581ac8ef08810d83eb Mon Sep 17 00:00:00 2001 From: Dan Dembinski Date: Wed, 11 Mar 2020 23:27:51 -0400 Subject: [PATCH 16/33] Got the upload working. --- main.py | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/main.py b/main.py index a613344..cea1f27 100644 --- a/main.py +++ b/main.py @@ -66,8 +66,10 @@ def upload_jason(): name = [] y = 0 z = 0 + added = [] with open(PATH+"/tach.json", "r") as tf: + # with open("tach.json", "r") as tf: data = json.load(tf) for x in data["mangas"]: # Manga Name @@ -78,16 +80,17 @@ def upload_jason(): base.append(data["mangas"][y]["manga"][2]) y=y+1 - for x in name: - - if not manga.query.filter_by(name=name[z]): - query = manga(name=name[z], url=url[z], url_flag=str(base[z]), view_format=0, unkown_value=0) + for each in name: + # print('start') + if not manga.query.filter_by(name=name[z]).first(): + new_manga={} + query = manga(name=name[z], url=url[z], url_flag=str(base[z]), view_format=0, unknown_value=0) + new_manga['title'] = name[z] + added.append(new_manga) db.session.add(query) - else: - continue - z=z+1 + z = z + 1 db.session.commit() - return jsonify(uploaded='done') + return jsonify(added=added) if __name__ == "__main__": app.run(host='0.0.0.0', debug=True) From 4eb8d9b76e7c90471b576c6de7b0090dab650e83 Mon Sep 17 00:00:00 2001 From: Dan Dembinski Date: Fri, 13 Mar 2020 14:31:29 -0400 Subject: [PATCH 17/33] Cleaned up. Added some logic incase the base url is in the URL instead of being tied to the URL_flag. Added method to check what mangas are active. --- main.py | 45 +++++++++++++++++++++++++++++---------------- 1 file changed, 29 insertions(+), 16 deletions(-) diff --git a/main.py b/main.py index a613344..827935e 100644 --- a/main.py +++ b/main.py @@ -1,15 +1,9 @@ from flask_sqlalchemy import SQLAlchemy from flask import Flask, jsonify - import json -import time -# from manga_py1.parser import Parser -# from manga_py1.info import Info -# from Downloader import my_awesome_handler import os -# PATH = 'Manga/' -# PATH = 'smb://MediaServer._smb._tcp.local/Downloads/Manga/' + PATH = '/download' app = Flask(__name__) @@ -19,6 +13,7 @@ app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://mdownload:mdownload@192 db = SQLAlchemy(app) + class downloaderSettings(db.Model): ID = db.Column(db.Integer, primary_key=True) path = db.Column(db.Text) @@ -43,21 +38,22 @@ class url_metadata(db.Model): @app.route('/download', methods=['GET']) def download(): - # updated = [] - # db_URI = 'mysql+pymysql://mdownload:mdownload@192.168.86.198:3306/Downloads' + updated = [] - # query = db.select([manga.columns.url, url_metadata.columns.base_url, manga.columns.url_flag]) - - # result = db.session.query(manga.base_url, manga.name, manga.url, url_metadata.base_url, url_metadata.flag).join(manga.url_flag == url_metadata.flag).all() result = db.session.query(manga, url_metadata).filter_by(active=1).join(url_metadata, manga.url_flag==url_metadata.flag).all() for each in result: - execute = """manga-py """ + each.url_metadata.base_url+each.manga.url + """ -n \"""" + each.manga.name + """\" -d \"""" + PATH + """\" -z -N""" - # print("""manga-py """ + each.url_metadata.base_url+each.manga.url + """ -n \"""" + each.manga.name + """\" -d \"""" + PATH + """\" -z -N""") + book={} + if 'http' in each.manga.name or 'https' in each.manga.url: + execute = """manga-py """ + each.manga.url + """ -n \"""" + each.manga.name + """\" -d \"""" + PATH + """\" -z -N""" + else: + execute = """manga-py """ + each.url_metadata.base_url+each.manga.url + """ -n \"""" + each.manga.name + """\" -d \"""" + PATH + """\" -z -N""" + book['title'] = each.manga.name + book['command'] = execute + updated.append(book) os.system(execute) - # updated.append(each.manga.name) - return jsonify(updated='done') + return jsonify(manga=updated) @app.route('/upload', methods=['GET']) def upload_jason(): @@ -89,5 +85,22 @@ def upload_jason(): db.session.commit() return jsonify(uploaded='done') + +@app.route('/active', methods=['GET']) +def active(): + activbooks=[] + + result = manga.query.filter_by(active=1).all() + + for each in result: + book={} + book['id'] = each.manga_id + book['title'] = each.name + book['url'] = each.url + book['url_flag'] = each.url_flag + activbooks.append(book) + + return jsonify(active=activbooks) + if __name__ == "__main__": app.run(host='0.0.0.0', debug=True) From 9c3a2b6aa2f558f3b091cf5712b622c35b587dbd Mon Sep 17 00:00:00 2001 From: Dan Dembinski Date: Fri, 13 Mar 2020 15:09:12 -0400 Subject: [PATCH 18/33] stripping '?'s out of folder path now. --- main.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/main.py b/main.py index 827935e..af4fe5f 100644 --- a/main.py +++ b/main.py @@ -47,7 +47,7 @@ def download(): if 'http' in each.manga.name or 'https' in each.manga.url: execute = """manga-py """ + each.manga.url + """ -n \"""" + each.manga.name + """\" -d \"""" + PATH + """\" -z -N""" else: - execute = """manga-py """ + each.url_metadata.base_url+each.manga.url + """ -n \"""" + each.manga.name + """\" -d \"""" + PATH + """\" -z -N""" + execute = """manga-py """ + each.url_metadata.base_url+each.manga.url + """ -n \"""" + each.manga.name.strip('?') + """\" -d \"""" + PATH + """\" -z -N""" book['title'] = each.manga.name book['command'] = execute updated.append(book) From 2b4c244c1f19a7325ecdcf3bbdf8159c6b4f3463 Mon Sep 17 00:00:00 2001 From: Dan Dembinski Date: Tue, 17 Mar 2020 13:19:26 -0400 Subject: [PATCH 19/33] Started setting up very simple front end for cicking off download process. Also added a new method to check if there is any missing url metadata and what mangas it effects. --- main.py | 41 ++++++++++++++++++++++++++++++++++++----- templates/index.html | 10 ++++++++++ 2 files changed, 46 insertions(+), 5 deletions(-) create mode 100644 templates/index.html diff --git a/main.py b/main.py index af4fe5f..233ffc2 100644 --- a/main.py +++ b/main.py @@ -1,12 +1,13 @@ from flask_sqlalchemy import SQLAlchemy -from flask import Flask, jsonify +from flask import Flask, jsonify, render_template, request import json import os PATH = '/download' -app = Flask(__name__) +app = Flask(__name__, + template_folder="templates") app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://mdownload:mdownload@192.168.86.198:3306/Downloads' @@ -35,6 +36,9 @@ class url_metadata(db.Model): flag = db.Column(db.Text) base_url = db.Column(db.VARCHAR(length=10000)) +@app.route('/', methods=['GET']) +def index(): + return render_template("index.html") @app.route('/download', methods=['GET']) def download(): @@ -51,9 +55,9 @@ def download(): book['title'] = each.manga.name book['command'] = execute updated.append(book) - os.system(execute) - - return jsonify(manga=updated) + # os.system(execute) + missing = check(passin=1) + return jsonify(manga=updated, missingFlags=missing[0], missingManga=missing[1]) @app.route('/upload', methods=['GET']) def upload_jason(): @@ -102,5 +106,32 @@ def active(): return jsonify(active=activbooks) +@app.route('/check/', methods=['GET']) +def check(passin=0): + passin=passin + missingManga = [] + missingFlags = [] + providerFlags = [] + mangaFlags = manga.query.with_entities(manga.url_flag).distinct() + providerFlagResult = url_metadata.query.all() + for each in providerFlagResult: + providerFlags.append(each.flag) + for each in mangaFlags: + if each.url_flag not in providerFlags: + missingFlags.append(each.url_flag) + for each in missingFlags: + mangaInfo = {} + badManga = manga.query.filter_by(url_flag=each).all() + for each in badManga: + mangaInfo['name'] = each.name + mangaInfo['url_flag'] = each.url_flag + mangaInfo['active'] = each.active + missingManga.append(mangaInfo) + + if passin == 1: + return missingFlags, missingManga + else: + return jsonify(missingFlags=missingFlags, missingManga=missingManga) + if __name__ == "__main__": app.run(host='0.0.0.0', debug=True) diff --git a/templates/index.html b/templates/index.html new file mode 100644 index 0000000..f2a18ac --- /dev/null +++ b/templates/index.html @@ -0,0 +1,10 @@ + + + + + Title + + + + + \ No newline at end of file From db1b5e4af262f94dcab7fbde15262c7976703a91 Mon Sep 17 00:00:00 2001 From: Dan Dembinski Date: Tue, 17 Mar 2020 14:44:50 -0400 Subject: [PATCH 20/33] print-json argument added. --- main.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/main.py b/main.py index 233ffc2..de3448e 100644 --- a/main.py +++ b/main.py @@ -49,13 +49,13 @@ def download(): for each in result: book={} if 'http' in each.manga.name or 'https' in each.manga.url: - execute = """manga-py """ + each.manga.url + """ -n \"""" + each.manga.name + """\" -d \"""" + PATH + """\" -z -N""" + execute = """manga-py """ + each.manga.url + """ -n \"""" + each.manga.name + """\" -d \"""" + PATH + """\" -z -N --print-json""" else: - execute = """manga-py """ + each.url_metadata.base_url+each.manga.url + """ -n \"""" + each.manga.name.strip('?') + """\" -d \"""" + PATH + """\" -z -N""" + execute = """manga-py """ + each.url_metadata.base_url+each.manga.url + """ -n \"""" + each.manga.name.strip('?') + """\" -d \"""" + PATH + """\" -z -N --print-json""" book['title'] = each.manga.name book['command'] = execute updated.append(book) - # os.system(execute) + os.system(execute) missing = check(passin=1) return jsonify(manga=updated, missingFlags=missing[0], missingManga=missing[1]) From e1b4be2d4035fd8c4a1ae0e7cab8b0b2de876ffb Mon Sep 17 00:00:00 2001 From: Dan Dembinski Date: Fri, 20 Mar 2020 10:13:01 -0400 Subject: [PATCH 21/33] attempting to capture manga-py output in response. --- main.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/main.py b/main.py index de3448e..f6575e0 100644 --- a/main.py +++ b/main.py @@ -2,6 +2,7 @@ from flask_sqlalchemy import SQLAlchemy from flask import Flask, jsonify, render_template, request import json import os +import subprocess PATH = '/download' @@ -54,8 +55,12 @@ def download(): execute = """manga-py """ + each.url_metadata.base_url+each.manga.url + """ -n \"""" + each.manga.name.strip('?') + """\" -d \"""" + PATH + """\" -z -N --print-json""" book['title'] = each.manga.name book['command'] = execute + + # os.system(execute) + exec_command = subprocess.Popen(execute, stdout=subprocess.PIPE) + book['output'] = exec_command.stdout.read() updated.append(book) - os.system(execute) + missing = check(passin=1) return jsonify(manga=updated, missingFlags=missing[0], missingManga=missing[1]) From 23a8bc0d420e1ea614e0d521d3c41f7ce6299cc8 Mon Sep 17 00:00:00 2001 From: Dan Dembinski Date: Fri, 20 Mar 2020 11:01:02 -0400 Subject: [PATCH 22/33] Adjusted subprocess calls --- main.py | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/main.py b/main.py index f6575e0..292cf47 100644 --- a/main.py +++ b/main.py @@ -50,15 +50,18 @@ def download(): for each in result: book={} if 'http' in each.manga.name or 'https' in each.manga.url: - execute = """manga-py """ + each.manga.url + """ -n \"""" + each.manga.name + """\" -d \"""" + PATH + """\" -z -N --print-json""" + # execute = """manga-py """ + each.manga.url + """ -n \"""" + each.manga.name + """\" -d \"""" + PATH + """\" -z -N --print-json""" + exec_command = subprocess.Popen(['manga-py', each.manga.url, '-n', each.manga.name, '-d', PATH, '-z', '-N', '--print-json'], stdout=subprocess.PIPE) else: - execute = """manga-py """ + each.url_metadata.base_url+each.manga.url + """ -n \"""" + each.manga.name.strip('?') + """\" -d \"""" + PATH + """\" -z -N --print-json""" + print('nothing') + # execute = """manga-py """ + each.url_metadata.base_url+each.manga.url + """ -n \"""" + each.manga.name.strip('?') + """\" -d \"""" + PATH + """\" -z -N --print-json""" + exec_command = subprocess.Popen(['manga-py', each.url_metadata.base_url, each.manga.url, '-n', each.manga.name.strip('?'), '-d', PATH, '-z', '-N', '--print-json'], stdout=subprocess.PIPE) book['title'] = each.manga.name - book['command'] = execute + # book['command'] = 'nothing' # os.system(execute) - exec_command = subprocess.Popen(execute, stdout=subprocess.PIPE) - book['output'] = exec_command.stdout.read() + # exec_command = subprocess.Popen(execute, stdout=subprocess.PIPE) + book['output'] = exec_command.communicate() updated.append(book) missing = check(passin=1) From 36eef06f3e7e258f48405c88aad0816a6124dd8e Mon Sep 17 00:00:00 2001 From: Dan Dembinski Date: Fri, 20 Mar 2020 11:51:53 -0400 Subject: [PATCH 23/33] Adjusted subprocess calls --- main.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/main.py b/main.py index 292cf47..beb49fd 100644 --- a/main.py +++ b/main.py @@ -51,11 +51,11 @@ def download(): book={} if 'http' in each.manga.name or 'https' in each.manga.url: # execute = """manga-py """ + each.manga.url + """ -n \"""" + each.manga.name + """\" -d \"""" + PATH + """\" -z -N --print-json""" - exec_command = subprocess.Popen(['manga-py', each.manga.url, '-n', each.manga.name, '-d', PATH, '-z', '-N', '--print-json'], stdout=subprocess.PIPE) + exec_command = subprocess.Popen(['manga-py', each.manga.url, '-n', each.manga.name, '-d ' + PATH, '-z', '-N', '--print-json'], stdout=subprocess.PIPE) else: print('nothing') # execute = """manga-py """ + each.url_metadata.base_url+each.manga.url + """ -n \"""" + each.manga.name.strip('?') + """\" -d \"""" + PATH + """\" -z -N --print-json""" - exec_command = subprocess.Popen(['manga-py', each.url_metadata.base_url, each.manga.url, '-n', each.manga.name.strip('?'), '-d', PATH, '-z', '-N', '--print-json'], stdout=subprocess.PIPE) + exec_command = subprocess.Popen(['manga-py', each.url_metadata.base_url, each.manga.url, '-n', each.manga.name.strip('?'), '-d ' + PATH, '-z', '-N', '--print-json'], stdout=subprocess.PIPE) book['title'] = each.manga.name # book['command'] = 'nothing' From 8a0b81f6a6ab8b475179e4423e5c2bcba5bb3c7e Mon Sep 17 00:00:00 2001 From: Dan Dembinski Date: Tue, 24 Mar 2020 15:58:08 -0400 Subject: [PATCH 24/33] subprocess args should be working correctly now. --- main.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/main.py b/main.py index aa694a3..4215ad7 100644 --- a/main.py +++ b/main.py @@ -51,17 +51,19 @@ def download(): book={} if 'http' in each.manga.name or 'https' in each.manga.url: # execute = """manga-py """ + each.manga.url + """ -n \"""" + each.manga.name + """\" -d \"""" + PATH + """\" -z -N --print-json""" - exec_command = subprocess.Popen(['manga-py', each.manga.url, '-n', each.manga.name, '-d ' + PATH, '-z', '-N', '--print-json'], stdout=subprocess.PIPE) + exec_command = subprocess.Popen(['manga-py', each.manga.url, '-n', each.manga.name, '-d', PATH, '-z', '-N', '--print-json'], stdout=subprocess.PIPE) else: print('nothing') # execute = """manga-py """ + each.url_metadata.base_url+each.manga.url + """ -n \"""" + each.manga.name.strip('?') + """\" -d \"""" + PATH + """\" -z -N --print-json""" - exec_command = subprocess.Popen(['manga-py', each.url_metadata.base_url, each.manga.url, '-n', each.manga.name.strip('?'), '-d ' + PATH, '-z', '-N', '--print-json'], stdout=subprocess.PIPE) + exec_command = subprocess.Popen(['manga-py', each.url_metadata.base_url+each.manga.url, '-n', each.manga.name.strip('?'), '-d', PATH, '-z', '-N', '--print-json'], stdout=subprocess.PIPE) book['title'] = each.manga.name # book['command'] = 'nothing' # os.system(execute) # exec_command = subprocess.Popen(execute, stdout=subprocess.PIPE) book['output'] = exec_command.communicate() + print(exec_command.args) + updated.append(book) missing = check(passin=1) From 4118686ec19993ec4c158f9f4fd7335931121fd5 Mon Sep 17 00:00:00 2001 From: Dan Dembinski Date: Fri, 27 Mar 2020 00:25:25 -0400 Subject: [PATCH 25/33] Made a change to the subprocess call to hopefully stop the json error until I can figure that out. Also added the templates directory to the Dockerfile --- Dockerfile | 1 + main.py | 5 +++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index 940e5c5..0780da0 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,6 +1,7 @@ FROM python:3 ADD main.py / ADD requirements.txt / +ADD templates /templates VOLUME /download/ diff --git a/main.py b/main.py index 4215ad7..134314e 100644 --- a/main.py +++ b/main.py @@ -61,8 +61,9 @@ def download(): # os.system(execute) # exec_command = subprocess.Popen(execute, stdout=subprocess.PIPE) - book['output'] = exec_command.communicate() - print(exec_command.args) + # book['output'] = exec_command.communicate() + exec_command.communicate() + book['command'] = exec_command.args updated.append(book) From 9e46ed7d336f3f6a7e1f45cfc893782496bad8fd Mon Sep 17 00:00:00 2001 From: Dan Dembinski Date: Wed, 1 Apr 2020 13:12:01 -0400 Subject: [PATCH 26/33] Added method to upgrade manga-py without updating entire container. Started working on method to check if the manga url matches what is in the json file. Will add option to update db urls if they differ. --- main.py | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/main.py b/main.py index 134314e..45b675c 100644 --- a/main.py +++ b/main.py @@ -147,5 +147,54 @@ def check(passin=0): else: return jsonify(missingFlags=missingFlags, missingManga=missingManga) +@app.route('/upgrade/', methods=['Put']) +def upgrade(): + os.system('pip install --upgrade manga-py') + return jsonify(status='manga-py upgrade ran') + +@app.route('/ood/', methods=['GET']) +def ood(): + url = [] + base = [] + name = [] + y = 0 + z = 0 + + mangaName = manga.query().all() + + with open(PATH + "/tach.json", "r") as tf: + # with open("tach.json", "r") as tf: + data = json.load(tf) + for x in data["mangas"]: + # Manga Name + name.append(data["mangas"][y]["manga"][1]) + # Mange URL + url.append(data["mangas"][y]["manga"][0]) + # Mange Base URL + base.append(data["mangas"][y]["manga"][2]) + y = y + 1 + + +@app.route('/test/', methods=['GET']) +def test(): + y = 0 + mangaInfo=[] + tf = """{"version":2,"mangas":[{"manga":["/manga/ul921197","A Wife Who Heals With Tights",2528986671771677900,0,0]},{"manga":["/manga/Amano-Megumi-Wa-Suki-Darake","Amano Megumi wa Suki Darake!",9,0,0]},{"manga":["/manga/Ansatsu-Kyoushitsu","Ansatsu Kyoushitsu",9,0,0]},{"manga":["/manga/ab918062","Ashigei Shoujo Komura-San",2528986671771677900,0,0]},{"manga":["/manga/mrs-serie-200174290","Asper Girl",1554176584893433663,0,0]},{"manga":["/manga/ga919880","Awkward Senpai",2528986671771677900,0,0]},{"manga":["/manga/31231/","Azur Lane: Queen\u0027s Orders",2499283573021220255,0,0]},{"manga":["https://manganelo.com/manga/read_bakuman_manga_online","Bakuman",2528986671771677900,0,0]}]""" + mangaName = manga.query.all() + + with open(PATH + "/tach.json", "r") as tf: + data = json.load(tf) + for x in data["mangas"]: + watchedManga = {} + # Manga Name + watchedManga['name']=data["mangas"][y]["manga"][1] + # Mange URL + watchedManga['url']=data["mangas"][y]["manga"][0] + # Mange Base URL + watchedManga['base']=data["mangas"][y]["manga"][2] + y = y + 1 + mangaInfo.append(watchedManga) + return jsonify(mangaInfo) + if __name__ == "__main__": app.run(host='0.0.0.0', debug=True) From 6bd4addc9c7a1fc42294045ba712e0980991cb80 Mon Sep 17 00:00:00 2001 From: Dan Dembinski Date: Thu, 16 Apr 2020 21:40:50 -0400 Subject: [PATCH 27/33] Added method to manually add a manga without uploading a new json file. Just need to pass a "name" and "url" node. URL must include http or https. --- main.py | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/main.py b/main.py index 45b675c..c6ae702 100644 --- a/main.py +++ b/main.py @@ -147,7 +147,23 @@ def check(passin=0): else: return jsonify(missingFlags=missingFlags, missingManga=missingManga) -@app.route('/upgrade/', methods=['Put']) +@app.route('/add/', methods=['PUT']) +def add(): + data = request.get_json() + added = [] + + if 'http' or 'https' not in data['url']: + return jsonify(error='invalid url') + if not manga.query.filter_by(name=data['name']).first(): + new_manga={} + query = manga(name=data['name'], url=data['url'], url_flag='000000', view_format=0, unknown_value=0) + new_manga['title'] = data['name'] + added.append(new_manga) + db.session.add(query) + db.session.commit() + return jsonify(added=added) + +@app.route('/upgrade/', methods=['PUT']) def upgrade(): os.system('pip install --upgrade manga-py') return jsonify(status='manga-py upgrade ran') From f04220fc032cb97dfa52fe0d05b7f54731c8c675 Mon Sep 17 00:00:00 2001 From: Dan Dembinski Date: Fri, 17 Apr 2020 00:31:59 -0400 Subject: [PATCH 28/33] Little clean up. Updated requirements.txt and turned off the flask run thing in preperation to try running under waitress. --- Downloader.py | 67 ------------------------------------------------ main.py | 3 +-- requirements.txt | 23 ++++++++++++++--- 3 files changed, 21 insertions(+), 72 deletions(-) delete mode 100644 Downloader.py diff --git a/Downloader.py b/Downloader.py deleted file mode 100644 index 400402b..0000000 --- a/Downloader.py +++ /dev/null @@ -1,67 +0,0 @@ -from manga_py1.parser import Parser -from manga_py1.info import Info - - -my_awesome_handler = open('my-handler') - - -class MyAwesomeInfo(Info): - pass - - -# main class (you will have your own) -class MyAwesomeClass: - args = {} - """ - is just a Namespace or dict with arguments - (filled below. You can implement your implementation. The main thing is to have all keys possible) - see manga_py.cli.args.get_cli_arguments() - """ - - parser = None # the found parser gets here (see below) - - def get_info(self): - MyAwesomeInfo(self.args) # use the Info class from manga-py or overload the Info class from manga-py - - def start(self): - self.parser = Parser(self.args) - try: - self.parser.init_provider( - progress=self.progress, - log=self.print, - quest=self.quest, - quest_password=self.quest_password, - info=self.get_info(), - ) - except AttributeError as e: - raise e - self.parser.start() # provider main method - - def progress(self, items_count: int, current_item: int, re_init: bool = False): # the same progress function. re_init = True means "next chapter" - # simple progress - pass - - def print(self, text, **kwargs): - """ - Not used everywhere. Better reload global print method - """ - print(text, **kwargs, file=my_awesome_handler) - - def quest(self, variants: enumerate, title: str, select_type=0): # 0 = single, 1 = multiple - if select_type == 0: - print(' Question ') - return 'Answer' - else: - print(' Question multiple answers') - return [ - 'Answer 1', - 'Answer 2', - ... - ] - - def quest_password(self, title): - """ - used to ask user password - """ - print(title) - return 'my_awesome_password' diff --git a/main.py b/main.py index c6ae702..d79e994 100644 --- a/main.py +++ b/main.py @@ -195,7 +195,6 @@ def ood(): def test(): y = 0 mangaInfo=[] - tf = """{"version":2,"mangas":[{"manga":["/manga/ul921197","A Wife Who Heals With Tights",2528986671771677900,0,0]},{"manga":["/manga/Amano-Megumi-Wa-Suki-Darake","Amano Megumi wa Suki Darake!",9,0,0]},{"manga":["/manga/Ansatsu-Kyoushitsu","Ansatsu Kyoushitsu",9,0,0]},{"manga":["/manga/ab918062","Ashigei Shoujo Komura-San",2528986671771677900,0,0]},{"manga":["/manga/mrs-serie-200174290","Asper Girl",1554176584893433663,0,0]},{"manga":["/manga/ga919880","Awkward Senpai",2528986671771677900,0,0]},{"manga":["/manga/31231/","Azur Lane: Queen\u0027s Orders",2499283573021220255,0,0]},{"manga":["https://manganelo.com/manga/read_bakuman_manga_online","Bakuman",2528986671771677900,0,0]}]""" mangaName = manga.query.all() with open(PATH + "/tach.json", "r") as tf: @@ -213,4 +212,4 @@ def test(): return jsonify(mangaInfo) if __name__ == "__main__": - app.run(host='0.0.0.0', debug=True) + # app.run(host='0.0.0.0', debug=True) diff --git a/requirements.txt b/requirements.txt index 88ec1ca..7819fc3 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,8 +1,25 @@ +aiocontextvars==0.2.2 +certifi==2020.4.5.1 +chardet==3.0.4 click==7.1.1 -Flask==1.1.1 +colorama==0.4.3 +contextvars==2.4 +cssselect==1.1.0 +Flask==1.1.2 Flask-SQLAlchemy==2.4.1 +idna==2.9 +immutables==0.11 itsdangerous==1.1.0 -Jinja2==2.11.1 +Jinja2==2.11.2 +loguru==0.4.1 +lxml==4.5.0 MarkupSafe==1.1.1 +Pillow==7.1.1 PyMySQL==0.9.3 -Werkzeug==1.0.0 +requests==2.23.0 +SQLAlchemy==1.3.16 +style==1.1.6 +update==0.0.1 +urllib3==1.25.9 +Werkzeug==1.0.1 +win32-setctime==1.0.1 From f071a67e7723cbc6be69f46720bad9ed0519b736 Mon Sep 17 00:00:00 2001 From: Dan Dembinski Date: Fri, 17 Apr 2020 00:36:23 -0400 Subject: [PATCH 29/33] I don't think it accomplished what I was planning on doing. But it's being served with waitress now. --- main.py | 3 ++- requirements.txt | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/main.py b/main.py index d79e994..5d5b74c 100644 --- a/main.py +++ b/main.py @@ -3,7 +3,7 @@ from flask import Flask, jsonify, render_template, request import json import os import subprocess - +from waitress import serve PATH = '/download' @@ -213,3 +213,4 @@ def test(): if __name__ == "__main__": # app.run(host='0.0.0.0', debug=True) + serve(app, host='0.0.0.0', port=8000) \ No newline at end of file diff --git a/requirements.txt b/requirements.txt index 7819fc3..b92be37 100644 --- a/requirements.txt +++ b/requirements.txt @@ -21,5 +21,6 @@ SQLAlchemy==1.3.16 style==1.1.6 update==0.0.1 urllib3==1.25.9 +waitress==1.4.3 Werkzeug==1.0.1 win32-setctime==1.0.1 From cf80116185e838ce11b129cd2bb86a04d5d6ac05 Mon Sep 17 00:00:00 2001 From: Dan Dembinski Date: Fri, 22 May 2020 23:13:30 -0400 Subject: [PATCH 30/33] Worked on the out of date method a bit. All the checking logic is in place. But it adds a new record instead of updating the existing record. --- main.py | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/main.py b/main.py index 5d5b74c..ba0ad70 100644 --- a/main.py +++ b/main.py @@ -170,13 +170,15 @@ def upgrade(): @app.route('/ood/', methods=['GET']) def ood(): + + added = [] + url = [] base = [] name = [] y = 0 z = 0 - mangaName = manga.query().all() with open(PATH + "/tach.json", "r") as tf: # with open("tach.json", "r") as tf: @@ -190,6 +192,22 @@ def ood(): base.append(data["mangas"][y]["manga"][2]) y = y + 1 + for each in name: + # print('start') + if manga.query.filter_by(name=name[z]).first(): + result = manga.query.filter_by(name=name[z]).first() + if result.url != url[z]: + new_manga={} + # print('----' + name[z]) + # print(url[z]) + # print(result.url) + query = manga(name=name[z], url=url[z], url_flag=str(base[z]), view_format=0, unknown_value=0) + new_manga['title'] = name[z] + added.append(new_manga) + db.session.add(query) + z = z + 1 + db.session.commit() + return jsonify(updated=added) @app.route('/test/', methods=['GET']) def test(): From 1a6e9b44178d5f7b6659a3b76e445cd535f103b0 Mon Sep 17 00:00:00 2001 From: Dan Dembinski Date: Fri, 22 May 2020 23:39:08 -0400 Subject: [PATCH 31/33] ood method should update the row instead of just adding a new row now --- main.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/main.py b/main.py index ba0ad70..ce3de6d 100644 --- a/main.py +++ b/main.py @@ -201,10 +201,10 @@ def ood(): # print('----' + name[z]) # print(url[z]) # print(result.url) - query = manga(name=name[z], url=url[z], url_flag=str(base[z]), view_format=0, unknown_value=0) + # query = manga(name=name[z], url=url[z], url_flag=str(base[z]), view_format=0, unknown_value=0) + result.url = url[z] new_manga['title'] = name[z] added.append(new_manga) - db.session.add(query) z = z + 1 db.session.commit() return jsonify(updated=added) From 553ca5204a83bd2a685f4cf9374fa52d35597189 Mon Sep 17 00:00:00 2001 From: Dan Dembinski Date: Fri, 22 May 2020 23:43:17 -0400 Subject: [PATCH 32/33] ood method should update the row instead of just adding a new row now. It also has some logic to return a list of new, unadded manga when updating urls --- main.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/main.py b/main.py index ce3de6d..d15acd0 100644 --- a/main.py +++ b/main.py @@ -171,7 +171,8 @@ def upgrade(): @app.route('/ood/', methods=['GET']) def ood(): - added = [] + updated = [] + unadded = [] url = [] base = [] @@ -204,10 +205,14 @@ def ood(): # query = manga(name=name[z], url=url[z], url_flag=str(base[z]), view_format=0, unknown_value=0) result.url = url[z] new_manga['title'] = name[z] - added.append(new_manga) + updated.append(new_manga) + else: + new_manga = {} + new_manga['title'] = name[z] + unadded.append(new_manga) z = z + 1 db.session.commit() - return jsonify(updated=added) + return jsonify(updated=updated, unadded=unadded) @app.route('/test/', methods=['GET']) def test(): From c9e9a1c3210ac667717b54a896f9c695e9846056 Mon Sep 17 00:00:00 2001 From: Dan Dembinski Date: Fri, 22 May 2020 23:46:54 -0400 Subject: [PATCH 33/33] Clean up --- main.py | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/main.py b/main.py index d15acd0..0c0c4c0 100644 --- a/main.py +++ b/main.py @@ -120,7 +120,7 @@ def active(): return jsonify(active=activbooks) -@app.route('/check/', methods=['GET']) +@app.route('/check', methods=['GET']) def check(passin=0): passin=passin missingManga = [] @@ -147,7 +147,7 @@ def check(passin=0): else: return jsonify(missingFlags=missingFlags, missingManga=missingManga) -@app.route('/add/', methods=['PUT']) +@app.route('/add', methods=['PUT']) def add(): data = request.get_json() added = [] @@ -163,24 +163,21 @@ def add(): db.session.commit() return jsonify(added=added) -@app.route('/upgrade/', methods=['PUT']) +@app.route('/upgrade', methods=['PUT']) def upgrade(): os.system('pip install --upgrade manga-py') return jsonify(status='manga-py upgrade ran') -@app.route('/ood/', methods=['GET']) +@app.route('/ood', methods=['GET']) def ood(): - updated = [] unadded = [] - url = [] base = [] name = [] y = 0 z = 0 - with open(PATH + "/tach.json", "r") as tf: # with open("tach.json", "r") as tf: data = json.load(tf) @@ -214,7 +211,7 @@ def ood(): db.session.commit() return jsonify(updated=updated, unadded=unadded) -@app.route('/test/', methods=['GET']) +@app.route('/test', methods=['GET']) def test(): y = 0 mangaInfo=[]