├── requirements.txt ├── .github └── ISSUE_TEMPLATE │ ├── feature_request.md │ └── bug-report.md ├── run-windows.bat ├── run-others.sh ├── .gitignore ├── README.KR.md ├── README.md ├── LICENSE └── core.py /requirements.txt: -------------------------------------------------------------------------------- 1 | prompt-toolkit>=3.0.18 2 | vlivepy==1.1.2 3 | reqWrapper>=0.2.1 4 | pyperclip>=1.8.2 5 | beautifulsoup4>=4.9.3 -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature request 3 | about: 개선방안이나 원하는 기능이 있으신가요? 4 | title: "[FEAT]" 5 | labels: enhancement 6 | assignees: box-archived 7 | 8 | --- 9 | 10 | **요청사항이 사용상의 문제와 관련있나요?** 11 | 사용상의 문제가 있다면 문제를 함께 설명해 주세요. 12 | 13 | **개선 방안이나 요청사항에 대해 원하는 방향이 있나요?** 14 | 원하시는 개선 방안에 대해 설명해 주세요. 15 | 16 | **기타 설명** 17 | 그 외의 기타 설명이 있다면 작성해 주세요. 18 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug-report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug report 3 | about: 사용중 버그가 생겼나요? 4 | title: "[BUG]" 5 | labels: bug 6 | assignees: box-archived 7 | 8 | --- 9 | 10 | **버그 설명** 11 | 버그가 발생한 상황에 대해 알려주세요. 12 | 13 | **작업 과정** 14 | 버그가 생기게 된 상황의 작업 과정을 알려주세요. 15 | 1. Go to '...' 16 | 2. Click on '....' 17 | 3. Scroll down to '....' 18 | 4. See error 19 | 20 | **스크린샷** 21 | 문제 상황이나 프로그램이 종료 되기 전 표시된 버그에 대한 스크린샷을 남겨주세요. 22 | 23 | **환경:** 24 | - OS: [예: Win10, macOS...] 25 | - Version [예: v0.0.5, v0.0.6...] 26 | 27 | **기타 설명** 28 | 그 외의 기타 설명이 있다면 작성해 주세요. 29 | -------------------------------------------------------------------------------- /run-windows.bat: -------------------------------------------------------------------------------- 1 | chcp 65001 2 | @echo off 3 | 4 | SET CURDIR=%~dp0 5 | SET CURDRIVE=%CURDIR:~0,2% 6 | 7 | %CURDRIVE% 8 | CD %CURDIR% 9 | 10 | for /f "tokens=* USEBACKQ" %%a in (`python --version`) DO ( 11 | SET PV=%%a 12 | ) 13 | ) 14 | SET PV=%PV:~0,8% 15 | CLS 16 | IF NOT "%PV%" == "Python 3" ( 17 | ECHO Python 3.x not found 18 | ECHO Please install python 19 | ECHO. 20 | pause 21 | start https://www.python.org/downloads/ 22 | exit 23 | ) 24 | 25 | TITLE VLIVE-BACKUP-BOT 26 | mode con: cols=60 lines=9 27 | CLS 28 | 29 | echo. 30 | echo ======================VLIVE-BACKUP-BOT====================== 31 | echo. 32 | echo. 33 | echo LOADING... 34 | echo. 35 | echo. 36 | echo ============================================================ 37 | 38 | IF EXIST venv ( 39 | rmdir /S /Q venv 40 | ) 41 | 42 | python -m venv venv 43 | 44 | venv\Scripts\python -m pip install -q -q -q --upgrade pip 45 | venv\Scripts\python -m pip install -q -q -q -r requirements.txt 46 | 47 | 48 | CLS 49 | mode con: cols=150 lines=50 50 | venv\Scripts\python core.py 51 | rmdir /S /Q venv 52 | PAUSE 53 | -------------------------------------------------------------------------------- /run-others.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | PCOMMAND=NONE 4 | # Check python version 5 | 6 | # check python 7 | PV0=`python --version` 8 | PV0=${PV3:0:8} 9 | if [ "$PV0" == "Python 3" ]; then 10 | PCOMMAND=python 11 | fi 12 | 13 | # check python3 14 | PV3=`python3 --version` 15 | PV3=${PV3:0:8} 16 | if [ "$PV3" == "Python 3" ]; then 17 | PCOMMAND=python3 18 | fi 19 | 20 | if [ "$PCOMMAND" == "NONE" ]; then 21 | clear 22 | echo ===VLIVE-BACKUP-BOT=== 23 | echo Python 3.x not found 24 | echo Please install python 25 | echo 26 | $PCOMMAND -m webbrowser https://www.python.org/downloads/ 27 | exit 28 | fi 29 | 30 | # Resize window 31 | printf '\e[8;9;60t' 32 | 33 | clear 34 | echo 35 | echo ======================VLIVE-BACKUP-BOT====================== 36 | echo 37 | echo 38 | echo " LOADING..." 39 | echo 40 | echo 41 | echo ============================================================ 42 | 43 | # Move to shell dir 44 | BASEDIR=$(dirname "$0") 45 | cd "$BASEDIR" 46 | 47 | if [ -d "venv" ]; then 48 | rm -rf venv 49 | fi 50 | 51 | $PCOMMAND -m venv venv 52 | 53 | ./venv/bin/$PCOMMAND -m pip install -q -q -q --upgrade pip 54 | ./venv/bin/$PCOMMAND -m pip install -q -q -q -r requirements.txt 55 | 56 | printf '\e[8;50;150t' 57 | clear 58 | ./venv/bin/$PCOMMAND core.py 59 | rm -rf venv 60 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Byte-compiled / optimized / DLL files 2 | __pycache__/ 3 | *.py[cod] 4 | *$py.class 5 | 6 | # C extensions 7 | *.so 8 | 9 | # Distribution / packaging 10 | .Python 11 | build/ 12 | develop-eggs/ 13 | dist/ 14 | downloads/ 15 | eggs/ 16 | .eggs/ 17 | lib/ 18 | lib64/ 19 | parts/ 20 | sdist/ 21 | var/ 22 | wheels/ 23 | pip-wheel-metadata/ 24 | share/python-wheels/ 25 | *.egg-info/ 26 | .installed.cfg 27 | *.egg 28 | MANIFEST 29 | 30 | # PyInstaller 31 | # Usually these files are written by a python script from a template 32 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 33 | *.manifest 34 | *.spec 35 | 36 | # Installer logs 37 | pip-log.txt 38 | pip-delete-this-directory.txt 39 | 40 | # Unit test / coverage reports 41 | htmlcov/ 42 | .tox/ 43 | .nox/ 44 | .coverage 45 | .coverage.* 46 | .cache 47 | nosetests.xml 48 | coverage.xml 49 | *.cover 50 | *.py,cover 51 | .hypothesis/ 52 | .pytest_cache/ 53 | 54 | # Translations 55 | *.mo 56 | *.pot 57 | 58 | # Django stuff: 59 | *.log 60 | local_settings.py 61 | db.sqlite3 62 | db.sqlite3-journal 63 | 64 | # Flask stuff: 65 | instance/ 66 | .webassets-cache 67 | 68 | # Scrapy stuff: 69 | .scrapy 70 | 71 | # Sphinx documentation 72 | docs/_build/ 73 | 74 | # PyBuilder 75 | target/ 76 | 77 | # Jupyter Notebook 78 | .ipynb_checkpoints 79 | 80 | # IPython 81 | profile_default/ 82 | ipython_config.py 83 | 84 | # pyenv 85 | .python-version 86 | 87 | # pipenv 88 | # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. 89 | # However, in case of collaboration, if having platform-specific dependencies or dependencies 90 | # having no cross-platform support, pipenv may install dependencies that don't work, or not 91 | # install all needed dependencies. 92 | #Pipfile.lock 93 | 94 | # PEP 582; used by e.g. github.com/David-OConnor/pyflow 95 | __pypackages__/ 96 | 97 | # Celery stuff 98 | celerybeat-schedule 99 | celerybeat.pid 100 | 101 | # SageMath parsed files 102 | *.sage.py 103 | 104 | # Environments 105 | .env 106 | .venv 107 | env/ 108 | venv/ 109 | ENV/ 110 | env.bak/ 111 | venv.bak/ 112 | devenv/ 113 | 114 | # Spyder project settings 115 | .spyderproject 116 | .spyproject 117 | 118 | # Rope project settings 119 | .ropeproject 120 | 121 | # mkdocs documentation 122 | /site 123 | 124 | # mypy 125 | .mypy_cache/ 126 | .dmypy.json 127 | dmypy.json 128 | 129 | # Pyre type checker 130 | .pyre/ 131 | 132 | # Dev settings 133 | .idea 134 | .dev.py 135 | vlive-backup-bot.session 136 | downloaded 137 | failed.txt 138 | cache 139 | -------------------------------------------------------------------------------- /README.KR.md: -------------------------------------------------------------------------------- 1 | > #### Language 2 | > [English](README.md) 한국어 3 | 4 | # vlive-backup-bot 5 | [![GitHub release (latest SemVer)](https://img.shields.io/github/v/release/box-archived/vlive-backup)](https://github.com/box-archived/vlive-backup/releases) 6 | [![Discord](https://img.shields.io/discord/824605893885820939)](https://discord.gg/84sVr2mQKX) 7 | 8 | Auto backup bot for vlive 9 | 10 | VLIVE의 게시판의 게시물을 모두 다운로드 할 수 있는 봇입니다. 11 | 12 | ## 설치 및 실행 13 | 3.7 이상의 파이썬이 필요합니다. 14 | 파이썬은 [python.org](https://www.python.org/downloads/) 에서 다운받을 수 있습니다. 15 | 16 | 윈도우에서 설치 시 __Add Python 3.x to PATH__ 항목을 반드시 체크하고 설치해 주세요. 17 | 18 | ![Untitled-2](https://user-images.githubusercontent.com/76082716/112562713-4488a880-8e1b-11eb-9a8b-fce406cd4957.jpg) 19 | 20 | 21 | ### Windows 7, 8, 10 22 | 다운로드한 소스코드의 압축을 풀고 __run-windows.bat__ 파일을 실행합니다. 23 | 24 | SmartScreen 보호 알림이 표시되었다면, 추가 정보 버튼을 클릭하여 실행 버튼을 표시할 수 있습니다. 25 | 실행 버튼을 표시한 뒤 클릭하여 실행 해 주세요. 26 | 27 | 명령 프롬프트를 이용하여 실행 가능합니다. 28 | 명령 프롬프트를 열고 __run-windows.bat__ 파일을 드래그 하여 실행할 수 있습니다. 29 | ```console 30 | C:\> path\to\vlive-backup-bot\run-windows.bat 31 | ``` 32 | 33 | ### Other OS 34 | 리눅스, macOS 등의 운영체제에서는 Shell 스크립트를 이용해 실행 가능합니다. 35 | 터미널에서 __run-others.sh__ 파일을 실행합니다. 36 | ```console 37 | $ sh path/to/vlive-backup-bot/run-others.sh 38 | ``` 39 | 40 | ## 사용법 41 | 조작은 키보드와 마우스 모두 사용 가능합니다. 42 | 43 | 항목간 이동은 `방향키`, 메뉴간 이동은 `Tab` 키를 사용합니다. 44 | 마우스 스크롤은 지원하지 않으니 `PageUp`, `PageDown` 키를 이용 해 주세요. 45 | 46 | 다운로드 된 파일은 __downloaded__ 폴더 내에 `채널코드_게시판코드` 폴더로 분류되어 저장됩니다. 47 | 48 | ### 이메일 계정 49 | VLIVE 백업 봇에서는 멤버십 포스트 저장을 위해 사용자의 이메일 계정을 필요로 합니다. 50 | 이 정보는 사용자의 PC에 저장되며 VLIVE 웹사이트 로그인 이외의 용도로는 사용/전송되지 않습니다. 51 | 52 | 소셜 로그인 계정은 [프로필 설정 페이지](https://www.vlive.tv/my/profile) 에서 이메일과 비밀번호를 등록해야 합니다. 53 | 로그인에는 해당 이메일과 비밀번호를 사용합니다. 54 | 55 | 로그인 정보는 __cache__ 폴더의 `vlive-backup-bot.session` 파일로 보관되며 더이상 사용하지 않을 시 안전하게 삭제하여 주세요. 56 | 57 | ### 실패 내역 58 | 다운로드에 실패한 포스트의 목록은 __failed.txt__ 파일로 저장됩니다. 59 | 60 | 해당 목록은 초기화 되지 않으니 확인 후엔 삭제하는 것을 권장합니다. 61 | 62 | ### 다운로드 내역 63 | __cache__ 폴더에는 다운로드 한 내역을 관리하기 위한 파일이 위치해 있습니다. 64 | 65 | `채널코드_게시판코드.txt`파일을 제거하거나 수정하여 다운로드 내역을 정리하고 다시 받을 수 있습니다. 66 | 67 | ### 설정 이동 68 | 새로 다운받은 버전으로 기존 설정을 이동하려면 `cache`폴더를 이동해 주세요. 69 | 70 | 다운로드 한 파일도 이동혀려면 `downloaded`폴더도 함께 이동 해 주세요. 71 | 72 | 73 | ## 다운로드 모드 74 | ### 간편모드 75 | 간편모드에서는 해당 게시판의 모든 게시물을 다운로드 합니다. 76 | 게시판의 주소를 입력하고 멤버십 여부를 선택하면 바로 다운로드가 진행됩니다. 77 | 78 | ### 고급모드 79 | 고급모드에서는 여러가지 설정을 이용하여 다운로드 할 수 있습니다. 사용 가능한 설정은 아래와 같습니다. 80 | 81 | - 공식 비디오 다운로드: VLIVE VOD/영상 등을 저장합니다 82 | - 포스트 다운로드: 공식 비디오가 아닌 일반 게시물을 저장합니다. 83 | - 다운로드 개수: 게시판으로부터 가져올 항목의 수를 입력합니다. 0을 입력할 시 모든 항목을 가져오며, 84 | 0 이외의 숫자를 입력할 시 최근 영상으로 부터 해당 수 만큼의 항목을 가져옵니다. 85 | - 게시물 선택: 로드 된 게시물 목록에서 다운로드 할 게시물을 선택합니다. 전체선택 버튼을 이용해 전체를 다운받을 수 있습니다. 86 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # EOL (End-of-life) 2 | 3 | *** 4 | 5 | > #### Language 6 | > English [한국어](README.KR.md) 7 | 8 | # vlive-backup-bot 9 | 10 | [![GitHub release (latest SemVer)](https://img.shields.io/github/v/release/box-archived/vlive-backup)](https://github.com/box-archived/vlive-backup/releases) 11 | [![Discord](https://img.shields.io/discord/824605893885820939)](https://discord.gg/84sVr2mQKX) 12 | 13 | Auto backup bot for vlive 14 | 15 | This is the program for bulk downloading vlive posts 16 | 17 | ## Installation 18 | 19 | 3.7 or later version of python is required You can download python on [python.org](https://www.python.org/downloads/). 20 | 21 | You MUST check __Add Python 3.x to PATH__ during installation, if you install python on window. 22 | 23 | ![Untitled-2](https://user-images.githubusercontent.com/76082716/112562713-4488a880-8e1b-11eb-9a8b-fce406cd4957.jpg) 24 | 25 | ### Windows 7, 8, 10 26 | 27 | Execute __run-windows.bat__ file from unzipped release file. 28 | 29 | If the SmartScreen alert has shown, Click More Info text. Then, you can see **Run Anyway** button. Click the 30 | button to run! 31 | 32 | Or, you can execute the program with Command Prompt. Open the Command Prompt, drap-and-drop __run-windows.bat__ to it and press 33 | enter! 34 | 35 | ```console 36 | C:\> path\to\vlive-backup-bot\run-windows.bat 37 | ``` 38 | 39 | ### Other OS 40 | 41 | On Linux, macOS, etc., you can execute the program with Shell script. Drag-and-drop __run-others.sh__ to terminal and press 42 | enter! 43 | 44 | ```console 45 | $ sh path/to/vlive-backup-bot/run-others.sh 46 | ``` 47 | 48 | ## How To Use 49 | 50 | You can control the program with keyboard and mouse. 51 | 52 | Use `arrow-key` to move between items, `Tab` key to move between buttons. Mouse scroll is not supported. Please 53 | use `PageUp`, `PageDown` key to scroll. 54 | 55 | Downloaded items will be saved in the folder named "downloaded/*ChannelCode*_*BoardCode*". 56 | 57 | ### Email Account 58 | 59 | The program uses email account (Social-login is not supported). Social-login account user must register email account 60 | on [Profile page](https://www.vlive.tv/my/profile) (PC ONLY). 61 | 62 | User account is saved to user's PC as `cache/vlive-backup-bot.session` for preserve login state. Account information is 63 | NEVER used/saved for any other purpose. 64 | 65 | If you don't use the login information anymore, please delete the session file for your account security. 66 | 67 | ### Failed History 68 | 69 | Failed history can be found on __failed.txt__ file. 70 | 71 | ### Downloaded History 72 | 73 | Download history file named `ChannelCode_BoardCode.txt` is stored in __cache__ folder to prevent duplicate download 74 | 75 | Modify or delete the file to re-download the posts. 76 | 77 | ### Migrate Settings 78 | 79 | Copy `cache` folder to unzipped release file, If you want to migrate settings(account, history) to new software or PC. 80 | 81 | ## Download Mode 82 | 83 | ### Simple 84 | 85 | - Download All posts from the board. 86 | - Membership setting is the only option to configure. 87 | 88 | ### Advanced 89 | 90 | Download posts with more options. Option description is below. 91 | 92 | - Official Video Post Download: Download official videos like vlive replay(VOD) and video 93 | - Post Download: Download other posts like photo or notice. 94 | - Load Amount: Amount of items to load from the board. `0` to load all items, other numbers to load specific amount of 95 | item from the latest item 96 | - Select posts: You can select items to download. Press `