Telegram bot for Youtube-dl

Overview

English

youtube-dl download telegram bot

ydls와 함께 사용할 수 있는 봇으로, Docker가 설치되는 곳이면 어디든 설치가 가능하다 (ex: 리눅스 서버, 시놀로지 나스)

기존에 ydls 이미지를 그대로 사용하였지만, 채널 이름과, 업로드 날짜를 파일이름에 추가해달라는 요청으로, 부득이 하게 ydls코드를 수정하게 됨

그리하여 repo에 submodule로 포함하게 됨

주요기능

  • Youtube 다운로드

    • 지원 포맷 : mp3, mp4, m4a, flac, ogg, wav, webm

    • Youtube의 url을 봇에게 보내면, 아래와 같이 포맷을 선택할 수 있다

    • 포맷을 선택하면 다운로드를 시작

    • 다운로드가 완료되면 완료 메세지를 보내줌

    • setft로 기본 타입을 설정하면 다음부터 그 포맷으로 자동 다운로드 (여러 타입 선택 가능)

      drawing
  • 사용자,관리자 구분

    • 설치 시 .envTELEGRAM_ADMIN_USERNAME에 등록한 아이디가 관리자
    • 해당 관리자가 사용자 또는 관리자를 등록가능
  • 사용자 메뉴

    • 사용자는 관리자가 등록한 사용자를 말함

    • help, allusers, setft, showft 명령 사용가능

    • help: 도움말 보기

    • allusers: 등록된 사용자 보기

    • setft: 기본 파일 타입 지정하기 (파일 타입이 지정되면 다운로드 파일 포맷을 물어보지 않는다. none을 선택하면 해제)

    • showft: 내가 지정한 기본 파일 타입 보기

      drawing
  • 관리자 메뉴

    • 해당 관리자가 사용자 또는 관리자를 등록가능

    • adduser: 사용자 또는 관리자 추가

    • upuser: 사용자 정보 변경

    • deluser: 사용자 제거

    • chtof: 다운로드 파일 이름에 채널이름을 추가 (한번 더 실행하면 토글 됨, 봇을 사용하는 모든 사용자에게 적용)

    • udtof: 다운로드 파일 이름에 업로드 날짜를 추가 (한번 더 실행하면 토글 됨, 봇을 사용하는 모든 사용자에게 적용)

      drawing
  • 파일 삭제

    • 다운로드 완료 메세지에 reply로 아래 단어 중 하나 입력하면 저장 파일을 삭제합니다

    • 지우기, 삭제, d, del, delete

      drawing

environments

.env 파일의 값 설명

key 설명 예시
PUID host UID (id -u로 확인) 1000
GUID host GID (id -g로 확인) 1000
TELEGRAM_BOT_API_TOKEN 봇 토큰
TELEGRAM_ADMIN_USERNAME 텔레그램 아이디 - 관리자 용 (보통 설치하는 사람 아이디 입력)
TELEGRAM_ADMIN_DESC 관리자 설명 수퍼맨
TELEGRAM_ADMIN_CHATID 특정 명령이나 에러 발생 시 메세지를 보낼 chat id 11223344
DOWNLOAD_PATH host의 다운로드 위치 ./bot/download
BOT_LANG 언어 설정 (ko: 한국어, en: 영어) ko or en

설치

docker, docker-compose는 기본적으로 설치하셔야 합니다.

  • git clone --recurse-submodules https://github.com/yellowgg2/youngs-ytdl 명령으로 submodule까지 clone
  • .env 파일의 값을 본인에 맞게 설정
  • Synology 사용자 이며, DS audio와 함께 사용하고 싶은 사람
    • 부팅 스크립트로 repo에 첨부된 download-watch.sh를 실행하는 스케쥴러를 등록해야 함
    • download-watch.shDOWNLOAD_PATH값을 DS Audio 가 바라보는 위치로 변경
    • 이 작업을 하지 않으면 다운로드를 완료해도 해당 파일이 DS audio에서 보이지 않음
  • docker-compose up -d --build 실행

업데이트

업데이트 시에는 아래 두 명령을 차례로 실행

  • git pull --recurse-submodules
  • docker-compose down && docker-compose up -d --build
Comments
  • 플레이 리스트 다운 취소 문의? /help 문의?

    플레이 리스트 다운 취소 문의? /help 문의?

    안녕하세요. 플레이리스트 기능 사용하다가 기능 문의 드립니다.

    Q1. 제가 플레이 리스트 90개 짜리를 봇에게 보내서 90개 mp4/mp3 다운로드가 시작되었는데.... 중간에 플레이 리스트 다운로드를 멈추고 싶은데 방법을 모르겠습니다.

    Uploading 8282B026-F30E-4947-9745-A2929E3C6131.jpeg…

    혹시 플레이 리스트 다운로드 진행중에 취소/중지 할 수 있는 방법이 있을까요? 아니면 추가로 다운 취소 구현 검토되어야 하는지요.

    앞으로 몇개나 남았는지 체크도 가능하면 좋을것 같은데... 너무 구현하시는데 귀찮은 기능 요청이려나요. ㅎㅎ

    Q2. 두번째 질문은 /help 에 /udtof 랑 /chtof 커맨드가 표시되지 않고 있는데 어쩌다 설정하는거라 커맨드를 자꾸 까먹어서 /help 에는 모든 커맨드를 표시해 주시면 안될지 문의 드립니다.

    Q3. 다운로드 완료 메세지 내에 파일 용량 표시할수 있는 옵션 추가는 어려울까요? 다운받은 파일 크기가 얼마나 되는지 궁금해서.. 용량 MB 단위로 표시되면 좋을것 같아 건의 드립니다.

    사용하면서 아쉬운 부분들 또 기능 개선 요청드리는거 같아 죄송합니다. 좋은 프로그램 만들어주셔서 정말 감사합니다.

    opened by bbyongi 7
  • "ENAMETOOLONG: name too long, open" 에러 문의

    플레이리스트 다운로드 중에 error 발생하면서 캔슬되었습니다.

    https://youtu.be/dq4ObnvbH28

    위 링크 봇에게 전달하면 "ENAMETOOLONG: name too long, open" 에러가 뜨면서 플레이 리스트 다운받던게 멈춰버리네요.

    😊 다운로드를 시작합니다.[mp3]

    👿 ENAMETOOLONG: name too long, open './download/버블디아/버블디아_20190628_3키업⬆️아름답게 사랑하는 날까지 커버 - 김경호 (여자버전으로 불러보았어요!) 버블디아.mp3'

    확인 부탁 드립니다.

    opened by bbyongi 6
  • 혹시 플레이리스트로 다운받을 수 있는 기능이 있을까요?

    혹시 플레이리스트로 다운받을 수 있는 기능이 있을까요?

    개발해주신 덕분에 잘 사용하고 있습니다!

    다름이 아니라 제가 유튜브의 플레이 리스트를 다운받고자 할 떄가 가끔 있는데요. 플레이리스트를 받으면(e.g. https://youtube.com/playlist?list=PLo2ZIWlO1BLSlojtYHemWHGvuPRb3DZyK) 에러(Error:Request failed with status code 400)가 뜹니다. 원래 설계상(?) 플레이리스트를 다운받을 수는 없는걸까요? 도커 로그로는 INFO: 00:36:15 172.20.0.3:43720 Download failed GET / (playlist when expected a single entry) 입니다.

    opened by ncae95 6
  • 기능문의? mp4와 mp3를 항상 둘다 받을수 있는 옵션 추가는 어려울까요?

    기능문의? mp4와 mp3를 항상 둘다 받을수 있는 옵션 추가는 어려울까요?

    만들어주신 텔레그램 봇 덕분에 유투브 보다가 링크를 텔레봇에게 전달해서 아주 간단하게 다운로드 받고 있습니다.

    마지막일듯 싶은데... 한가지만 더 기능 추가 문의 드립니다.

    제가 주로 커버 노래 영상을 mp4랑 mp3를 둘 다 받는 편인데 혹시 /setft 에 both 메뉴 하나 추가해서 both 일때는 mp4랑 mp3를 둘 다 자동으로 다운로드 할 수 있는 옵션 추가는 어려울지 문의 드립니다.

    그렇게 된다면 매번 mp3 랑 mp4 두번씩 터치할 필요 없이 /setft 로 both 설정해두면 파일 타입 선택할 필요없이 알7아서 mp4 mp3 둘 다 받아질테니 상상만해도 너무 편할거 같아서... 기능 문의 드립니다.

    opened by bbyongi 5
  • 기능문의? 파일 선택시 noti 팝업이나 message 표시 어려울까요?

    기능문의? 파일 선택시 noti 팝업이나 message 표시 어려울까요?

    F34DAEF9-84B2-42CC-AC72-668262A9C49D

    어제 올려주신 최신 버전 설치해서 권한문제 잘 해결된거 확인했습니다. 업데이트 감사 드립니다.

    그런데 최신 버전 업데이트해서 사용해 보다가 기능 문의 드립니다.

    첨부한 사진처럼...

    1. 링크 첨부
    2. 봇이 어떤 파일로 받을지 물어봄
    3. (1) mp4 터치 -> (2) 상단에 "불러오는중" 표시됨
    4. (3) mp3 추가로 터치 -> 아무런 팝업이 없음
    5. 잠시 후 확인해 보면 mp4. mp3 둘 다 받아져 있음

    위 과정처럼 파일 선택해 받기 시작 할 때 채팅창에 "파일명" downloading... text 메세지나 상단에 "불러오는중" 처럼 팝업 표시되도록 noti 되는건 어려운지 문의 드립니다.

    평소에 mp4 종류만 받으면 현재 상태로도 쓰는데 문제가 없겠지만 커버 노래 같은 경우에 mp4랑 mp3를 각각 동시에 받아주는데 처음 파일 선택할때 한번만 상단에 "불러오는중" 표시되고 그 이후로는 noti가 없어서 잘 눌러진건지... 받아지고 있는건지... 알수가 없어서 불편함이 있습니다.

    그렇게 기다렸다가 나중에 보면 다운로드 받았다고 채팅 메세지가 주루루 올라오는데 제가 여러번 터치해서 같은 파일을 여러번 중복으로 다운 받게 되더라구요.

    이것저것 계속 귀찮게 해드려 죄송합니다 ㅎㅎ 그만큼 편리한 서비스라 계속쓰고 싶어서 기능 검토 문의 드립니다.

    감사합니다.

    opened by bbyongi 2
  • 볼륨 설정한 경로 다운받은 mp4 파일 소유권이 root 인 현상

    볼륨 설정한 경로 다운받은 mp4 파일 소유권이 root 인 현상

    볼륨 설정한 경로 다운받은 mp4 파일 소유권이 root:root 입니다.

    -rw-r--r-- 1 root root 168815110 4월 5 17:51 '2022년 출시된 신작 에뮬게임기! ... RGB10S.mp4' -rw-r--r-- 1 root root 38555078 4월 5 17:51 '애플 폴더블 - 함께해요 코리아.mp4'

    environment: 의 PUID 와 PGID 를 정확하게 입력했는데도 root 저장되고 있어서 매번 sudo chown test:test * 입력해서 소유권 바꿔서 접근해야하는 상황입니다.

    혹시, ytdl_bot 에서 저장한 mp4 파일 소유권이 PUID:GUID 로 지정 될 수 없는지 문의 드립니다.

    -rw-r--r-- 1 test test 168815110 4월 5 17:51 '2022년 출시된 신작 에뮬게임기! ... RGB10S.mp4' -rw-r--r-- 1 test test 38555078 4월 5 17:51 '애플 폴더블 - 함께해요 코리아.mp4'

    감사합니다.

    opened by bbyongi 1
  • standard_init_linux.go:230: exec user process caused: permission denied

    standard_init_linux.go:230: exec user process caused: permission denied

    안녕하세요.

    처음으로 git clone 해서 내려 받은 후 .env 파일 수정 후 빌드 했는데 ytdl-service 에서 아래와 같은 에러가 발생합니다.

    그리고 혹시 자막 파일은 다운로드 기능이 있을까요?

    standard_init_linux.go:230: exec user process caused: permission denied
    

    아마 ytdl-service 실행 시 권한 에러가 발생하는데 어떻게 하면 될까요??

    docker-compose.yml 파일 내용

    version: "3.1"
    
    services:
      ytdl-download-bot:
        container_name: ytdl-download-bot
        image: ytdl-bot
        build:
          context: ./bot
          args:
            PUID: $PUID
            PGID: $PGID
            UNAME: $UNAME
        restart: always
        environment:
          - BOT_API_TOKEN=$TELEGRAM_BOT_API_TOKEN
          - ADMIN_USERNAME=$TELEGRAM_ADMIN_USERNAME
          - ADMIN_DESC=$TELEGRAM_ADMIN_DESC
          - ADMIN_CHATID=$TELEGRAM_ADMIN_CHATID
          - BOT_LANG=$BOT_LANG
          - PUID=$PUID
          - PGID=$PGID
        volumes:
          - $DOWNLOAD_PATH:/ytdlbot/download
          - $DATABASE_PATH:/ytdlbot/db
      ytdl-service:
        container_name: ytdl-service
        image: ytdl-service
        build:
          context: ./ydls
        restart: always
    

    .env 파일 내용

    TELEGRAM_BOT_API_TOKEN=1234:토큰
    TELEGRAM_ADMIN_USERNAME=username
    TELEGRAM_ADMIN_DESC="관리자"
    TELEGRAM_ADMIN_CHATID=챗아이디
    DOWNLOAD_PATH=./youtube-dl/bot
    DATABASE_PATH=./youtube-dl/bot/db
    BOT_LANG=ko
    PUID=1026
    PGID=100
    UNAME=taken
    
    opened by man9r0ve 4
  • 혹시 ARM 코어에서 sudo docker-compose up -d --build 에러나는 현상

    혹시 ARM 코어에서 sudo docker-compose up -d --build 에러나는 현상

    안녕하세요. 그동안 오라클 프리티어의 AMD ubuntu 20.04 에서 git 소스 내려받고 sudo docker-compose up -d --build 으로 빌드해서 잘 사용하고 있었는데...

    ARM 코어로 인스턴스 변경하여 ubuntu 20.04에서 도커 빌드로 설치하려고 하는데 아래와 같이 Step 37/40 : RUN 에서 error가 발생하고 있습니다.

    build_error.txt

    Step 37/40 : RUN     ffmpeg -version &&     ffprobe -version &&     yt-dlp --version &&     ydls -version
     ---> Running in 6ee209009968
    /usr/local/bin/ffmpeg: line 1: syntax error: unexpected "("
    ERROR: Service 'ytdl-service' failed to build: The command '/bin/sh -c ffmpeg -version &&     ffprobe -version &&     yt-dlp --version &&     ydls -version' returned a non-zero code: 2
    

    혹시 위 error가 ARM 코어에서 빌드 불가능한 상황이 맞는건가요?

    아니면 최신 ffmpeg 관련해서 뭔가 문제가 있는건지....

    기존에 잘 빌드했던 AMD 인스턴스가 삭제되어, 다시 확인해보지 못해서 ARM 코어에서는 youngs-ytdl를 사용할 수 없는건지 궁금하여 문의 드립니다.

    opened by bbyongi 2
  • Error: Request failed with status code 400

    Error: Request failed with status code 400

    안녕하세요. 우연히 클리앙 게시글 보고 도커의 ㄷ자도 모르던 제가 몇일간 실패를 거듭하다 설치를 마쳤습니다. ㅎ 좋은 프로그램 정말 감사합니다. 이용하는던 중에 "Error: Request failed with status code 400" 이란 메세지가 나오고 다운로드 실패하는 사례가 있었습니다. https://www.youtube.com/watch?v=AFNBRnUZqrE 위 영상인데요.. 아마도 연령 제한 동영상 이어서 그런 것 같습니다. 우회하는 법을 구글링 해 봤는데 몇몇 방법이 있지만 대부분 막힌 것 같고요.. 이런 경우는 조치가 어려울까요?

    opened by Alphago777 4
Releases(1.4)
  • 1.4(Oct 24, 2022)

    If User tries to download a video from twitter.com, Channel name will be the hostname of the site. (twitter.com)

    So it will create a directory name as twitter.com and save the file into it

    You can find out the supported sites by ytdl from here

    Source code(tar.gz)
    Source code(zip)
  • 1.3(Apr 12, 2022)

    • 플레이리스트 다운로드 중에 멈추는 기능 추가
      • 다음 중 하나의 단어를 봇에게 보내면 됨(정지, 멈춤, s, stop)
    • 플레이리스트 다운로드 남은 갯수 표현
    • 다운로드 받은 파일 사이즈 표현
    • update readme
    Source code(tar.gz)
    Source code(zip)
  • 1.2(Apr 12, 2022)

    • 영어 설정 추가
    • 기본 파일 타입을 설정하지 않았을 때 playlist가 안 받아지는 문제 수정
    • 환경 변수 설정을 docker-compose.yml에 하지 않고, .env로 하도록 변경
    Source code(tar.gz)
    Source code(zip)
  • 1.1(Apr 10, 2022)

    업데이트 내용

    playlist에 곡이 100곡 정도 되면 playlist 목록 얻는게 좀 걸립니다. 멈춘게 아니에요 ㅎㅎ

    • https://www.youtube.com/playlist?list 로 시작되는 url은 playlist로 인식
    • playlist url은 반드시 공개된 url이어야 한다. 비공개 playlist는 다운받지 못함
    • playlist의 타이틀로 폴더가 생성되고 그 하위에 각 채널 별 서브 폴더가 생성이 되고 영상이 저장됨
    • /setft로 여러 포맷을 지정하면, 지정된 모든 포맷으로 playlist에 있는 모든 영상을 다운 받음
    • minor bug 수정
    Source code(tar.gz)
    Source code(zip)
  • 1.0(Apr 7, 2022)

Owner
IncredibleYoung
Software Engineer in Korea
IncredibleYoung
It is a discord bot bot which can play lofi song in different language 24/7. It has premium system and cool embed looks with buttons. It can play youtube songs, playlists. This bot code was made by Supreme#2401. It uses djs V12

Lofi-Radio-Music-Bot It is a discord bot bot which can play lofi song in different language 24/7. It has premium system and cool embed looks with butt

Diwas Atreya 89 Jan 2, 2023
Bot sviluppato in Node.js che permette la prenotazione e il successivo invio dello screenshot di quest'ultima tramite un bot di telegram.

Unimore-Bot Bot sviluppato in Node.js che permette la prenotazione e il successivo invio dello screenshot di quest'ultima tramite un bot di telegram I

Lorenzo Codeluppi 8 Jun 9, 2022
Weblookup Telegram bot - The usefully bot like check website, screenshot

Weblookup Telegram bot - The usefully bot like check website, screenshot

Fusedev 3 May 9, 2022
A multipurpose bot, a clan bot, a all in one bot. The one bot u need for ur server originally made as Milrato discord Bot and by Tomato6966.

Public Bot and Support Server! Invite the Public Version of this Bot so you don't need to host it by yourself or join my Discord server to get a custo

Tomato6966 472 Dec 25, 2022
Cem Karaca - Telegram Bot

Cem Karaca Telegram botu | Bot Cem Karaca şarkılarını tanıtmak için yapıldı. Bot: https://t.me/cem_karaca_bot Botun kullanımı: /start - Botu başlat /h

Lucifer25x 1 Jan 10, 2022
Um simples bot para o Telegram que baixa vídeos e áudios do TikTok & outras funcionalidades

Kelle Estella (Telegram) Um simples bot para o Telegram que baixa vídeos e áudios do TikTok & outras funcionalidades. Clique aqui para utilizá-lo. Com

Luis Gabriel Araújo 3 Apr 20, 2022
Telegram & Discord chat bot for Airline Manager 4

AM4 Bot AM4 Bot was a Discord & Telegram chat bot used in 63 servers and across several Telegram chats between 2020-2022 for the game Airline Manager

Fin 5 Jun 5, 2022
Telegram bot with a graphical interface that enables you to schedule messages and generate automatic replies 🤖

Telegram bot with a graphical interface that enables you to schedule messages and generate automatic replies ??

rn0x 5 Dec 6, 2022
Telegram voice recognition bot

Node.js bot for telegram messenger based on Microsoft Azure Speech Service and Node.js Telegram Bot API

Dmitry 4 Mar 9, 2022
a Node.js boilerplate to start creating your telegram bot without too much configuration at the beginning

node-telegram-bot-starter-pack How to use clone the repo run npm install run cp .env.example .env and replace the variables with your data define your

Mohammad MohammadAlian 7 Sep 7, 2022
A telegram bot that sends the current day's foreign exchange rates to its subscribers

Birr Forex Bot A bot that sends the current day's foreign exchange rates to its subscribers. Using the bot Check out the bot here. Running the bot It

Fraol Lemecha 8 Dec 21, 2022
A typescript telegram bot with just two works in mind.

Minitsbot aka @Akagiprobot Made in ❤️ with Grammy and deno. A typescript telegram bot with just two works in mind: Autoapproves new join requests. (Ch

Divide Projects 3 Jun 7, 2022
TypeScript bot for auto-deleting of Telegram premium stickers with some interesting features based on the grammY library

anti-premium-stickers-bot TypeScript bot for auto-deleting of Telegram premium stickers with some interesting features based on the grammY library Thi

Владислав 5 Dec 15, 2022
Laporan keuangan, pencatatan pengeluaran dengan Bot Telegram yang terintegrasi dengan Google Spreadsheet

laporan-keuangan-bot Laporan keuangan, pencatatan pengeluaran dengan Bot Telegram yang terintegrasi dengan Google Spreadsheet Mulai Buat Bot telegram

Teguh Santoso 143 Dec 19, 2022
New base bot WhatsApp 🈴 bukan self bot lagi atau buka bot yang bisa di pakai oleh bot sendiri 😎

Installation • Thanks to • Donate Official Group Bot • Settings Instalasi Heroku Buildpack Click the deploy icon below ! > heroku/nodejs > https://g

zeeone 27 Feb 9, 2022
Umut Bayraktar Youtube Özel Codesty Bot Altyapısı!

BU ALTYAPI EXPERT TARAFINDAN YAPILMIŞDIR! UMUT BAYRAKTAR: https://www.youtube.com/c/UmutBayraktarYT CODE SHARE Discord Sunucusu: https://codeshare.xyz

Umut Bayraktar 2 May 31, 2022
Discord bot made in javascript to play youtube music.

DJS O DJS é um bot para Discord com a capacidade da criar playlists personalizadas, tendo como fonte a biblioteca de músicas do Youtube. Frameworks e

Matheus Luiz 2 Aug 21, 2022
Source code for a girlfriend bot that you can talk to in VC, video can be found on youtube

Girlfriend Bot This repo is basically the source code for the main youtube video which was basically me creating a girlfriend that i can talk to in VC

UltraX 16 Dec 2, 2022
A Discord <-> Telegram bridge rewrote from scratch, in Node.js

Discord-Telegram-bridge A small and fast telegram to discord chat bridge, written in Node.js Setup: If you want to run it on heroku, you can just clic

Sebastiano Barezzi 6 Apr 14, 2022