Gerenciador de músicas

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

[ Hits: 6.660 ]

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

Leitor de arquivo via linha de comandoEs

Dividir um grupo de arquivos em vários CDs Ou DVDs

Leitura de arquivo com input

pySuporte - Script para controle de chamados armazena num txt.

Agenda de Contatos


  

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