first commit
This commit is contained in:
+119
@@ -0,0 +1,119 @@
|
||||
# Copy to .env for local runs. On Heroku set these as Config Vars instead.
|
||||
# Placeholder values only - never commit real secrets.
|
||||
|
||||
# ---------------------------------------------------------------- Telegram
|
||||
# user = your own account (full history, needs login); bot = bot admin of the channel
|
||||
TELEGRAM_MODE=user
|
||||
# From https://my.telegram.org -> API development tools (needed in both modes)
|
||||
TELEGRAM_API_ID=1234567
|
||||
TELEGRAM_API_HASH=your_api_hash_here
|
||||
# From @BotFather: admin command interface (required in bot mode, recommended in user mode)
|
||||
TELEGRAM_BOT_TOKEN=123456789:replace-with-your-bot-token
|
||||
# User mode on Heroku: output of `python main.py login --session-string`.
|
||||
# Locally you can leave it empty and use `python main.py login` (session file).
|
||||
TELEGRAM_SESSION_STRING=
|
||||
# Numeric Telegram user IDs allowed to use the commands (comma-separated)
|
||||
ADMIN_USER_IDS=111111111
|
||||
# Chats that receive progress/notifications (default: ADMIN_USER_IDS)
|
||||
NOTIFY_CHAT_IDS=
|
||||
# @username, https://t.me/... link, or -100... numeric ID
|
||||
SOURCE_CHANNEL_ID=@your_channel
|
||||
# existing | new | both
|
||||
PROCESS_MODE=both
|
||||
START_MESSAGE_ID=1
|
||||
# Optional ISO date: only messages on/after this date (e.g. 2024-01-31)
|
||||
START_DATE=
|
||||
INCLUDE_DOCUMENT_VIDEOS=true
|
||||
# Optional comma-separated filters (case-insensitive)
|
||||
FILTER_TOPICS=
|
||||
FILTER_BATCHES=
|
||||
# Bot mode history probing (bots cannot list history)
|
||||
BOT_SCAN_MAX_EMPTY=200
|
||||
BOT_SCAN_END_ID=
|
||||
# Telegram flood waits shorter than this (seconds) are slept through automatically
|
||||
FLOOD_SLEEP_THRESHOLD=60
|
||||
SESSION_DIR=data/sessions
|
||||
|
||||
# ---------------------------------------------------------------- Google Drive
|
||||
# oauth (personal Drive) | service_account (Shared Drive)
|
||||
GOOGLE_AUTH_MODE=oauth
|
||||
# drive.file (least privilege; bot only sees folders it created) | drive (full access)
|
||||
GOOGLE_DRIVE_SCOPE=drive.file
|
||||
# Local OAuth files (used by `python main.py drive-auth`)
|
||||
GOOGLE_CLIENT_SECRETS_FILE=credentials/client_secret.json
|
||||
GOOGLE_TOKEN_FILE=credentials/token.json
|
||||
# Heroku / file-less alternatives (raw JSON or base64 JSON):
|
||||
GOOGLE_OAUTH_TOKEN_JSON=
|
||||
GOOGLE_SERVICE_ACCOUNT_JSON=
|
||||
GOOGLE_SERVICE_ACCOUNT_FILE=
|
||||
# Folder that will contain the topic folders (empty = top level of My Drive)
|
||||
GOOGLE_DRIVE_ROOT_FOLDER_ID=
|
||||
DRIVE_SHARED_DRIVE_ID=
|
||||
# none (private, default) | anyone_with_link
|
||||
DRIVE_SHARE_MODE=none
|
||||
# Multiple of 256KB; one chunk is held in memory at a time
|
||||
UPLOAD_CHUNK_SIZE=16MB
|
||||
|
||||
# ---------------------------------------------------------------- Organisation & naming
|
||||
BATCH_SUBFOLDERS_ENABLED=false
|
||||
FALLBACK_TOPIC_FOLDER=Uncategorized
|
||||
FALLBACK_BATCH_FOLDER=Unknown Batch
|
||||
# suffix_number | suffix_message_id | skip | fail (never overwrites)
|
||||
DUPLICATE_POLICY=suffix_number
|
||||
# Reuse an existing same-name file in the folder when size and MD5 match
|
||||
REUSE_IDENTICAL_FILES=true
|
||||
# skip | upload : the same Telegram media posted again under a new message ID
|
||||
DUPLICATE_MEDIA_POLICY=skip
|
||||
# fallback (Telegram file name / telegram_<id>) | fail
|
||||
MISSING_TITLE_POLICY=fallback
|
||||
# keep | append : when the Title extension disagrees with the real container
|
||||
EXTENSION_MISMATCH_POLICY=keep
|
||||
# Replace characters Windows cannot store (<>:"|?*)
|
||||
STRICT_FILENAMES=false
|
||||
# Optional persistent sequence number prefix, e.g. "001 - Class 01.mp4"
|
||||
SEQUENCE_PREFIX_ENABLED=false
|
||||
SEQUENCE_PREFIX_FORMAT="{seq:03d} - "
|
||||
|
||||
# ---------------------------------------------------------------- Storage
|
||||
# PostgreSQL (required on Heroku; Heroku Postgres sets it automatically)
|
||||
DATABASE_URL=
|
||||
# SQLite file used when DATABASE_URL is empty (local development)
|
||||
DATABASE_PATH=data/bot.db
|
||||
# Only set to true if you accept losing all progress on every Heroku restart
|
||||
ALLOW_EPHEMERAL_DATABASE=false
|
||||
DATA_DIR=data
|
||||
DOWNLOAD_DIR=downloads
|
||||
LOG_DIR=logs
|
||||
# 0 = unlimited
|
||||
MAX_TEMP_STORAGE=0
|
||||
MIN_FREE_DISK_SPACE=1GB
|
||||
KEEP_LOCAL_FILES=false
|
||||
# Keep the local file of a video that FAILED (default: delete it; it can be downloaded again)
|
||||
KEEP_FAILED_DOWNLOADS=false
|
||||
# Seconds between sweeps that delete abandoned temp files (0 = only at startup / when disk is low)
|
||||
TEMP_CLEANUP_INTERVAL=3600
|
||||
COMPUTE_SHA256=true
|
||||
|
||||
# ---------------------------------------------------------------- Processing
|
||||
MAX_RETRIES=4
|
||||
RETRY_DELAY=30
|
||||
RETRY_MAX_DELAY=1800
|
||||
# Retries of a single HTTP request inside one attempt
|
||||
HTTP_RETRIES=5
|
||||
PROCESSING_DELAY=2
|
||||
# true = halt the whole queue when any video fails permanently
|
||||
STRICT_STOP=false
|
||||
# true = start processing at every boot (otherwise /run; then remembered across restarts)
|
||||
AUTO_START=false
|
||||
# Seconds to wait for another worker to release the queue lock (default 0 locally, 90 on Heroku)
|
||||
INSTANCE_LOCK_WAIT=
|
||||
PROGRESS_INTERVAL=10
|
||||
|
||||
# ---------------------------------------------------------------- /upload tasks
|
||||
# Minutes before an unfinished /upload setup (waiting for links or /confirm) expires
|
||||
UPLOAD_SETUP_TIMEOUT=30
|
||||
# Largest allowed range (end - start + 1) for one task
|
||||
UPLOAD_MAX_RANGE=5000
|
||||
# true = links must point to SOURCE_CHANNEL_ID; false = any channel the Telegram account/bot can access
|
||||
UPLOAD_RESTRICT_TO_SOURCE_CHANNEL=true
|
||||
LOG_LEVEL=info
|
||||
Reference in New Issue
Block a user