Skip to content

feat: add MediaShare service for Telegram media hosting#452

Open
kofany wants to merge 8 commits intoRITlug:mainfrom
kofany:feature/mediashare-pr
Open

feat: add MediaShare service for Telegram media hosting#452
kofany wants to merge 8 commits intoRITlug:mainfrom
kofany:feature/mediashare-pr

Conversation

@kofany
Copy link
Copy Markdown

@kofany kofany commented Dec 7, 2025

Add self-hosted media sharing service for TeleIRC that enables sharing photos, videos, and voice messages from Telegram to IRC via web links.

Features:

  • Modern responsive web player for video/audio with dark/light mode
  • Image viewer with lightbox and thumbnails
  • File list page with media previews and mini-players
  • Automatic cleanup of expired files based on configurable retention
  • Bilingual support (English/Polish)
  • SQLite database for metadata storage
  • API key authentication for uploads
  • Docker support with included Dockerfile

Changes:

  • New MediaShare microservice in internal/mediashare/
  • Telegram handler integration for media uploads
  • Configuration options in env.example
  • Documentation in docs/user/mediashare.md
  • Docker compose example with MediaShare service

kofany and others added 8 commits December 7, 2025 23:06
Add self-hosted media sharing service for TeleIRC that enables sharing
photos, videos, and voice messages from Telegram to IRC via web links.

Features:
- Modern responsive web player for video/audio with dark/light mode
- Image viewer with lightbox and thumbnails
- File list page with media previews and mini-players
- Automatic cleanup of expired files based on configurable retention
- Bilingual support (English/Polish)
- SQLite database for metadata storage
- API key authentication for uploads
- Docker support with included Dockerfile

Changes:
- New MediaShare microservice in internal/mediashare/
- Telegram handler integration for media uploads
- Configuration options in env.example
- Documentation in docs/user/mediashare.md
- Docker compose example with MediaShare service

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add #t=0.5 to video source URL to show frame at 0.5s as thumbnail
instead of black square before playback starts.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Replace SQLite CURRENT_TIMESTAMP (UTC) with Go time.Now() (local time)
to fix 1-hour timezone difference in last opened display.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Don't update last_opened_at when accessing /r/{id} (raw file) because
mini-players on the list page use this endpoint. Only update when
user opens the dedicated player page (/{id}).

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add MEDIASHARE_SHOW_LIST config option (default: false) to control
whether the file list is displayed on the main page. Disabled by
default for privacy - only direct file links work when disabled.

Config: MEDIASHARE_SHOW_LIST=true/false or -showlist flag

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add MEDIASHARE_MAIN_IMG config option to display a custom image on
the main page. When set, shows the image in a styled container with
dark/light mode support. Takes priority over ShowList.

Config: MEDIASHARE_MAIN_IMG=/path/to/image.png or -mainimg flag

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add /main-image endpoint to serve the configured main image file.
The template now uses this endpoint instead of the filesystem path
which browsers cannot access.

Supports both local paths and external URLs:
- Local path: served via /main-image endpoint
- URL (http/https): used directly in img src

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant