Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
56 commits
Select commit Hold shift + click to select a range
962ad67
refactor code and add web panel
SegoCode Mar 13, 2025
2efabf4
Update .gitignore
SegoCode Mar 13, 2025
647fbee
Update PanelController.java
SegoCode Mar 13, 2025
9de2f6f
Update PanelController.java
SegoCode Mar 13, 2025
59f6960
move views to resource folder
SegoCode Mar 13, 2025
4302910
Create demo3.png
SegoCode Mar 13, 2025
25cb168
Update CommandExecutor.java
SegoCode Mar 23, 2025
d2c1860
Update admin.html
SegoCode Mar 23, 2025
4c6cc53
Update admin.html
SegoCode Mar 24, 2025
a2a4c3b
Update CommandExecutor.java
SegoCode Mar 25, 2025
512f68c
Update CommandExecutor.java
SegoCode Mar 25, 2025
ef8a109
Update CommandExecutor.java
SegoCode Mar 25, 2025
52fead9
Update CommandExecutor.java
SegoCode Mar 25, 2025
fa09a3f
Update CommandExecutor.java
SegoCode Mar 25, 2025
e108ef3
Update Messages.java
SegoCode Mar 25, 2025
d9e69d1
Update CommandExecutor.java
SegoCode Mar 25, 2025
5096c82
Delete CommandExecutor.java
SegoCode Mar 25, 2025
5a5c7bc
Delete Utils.java
SegoCode Mar 27, 2025
5640c54
Update FileUtil.java
SegoCode Mar 27, 2025
5c9255d
Update Webdlbot.java
SegoCode Mar 27, 2025
13c5476
Update Webdlbot.java
SegoCode Mar 27, 2025
3b88ef3
Update Main.java
SegoCode Mar 27, 2025
53ee2a1
Update Webdlbot.java
SegoCode Mar 27, 2025
619ec1f
Update Webdlbot.java
SegoCode Mar 27, 2025
ff70c20
Update admin.html
SegoCode Mar 28, 2025
386aee8
Update admin.html
SegoCode Mar 28, 2025
a7727be
Update admin.html
SegoCode Mar 28, 2025
f0e6405
Update admin.html
SegoCode Mar 28, 2025
6f47b4d
Update admin.html
SegoCode Mar 28, 2025
8e525ad
Update admin.html
SegoCode Mar 28, 2025
1978b07
Update update-license.yml
SegoCode Apr 1, 2025
d5166ef
Create demoPanel.png
SegoCode Apr 2, 2025
8960170
Update README.md
SegoCode Apr 2, 2025
cd36ca8
Update LICENSE with repository information
invalid-email-address Apr 2, 2025
5ed0706
Merge remote-tracking branch 'origin/main' into develop
invalid-email-address Apr 2, 2025
b771efa
Merge remote-tracking branch 'origin/main' into develop
invalid-email-address Apr 2, 2025
bbed8b2
Update demoPanel.png
SegoCode Apr 2, 2025
cb60585
Merge branch 'develop' of https://github.com/SegoCode/webdl into develop
SegoCode Apr 2, 2025
757bf40
Delete demo3.png
SegoCode Apr 2, 2025
ec03718
Simplify html view
SegoCode May 23, 2025
22e7eb0
Merge remote-tracking branch 'origin/main' into develop
invalid-email-address Jul 10, 2025
9be8273
Merge remote-tracking branch 'origin/main' into develop
invalid-email-address Jul 10, 2025
9569b76
Merge remote-tracking branch 'origin/main' into develop
invalid-email-address Jul 10, 2025
bd02e46
Merge remote-tracking branch 'origin/main' into develop
invalid-email-address Jul 10, 2025
9320cc5
Merge remote-tracking branch 'origin/main' into develop
invalid-email-address Jul 10, 2025
f4b6cb1
Merge remote-tracking branch 'origin/main' into develop
invalid-email-address Jul 10, 2025
addc660
Merge remote-tracking branch 'origin/main' into develop
invalid-email-address Jul 10, 2025
8a2d5de
Merge remote-tracking branch 'origin/main' into develop
invalid-email-address Jul 10, 2025
ccb797c
Update to latest local state
SegoCode Jun 9, 2026
1640689
Update admin.html
SegoCode Jun 11, 2026
99b3936
update structure
SegoCode Jun 11, 2026
741481a
Update pom.xml
SegoCode Jun 11, 2026
1088481
Revert "update structure"
SegoCode Jun 11, 2026
5fab74a
refactor
SegoCode Jun 11, 2026
6e1cb3d
Update pom.xml
SegoCode Jun 11, 2026
4813e86
Update README.md
SegoCode Jun 11, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
50 changes: 39 additions & 11 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
# webdl

<img src="https://raw.githubusercontent.com/SegoCode/webdl_bot/main/media/demo2.gif">
<img src="https://raw.githubusercontent.com/SegoCode/webdl_bot/main/media/demoPanel.png">

<p align="center">
<a href="#about">About</a> •
Expand All @@ -15,30 +14,59 @@ Telegram bot in Java for downloading social media videos using yt-dlp

## Features

- Non-blocking message queue processing
- Non-blocking message queue processing with virtual threads

- Dynamic interaction with messages
- Dynamic interaction with Telegram messages (send, delete, edit)

- Panel with usage statistics
- Web panel with usage statistics on port 8080

- Automatic retry on download failures

## Quick Start & Information

Webdl accepts a video URL, downloads it using [yt-dlp](https://github.com/yt-dlp/yt-dlp), and sends it back to the user as a video message.

Clone and run the project from source code.
### From source

```
git clone https://github.com/SegoCode/webdl
cd webdl\code
mvn clean package
cd webdl/code
mvn clean package -DskipTests
java -jar target/webdl.jar
```

For Docker deployment, make sure to set up environment variables.
Use a temp volume for the download, it will delete after send.
### Docker

```
mvn clean package
cd webdl/code
mvn clean package -DskipTests
docker build -t webdl-image .
docker run -e BOT_TOKEN=your-bot-token -p 8080:8080 -v /mnt/drive/data/webdl:/downloads --name webdl webdl-image
docker run -d \
--name webdl \
--restart unless-stopped \
-e BOT_TOKEN=your-bot-token \
-p 8080:8080 \
-v /mnt/drive/data/webdl:/downloads \
webdl-image
```

### Project structure

```
code/src/main/java/org/segocode/webdl/
├── Main.java # Entry point
├── bot/
│ ├── Webdlbot.java # Telegram long-polling bot
│ ├── constants/Messages.java # User-facing message strings
│ ├── model/{User,DataRootContainer}.java # EclipseStore persistence
│ ├── service/{MessageService,VideoService}.java
│ └── util/MessageUtil.java
├── panel/
│ ├── PanelApplication.java # Javalin web server bootstrap
│ └── AdminController.java # Admin panel route handler
└── system/
├── command/CommandExecutor.java # yt-dlp subprocess with retry
└── util/FileUtil.java
```


Expand Down
12 changes: 3 additions & 9 deletions code/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -8,17 +8,11 @@ COPY src ./src
RUN mvn package -DskipTests

# Runtime stage: Run the application
FROM alpine:latest
FROM eclipse-temurin:21-jre-alpine

RUN apk update && \
apk add --no-cache wget curl ffmpeg && \
RUN apk add --no-cache ffmpeg python3 && \
wget -O /usr/local/bin/yt-dlp https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp && \
chmod a+rx /usr/local/bin/yt-dlp && \
rm -rf /var/cache/apk/*

RUN apk add --no-cache openjdk21 python3 py3-pip

ENV YT_DLP=/usr/bin/yt-dlp PYTHONUNBUFFERED=1
chmod a+rx /usr/local/bin/yt-dlp

WORKDIR /app
COPY --from=build /app/target/webdl.jar /app/webdl.jar
Expand Down
14 changes: 13 additions & 1 deletion code/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -65,13 +65,25 @@
<transformers>
<transformer
implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>org.segocode.Main</mainClass>
<mainClass>org.segocode.webdl.Main</mainClass>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>com.diffplug.spotless</groupId>
<artifactId>spotless-maven-plugin</artifactId>
<version>3.6.0</version>
<configuration>
<java>
<palantirJavaFormat>
<version>2.92.0</version>
</palantirJavaFormat>
</java>
</configuration>
</plugin>
</plugins>
</build>
</project>
32 changes: 0 additions & 32 deletions code/src/main/java/org/segocode/bot/service/MessageService.java

This file was deleted.

62 changes: 0 additions & 62 deletions code/src/main/java/org/segocode/bot/service/VideoService.java

This file was deleted.

60 changes: 0 additions & 60 deletions code/src/main/java/org/segocode/panel/PanelController.java

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,18 +1,14 @@
package org.segocode;
package org.segocode.webdl;

import io.javalin.Javalin;
import org.eclipse.store.storage.embedded.types.EmbeddedStorage;
import org.eclipse.store.storage.embedded.types.EmbeddedStorageManager;
import org.eclipse.store.storage.types.StorageManager;
import org.segocode.bot.Webdlbot;
import org.segocode.panel.PanelController;
import org.segocode.webdl.bot.Webdlbot;
import org.segocode.webdl.panel.PanelApplication;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.telegram.telegrambots.meta.TelegramBotsApi;
import org.telegram.telegrambots.updatesreceivers.DefaultBotSession;

import java.util.Date;

public class Main {
private static final Logger LOGGER = LoggerFactory.getLogger(Main.class);

Expand All @@ -25,7 +21,7 @@ public static void main(String[] args) {
botsApi.registerBot(new Webdlbot(storageManager));
LOGGER.info("Bot started successfully and ready to download videos 🚀");
LOGGER.info("Starting webp anel app...");
PanelController.start(storageManager);
PanelApplication.start(storageManager);
} catch (Exception e) {
LOGGER.error("Error while attempting to start the bot. Error details:", e);
}
Expand Down
Loading
Loading