Gerenciador de músicas

Publicado por Émerson Moreira (última atualização em 01/12/2015)

[ Hits: 6.663 ]

Download chec_e_rem-2.py

Download chec_e_rem-4.py (versão 3)

Download chec_e_rem-5.py (versão 4)




Este programa gerencia automaticamente suas músicas sem que você mexa um dedo! Ele checa 2 diretórios e os compara movendo suas músicas da pasta de downloads para a sua biblioteca ou remove-as se já existirem em sua biblioteca.

Comentem o que vocês acharam pra talvez eu melhorá-lo XD

  



Versões atualizadas deste script

Versão 3 - Enviado por Émerson Moreira em 30/03/2015

Changelog: Changelog:

- Adicionado suporte a arquivos com "(" e ")".
- Adicionado toque musical ao mover músicas (para usá-lo você terá que instalar o programa mpg321).

Download chec_e_rem-4.py


Versão 4 - Enviado por Émerson Moreira em 25/11/2015

Changelog: Existia um bug que se estivesse fazendo download da música ele movia ela mesmo assim, e bugava o arquivo, agora ele espera terminar o download.

Download chec_e_rem-5.py


Esconder código-fonte

# coding: utf-8

###############################################################################################################
######!!!! Este programa checa suas musicas na pasta Musica e as compara com as da pasta Downloads !!!!########
######!!!! Gerencia-as movendo ou excluindo chexando se elas existem nas duas pastas ou em uma so !!!!#########
######!!! SE quiser ... altere o caminho dos diretorios e tambem a extensao a ser utilizada pelo programa !!!##
###############################################################################################################

import os
import glob
import shutil
import time
import dbus

LISTA = []
LISTA_rem = []

class chec_e_rem:

   def dire_mus(self):
      self.val_mus = os.path.expanduser('~/Música')#### ALTERE SE NECESSARIO
      os.chdir(self.val_mus) 
      self.dire_musica = glob.glob('*.mp3')###ALTERE SE QUISER
      print ' '
      print '!! MUSICAS LOCALIZADAS !!'
      print ' '

   def dire_dow(self):
      self.val_dow = os.path.expanduser('~/Downloads')
      os.chdir(self.val_dow) #### ALTERE SE NECESSARIO
      self.dire_downloads = glob.glob('*.mp3')
      print '!! MUSICAS NA PASTA DE DOWNLOADS LOCALIZADAS !!'
      print ' '

   def chec_rem(self):
      x = 0
      while x != len(self.dire_downloads):
         if self.dire_musica.count(self.dire_downloads[x]) >= 1:
            LISTA_rem.append(self.dire_downloads[x])
         x += 1
      
   def chec_mov(self):
      x = 0
      while x != len(self.dire_downloads):
         if self.dire_musica.count(self.dire_downloads[x]) == 0:
            LISTA.append(self.dire_downloads[x])
         x += 1


   def prt(self):
      print '========================================'
      print 'ESTES ARQUIVOS SERAO REMOVIDOS :'
      print LISTA_rem
      print '========================================'
      print ' '
      print '========================================'
      print 'ESTES ARQUIVOS SERAO MOVIDOS :'
      print LISTA
      print '========================================'
      print ' '

   def dbus_rem(self) :
      if LISTA_rem != []:
         icon = '/usr/share/icons/Tango/scalable/status/audio-volume-high.svg'
         title = 'Estas serao as músicas que seão removidas :'
         dbus_arq = ''
         for i in LISTA_rem :
            dbus_arq = dbus_arq + i
         text = dbus_arq
      
         bus = dbus.SessionBus()
         obj = bus.get_object('org.freedesktop.Notifications',
                   '/org/freedesktop/Notifications')
         dbus_notify = dbus.Interface(obj, 'org.freedesktop.Notifications')
         dbus_notify.Notify("notify", 0, icon, title, text, '', {}, 10000)

   def dbus_mov(self):
      if LISTA != []:
         icon = '/usr/share/icons/Tango/scalable/status/audio-volume-high.svg'
         title = 'Estas serao as músicas que seão movidas :'
         dbus_arq = ''
         for i in LISTA :
            dbus_arq = dbus_arq + i
         text = dbus_arq
   
         bus = dbus.SessionBus()
         obj = bus.get_object('org.freedesktop.Notifications',
                       '/org/freedesktop/Notifications')
         dbus_notify = dbus.Interface(obj, 'org.freedesktop.Notifications')
         dbus_notify.Notify("notify", 0, icon, title, text, '', {}, 10000)

   def REM_mus(self):
      x = 0
      os.chdir(self.val_dow)
      while x != len(LISTA_rem):
         LISTA_rem[x] = LISTA_rem[x].replace(' ','\ ')
         os.remove(LISTA_rem[x])
         print "removido : "+ str(LISTA_rem[x])
         x += 1

   def MOV_mus(self):
      x = 0
      os.chdir(self.val_dow)
      while x != len(LISTA):
         LISTA[x] = LISTA[x].replace(' ', '\ ')
         os.system('mv ' + LISTA[x] + ' ' + self.val_mus)
         print 'movido : ' + str(LISTA[x])
         x += 1

CHEC_E_REM = chec_e_rem()

while True :
   LISTA = []                    # ZERA A LISTA
   LISTA_rem = []            # ZERA A LISTA
   CHEC_E_REM.dire_mus()         # OBTER DIRETORIO DE MUSICAS
   CHEC_E_REM.dire_dow()         # OBTER DIRETORIO DE DOWNLOADS
   CHEC_E_REM.chec_rem()         # CHECA OS ARQUIVOS QUE SERAO REMOVIDOS
   CHEC_E_REM.chec_mov()         # CHECA OS ARQUIVOS QUE SERAO MOVIDOS
   CHEC_E_REM.prt()              # IMPRIME NO TERMINAL
   CHEC_E_REM.dbus_rem()         # INTERFACE COM D-BUS
   CHEC_E_REM.dbus_mov()         # INTERFACE COM D-BUS
   CHEC_E_REM.REM_mus()         # REMOVE AS MUSICAS
   CHEC_E_REM.MOV_mus()          # MOVE AS MUSICAS
   time.sleep(30)                # DELAY DE ESPERA PARA REINICIAR LOOP

Scripts recomendados

subwrite - um simples editor de texto em Python

Agenda de cadastros com tratamento de erros

pyTube v1.0

Mini-dicionário de termos em Python e PyQT 4

Hashing com Árvore Binária


  

Comentários
[1] Comentário enviado por Lisandro em 20/03/2015 - 07:04h

Muito Bom!
Está melhorando.
Favoritado ;-D

[2] Comentário enviado por removido em 20/03/2015 - 10:24h

Excelente!
Só acrescentar que podia fazer prompts ao usuário sobre qual pasta e qual o formato dos arquivos..
Se possível farei isso e mando o commit depois rsrs

Algo como:

diretorio = input('Em qual pasta estão as músicas?')
self.val_mus = os.path.expanduser(diretorio)

Esse lance de open source é legal por isso, ao invés de esperar um update posso contribuir =)

[3] Comentário enviado por NeRoZiCkA em 22/03/2015 - 20:58h


VLW lisandroguerra
Muito obrigado por sua sugestâo ivanaugustobd eu ja tinha feito um programa assim mas a pegada do programa é ele sozinho gerenciar suas músicas iniciando-o junto com o sistema sem q o usuário mexa mas se tu acrescentar essa forma o programa ficara trancado na inicializaçâo sendo q o próprio usuário terá q o iniciar praticamente VLW xD

[4] Comentário enviado por m4iir1c10 em 30/03/2015 - 17:20h

Tem como usar o mediainfo ou o mplayer para buscar o bitrate da musica e fazer a comparacao tambem?...
Exemplo:
Eu fiz o download da musica com o seguinte formato "Adele - Skyfall.mp3" e essa musica esta em horriveis 64kbs, so que depois eu fiz um rip do cd e agora eu tenho a mesma musica com o mesmo nome "Adele - Skyfall.mp3" so que em 192kbs... o script poderia reconhecer que apesar de ter o mesmo nome um tem a qualidade (bitrate) maior que o outro assim automaticamente selecionar o audio de melhor qualidade...

Eu nao sou fera assim no python para fazer essa conexao mais e uma ideia nao e mesmo :)

If root is enabled, noobs must be disabled.

[5] Comentário enviado por NeRoZiCkA em 31/03/2015 - 09:24h


otima ideia m4iir1c10 , vou ver como se faz isso !
obrigado pela ideia ;)

[6] Comentário enviado por talbas em 31/03/2015 - 12:28h


[2] Comentário enviado por ivanaugustobd em 20/03/2015 - 10:24h

Excelente!
Só acrescentar que podia fazer prompts ao usuário sobre qual pasta e qual o formato dos arquivos..
Se possível farei isso e mando o commit depois rsrs

Algo como:

diretorio = input('Em qual pasta estão as músicas?')
self.val_mus = os.path.expanduser(diretorio)

Esse lance de open source é legal por isso, ao invés de esperar um update posso contribuir =)


Sem dúvida, garoto! É isso aí.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts