Rename to stealergram, add pyproject.toml, purge em-dashes

- Rename project to stealergram throughout
- Add pyproject.toml (replaces requirements.txt split, folds pytest.ini)
- Replace all em-dashes with hyphens across all source files

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-05-19 10:06:30 -04:00
parent 4c104cddd2
commit 741e6bb0d3
46 changed files with 244 additions and 191 deletions

View File

@@ -1,5 +1,5 @@
"""
scraper.py Telethon user client.
scraper.py - Telethon user client.
Handles:
- Listening for new file messages in watched channels
@@ -99,7 +99,7 @@ async def _telethon_download(client: TelegramClient, msg, dest: Path, filename:
"""Download a single file via Telethon. Returns True on success."""
_bid = batch_id or f"telethon_{int(time.monotonic_ns())}"
if batch_id is None:
# Standalone call (not already queued by tdl path) post queued event
# Standalone call (not already queued by tdl path) - post queued event
bus.post(bus.EvDownloadQueued(
batch_id=_bid, filename=filename,
size_mb=round(size / (1024 * 1024), 2),
@@ -165,12 +165,12 @@ async def handle_message(
size = get_filesize(msg)
ok, reason = is_processable(filename, size)
if not ok:
log.warning(f" handle_message: skipping '{filename}' {reason}")
log.warning(f" handle_message: skipping '{filename}' - {reason}")
return
doc_id = msg.media.document.id
if is_seen(doc_id):
log.info(f" Skipping {filename} already processed.")
log.info(f" Skipping {filename} - already processed.")
return
dest = _make_dest(msg, filename)
@@ -180,7 +180,7 @@ async def handle_message(
downloaded = await download_single_with_tdl(msg, dest) if is_tdl_available() else False
if not downloaded:
if is_tdl_available():
log.warning(" [tdl] failed falling back to Telethon")
log.warning(" [tdl] failed - falling back to Telethon")
downloaded = await _telethon_download(client, msg, dest, filename, size)
if not downloaded:
@@ -307,7 +307,7 @@ async def backfill_channel(
ok, reason = is_processable(filename, size)
if not ok:
log.warning(f" [Backfill] Skipping '{filename}' {reason}")
log.warning(f" [Backfill] Skipping '{filename}' - {reason}")
continue
if is_seen(msg.media.document.id):
@@ -319,13 +319,13 @@ async def backfill_channel(
if len(batch) >= TDL_AMOUNT:
await flush_batch()
else:
# No tdl fall straight through to single handle_message
# No tdl - fall straight through to single handle_message
await handle_message(client, bot, msg, source_name, patterns, password=password)
total += 1
await asyncio.sleep(0.5)
elif msg.buttons and has_download_button(msg):
# Bot-button messages can't be batched handle individually
# Bot-button messages can't be batched - handle individually
await flush_batch() # flush any pending batch first
await handle_bot_download_message(client, bot, msg, source_name, patterns, password=password)
total += 1
@@ -339,7 +339,7 @@ async def backfill_channel(
except Exception as e:
log.error(f"[Backfill] Error scanning {channel}: {e}")
log.info(f"[Backfill] Done: {channel} {total} file(s) processed")
log.info(f"[Backfill] Done: {channel} - {total} file(s) processed")
async def backfill_all(