Simple VLC-based media player that can play multiple videos at the same time

Overview

GridPlayer

GitHub release (latest by date) PyPI version

Screenshots

Screenshot 1 Screenshot 2 Screenshot 3

About

Simple VLC-based media player that can play multiple videos at the same time. You can play as many videos as you like, the only limit is your hardware. It supports all video formats that VLC supports (which is all of them). You can save your playlist retaining information about the position, sound volume, loops, aspect ratio, etc.

Features

  • Cross-platform (Linux, Mac, and Windows)
  • Support for any video format (VLC)
  • Hardware & software video decoding
  • Control video aspect, playback speed, zoom
  • Set loop fragments with frame percision
  • Configurable grid layout
  • Easy swap videos with drag-n-drop
  • Playlist retains settings for each video

Installation

Windows

Download Windows Installer Download Windows Portable

Linux

Get it from the Flathub Get it from the Snap Store Download AppImage

For better system integration install via Flathub.

Note on AppImage

You may need to set execute permissions on AppImage file in order to run it:

$ chmod +x GridPlayer-0.1.6-x86_64.AppImage

MacOS

Download DMG

DMG image is not signed. You will have to add an exception to run this app.

PIP

$ pip install -U gridplayer

Python 3.8 or later required.

This type of installation will also require a vlc package present in your system. Please refer to VLC official page for instructions on how to install it.

Some distros (e.g. Ubuntu) might also require libxcb-xinerama0 package.

From source

This project uses poetry for dependency management and packaging. You will have to install it first. See poetry official documentation for instructions.

$ git clone https://github.com/vzhd1701/gridplayer.git
$ cd gridplayer/
$ poetry install --no-dev
$ poetry run gridplayer

The same notes about the Python version and external packages from PIP installation apply here.

Known issues

Linux (Snap): X screen when opening a file from the mounted disk

You need to allow GridPlayer snap to access removable storage devices via Snap Store or by running:

$ sudo snap connect gridplayer:removable-media

Linux (Snap): mounted drives are not visible in file selection dialog

You will also see following error if you run GridPlayer from terminal:

GLib-GIO-WARNING **: Error creating IO channel for /proc/self/mountinfo: Permission denied (g-file-error-quark, 2)

To fix this, you need to allow GridPlayer snap to access system mount information and disk quotas via Snap Store or by running:

$ sudo snap connect gridplayer:mount-observe

Linux (KDE): black screen issue when using hardware decoder

Switch on "Opaque overlay (fix black screen)" checkbox in settings.

Overlay might be a bit glitchy in KDE with hardware decoder.

MacOS: "GridPlayer" is damaged and can't be opened

To fix this, you need to execute the following command using terminal:

$ sudo xattr -rd com.apple.quarantine /Applications/GridPlayer.app

Attributions

This software was build using

Python packages

Graphics

  • Hack Font by Source Foundry
    • Licensed under MIT License
  • Basic Icons by Icongeek26
    • Licensed under Flaticon License
  • Suru Icons by Sam Hewitt
    • Licensed under Creative Commons Attribution-Share Alike 4.0
  • Clean App Download Buttons by Tony Thomas
    • Licensed under MediaLoot License

License

This software is licensed under the terms of the GNU General Public License version 3 (GPLv3). Full text of the license is available in the LICENSE file and online.

Comments
  • [Bug]: Aspect Mode doesn't seem to work when opening from playlist

    [Bug]: Aspect Mode doesn't seem to work when opening from playlist

    GridPlayer version

    GridPlayer-0.3.0-x86_64.AppImage

    What OS are you using?

    Linux

    OS Version / Linux distribution

    Arch

    What distribution channel are you using? [LINUX ONLY]

    AppImage

    Bug description

    Example grid: two frames on top, one in the bottom. Even if I set the "Aspect mode:none" in Settings or is saved in the playlist, when I open the playlist, the bottom one is always loaded in "Aspect fit" mode. image

    When loaded the playlist, it is showing "Aspect none":

    #GRIDPLAYER
    #P:{"grid_state": {"mode": "auto_rows", "is_fit": true, "size": 0}, "window_state": [false, false, "AdnQywADAAAAAAAAAAADEAAAAoUAAASNAAAAAwAAAyMAAAKCAAAEigAAAAAAAAAAB4AAAAADAAADIwAAAoIAAASK"], "snapshots": {}, "seek_sync_mode": "disabled", "shuffle_on_load": false, "disable_click_pause": true, "disable_wheel_seek": true}
    #V0:{"id": "95fc8fd0-34ab-4fc4-a094-9573fd3f3e10", "title": "Africam - Tau", "color": "white", "repeat_mode": "single_file", "is_start_random": false, "rate": 1.0, "aspect_mode": "none", "is_muted": true, "scale": 1.0, "volume": 1.0, "stream_quality": "720p [95]"}
    #V1:{"id": "2ba07275-9b53-4448-8630-5f17cfd2900b", "title": "Africam - Olifants River", "color": "white", "repeat_mode": "single_file", "is_start_random": false, "rate": 1.0, "aspect_mode": "none", "is_muted": true, "scale": 1.0, "volume": 1.0, "stream_quality": "1080p [96]"}
    #V2:{"id": "5b4dae03-7de3-40e7-9248-597f5cd381dd", "title": "Africam - Nkorho", "color": "white", "repeat_mode": "single_file", "is_start_random": false, "rate": 1.0, "aspect_mode": "none", "is_muted": true, "scale": 1.0, "volume": 1.0, "stream_quality": "720p [95]"}
    https://www.youtube.com/watch?v=xtqkslRWaQg
    https://www.youtube.com/watch?v=nJdjWJr64Ps
    https://www.youtube.com/watch?v=IdeahH9ebp8
    

    image

    But it does not work: image

    However, when I click the already selected "Aspect none" again, only after that the aspect changes to the "Aspect none". image

    Log excerpt

    No response

    bug 
    opened by dv8472 8
  • Mail.ru fail and download media data independently from playback if weak connection and increase network cache

    Mail.ru fail and download media data independently from playback if weak connection and increase network cache

    GridPlayer version

    v0.3.0

    What OS are you using?

    Windows

    OS Version / Linux distribution

    windows10

    What distribution channel are you using? [LINUX ONLY]

    No response

    Bug description

    Hello, i tried to play this vidéo from mail.ru but Girdplayer failed to resolve url, it will be great if threr is fix please 👍

    https://my.mail.ru/mail/richard1339/video/_myvideo/1041.html?from=videoplayer

    and it will be great if Girdplayer add a button "paste url from clipboard" and option or button to increase network cache to avoid jerks and add this important option to people who have limited 4G data ou weak wifi please , option like the option made by "3DYD Youtube Source" software :

    Download media data independently from playback If this option is checked, filter performs media file download independently of playback. So it continues downloading even when playback is paused.

    This approach is useful when you have slow or unstable Internet connection (so playback is stuttering), or when you need to seek a lot within a file. However if all these cases are not about you, and usually you do not watch whole video, it may end up with bandwidth overuse since a lot of downloaded data eventually will be not watched.

    When this option is unchecked, filter downloads only part of data that is about to be played.

    Filter caches downloaded data in temporary directory regardless of the state of this option and never re-downloads the same data again. Caching is well visualized by Activity

    Log excerpt

    No response

    bug 
    opened by trimechee 7
  • [Feature request]: able to take snapshot of all movies and restore to the taken state

    [Feature request]: able to take snapshot of all movies and restore to the taken state

    Suggestion

    There is annoying task to set all movie time position and zoom level (and may be other things) to a particular state again and again while we analize them. It would be better if we can take a snapshot and than restore it whenever we need.

    enhancement 
    opened by the-liquid-metal 6
  • [Feature request]: Group speedup

    [Feature request]: Group speedup

    Suggestion

    Hello vzhd1701,

    Love this piece of software! I use it to observe the many recordings I have of the electroplating of microelectrodes. It is a great tool to just view or also present.

    Some features that would be awesome:

    • Speedup all the videos at once (or perhaps even a selection of them)
    • Sync all the video timelines
    • Render the complete playlist as a single video/gif

    2 Questions: Why does GridPlayer keep running in the background even when the program is closed? Why does the installation have "websockets" and "cryptodome" folders?

    enhancement 
    opened by SwaggerNiels 5
  • Plugin VLC 3DYD Youtube Source

    Plugin VLC 3DYD Youtube Source

    Hello, "3DYD Youtube Source" which is a set of plugins and has many amazing features like download media data independently from playback, manual quality selection before playback start, HLS live streams support, DASH streams support (video and audio goes from separate streams), support for audio-only playback.....

    and it works only for video players which support playback using DirectShow like "potplayer" and "mpc-hc" (or mpc-be) and they worked for me when i tried this software, an exception is VLC, for which is available separate plugin. : I admit, I installed the vlc plugin from "3DYD Youtube Source" but it didn't work with VLC player, I don't know if I did things wrong, so since our beloved GirdPlayer is compatible with VLC player, can GirdPlayer add an option to embed vlc plugin of "3DYD Youtube Source" so GirdPlayer will have even more outstanding options for streaming !

    Thanks a lot !

    https://ys.3dyd.com/download/

    https://ys.3dyd.com/home/

    Latest VLC plugin version details :

    preliminary support for VLC 3.0. Functionality and installation are the same as in VLC 2.2. Additionally added support for multiple ABI versions within one plugin. That means there will be single DLL plugin file for all VLC versions (per platform) instead of individual plugins for every VLC version.

    https://ys.3dyd.com/changelog/vlc/

    for developers, may it can help to integrate vlc plugin to GirdPlayer :

    https://ys.3dyd.com/developers/

    enhancement 
    opened by trimechee 5
  • Dailymotion fail

    Dailymotion fail

    GridPlayer version

    v0.3.0

    What OS are you using?

    Windows

    OS Version / Linux distribution

    windows 10

    What distribution channel are you using? [LINUX ONLY]

    No response

    Bug description

    Hello, i tried to play dailymotion video but it fails , Girdplayer says "buffering timeout" :

    https://www.dailymotion.com/video/x8bz3a5

    Log excerpt

    No response

    bug 
    opened by trimechee 5
  • [Feature request]: prevent accidentally mouse click and scroll

    [Feature request]: prevent accidentally mouse click and scroll

    Suggestion

    The default mouse click and scroll is useful if we just want to enjoy the show without being distracted by the state of the movie. This behavior is annoying when we want the state of all movies to not change while doing something.

    enhancement 
    opened by the-liquid-metal 5
  • [Bug]: jumbo size menu & setting font

    [Bug]: jumbo size menu & setting font

    GridPlayer version

    0.1.5

    What OS are you using?

    Windows

    OS Version / Linux distribution

    win10

    What distribution channel are you using? [LINUX ONLY]

    No response

    Bug description

    the menu & setting font are to big.

    Log excerpt

    No response

    bug 
    opened by the-liquid-metal 4
  • [Bug]: Error loading Python DLL

    [Bug]: Error loading Python DLL

    GridPlayer version

    0.1.4

    What OS are you using?

    Windows

    OS Version / Linux distribution

    Windows 10 64bit

    What distribution channel are you using? [LINUX ONLY]

    No response

    Bug description

    Version 0.1.4 doesn't work in Windows 10. It has a fatal error about loading a python module upon startup. Neither the installer version or portable version works.

    Error message is: Error loading Python DLL c:.......\GridPlayer\python38.dll. LoadLibrary: The specified module could not be found.

    Log excerpt

    No response

    bug 
    opened by johnnysmith65 4
  • [Feature request]: Sync all video timestamp

    [Feature request]: Sync all video timestamp

    Suggestion

    Due to the delay in opening several videos, there will often be 1+ second difference in the playback. Yes, it's possible to skip +15/-15 secs ahead/back, but I think what the player needs is a "Sync all video playback".

    Let's say you got 3 Video Windows

    Video 1: 00:00:01 Video 2: 00:00:02 Video 3: 00:00:03

    Suggestion either a right click video window, or a button that lets you enter the timestamp to sync to by input: XX:XX:XX or maybe even XX:XX is enough

    I would suggest an option to right click Video1 with an option to "Sync players", meaning all videos would sync to timestamp 00:00:01.

    If you right clicked Video 2 and chose "Sync Players" all videos would sync timestamp to 00:00:02 Video 3, 00:00:03.

    Another Example: Fast forward a video to say 04:00:00 and sync, and all other players would fast forward to 04:00:00 as well.

    Possible complication: if a videos duration is less than the sync time stamp though.

    Not sure if this is possible, but would appreciate if it could be considered as a feature request.

    enhancement 
    opened by eswiig 3
  • [Bug]: Differen length videos are out of sync after scrolling around

    [Bug]: Differen length videos are out of sync after scrolling around

    GridPlayer version

    0.2.0

    What OS are you using?

    Linux

    OS Version / Linux distribution

    Ubuntu 20.04.3 LTS

    What distribution channel are you using? [LINUX ONLY]

    Snap Store

    Bug description

    When playing videos of different length and skipping around or using the bar at the bottom the videos get out of sync. menaing, the playback time is not synchronized form the start, but by the length of each video, so each video is say 42% in, not 42seconds from the start, which with different lengths would be different values.

    Log excerpt

    No response

    bug 
    opened by joshinils 3
  • [Bug]:

    [Bug]:

    GridPlayer version

    0.4.3

    What OS are you using?

    Linux

    OS Version / Linux distribution

    Ubuntu 22.04.1

    What distribution channel are you using? [LINUX ONLY]

    None

    Bug description

    I download the source code of your project and try run it by "poetry run gridplayer" command but it crashed. Here is the full error log: 2022-12-14 14:51:31,300 (21039) | UNHANDLED | CRITICAL | Traceback (most recent call last): File "", line 1, in File "/home/harry/gridplayer/gridplayer/main.py", line 29, in main ret = run_app() File "/home/harry/gridplayer/gridplayer/main/run.py", line 14, in run_app vlc_version, vlc_python_version = init_vlc() File "/home/harry/gridplayer/gridplayer/utils/libvlc.py", line 32, in init_vlc vlc_version = _get_vlc_version() File "/home/harry/gridplayer/gridplayer/utils/libvlc.py", line 85, in _get_vlc_version with importing_embed_vlc(): File "/usr/lib/python3.10/contextlib.py", line 142, in exit next(self.gen) File "/home/harry/gridplayer/gridplayer/utils/libvlc_fixer.py", line 30, in importing_embed_vlc _fix_plugins_path() File "/home/harry/gridplayer/gridplayer/utils/libvlc_fixer.py", line 40, in _fix_plugins_path vlc_lib_root = _get_libvlc_root_path() File "/home/harry/gridplayer/gridplayer/utils/libvlc_fixer.py", line 62, in _get_libvlc_root_path vlc_lib_root = Path(vlc_module.dll._name) # noqa: WPS437 File "/usr/lib/python3.10/pathlib.py", line 960, in new self = cls._from_parts(args) File "/usr/lib/python3.10/pathlib.py", line 594, in _from_parts drv, root, parts = self._parse_args(args) File "/usr/lib/python3.10/pathlib.py", line 578, in _parse_args a = os.fspath(a) TypeError: expected str, bytes or os.PathLike object, not NoneType

    Can you tell me what is the problem here

    Log excerpt

    2022-12-14 14:51:31,300 (21039) | UNHANDLED | CRITICAL | Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/home/harry/gridplayer/gridplayer/__main__.py", line 29, in main
        ret = run_app()
      File "/home/harry/gridplayer/gridplayer/main/run.py", line 14, in run_app
        vlc_version, vlc_python_version = init_vlc()
      File "/home/harry/gridplayer/gridplayer/utils/libvlc.py", line 32, in init_vlc
        vlc_version = _get_vlc_version()
      File "/home/harry/gridplayer/gridplayer/utils/libvlc.py", line 85, in _get_vlc_version
        with importing_embed_vlc():
      File "/usr/lib/python3.10/contextlib.py", line 142, in __exit__
        next(self.gen)
      File "/home/harry/gridplayer/gridplayer/utils/libvlc_fixer.py", line 30, in importing_embed_vlc
        _fix_plugins_path()
      File "/home/harry/gridplayer/gridplayer/utils/libvlc_fixer.py", line 40, in _fix_plugins_path
        vlc_lib_root = _get_libvlc_root_path()
      File "/home/harry/gridplayer/gridplayer/utils/libvlc_fixer.py", line 62, in _get_libvlc_root_path
        vlc_lib_root = Path(vlc_module.dll._name)  # noqa: WPS437
      File "/usr/lib/python3.10/pathlib.py", line 960, in __new__
        self = cls._from_parts(args)
      File "/usr/lib/python3.10/pathlib.py", line 594, in _from_parts
        drv, root, parts = self._parse_args(args)
      File "/usr/lib/python3.10/pathlib.py", line 578, in _parse_args
        a = os.fspath(a)
    TypeError: expected str, bytes or os.PathLike object, not NoneType
    
    bug 
    opened by chudinhhai 0
  • [Bug]: Time shown is not accurate

    [Bug]: Time shown is not accurate

    GridPlayer version

    0.4.3

    What OS are you using?

    Windows

    OS Version / Linux distribution

    Windows 10

    What distribution channel are you using? [LINUX ONLY]

    None

    Bug description

    Video position (gridplayer.widgets.video_block.VideoBlock.video_params.current_position) is not the an actual timecode in the video.

    Log excerpt

    No response

    bug 
    opened by x4Cx58x54 0
  • Save a playlist with a relative path

    Save a playlist with a relative path

    Hi, I'd like to know if it is possible to save a playlist using a relative path for the video files. At the momento the videos are saved with a full path. Ex:

    C:\WTT\2022\000deg-P30\AXIS-P3245-LV_500.mp4

    I'd like save a playlist in order to be opened on different PCs, something like:

    ..\VIDEO\AXIS-P3245-LV_500.mp4

    Is it possible? thanks Lorenzo

    opened by lore7979 0
  • Hls streams and m3u8 bug

    Hls streams and m3u8 bug

    Hello, Ffmpeg seems to have some problems to decode hls m3u8 streams, but a tool like HLSDL seems to solve these problems, please it will be great if there is support for specific hls streams to some websites by integrating these m3u8 software , thank you very much !

    C program to download VoD HLS (.m3u8) files

    https://github.com/selsta/hlsdl

    m3u8 : Python m3u8 Parser for HTTP Live Streaming (HLS) Transmissions :

    https://github.com/globocom/m3u8

    [.NET] m3u8 downloader Open source command line m3u8/HLS/dash downloader, supports common AES-128-CBC decryption, multi-threading, custom request headers, etc. Supports Simplified Chinese, Traditional Chinese and English. English Supported.

    https://github.com/nilaoda/N_m3u8DL-CLI

    [.NET7] Cross-Platform stream downloader for DASH/HLS.

    https://github.com/nilaoda/N_m3u8DL-RE

    and

    https://github.com/HeiSir2014/M3U8-Downloader

    https://github.com/Spark-NF/hls-downloader

    " HLSDL appears working much better than ffmpeg in these cases. Hlsdl is public and the source code available. The stream plays almost immediately and is stable. No errors or buffering. Using ffmpeg for the download step gives a very long intial delay and is not very stable. so I assume that the new crypto+hls RAI flows are badly handled by ffmpeg based players now.

    the video is choppy and unable to buffer enough for a fluid vision. Parole has no problem.

    FFmpeg is not good for HLS streams, but I watched a lot of various HLS streams without any problems. The main problem is that FFmpeg downloads all streams (many video sizes at once), so you can watch only HLS stream with single video size"

    enhancement 
    opened by trimechee 0
  • [Feature request]: Add

    [Feature request]: Add "millisecond" in the Jump (to) Timecode settings

    Suggestion

    Hi, Love this software thank you so much for making it. Could you please Add "millisecond" in the Jump (to) Timecode settings as it is useful when syncing of different videos to precision otherwise i have to keep using the current option number of times to get it correct, as most times a lag or difference in time is caused due to it. Also is it possible to add subtitle viewing option for videos which have them.

    enhancement 
    opened by NightHawk007 1
Releases(v0.4.3)
This will help you study and avoid moving mouse coz u dont need mouse for watching youtube videos

This will help you study and avoid moving mouse coz u dont need mouse for watching youtube videos. Neither u need it for pdfs just use your keyboard

KorryKatti 5 Jan 07, 2022
Home Assistant custom component for viewing IP cameras RTSP stream in real time using WebRTC technology

WebRTC Camera Home Assistant custom component for viewing IP cameras RTSP stream in real time using WebRTC technology. Based on: Pion - pure Go implem

Alex X 739 Dec 30, 2022
Streamlink is a CLI utility which pipes video streams from various services into a video player

Streamlink is a CLI utility which pipes video streams from various services into a video player

8.2k Dec 26, 2022
Add filters (background blur, etc) to your webcam on Linux.

Add filters (background blur, etc) to your webcam on Linux.

Jashandeep Sohi 480 Dec 14, 2022
Tautulli - A Python based monitoring and tracking tool for Plex Media Server.

Tautulli A python based web application for monitoring, analytics and notifications for Plex Media Server. This project is based on code from Headphon

Tautulli 4.7k Jan 07, 2023
Python package to display video in GUI using OpenCV-Python and PySide6

Python package to display video in GUI using OpenCV-Python and PySide6. Introduction cv2PySide6 is a package which provides utility classes and functi

3 Jun 06, 2022
Adblocker for movie subtitles.

SubAdBlock Adblocker for movie subtitles. Usage Place "main.py" and "config.conf" in directory with subtitles and run "main.py". It will automatically

Marko Živić 1 Jan 09, 2022
Play Video & Music on Telegram Group Video Chat

🖤 DEMONGIRL 🖤 ʜᴇʟʟᴏ ❤️ 🇱🇰 Join us ᴠɪᴅᴇᴏ sᴛʀᴇᴀᴍ ɪs ᴀɴ ᴀᴅᴠᴀɴᴄᴇᴅ ᴛᴇʟᴇʀᴀᴍ ʙᴏᴛ ᴛʜᴀᴛ's ᴀʟʟᴏᴡ ʏᴏᴜ ᴛᴏ ᴘʟᴀʏ ᴠɪᴅᴇᴏ & ᴍᴜsɪᴄ ᴏɴ ᴛᴇʟᴇɢʀᴀᴍ ɢʀᴏᴜᴘ ᴠɪᴅᴇᴏ ᴄʜᴀᴛ 🧪 ɢ

Jonathan 5 Dec 31, 2021
Terminal-Video-Player - A program that can display video in the terminal using ascii characters

Terminal-Video-Player - A program that can display video in the terminal using ascii characters

15 Nov 10, 2022
Python retagging utility for mkv files using mkvmerge.

pyretag A python script to retag mkv files. Setting Up pip install pyfiglet pip install rich Move the mkv files to input folder.

25 Dec 04, 2022
Video Object Segmentation(VOS) From Zero to HeroVideo Object Segmentation(VOS) From Zero to Hero

Video Object Segmentation(VOS) From Zero to Hero! Goal 1:train a two layers cnn model for vos. Finish! see model.py FFNet for more diteal.(2021.9.30)

1 Oct 22, 2021
video streaming userbot (vsu) based on pytgcalls for streaming video trought the telegram video chat group.

VIDEO STREAM USERBOT ✨ an another telegram userbot for streaming video trought the telegram video chat. Environmental Variables 📌 API_ID : Get this v

levina 6 Oct 17, 2021
720p FPGA Media Player (RISC-V + Motion JPEG + SD + HDMI on an Artix 7)

FPGA Media Player This project is a FPGA based media player which is capable of playing Motion JPEG encoded video over HDMI or VGA on commonly availab

179 Dec 02, 2022
Video-to-GIF-Converter - A small code snippet that can be used to convert any video to a gif

Video to GIF Converter Project Description: This is a small code snippet that ca

Hassan Shahzad 3 Jun 22, 2022
A wrapper around ffmpeg to make it work in a concurrent and memory-buffered fashion.

Media Fixer Have you ever had a film or TV show that your TV wasn't able to play its audio? Well this program is for you. Media Fixer is a program whi

Halit Şimşek 3 May 04, 2022
pyffstream - A CLI frontend for streaming over SRT and RTMP specializing in sending off files

pyffstream - A CLI frontend for streaming over SRT and RTMP specializing in sending off files

Gregory Beauregard 3 Mar 04, 2022
Turn any live video stream or locally stored video into a dataset of interesting samples for ML training, or any other type of analysis.

Sieve Video Data Collection Example Find samples that are interesting within hours of raw video, for free and completely automatically using Sieve API

Sieve 72 Aug 01, 2022
A python generator that converts youtube videos to ascii art in your console.

Video To ASCII A python generator that converts youtube videos to ascii art in your console. This has not been tested for windows! Example Normal mode

Julian Jones 24 Nov 02, 2022
Your self hosted Youtube media server

The Tube Archivist Your self hosted Youtube media server Core functionality Subscribe to your favourite Youtube channels Download Videos using yt-dlp

Simon 2.1k Dec 31, 2022
A VcVideoPlayer Bot for Telegram made with 💞 By @ThePro_CoderZ

VcVideoPlayer A VcVideoPlayer Bot for Telegram made with 💞 By @Akki_ThePro Heroku Deploy The easiest way to deploy this Bot is via Heroku. License

1 Dec 06, 2021