mirror of
https://github.com/paul-nameless/tg
synced 2024-11-22 03:43:19 +00:00
Merge pull request #182 from paul-nameless/copy-file-shortcut
Add copy to download dir keybinding
This commit is contained in:
commit
3ab0779c61
4 changed files with 33 additions and 0 deletions
|
@ -190,6 +190,8 @@ FILE_PICKER_CMD = "ranger --choosefile={file_path}"
|
||||||
# FILE_PICKER_CMD = "nnn -p {file_path}"
|
# FILE_PICKER_CMD = "nnn -p {file_path}"
|
||||||
|
|
||||||
MAILCAP_FILE = os.path.expanduser("~/.config/mailcap")
|
MAILCAP_FILE = os.path.expanduser("~/.config/mailcap")
|
||||||
|
|
||||||
|
DOWNLOAD_DIR = os.path.expanduser("~/Downloads/") # copy file to this dir
|
||||||
```
|
```
|
||||||
|
|
||||||
### Mailcap file
|
### Mailcap file
|
||||||
|
|
|
@ -75,6 +75,7 @@ KEEP_MEDIA = 7
|
||||||
|
|
||||||
FILE_PICKER_CMD = "ranger --choosefile={file_path}"
|
FILE_PICKER_CMD = "ranger --choosefile={file_path}"
|
||||||
|
|
||||||
|
DOWNLOAD_DIR = os.path.expanduser("~/Downloads/")
|
||||||
|
|
||||||
if os.path.isfile(CONFIG_FILE):
|
if os.path.isfile(CONFIG_FILE):
|
||||||
config_params = runpy.run_path(CONFIG_FILE)
|
config_params = runpy.run_path(CONFIG_FILE)
|
||||||
|
|
|
@ -100,6 +100,20 @@ class Controller:
|
||||||
"\n".join(f"{k}: {v}" for k, v in info.items() if v),
|
"\n".join(f"{k}: {v}" for k, v in info.items() if v),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@bind(msg_handler, ["O"])
|
||||||
|
def save_file_in_folder(self) -> None:
|
||||||
|
chat_id = self.model.chats.id_by_index(self.model.current_chat)
|
||||||
|
if not chat_id:
|
||||||
|
return
|
||||||
|
msg_ids = self.model.selected[chat_id]
|
||||||
|
if not msg_ids:
|
||||||
|
msg = self.model.current_msg
|
||||||
|
msg_ids = [msg["id"]]
|
||||||
|
else:
|
||||||
|
self.discard_selected_msgs()
|
||||||
|
if self.model.copy_files(chat_id, msg_ids, config.DOWNLOAD_DIR):
|
||||||
|
self.present_info(f"Copied files to {config.DOWNLOAD_DIR}")
|
||||||
|
|
||||||
@bind(msg_handler, ["o"])
|
@bind(msg_handler, ["o"])
|
||||||
def open_url(self) -> None:
|
def open_url(self) -> None:
|
||||||
msg = MsgProxy(self.model.current_msg)
|
msg = MsgProxy(self.model.current_msg)
|
||||||
|
|
16
tg/models.py
16
tg/models.py
|
@ -1,5 +1,6 @@
|
||||||
import base64
|
import base64
|
||||||
import logging
|
import logging
|
||||||
|
import shutil
|
||||||
import sys
|
import sys
|
||||||
import time
|
import time
|
||||||
from collections import defaultdict, namedtuple
|
from collections import defaultdict, namedtuple
|
||||||
|
@ -236,6 +237,21 @@ class Model:
|
||||||
copy_to_clipboard("\n".join(buffer))
|
copy_to_clipboard("\n".join(buffer))
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
def copy_files(
|
||||||
|
self, chat_id: int, msg_ids: List[int], dest_dir: str
|
||||||
|
) -> bool:
|
||||||
|
is_copied = False
|
||||||
|
for msg_id in msg_ids:
|
||||||
|
_msg = self.msgs.get_message(chat_id, msg_id)
|
||||||
|
if not _msg:
|
||||||
|
return False
|
||||||
|
msg = MsgProxy(_msg)
|
||||||
|
if msg.file_id and msg.local_path:
|
||||||
|
file_path = msg.local_path
|
||||||
|
shutil.copy2(file_path, dest_dir)
|
||||||
|
is_copied = True
|
||||||
|
return is_copied
|
||||||
|
|
||||||
def get_private_chat_info(self, chat: Dict[str, Any]) -> Dict[str, Any]:
|
def get_private_chat_info(self, chat: Dict[str, Any]) -> Dict[str, Any]:
|
||||||
user_id = chat["id"]
|
user_id = chat["id"]
|
||||||
user = self.users.get_user(user_id)
|
user = self.users.get_user(user_id)
|
||||||
|
|
Loading…
Reference in a new issue