From 0b26f46fa417972e476242f74c4c6ec24b86e35d Mon Sep 17 00:00:00 2001 From: CoprDistGit Date: Tue, 20 Jun 2023 07:29:27 +0000 Subject: automatic import of python-tg --- .gitignore | 1 + python-tg.spec | 949 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ sources | 1 + 3 files changed, 951 insertions(+) create mode 100644 python-tg.spec create mode 100644 sources diff --git a/.gitignore b/.gitignore index e69de29..18aa1ab 100644 --- a/.gitignore +++ b/.gitignore @@ -0,0 +1 @@ +/tg-0.19.0.tar.gz diff --git a/python-tg.spec b/python-tg.spec new file mode 100644 index 0000000..c926a3a --- /dev/null +++ b/python-tg.spec @@ -0,0 +1,949 @@ +%global _empty_manifest_terminate_build 0 +Name: python-tg +Version: 0.19.0 +Release: 1 +Summary: Terminal Telegram client +License: Unlicense +URL: https://github.com/paul-nameless/tg +Source0: https://mirrors.aliyun.com/pypi/web/packages/a6/60/28050c8bae1f36bc399d866f09dd50733a81e74c7067c73669a71cdf0d29/tg-0.19.0.tar.gz +BuildArch: noarch + +Requires: python3-telegram + +%description +# tg + +[![Join telegram chat](https://img.shields.io/badge/telegram-join%20chat-black.svg)](https://t.me/tg_term) + +Telegram terminal client. + +![tg screenshot](tg-screenshot.png) + + +## Features + +- [X] view mediafiles: photo, video, voice/video notes, documents +- [X] ability to send pictures, documents, audio, video +- [X] reply, edit, forward, delete, send messages +- [X] stickers +- [X] notifications +- [X] record and send voice msgs +- [X] auto download files +- [X] toggle chats: pin/unpin, mark as read/unread, mute/unmute +- [X] message history +- [X] list contacts +- [X] show user status +- [X] secret chats +- [ ] search +- [ ] bots (bot keyboard) + + +## Requirements + +To use tg, you'll need to have the following installed: + +- [Python >= 3.8](https://www.python.org/downloads/) + + +## Optional dependencies + +- [terminal-notifier](https://github.com/julienXX/terminal-notifier) - for Mac (used by default). You can change it to [dunst](https://github.com/dunst-project/dunst) for Linux or any other notifications program (see `NOTIFY_CMD` in configuration) +- [ffmpeg](https://ffmpeg.org/) - to record voice msgs and upload videos. +- [tdlib](https://tdlib.github.io/td/build.html?language=Python) - in case of incompatibility with built in package. + For example, macOS: + ```sh + brew install tdlib + ``` + and then set in config `TDLIB_PATH` +- `urlview` to choose urls when there is multiple in message, use `URL_VIEW` in config file to use another app (it should accept urls in stdin) +- to open `stickers` and `animated` ones (thumbnail preview) you need to set in mailcap appropriate handler and have app which will open `webp` file: + ```ini + image/webp; mpv %s + ``` +- [ranger](https://github.com/ranger/ranger), [nnn](https://github.com/jarun/nnn) - can be used to choose file when sending, customizable with `FILE_PICKER_CMD` +- [fzf](https://github.com/junegunn/fzf) - to create groups and secret chats (used for single and multiple user selection) + +## Installation + +### From PyPI + +This option is recommended for production: + +```sh +pip3 install tg +tg +``` + +### Homebrew + +```sh +brew tap paul-nameless/homebrew-repo +brew install tg +``` + +### From sources + +This option is recommended for development: + +```sh +git clone https://github.com/paul-nameless/tg.git +cd tg +pip install python-telegram +pip install . +tg +``` + +### Using Docker + +> Note that voice recordings and notifications won't work when using Docker. + +```sh +docker run -it --rm ghcr.io/paul-nameless/tg +``` + +### From the AUR + +If you're using Arch Linux, you can install tg through [its AUR package](https://aur.archlinux.org/packages/telegram-tg/): + +If you're using the `yay` AUR helper, you can install the package with: +```bash +yay -S telegram-tg +``` + +If you want to use the latest developement version via the AUR you can find it [here](https://aur.archlinux.org/packages/telegram-tg-git/) + +## Configuration + +Config file should be stored at `~/.config/tg/conf.py`. This is simple python file. + +### Simple config: + +```python +# should start with + (plus) and contain country code +PHONE = "[phone number in international format]" +``` + +### Advanced configuration: + +All configurable variables can be found [here](https://github.com/paul-nameless/tg/blob/master/tg/config.py) + +```python +import os + +# You can write anything you want here, file will be executed at start time +# You can keep you sensitive information in password managers or gpg +# encrypted files for example +def get_pass(key): + # retrieves key from password store + return os.popen("pass show {} | head -n 1".format(key)).read().strip() + + +PHONE = get_pass("i/telegram-phone") +# encrypt you local tdlib database with the key +ENC_KEY = get_pass("i/telegram-enc-key") + +# log level for debugging, info by default +LOG_LEVEL = "DEBUG" +# path where logs will be stored (all.log and error.log) +LOG_PATH = os.path.expanduser("~/.local/share/tg/") + +# If you have problems with tdlib shipped with the client, you can install and +# use your own, for example: +TDLIB_PATH = "/usr/local/Cellar/tdlib/1.6.0/lib/libtdjson.dylib" + +# you can use any other notification cmd, it is simple python string which +# can format title, msg, subtitle and icon_path paramters +# In these exapmle, kitty terminal is used and when notification is pressed +# it will focus on the tab of running tg +NOTIFY_CMD = "/usr/local/bin/terminal-notifier -title {title} -subtitle {subtitle} -message {msg} -appIcon {icon_path} -sound default -execute '/Applications/kitty.app/Contents/MacOS/kitty @ --to unix:/tmp/kitty focus-tab --no-response -m title:tg'" + +# You can use your own voice recording cmd but it's better to use default one. +# The voice note must be encoded with the Opus codec, and stored inside an OGG +# container. Voice notes can have only a single audio channel. +VOICE_RECORD_CMD = "ffmpeg -f avfoundation -i ':0' -c:a libopus -b:a 32k {file_path}" + +# You can customize chat and msg flags however you want. +# By default words will be used for readability, but you can make +# it as simple as one letter flags like in mutt or add emojies +CHAT_FLAGS = { + "online": "●", + "pinned": "P", + "muted": "M", + # chat is marked as unread + "unread": "U", + # last msg haven't been seen by recipient + "unseen": "✓", + "secret": "🔒", + "seen": "✓✓", # leave empty if you don't want to see it +} +MSG_FLAGS = { + "selected": "*", + "forwarded": "F", + "new": "N", + "unseen": "U", + "edited": "E", + "pending": "...", + "failed": "💩", + "seen": "✓✓", # leave empty if you don't want to see it +} + +# use this app to open url when there are multiple +URL_VIEW = 'urlview' + +# Specifies range of colors to use for drawing users with +# different colors +# this one uses base 16 colors which should look good by default +USERS_COLORS = tuple(range(2, 16)) + +# to use 256 colors, set range appropriately +# though 233 looks better, because last colors are black and gray +# USERS_COLORS = tuple(range(233)) + +# to make one color for all users +# USERS_COLORS = (4,) + +# cleanup cache +# Values: N days, None (never) +KEEP_MEDIA = 7 + +FILE_PICKER_CMD = "ranger --choosefile={file_path}" +# FILE_PICKER_CMD = "nnn -p {file_path}" + +MAILCAP_FILE = os.path.expanduser("~/.config/mailcap") + +DOWNLOAD_DIR = os.path.expanduser("~/Downloads/") # copy file to this dir +``` + +### Mailcap file + +Mailcap file is used for deciding how to open telegram files (docs, pics, voice notes, etc.). Path to the file can be overriden with `MAILCAP_FILE` in config file. + +Example: `~/.mailcap` + +```ini +# media +video/*; mpv "%s" +audio/ogg; mpv --speed=1.33 "%s" +audio/mpeg; mpv --no-video "%s" +image/*; qview "%s" + +# text +text/html; w3m "%s" +text/html; open -a Firefox "%s" +text/plain; less "%s" + +# fallback to vim +text/*; vim "%s" +``` + + +## Keybindings + +vi like keybindings are used in the project. Can be used commands like `4j` - 4 lines down. + +For navigation arrow keys also can be used. + +### Chats: + +- `j,k`: move up/down +- `J,K`: move 10 chats up/down +- `g`: go to top chat +- `l`: open msgs of the chat +- `m`: mute/unmute current chat +- `p`: pin/unpin current chat +- `u`: mark read/unread +- `r`: read current chat +- `c`: show list of contacts +- `dd`: delete chat or remove history +- `ng`: create new group chat +- `ns`: create new secret chat +- `/`: search in chats +- `?`: show help + +## Msgs: + +- `j,k`: move up/down +- `J,K`: move 10 msgs up/down +- `G`: move to the last msg (at the bottom) +- `D`: download file +- `l`: if video, pics or audio then open app specified in mailcap file, for example: + ```ini + # Images + image/png; qView "%s" + audio/*; mpv "%s" + ``` + if text, open in `less` (to view multiline msgs) +- `e`: edit current msg +- ``: select msg and jump one msg down (use for deletion or forwarding) +- ``: same as space but jumps one msg up +- `y`: yank (copy) selected msgs with to internal buffer (for forwarding) and copy current msg text or path to file to clipboard +- `p`: forward (paste) yanked (copied) msgs to current chat +- `dd`: delete msg for everybody (multiple messages will be deleted if selected) +- `i or a`: insert mode, type new message +- `I or A`: open vim to write long msg and send +- `v`: record and send voice message +- `r,R`: reply to a current msg +- `S`: calls a file picker +- `sv`: send video +- `sa`: send audio +- `sp`: send picture +- `sd`: send document +- `o`: open url present in message (if multiple urls, `urlview` will be opened) +- `]`: next chat +- `[`: prev chat +- `u`: show user info (username, bio, phone, etc.) +- `c`: show chat info (e.g. secret chat encryption key, chat id, state, etc.) +- `?`: show help +- `!`: open msg with custom cmd + +## Publish + +Run task to automatically increase version and release (https://taskfile.dev): + +```sh +task release +``` + + +%package -n python3-tg +Summary: Terminal Telegram client +Provides: python-tg +BuildRequires: python3-devel +BuildRequires: python3-setuptools +BuildRequires: python3-pip +%description -n python3-tg +# tg + +[![Join telegram chat](https://img.shields.io/badge/telegram-join%20chat-black.svg)](https://t.me/tg_term) + +Telegram terminal client. + +![tg screenshot](tg-screenshot.png) + + +## Features + +- [X] view mediafiles: photo, video, voice/video notes, documents +- [X] ability to send pictures, documents, audio, video +- [X] reply, edit, forward, delete, send messages +- [X] stickers +- [X] notifications +- [X] record and send voice msgs +- [X] auto download files +- [X] toggle chats: pin/unpin, mark as read/unread, mute/unmute +- [X] message history +- [X] list contacts +- [X] show user status +- [X] secret chats +- [ ] search +- [ ] bots (bot keyboard) + + +## Requirements + +To use tg, you'll need to have the following installed: + +- [Python >= 3.8](https://www.python.org/downloads/) + + +## Optional dependencies + +- [terminal-notifier](https://github.com/julienXX/terminal-notifier) - for Mac (used by default). You can change it to [dunst](https://github.com/dunst-project/dunst) for Linux or any other notifications program (see `NOTIFY_CMD` in configuration) +- [ffmpeg](https://ffmpeg.org/) - to record voice msgs and upload videos. +- [tdlib](https://tdlib.github.io/td/build.html?language=Python) - in case of incompatibility with built in package. + For example, macOS: + ```sh + brew install tdlib + ``` + and then set in config `TDLIB_PATH` +- `urlview` to choose urls when there is multiple in message, use `URL_VIEW` in config file to use another app (it should accept urls in stdin) +- to open `stickers` and `animated` ones (thumbnail preview) you need to set in mailcap appropriate handler and have app which will open `webp` file: + ```ini + image/webp; mpv %s + ``` +- [ranger](https://github.com/ranger/ranger), [nnn](https://github.com/jarun/nnn) - can be used to choose file when sending, customizable with `FILE_PICKER_CMD` +- [fzf](https://github.com/junegunn/fzf) - to create groups and secret chats (used for single and multiple user selection) + +## Installation + +### From PyPI + +This option is recommended for production: + +```sh +pip3 install tg +tg +``` + +### Homebrew + +```sh +brew tap paul-nameless/homebrew-repo +brew install tg +``` + +### From sources + +This option is recommended for development: + +```sh +git clone https://github.com/paul-nameless/tg.git +cd tg +pip install python-telegram +pip install . +tg +``` + +### Using Docker + +> Note that voice recordings and notifications won't work when using Docker. + +```sh +docker run -it --rm ghcr.io/paul-nameless/tg +``` + +### From the AUR + +If you're using Arch Linux, you can install tg through [its AUR package](https://aur.archlinux.org/packages/telegram-tg/): + +If you're using the `yay` AUR helper, you can install the package with: +```bash +yay -S telegram-tg +``` + +If you want to use the latest developement version via the AUR you can find it [here](https://aur.archlinux.org/packages/telegram-tg-git/) + +## Configuration + +Config file should be stored at `~/.config/tg/conf.py`. This is simple python file. + +### Simple config: + +```python +# should start with + (plus) and contain country code +PHONE = "[phone number in international format]" +``` + +### Advanced configuration: + +All configurable variables can be found [here](https://github.com/paul-nameless/tg/blob/master/tg/config.py) + +```python +import os + +# You can write anything you want here, file will be executed at start time +# You can keep you sensitive information in password managers or gpg +# encrypted files for example +def get_pass(key): + # retrieves key from password store + return os.popen("pass show {} | head -n 1".format(key)).read().strip() + + +PHONE = get_pass("i/telegram-phone") +# encrypt you local tdlib database with the key +ENC_KEY = get_pass("i/telegram-enc-key") + +# log level for debugging, info by default +LOG_LEVEL = "DEBUG" +# path where logs will be stored (all.log and error.log) +LOG_PATH = os.path.expanduser("~/.local/share/tg/") + +# If you have problems with tdlib shipped with the client, you can install and +# use your own, for example: +TDLIB_PATH = "/usr/local/Cellar/tdlib/1.6.0/lib/libtdjson.dylib" + +# you can use any other notification cmd, it is simple python string which +# can format title, msg, subtitle and icon_path paramters +# In these exapmle, kitty terminal is used and when notification is pressed +# it will focus on the tab of running tg +NOTIFY_CMD = "/usr/local/bin/terminal-notifier -title {title} -subtitle {subtitle} -message {msg} -appIcon {icon_path} -sound default -execute '/Applications/kitty.app/Contents/MacOS/kitty @ --to unix:/tmp/kitty focus-tab --no-response -m title:tg'" + +# You can use your own voice recording cmd but it's better to use default one. +# The voice note must be encoded with the Opus codec, and stored inside an OGG +# container. Voice notes can have only a single audio channel. +VOICE_RECORD_CMD = "ffmpeg -f avfoundation -i ':0' -c:a libopus -b:a 32k {file_path}" + +# You can customize chat and msg flags however you want. +# By default words will be used for readability, but you can make +# it as simple as one letter flags like in mutt or add emojies +CHAT_FLAGS = { + "online": "●", + "pinned": "P", + "muted": "M", + # chat is marked as unread + "unread": "U", + # last msg haven't been seen by recipient + "unseen": "✓", + "secret": "🔒", + "seen": "✓✓", # leave empty if you don't want to see it +} +MSG_FLAGS = { + "selected": "*", + "forwarded": "F", + "new": "N", + "unseen": "U", + "edited": "E", + "pending": "...", + "failed": "💩", + "seen": "✓✓", # leave empty if you don't want to see it +} + +# use this app to open url when there are multiple +URL_VIEW = 'urlview' + +# Specifies range of colors to use for drawing users with +# different colors +# this one uses base 16 colors which should look good by default +USERS_COLORS = tuple(range(2, 16)) + +# to use 256 colors, set range appropriately +# though 233 looks better, because last colors are black and gray +# USERS_COLORS = tuple(range(233)) + +# to make one color for all users +# USERS_COLORS = (4,) + +# cleanup cache +# Values: N days, None (never) +KEEP_MEDIA = 7 + +FILE_PICKER_CMD = "ranger --choosefile={file_path}" +# FILE_PICKER_CMD = "nnn -p {file_path}" + +MAILCAP_FILE = os.path.expanduser("~/.config/mailcap") + +DOWNLOAD_DIR = os.path.expanduser("~/Downloads/") # copy file to this dir +``` + +### Mailcap file + +Mailcap file is used for deciding how to open telegram files (docs, pics, voice notes, etc.). Path to the file can be overriden with `MAILCAP_FILE` in config file. + +Example: `~/.mailcap` + +```ini +# media +video/*; mpv "%s" +audio/ogg; mpv --speed=1.33 "%s" +audio/mpeg; mpv --no-video "%s" +image/*; qview "%s" + +# text +text/html; w3m "%s" +text/html; open -a Firefox "%s" +text/plain; less "%s" + +# fallback to vim +text/*; vim "%s" +``` + + +## Keybindings + +vi like keybindings are used in the project. Can be used commands like `4j` - 4 lines down. + +For navigation arrow keys also can be used. + +### Chats: + +- `j,k`: move up/down +- `J,K`: move 10 chats up/down +- `g`: go to top chat +- `l`: open msgs of the chat +- `m`: mute/unmute current chat +- `p`: pin/unpin current chat +- `u`: mark read/unread +- `r`: read current chat +- `c`: show list of contacts +- `dd`: delete chat or remove history +- `ng`: create new group chat +- `ns`: create new secret chat +- `/`: search in chats +- `?`: show help + +## Msgs: + +- `j,k`: move up/down +- `J,K`: move 10 msgs up/down +- `G`: move to the last msg (at the bottom) +- `D`: download file +- `l`: if video, pics or audio then open app specified in mailcap file, for example: + ```ini + # Images + image/png; qView "%s" + audio/*; mpv "%s" + ``` + if text, open in `less` (to view multiline msgs) +- `e`: edit current msg +- ``: select msg and jump one msg down (use for deletion or forwarding) +- ``: same as space but jumps one msg up +- `y`: yank (copy) selected msgs with to internal buffer (for forwarding) and copy current msg text or path to file to clipboard +- `p`: forward (paste) yanked (copied) msgs to current chat +- `dd`: delete msg for everybody (multiple messages will be deleted if selected) +- `i or a`: insert mode, type new message +- `I or A`: open vim to write long msg and send +- `v`: record and send voice message +- `r,R`: reply to a current msg +- `S`: calls a file picker +- `sv`: send video +- `sa`: send audio +- `sp`: send picture +- `sd`: send document +- `o`: open url present in message (if multiple urls, `urlview` will be opened) +- `]`: next chat +- `[`: prev chat +- `u`: show user info (username, bio, phone, etc.) +- `c`: show chat info (e.g. secret chat encryption key, chat id, state, etc.) +- `?`: show help +- `!`: open msg with custom cmd + +## Publish + +Run task to automatically increase version and release (https://taskfile.dev): + +```sh +task release +``` + + +%package help +Summary: Development documents and examples for tg +Provides: python3-tg-doc +%description help +# tg + +[![Join telegram chat](https://img.shields.io/badge/telegram-join%20chat-black.svg)](https://t.me/tg_term) + +Telegram terminal client. + +![tg screenshot](tg-screenshot.png) + + +## Features + +- [X] view mediafiles: photo, video, voice/video notes, documents +- [X] ability to send pictures, documents, audio, video +- [X] reply, edit, forward, delete, send messages +- [X] stickers +- [X] notifications +- [X] record and send voice msgs +- [X] auto download files +- [X] toggle chats: pin/unpin, mark as read/unread, mute/unmute +- [X] message history +- [X] list contacts +- [X] show user status +- [X] secret chats +- [ ] search +- [ ] bots (bot keyboard) + + +## Requirements + +To use tg, you'll need to have the following installed: + +- [Python >= 3.8](https://www.python.org/downloads/) + + +## Optional dependencies + +- [terminal-notifier](https://github.com/julienXX/terminal-notifier) - for Mac (used by default). You can change it to [dunst](https://github.com/dunst-project/dunst) for Linux or any other notifications program (see `NOTIFY_CMD` in configuration) +- [ffmpeg](https://ffmpeg.org/) - to record voice msgs and upload videos. +- [tdlib](https://tdlib.github.io/td/build.html?language=Python) - in case of incompatibility with built in package. + For example, macOS: + ```sh + brew install tdlib + ``` + and then set in config `TDLIB_PATH` +- `urlview` to choose urls when there is multiple in message, use `URL_VIEW` in config file to use another app (it should accept urls in stdin) +- to open `stickers` and `animated` ones (thumbnail preview) you need to set in mailcap appropriate handler and have app which will open `webp` file: + ```ini + image/webp; mpv %s + ``` +- [ranger](https://github.com/ranger/ranger), [nnn](https://github.com/jarun/nnn) - can be used to choose file when sending, customizable with `FILE_PICKER_CMD` +- [fzf](https://github.com/junegunn/fzf) - to create groups and secret chats (used for single and multiple user selection) + +## Installation + +### From PyPI + +This option is recommended for production: + +```sh +pip3 install tg +tg +``` + +### Homebrew + +```sh +brew tap paul-nameless/homebrew-repo +brew install tg +``` + +### From sources + +This option is recommended for development: + +```sh +git clone https://github.com/paul-nameless/tg.git +cd tg +pip install python-telegram +pip install . +tg +``` + +### Using Docker + +> Note that voice recordings and notifications won't work when using Docker. + +```sh +docker run -it --rm ghcr.io/paul-nameless/tg +``` + +### From the AUR + +If you're using Arch Linux, you can install tg through [its AUR package](https://aur.archlinux.org/packages/telegram-tg/): + +If you're using the `yay` AUR helper, you can install the package with: +```bash +yay -S telegram-tg +``` + +If you want to use the latest developement version via the AUR you can find it [here](https://aur.archlinux.org/packages/telegram-tg-git/) + +## Configuration + +Config file should be stored at `~/.config/tg/conf.py`. This is simple python file. + +### Simple config: + +```python +# should start with + (plus) and contain country code +PHONE = "[phone number in international format]" +``` + +### Advanced configuration: + +All configurable variables can be found [here](https://github.com/paul-nameless/tg/blob/master/tg/config.py) + +```python +import os + +# You can write anything you want here, file will be executed at start time +# You can keep you sensitive information in password managers or gpg +# encrypted files for example +def get_pass(key): + # retrieves key from password store + return os.popen("pass show {} | head -n 1".format(key)).read().strip() + + +PHONE = get_pass("i/telegram-phone") +# encrypt you local tdlib database with the key +ENC_KEY = get_pass("i/telegram-enc-key") + +# log level for debugging, info by default +LOG_LEVEL = "DEBUG" +# path where logs will be stored (all.log and error.log) +LOG_PATH = os.path.expanduser("~/.local/share/tg/") + +# If you have problems with tdlib shipped with the client, you can install and +# use your own, for example: +TDLIB_PATH = "/usr/local/Cellar/tdlib/1.6.0/lib/libtdjson.dylib" + +# you can use any other notification cmd, it is simple python string which +# can format title, msg, subtitle and icon_path paramters +# In these exapmle, kitty terminal is used and when notification is pressed +# it will focus on the tab of running tg +NOTIFY_CMD = "/usr/local/bin/terminal-notifier -title {title} -subtitle {subtitle} -message {msg} -appIcon {icon_path} -sound default -execute '/Applications/kitty.app/Contents/MacOS/kitty @ --to unix:/tmp/kitty focus-tab --no-response -m title:tg'" + +# You can use your own voice recording cmd but it's better to use default one. +# The voice note must be encoded with the Opus codec, and stored inside an OGG +# container. Voice notes can have only a single audio channel. +VOICE_RECORD_CMD = "ffmpeg -f avfoundation -i ':0' -c:a libopus -b:a 32k {file_path}" + +# You can customize chat and msg flags however you want. +# By default words will be used for readability, but you can make +# it as simple as one letter flags like in mutt or add emojies +CHAT_FLAGS = { + "online": "●", + "pinned": "P", + "muted": "M", + # chat is marked as unread + "unread": "U", + # last msg haven't been seen by recipient + "unseen": "✓", + "secret": "🔒", + "seen": "✓✓", # leave empty if you don't want to see it +} +MSG_FLAGS = { + "selected": "*", + "forwarded": "F", + "new": "N", + "unseen": "U", + "edited": "E", + "pending": "...", + "failed": "💩", + "seen": "✓✓", # leave empty if you don't want to see it +} + +# use this app to open url when there are multiple +URL_VIEW = 'urlview' + +# Specifies range of colors to use for drawing users with +# different colors +# this one uses base 16 colors which should look good by default +USERS_COLORS = tuple(range(2, 16)) + +# to use 256 colors, set range appropriately +# though 233 looks better, because last colors are black and gray +# USERS_COLORS = tuple(range(233)) + +# to make one color for all users +# USERS_COLORS = (4,) + +# cleanup cache +# Values: N days, None (never) +KEEP_MEDIA = 7 + +FILE_PICKER_CMD = "ranger --choosefile={file_path}" +# FILE_PICKER_CMD = "nnn -p {file_path}" + +MAILCAP_FILE = os.path.expanduser("~/.config/mailcap") + +DOWNLOAD_DIR = os.path.expanduser("~/Downloads/") # copy file to this dir +``` + +### Mailcap file + +Mailcap file is used for deciding how to open telegram files (docs, pics, voice notes, etc.). Path to the file can be overriden with `MAILCAP_FILE` in config file. + +Example: `~/.mailcap` + +```ini +# media +video/*; mpv "%s" +audio/ogg; mpv --speed=1.33 "%s" +audio/mpeg; mpv --no-video "%s" +image/*; qview "%s" + +# text +text/html; w3m "%s" +text/html; open -a Firefox "%s" +text/plain; less "%s" + +# fallback to vim +text/*; vim "%s" +``` + + +## Keybindings + +vi like keybindings are used in the project. Can be used commands like `4j` - 4 lines down. + +For navigation arrow keys also can be used. + +### Chats: + +- `j,k`: move up/down +- `J,K`: move 10 chats up/down +- `g`: go to top chat +- `l`: open msgs of the chat +- `m`: mute/unmute current chat +- `p`: pin/unpin current chat +- `u`: mark read/unread +- `r`: read current chat +- `c`: show list of contacts +- `dd`: delete chat or remove history +- `ng`: create new group chat +- `ns`: create new secret chat +- `/`: search in chats +- `?`: show help + +## Msgs: + +- `j,k`: move up/down +- `J,K`: move 10 msgs up/down +- `G`: move to the last msg (at the bottom) +- `D`: download file +- `l`: if video, pics or audio then open app specified in mailcap file, for example: + ```ini + # Images + image/png; qView "%s" + audio/*; mpv "%s" + ``` + if text, open in `less` (to view multiline msgs) +- `e`: edit current msg +- ``: select msg and jump one msg down (use for deletion or forwarding) +- ``: same as space but jumps one msg up +- `y`: yank (copy) selected msgs with to internal buffer (for forwarding) and copy current msg text or path to file to clipboard +- `p`: forward (paste) yanked (copied) msgs to current chat +- `dd`: delete msg for everybody (multiple messages will be deleted if selected) +- `i or a`: insert mode, type new message +- `I or A`: open vim to write long msg and send +- `v`: record and send voice message +- `r,R`: reply to a current msg +- `S`: calls a file picker +- `sv`: send video +- `sa`: send audio +- `sp`: send picture +- `sd`: send document +- `o`: open url present in message (if multiple urls, `urlview` will be opened) +- `]`: next chat +- `[`: prev chat +- `u`: show user info (username, bio, phone, etc.) +- `c`: show chat info (e.g. secret chat encryption key, chat id, state, etc.) +- `?`: show help +- `!`: open msg with custom cmd + +## Publish + +Run task to automatically increase version and release (https://taskfile.dev): + +```sh +task release +``` + + +%prep +%autosetup -n tg-0.19.0 + +%build +%py3_build + +%install +%py3_install +install -d -m755 %{buildroot}/%{_pkgdocdir} +if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi +if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi +if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi +if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi +pushd %{buildroot} +if [ -d usr/lib ]; then + find usr/lib -type f -printf "\"/%h/%f\"\n" >> filelist.lst +fi +if [ -d usr/lib64 ]; then + find usr/lib64 -type f -printf "\"/%h/%f\"\n" >> filelist.lst +fi +if [ -d usr/bin ]; then + find usr/bin -type f -printf "\"/%h/%f\"\n" >> filelist.lst +fi +if [ -d usr/sbin ]; then + find usr/sbin -type f -printf "\"/%h/%f\"\n" >> filelist.lst +fi +touch doclist.lst +if [ -d usr/share/man ]; then + find usr/share/man -type f -printf "\"/%h/%f.gz\"\n" >> doclist.lst +fi +popd +mv %{buildroot}/filelist.lst . +mv %{buildroot}/doclist.lst . + +%files -n python3-tg -f filelist.lst +%dir %{python3_sitelib}/* + +%files help -f doclist.lst +%{_docdir}/* + +%changelog +* Tue Jun 20 2023 Python_Bot - 0.19.0-1 +- Package Spec generated diff --git a/sources b/sources new file mode 100644 index 0000000..77d1238 --- /dev/null +++ b/sources @@ -0,0 +1 @@ +5833175631193dedfff4a2e94796b130 tg-0.19.0.tar.gz -- cgit v1.2.3