Skip to content

Commit

Permalink
Merge pull request #6 from dan-sazonov/dev
Browse files Browse the repository at this point in the history
Release v1.5.1 prod
  • Loading branch information
dan-sazonov authored Oct 14, 2022
2 parents e0a3e93 + e245b85 commit 25120a2
Show file tree
Hide file tree
Showing 5 changed files with 32 additions and 26 deletions.
20 changes: 12 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,23 +22,26 @@ The easiest way to start is just:
```
$ python3 main.py
```
After that, you will be asked to enter the path to directory where the tracks need to be edited. Then change the value of each parameter for each file. If you want to
apply the value from the brackets, just press [Enter]. It looks like this:
After that, the program will ask for the path to the directory where the tracks need to be edited. Then change the value of each parameter
for each file. If you want to apply the value from the brackets, press \[Enter\]. You can use a parser to search for the album name. Just enter \[\!] instead of the album name. Also, the name of the band and track are copied to the clipboard. It looks like this:

<p align="center"><img src="./img/demo1.png" width="555" height="253"></p>

<h3>Default Parameters</h3>

If there is a same values for each tracks in this folder, you can predefine it by specifying one of the flags when starting the program (see below). The value of this
parameter will be asked once at start, and will be applied to all tracks. It looks like this:

<p align="center"><img src="./img/demo2.png" width="556" height="373"></p>
<details>
<summary><b>Flags:</b></summary>
<ul>
<li><code>'-T', '--title'</code> - set a title for all tracks;</li>
<li><code>'-R', '--artist'</code> - set an artist for all tracks;</li>
<li><code>'-A', '--album'</code> - set an album for all tracks;</li>
<li><code>'-N', '--number'</code> - set a number for all tracks;</li>
<li><code>'-G', '--genre'</code> - set a genre for all tracks;</li>
<li><code>'-D', '--date'</code> - set a date for all tracks.</li>
<li><code>'-T', '--title'</code> - title for all tracks;</li>
<li><code>'-R', '--artist'</code> - artist for all tracks;</li>
<li><code>'-A', '--album'</code> - album for all tracks;</li>
<li><code>'-N', '--number'</code> - number for all tracks;</li>
<li><code>'-G', '--genre'</code> - genre for all tracks;</li>
<li><code>'-D', '--date'</code> - date for all tracks.</li>
</ul>
</details>

Expand All @@ -65,6 +68,7 @@ create a json file with the unchanged metadata, then you edit them and apply it
- You can run the program in minimal mode with `-m` or `--minimal` flag. It will only ask for title, artist, album and genre. Other data will be cleared.
- Files could be renamed in the form of `artist_track-title.mp3`. Use the `-r` or `--rename` flag. Please note that the information in the logs will be associated with the new name.
- You can also rename all files without changing the metadata. Run the program with the `--auto_rename` flag. Don't use other flags with this.
- If there are several files with the same name, a number in parentheses will be added to the end of it
- To remove all data from the tracks, run the program with the `-d` or `--delete` flag. Any other flags will be ignored.
- If you need to go back to editing the previous track in the interactive mode, enter the `^` character in any field.
- In interactive mode, two colons after the letters _a_, _o_ or _u_ will be replaced with this letter with an umlaut. For example, `Mo::tley Cru::e` will be replaced by `Mötley Crüe`.
Expand Down
33 changes: 17 additions & 16 deletions README_ru.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ $ git clone https://github.com/dan-sazonov/id3-editor.git
$ cd id3-editor
$ python3 -m pip install -r requirements.txt
```
_примечание: возможно потребуется ввести_ `python` _вместо_ `python3`.<br>
_Примечание: возможно, потребуется ввести_ `python` _вместо_ `python3`.<br>
Эта программа была протестирована на Win10 x64 и Ubuntu 20.04 x64 на Python 3.9.0. Я не знаю, будет ли она хорошо работать
на других ОС, поэтому будет круто, если ты поделишься своим опытом и расскажешь о найденных багах.

Expand All @@ -23,54 +23,55 @@ _примечание: возможно потребуется ввести_ `py
$ python3 main.py
```
После этого программа спросит путь к директории, треки в которой надо отредактировать. Затем измени значение каждого параметра
для каждого файла. Если ты хочешь применить значение из скобок, просто нажми \[Enter\]. Это выглядит как-то так:
для каждого файла. Если ты хочешь применить значение из скобок, нажми \[Enter\]. Для поиска названия альбома можно использовать парсер. Просто введи \[\!] вместо названия альбома. Также название группы и трэка копируются в буфер обмена. Это выглядит так:

<p align="center"><img src="./img/demo1.png" width="555" height="253"></p>

<h3>Параметры по дефолту</h3>

Если какие-то параметры одинаковые для всех треков в этой директории, ты можешь предустановить их указав соответствующие
Если какие-то параметры одинаковые для всех треков в этой директории, ты можешь предустановить их, указав соответствующие
флаги перед запуском программы (см. ниже). Значение этих параметров будут спрошены однажды перед запуском и будут применены
ко всем трекам. Это выглядит как-то так:
ко всем трекам. Это выглядит так:

<p align="center"><img src="./img/demo2.png" width="556" height="373"></p>
<details>
<summary><b>Флаги:</b></summary>
<ul>
<li><code>'-T', '--title'</code> - задать название для всех треков;</li>
<li><code>'-R', '--artist'</code> - задать исполнителя для всех треков;</li>
<li><code>'-A', '--album'</code> - задать альбом для всех треков;</li>
<li><code>'-N', '--number'</code> - задать номер для всех треков;</li>
<li><code>'-G', '--genre'</code> - задать жанр для всех треков;</li>
<li><code>'-D', '--date'</code> - задать дату выпуска для всех треков.</li>
<li><code>'-T', '--title'</code> - название для всех треков;</li>
<li><code>'-R', '--artist'</code> - исполнителя для всех треков;</li>
<li><code>'-A', '--album'</code> - альбом для всех треков;</li>
<li><code>'-N', '--number'</code> - номер для всех треков;</li>
<li><code>'-G', '--genre'</code> - жанр для всех треков;</li>
<li><code>'-D', '--date'</code> - дату выпуска для всех треков.</li>
</ul>
</details>

<h3>Логирование и ручной режим</h3>

Если ты хочешь, ты можешь сохранить json лог с метаданными отредактированных файлов. Для этого запусти программу с флагами
`-l` или `--log`. По пути, сохраненному в переменной `LOG_PATH` в файле `config.py`, будет создан файл следуещего формата:
Если хочешь, ты можешь сохранить json лог с метаданными отредактированных файлов. Для этого запусти программу с флагами
`-l` или `--log`. По пути, сохраненному в переменной `LOG_PATH` в файле `config.py`, будет создан файл следующего формата:
```json
{
"file-name.mp3": {
"data": ["value"]
}
}
```
Ты можешь восстановить метаданные для треков по информации из любого лог-файла. Например, это может быть полезно если у
Ты можешь восстановить метаданные для треков по информации из любого лог-файла. Например, это может быть полезно, если у
тебя есть одинаковые файлы в разных директориях, и нужно изменить метаданные для всех. Запусти программу с флагом `-p` или `--parse`,
выбери лог-файл и укажи путь целевой директории. Другие флаги, кроме `-r` или `--rename`, будут проигнорированы.

Также можно записать текущие метаданные в json файл. Для этого запусти программу с флагом `-s` или `--scan`. Я называю
это **ручным режимом** - сначала ты создаешь файл с текущими метаданными, затем редактируешь его, и применяешь данные к
это **ручным режимом** - сначала ты создаешь файл с текущими метаданными, затем редактируешь его и применяешь данные к
файлам, запустив программу с флагом `-p` or `--parse`.

<h3>Больше возможностей</h3>

- Если файлы содержат информацию о правообладателе, и ты хочешь сохранить ее, используй флаг `-c` или `--copyright`.
- Ты можешь запустить программу в минимальном режиме, используя флаг `-m` или `--minimal`. Будут спрошены только название, исполнитель, альбом и жанр. Другие данные будут очищены.
- Ты можешь запустить программу в минимальном режиме, используя флаг `-m` или `--minimal`. Будут спрашиваться только название, исполнитель, альбом и жанр. Другие данные будут очищены.
- Файлы могут быть переименованы по примеру `artist_track-title.mp3`. Используй флаг `-r` или `--rename`. Учти что информация в логах будет связана с новым названием.
- Можно переименовать файлы без изменения метаданных. Запусти программу с флагом `--auto_rename`. Не используй другие флаги с этим.
- Если будет несколько файлов с одним именем, в его конец добавится номер в скобках
- Чтобы очистить все метаданные, используй флаг `-d` или `--delete`. Другие флаги будут проигнорированы.
- Если нужно вернуться к редактированию предыдущего файла в интерактивном режиме, введи символ `^` в любом поле.
- В интерактивном режиме два двоеточия после букв _a_, _o_ или _u_ будут заменены на эти буквы с умляутом. Например, `Mo::tley Cru::e` будет заменено на `Mötley Crüe`.
Expand All @@ -80,7 +81,7 @@ $ python3 main.py

## 🤝 Совместная разработка
Если ты найдешь какие-то баги, пожалуйста, открой [issue](https://github.com/dan-sazonov/id3-editor/issues),
или сделай форк и предложи [пулл-реквест](https://github.com/dan-sazonov/id3-editor/pulls). И будет круто, если перед этим ты расскажешь мне про свои идеи, может быть я уже работаю над этим.
или сделай форк и предложи [пулл-реквест](https://github.com/dan-sazonov/id3-editor/pulls). И будет круто, если перед этим ты расскажешь мне про свои идеи, может быть, я уже работаю над этим.

## 👨‍💻 Автор
Автор этого репозитория и кода - [@dan-sazonov](https://github.com/dan-sazonov). <br>
Expand Down
3 changes: 2 additions & 1 deletion config.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
ENABLE_PARSER = True

# if True, dev mode will be enabled
# abandon hope, everyone who enters here
DEV_MODE = os.getenv('DEV_MODE') == '1' or os.getenv('DEV_MODE'.lower()) == 'true'

# 'metadata key': 'text for CLI'
Expand All @@ -37,7 +38,7 @@

# if True, the data from the LEAVE_THIS_DATA will remain unchanged
LEAVE_SOME_DATA = False
LEAVE_THIS_DATA = ['tracknumber', 'date'] # don't change it!
LEAVE_THIS_DATA = ['tracknumber', 'date'] # don't change it! (v 1.5.1: but why???)

# if True, the data entered by user won't be validated
SKIP_VALIDATION = False
Expand Down
Binary file modified img/demo1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 1 addition & 1 deletion validator.py
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ def validate_data(track: EasyID3, data: str):
"""
try:
value = track[data][0]
except KeyError:
except (KeyError, IndexError):
return ''

if data == 'date':
Expand Down

0 comments on commit 25120a2

Please sign in to comment.