Мой старенький 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 🙂