more bugs. Cleaner dockerfile
This commit is contained in:
		| @@ -1,7 +1,8 @@ | ||||
| FROM python:latest | ||||
|  | ||||
| RUN echo "deb http://deb.debian.org/debian/ unstable main contrib non-free" >> /etc/apt/sources.list | ||||
| RUN apt-get update && apt-get install -y \ | ||||
| evince libcanberra-gtk-module \ | ||||
| evince \ | ||||
| # for checking | ||||
| xauth wget tar firefox \ | ||||
| # for geckodriver + gui | ||||
|   | ||||
| @@ -45,7 +45,7 @@ where the `Dockerfile` has to be in the working directory | ||||
| `docker run -it -v /mnt/Data/COSS/CONTAINERDATA/:/app/file_storage/ -v /mnt/Data/COSS/auto_news/app:/code --entrypoint /bin/bash auto_news` | ||||
|  | ||||
|  | ||||
| `docker run -it -v /mnt/Data/COSS/DOWNLOADS/auto_news/container_data/:/app/file_storage/ -e DISPLAY=":0" --network host -v \$XAUTHORITY:/root/.Xauthority auto_news check` | ||||
| `docker run -it -v /mnt/Data/COSS/CONTAINERDATA/:/app/file_storage/ -e DISPLAY=":0" --network host -v XAUTHORITY:/root/.Xauthority auto_news check` | ||||
|  | ||||
|  | ||||
|  | ||||
|   | ||||
| @@ -2,6 +2,7 @@ | ||||
| import configuration | ||||
| models = configuration.models | ||||
| import sys | ||||
| from threading import Thread | ||||
| import logging | ||||
| logger = logging.getLogger(__name__) | ||||
|  | ||||
| @@ -96,10 +97,10 @@ class ArticleWatcher: | ||||
|  | ||||
|  | ||||
|  | ||||
| class Coordinator: | ||||
| class Coordinator(Thread): | ||||
|     def __init__(self, **kwargs) -> None: | ||||
|         """Launcher calls this Coordinator as the main thread to handle connections between the other workers (threaded).""" | ||||
|         pass | ||||
|         super().__init__(target = self.launch) | ||||
|      | ||||
|     def add_workers(self, **kwargs): | ||||
|         self.worker_slack = kwargs.pop("worker_slack", None)  | ||||
| @@ -112,7 +113,8 @@ class Coordinator: | ||||
|          | ||||
|         self.kwargs = kwargs | ||||
|  | ||||
|         for w in [self.worker_slack, self.worker_download, self.worker_fetch, self.worker_upload, self.worker_compress]: | ||||
|     def launch(self) -> None: | ||||
|         for w in [self.worker_download, self.worker_fetch, self.worker_upload, self.worker_compress]: | ||||
|             if not w is None: | ||||
|                 w.start() | ||||
|  | ||||
| @@ -170,12 +172,15 @@ if __name__ == "__main__": | ||||
|         check_runner.verify_unchecked() | ||||
|  | ||||
|     else: # launch with full action | ||||
|         slack_runner = slack_runner.BotRunner(coordinator.incoming_request) | ||||
|         kwargs = { | ||||
|             "worker_download" : DownloadWorker(), | ||||
|             "worker_fetch" : FetchWorker(), | ||||
|             "worker_upload" : UploadWorker(), | ||||
|             "worker_compress" : CompressWorker(), | ||||
|             "worker_slack" : slack_runner.BotRunner(coordinator.incoming_request), | ||||
|             "worker_slack" : slack_runner, | ||||
|             "worker_mail" : mail_runner, | ||||
|         } | ||||
|         coordinator.add_workers(**kwargs) | ||||
|         coordinator.start() | ||||
|         slack_runner.start() | ||||
|   | ||||
| @@ -123,7 +123,7 @@ async def fetch_missed_thread_messages(): | ||||
|             )["messages"] | ||||
|         except SlackApiError: | ||||
|             logger.error("Hit rate limit while querying threaded messages, retrying in {}s ({}/{} queries elapsed)".format(config["api_wait_time"], i, len(threads))) | ||||
|             await asyncio.sleep(config["api_wait_time"]) | ||||
|             await asyncio.sleep(int(config["api_wait_time"])) | ||||
|             messages = slack_client.conversations_replies( | ||||
|                 channel = config["archive_id"], | ||||
|                 ts = t.slack_ts, | ||||
| @@ -152,7 +152,7 @@ async def fetch_missed_channel_reactions(): | ||||
|             reactions = query["message"].get("reactions", []) # default = [] | ||||
|         except SlackApiError: # probably a rate_limit: | ||||
|             logger.error("Hit rate limit while querying reactions. retrying in {}s ({}/{} queries elapsed)".format(config["api_wait_time"], i, len(threads))) | ||||
|             await asyncio.sleep(config["api_wait_time"]) | ||||
|             await asyncio.sleep(int(config["api_wait_time"])) | ||||
|             reactions = query["message"].get("reactions", []) | ||||
|  | ||||
|         for r in reactions: | ||||
| @@ -202,11 +202,13 @@ def message_dict_to_model(message): | ||||
|         ) | ||||
|         logger.info("Saved (text) {} (new={})".format(m, new)) | ||||
|  | ||||
|         for f in message.get("files", []): #default: [] | ||||
|         files = message.get("files", []) | ||||
|         if len(files) >= 1: | ||||
|             f = files[0] #default: [] | ||||
|             m.file_type = f["filetype"] | ||||
|             m.perma_link = f["url_private_download"] | ||||
|             m.save() | ||||
|             logger.info("Saved permalink {} to {} (possibly overwriting)".format(f["name"], m)) | ||||
|             logger.info("Saved permalink {} to {}".format(f["name"], m)) | ||||
|         if new: | ||||
|             return m | ||||
|         else: | ||||
|   | ||||
| @@ -164,7 +164,7 @@ class BotApp(App): | ||||
|      | ||||
|  | ||||
|  | ||||
| class BotRunner(Thread): | ||||
| class BotRunner(): | ||||
|     """Stupid encapsulation so that we can apply the slack decorators to the BotApp""" | ||||
|     def __init__(self, callback, *args, **kwargs) -> None: | ||||
|         self.bot_worker = BotApp(callback, token=config["auth_token"]) | ||||
| @@ -177,11 +177,11 @@ class BotRunner(Thread): | ||||
|         def handle_incoming_reaction(event, say): | ||||
|             return self.bot_worker.handle_incoming_reaction(event) | ||||
|  | ||||
|         target = self.launch | ||||
|         super().__init__(target=target) | ||||
|         # target = self.launch | ||||
|         # super().__init__(target=target) | ||||
|  | ||||
|  | ||||
|     def launch(self): | ||||
|     def start(self): | ||||
|         self.bot_worker.start() | ||||
|         SocketModeHandler(self.bot_worker, config["app_token"]).start() | ||||
|  | ||||
|   | ||||
| @@ -207,7 +207,7 @@ class Thread(ChatBaseModel): | ||||
|  | ||||
|     @property | ||||
|     def initiator_message(self): | ||||
|         return self.messages[0] # todo check if this needs sorting | ||||
|         return self.messages[0] # TODO check if this needs sorting | ||||
|  | ||||
|     @property | ||||
|     def message_count(self): | ||||
| @@ -241,6 +241,7 @@ class Message(ChatBaseModel): | ||||
|     user = ForeignKeyField(User, backref="messages") | ||||
|     text = TextField(default='') | ||||
|     thread = ForeignKeyField(Thread, backref="messages", default=None) | ||||
|     file_type = CharField(default='') | ||||
|     perma_link = CharField(default='') | ||||
|     is_processed_override = BooleanField(default=False) | ||||
|     # reaction | ||||
|   | ||||
| @@ -13,7 +13,7 @@ def shrink_pdf(article): | ||||
|         return article # it probably was a youtube video | ||||
|          | ||||
|     c = subprocess.run( | ||||
|         ["gs", "-sDEVICE=pdfwrite", "-dPDFSETTINGS=/screen", "-dNOPAUSE", "-dBATCH", f"-sOutputFile={config['default_download_path']}/compressed.pdf", f'"{article.save_path + article.file_name}"'], | ||||
|         ["gs", "-sDEVICE=pdfwrite", "-dPDFSETTINGS=/screen", "-dNOPAUSE", "-dBATCH", f"-sOutputFile={config['default_download_path']}/compressed.pdf", f"{article.save_path + article.file_name}"], | ||||
|         stdout=subprocess.PIPE, | ||||
|         stderr=subprocess.PIPE | ||||
|     ) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Remy Moll
					Remy Moll