2020-08-10 09:23:19 +02:00
# Telegram Index
> Python Web App which indexes a telegram channel(or a chat) and serves its files for download.
2020-08-20 07:22:08 +02:00
[![Open Source Love ](https://badges.frapsoft.com/os/v1/open-source.png?v=103 )](.) [![GPLv3 license ](https://img.shields.io/badge/License-GPLv3-blue.svg )](LICENSE)
2020-08-10 09:23:19 +02:00
2020-08-20 07:22:08 +02:00
## Highlights
* Index one or more telegram channels/chats.
* View messages and media files on the browser.
* Search through the channel/chat.
* Download media files through browser/download managers.
2020-08-10 09:23:19 +02:00
2021-07-05 17:24:17 +02:00
## Deploy Guide (Repl.it)
A detailed and beginner friendly guide on how to deploy this project on a free instance of https://repl.it can be found [here ](replit-deploy-guide.md ).
2020-08-10 09:23:19 +02:00
## Deploy Guide
2020-08-17 09:44:02 +02:00
* **Clone to local machine.**
2020-08-10 09:23:19 +02:00
2020-12-12 17:31:59 +01:00
``` bash
git clone https://github.com/odysseusmax/tg-index.git
cd tg-index
2020-08-10 09:23:19 +02:00
```
2020-08-17 09:44:02 +02:00
* **Create and activate virtual environment.**
2020-08-10 09:23:19 +02:00
2020-12-12 17:31:59 +01:00
``` bash
pip3 install virtualenv
virtualenv venv
source venv/bin/activate
2020-08-10 09:23:19 +02:00
```
2020-08-17 09:44:02 +02:00
* **Install dependencies.**
2020-08-10 09:23:19 +02:00
2020-12-12 17:31:59 +01:00
``` bash
pip3 install -U -r requirements.txt
2020-08-10 09:23:19 +02:00
```
2020-08-17 09:44:02 +02:00
* **Environment Variables.**
2020-08-10 09:23:19 +02:00
2020-08-17 09:44:02 +02:00
| Variable Name | Value
2020-08-10 09:24:30 +02:00
|------------- | -------------
2020-12-12 17:31:59 +01:00
| `API_ID` (required) | Telegram api_id obtained from < https: // my . telegram . org / apps > .
| `API_HASH` (required) | Telegram api_hash obtained from < https: // my . telegram . org / apps > .
2020-08-17 09:44:02 +02:00
| `INDEX_SETTINGS` (required) | See the below description.
2020-08-10 09:23:19 +02:00
| `SESSION_STRING` (required) | String obtained by running `$ python3 app/generate_session_string.py` . (Login with the telegram account which is a participant of the given channel (or chat).
| `PORT` (optional) | Port on which app should listen to, defaults to 8080.
| `HOST` (optional) | Host name on which app should listen to, defaults to 0.0.0.0.
2021-05-22 16:00:08 +02:00
| `DEBUG` (optional) | Give `true` to set logging level to debug, info by default.
| `BLOCK_DOWNLOADS` (optional) | Enable downloads or not. If any value is provided, downloads will be disabled.
2020-12-12 17:31:59 +01:00
| `RESULTS_PER_PAGE` (optional) | Number of results to be returned per page defaults to 20.
2021-06-06 14:11:41 +02:00
| `TGINDEX_USERNAME` (optional) | Username for authentication, defaults to `''` .
2021-06-10 05:28:25 +02:00
| `PASSWORD` (optional) | Password for authentication, defaults to `''` .
2021-06-06 14:42:06 +02:00
| `SHORT_URL_LEN` (optional) | Url length for aliases
2021-05-22 16:00:08 +02:00
| `SESSION_COOKIE_LIFETIME` (optional) | Number of minutes, for which authenticated session is valid for, after which user has to login again. defaults to 60.
2021-06-13 13:01:23 +02:00
| `SECRET_KEY` (optional) | 32 characters long string for signing the session cookies, required if authentication is enabled.
2020-08-10 09:23:19 +02:00
2020-08-17 09:44:02 +02:00
* **Setting value for `INDEX_SETTINGS` **
2020-08-24 13:51:19 +02:00
This is the general format, change the values of corresponding fields as your requirements. Remember to remove spaces.
2020-08-17 09:44:02 +02:00
2020-12-12 17:31:59 +01:00
``` json
2020-08-17 09:44:02 +02:00
{
"index_all": true,
"index_private":false,
"index_group": false,
"index_channel": true,
2020-08-18 07:04:35 +02:00
"exclude_chats": [],
2020-12-12 17:31:59 +01:00
"include_chats": []
2020-08-17 09:44:02 +02:00
}
```
2020-12-12 17:31:59 +01:00
>
2020-08-20 07:22:08 +02:00
> * `index_all` - Whether to consider all the chats associated with the telegram account. Value should either be `true` or `false`.
> * `index_private` - Whether to index private chats. Only considered if `index_all` is set to `true`. Value should either be `true` or `false`.
> * `index_group` - Whether to index group chats. Only considered if `index_all` is set to `true`. Value should either be `true` or `false`.
> * `index_channel` - Whether to index channels. Only considered if `index_all` is set to `true`. Value should either be `true` or `false`.
2020-09-19 13:28:02 +02:00
> * `exclude_chats` - An array/list of chat id's that should be ignored for indexing. Only considered if `index_all` is set to `true`.
> * `include_chats` - An array/list of chat id's to index. Only considered if `index_all` is set to `false`.
2020-08-17 09:44:02 +02:00
* **Run app.**
2020-08-10 09:23:19 +02:00
2020-12-12 17:31:59 +01:00
``` bash
python3 -m app
2020-08-10 09:25:42 +02:00
```
2020-08-10 09:23:19 +02:00
## Contributions
Contributions are welcome.
## Contact
You can contact me [@odysseusmax ](https://tx.me/odysseusmax ).
## License
2020-12-12 17:31:59 +01:00
2020-08-10 09:23:19 +02:00
Code released under [The GNU General Public License ](LICENSE ).