Мой старенький IPod победило безжалостное время (обнаружился этот пункт с час назад, как раз когда планировал поехать кататься на велосипеде) :(, а так как без музыки в дороге очень неприятно (радио, транслирующее постоянно список из одних и тех же песен не добавляет оптимизма), и места в телефоне (которым теперь придется пользоваться вместо плеера) не так уж много, решил быстренько наваять программку, которая будет составлять плей-лист случайных песен из имеющихся на компе (около 5000 штук, валяющихся в одном каталоге без сортировки — старые привычки, они такие 🙂 ), и сбрасывать в телефон.
Собственно, все очень просто 🙂
1. Спрашиваем, откуда брать песни
2. Спрашиваем, куда сохранять
3. Спрашиваем, что делать с уже имеющимися песнями в целевой папке
4. Спрашиваем, сколько песен нужно отобрать
5. Работаем
Да, сам код можно и нужно оптимизировать (используя def его можно уменьшить как минимум в два раза), но это я сделаю потом 🙂 А пока и так нормально:
import glob
import os
import re
import random
from shutil import copyfile
import time
path = str(input('Где находится вся музыка? : \n'))
#Обрабатываем введенную ссылку для получения стандартного стиля с двумя слешами
regxp = '[\w-]+[\w:]'
path = re.findall(regxp, path) #Разбиваем введенный адрес на составляющие без обратного слеша
path = '\\\\'.join(path) #Добавляем двойной слеш после каждой папки (под формат Python)
result_path = str(input('В какую папку будем сохранять полученные результаты? :\n'))
regxp = '[\w-]+[\w:]'
result_path = re.findall(regxp, result_path) # Разбиваем введенный адрес на составляющие без обратного слеша
result_path = '\\\\'.join(result_path) # Добавляем двойной слеш после каждой папки (под формат Python)
os.chdir(result_path)
print('В конечной папке имеется файлов: ', len(glob.glob('*.mp3')))
deleting_all_mp3 = int(input('Очистить конечную папку (1 - да|2 - нет)?: '))
if deleting_all_mp3 == 1:
os.chdir(result_path)
delete_list = glob.glob('*.mp3')
for file in delete_list:
os.remove(file)
print('Конечная папка очищена... \n')
os.chdir(path)
all_mp3 = glob.glob('*.mp3')
quantity = int(input('Сколько песен нужно отобрать?: '))
print('Обрабатываем папку:', path)
print('Сохраняем в папку:', result_path)
print('Берем песен:', quantity)
print('Имеется песен:', len(all_mp3))
if quantity > len(all_mp3):
print('Песен меньше, чем нужно выбрать :( ')
else:
print('Работаем! \n')
start_quantity = 1
while start_quantity <= quantity:
track_number = random.randrange(1, len(all_mp3))
print('Выбрана песня:', track_number)
track = all_mp3[track_number]
print(track)
file_for_copy = path + '\\' + track
file_to_copy = result_path + '\\' + track
copyfile(file_for_copy, file_to_copy)
time.sleep(2)
print('Песня скопирована... \n \n')
start_quantity = start_quantity + 1
elif deleting_all_mp3 == 2:
os.chdir(path)
all_mp3 = glob.glob('*.mp3')
quantity = int(input('Сколько песен нужно отобрать?: '))
print('Обрабатываем папку:', path)
print('Сохраняем в папку:', result_path)
print('Берем песен:', quantity)
print('Имеется песен:', len(all_mp3))
if quantity > len(all_mp3):
print('Песен меньше, чем нужно выбрать :( ')
else:
print('Работаем! \n')
start_quantity = 1
while start_quantity <= quantity:
track_number = random.randrange(1, len(all_mp3))
print('Выбрана песня:', track_number)
track = all_mp3[track_number]
print(track)
file_for_copy = path + '\\' + track
file_to_copy = result_path + '\\' + track
copyfile(file_for_copy, file_to_copy)
time.sleep(2)
print('Песня скопирована... \n \n')
start_quantity = start_quantity + 1
print('Все! :)')
И да - код доступен на Git 🙂
Support the Blog!
Running a blog takes a lot of effort, time, and passion. Your donations help improve the content, inspire new ideas, and keep the project going.
If you’ve enjoyed the blog’s materials, any support would mean the world to me. Thank you for being here! ❤️