Skip to content

Commit

Permalink
Now create config with comments
Browse files Browse the repository at this point in the history
  • Loading branch information
MaxBQb committed Aug 11, 2022
1 parent 69eb1a4 commit 1419ad7
Show file tree
Hide file tree
Showing 2 changed files with 50 additions and 32 deletions.
29 changes: 16 additions & 13 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,38 +1,41 @@
# [Youtube Music Playlist Downloader](https://github.com/MBQbUtils/YoutubeMusicPlaylistDownloader)
# Youtube Music Playlist Downloader
Скрипт скачивает плейлисты с YouTube и вырезает аудиодорожки. Если какие-то видео уже скачаны, они пропускаются.

## Как использовать
После первого запуска создаётся `config.json`
При первом запуске создаётся `config.json`
Он имеет следующую структуру:

```js
{
// Путь до каталога с плейлистами
/* Путь до каталога с плейлистами */
"path": "./output/path/",
"format": "original", // Формат звука
"format": "original", /* Формат звука */
/* Используйте формат "original", чтобы не менять формат звука
и не зависеть от наличия ffmpeg
Форматы:
'aac', 'alac', 'flac',
'm4a', 'mp3', 'opus',
'vorbis', 'wav'
"aac", "alac", "flac",
"m4a", "mp3", "opus",
"vorbis", "wav"
*/
"playlists": [ // Ссылки на плейлисты с музыкальными клипами
"https://www.youtube.com/playlist?list=PLL_example",
"https://www.youtube.com/playlist?list=PLL_example2"
"playlists": [ /* Ссылки на плейлисты с музыкальными клипами */
"https://www.youtube.com/playlist?list=PLL_example", /* Пример первый */
"https://www.youtube.com/playlist?list=PLL_example2" /* Пример последний */
]
}
```
Добавьте ссылки на плейлисты в `config.json`
и запустите скрипт заново.
сохраните изменения и продолжите работу скрипта, нажав `Enter`.

Не удаляйте файл `playlists.cache`.
Он позволяет не скачивать по новой треки при повторном запуске.
Он позволяет не скачивать заново треки при повторном запуске.

`config.json` поддерживает комментарии в стиле `/* комментарий */`.

Чтобы докачать новые видео из плейлиста, просто перезапустите скрипт

## Установка
1. [**Скачайте скрипт**](https://github.com/MBQbUtils/YoutubeMusicPlaylistDownloader/releases/latest/download/main.exe)
2. Запустите его первый раз (он создаст всё необходимое и завершит работу)
2. Запустите его, он создаст всё необходимое
3. Следуйте инструкциям выше.

## Благодарности
Expand Down
53 changes: 34 additions & 19 deletions main.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,34 +5,49 @@
Если какие-то видео уже скачаны, они пропускаются.
"""

import json
import os
import re
import sys
import textwrap
import time
import traceback
import yt_dlp
import json
import re
from urllib import request


def read_config():
data = {
'path': './out/',
'format': 'original',
'playlists': []
}

config_content = """
{
/* Путь до каталога с плейлистами */
"path": "./output/path/",
"format": "original", /* Формат звука */
/* Используйте формат "original", чтобы не менять формат звука
и не зависеть от наличия ffmpeg
Форматы:
"aac", "alac", "flac",
"m4a", "mp3", "opus",
"vorbis", "wav"
*/
"playlists": [ /* Ссылки на плейлисты с музыкальными клипами */
"https://www.youtube.com/playlist?list=PLL_example", /* Пример первый */
"https://www.youtube.com/playlist?list=PLL_example2" /* Пример последний */
]
}"""
config_content = textwrap.dedent(config_content).strip()
config_path = os.path.abspath('config.json')
try:
with open('config.json', encoding='utf-8') as f:
json_string = re.sub(pattern=r'\/\*[\s\S]*?\*\/', repl='', string=f.read())
data = json.loads(json_string)
except FileNotFoundError:
with open('config.json', 'w', encoding='utf-8') as f:
json.dump(data, f, indent=4)
readme_source = 'https://raw.githubusercontent.com/MBQbUtils/YoutubeMusicPlaylistDownloader/main/README.md'
readme_path = 'README.md'
request.urlretrieve(readme_source, readme_path)
return data
if not os.path.exists(config_path):
with open(config_path, 'w', encoding='utf-8') as f:
f.write(config_content)
print(f"Edit config at {config_path!r}")
input("And then press Enter...")
with open(config_path, encoding='utf-8') as f:
config_content = f.read()
config_content = re.sub(pattern=r'\/\*[\s\S]*?\*\/', repl='', string=config_content)
return json.loads(config_content)
except:
print("Error on read config:")
raise


def output(text):
Expand Down

0 comments on commit 1419ad7

Please sign in to comment.