Índice:

Exclua as músicas indesejadas do iTunes do seu computador: 10 etapas
Exclua as músicas indesejadas do iTunes do seu computador: 10 etapas

Vídeo: Exclua as músicas indesejadas do iTunes do seu computador: 10 etapas

Vídeo: Exclua as músicas indesejadas do iTunes do seu computador: 10 etapas
Vídeo: Atalhos para excluir ARQUIVOS INÚTEIS no Windows 2024, Julho
Anonim
Exclua as músicas indesejadas do iTunes do seu computador
Exclua as músicas indesejadas do iTunes do seu computador

Olá, senhoras e senhores, esta é a minha primeira codificação instrutível, então, por favor, ao comentar, deixem suas armas em casa (facas são aceitáveis, no entanto). Com o advento dos mp3 players, tornou-se possível para as pessoas transportarem quantidades sem precedentes de música com eles nos bolsos. Não é incomum ouvir falar de pessoas com coleções de 5, 10, até 15 mil músicas (e algumas pessoas, até mais). Dos tocadores de mp3, nenhum é mais popular do que o iPod da Apple e o software que o executa, o iTunes. Com bibliotecas de música tão grandes, no entanto, pode se tornar um tanto tedioso se livrar das músicas que simplesmente não soam bem ou atraentes. você não mais. Pode levar séculos para percorrer faixa por faixa através de sua coleção de músicas no iTunes e se livrar das músicas que você não gosta. É aí que entra este instrutível. Neste instrutível, vou mostrar a você uma maneira de se livrar automaticamente das músicas que são simplesmente terríveis, com alguma ajuda de meu bom amigo, Perl. Um bom conhecimento básico de Perl é extremamente útil ao tentar repetir isso instrutível, embora não seja obrigatório (você certamente poderia simplesmente pegar o produto de código acabado e copiar / colar e funcionará perfeitamente). Para os interessados em Perl, recomendo fortemente o livro "Learning Perl" da O'Reilly, é uma boa leitura e um dos melhores livros escritos sobre Perl que tive a chance de ler. IMPORTANTE: Embora os métodos apresentados aqui funcionem se feito corretamente, não posso e simplesmente não aceitarei qualquer responsabilidade se você fizer algo estúpido e apagar suas preciosas canções. Considere seriamente fazer backup de seus arquivos de música antes de tentar escrever ou executar um script como o seguinte. Simplesmente erre por excesso de cautela para que não tenhamos nenhum sentimento ferido se você não o fizer, obrigado. Leia o aviso? (Sim, até você, pessoa que não leu o aviso) Ótimo! Vamos começar:-) Atualização: Parece que alguns scripts perl têm trabalhado arduamente para escrever scripts do iTunes. Para uma variedade de scripts relacionados ao iTunes, verifique os scripts de Teridon.

Etapa 1: primeiros passos

Começando
Começando

Como com todas as coisas, há um pouco de preparação que precisa ser feito antes de podermos executar este script. Então, coisas que você precisará excluir automaticamente músicas do iTunes: 1) Um computador (duh) 2) iTunes (double duh) 3) Perl (difícil de executar um script Perl sem Perl, você não diria?) 4) Seu editor favorito (eu sou um proponente do vi e vim, mas qualquer editor de texto deve fazer o truque) 5) Um iPod (não obrigatório, mas bom ter por razões que ficarão claras em breve) Obtendo Perl: Siga o as instruções aqui devem ser bastante simples: https://www.perl.com/download.cspUma vez que você baixou, instalou e está pronto para usar o Perl, queremos algumas informações básicas sobre o que estamos fazendo. Deve-se observar que o script foi desenvolvido originalmente para Mac OS X, embora os mesmos métodos devam funcionar em sistemas operacionais não baseados em Unix, como o Windows. É hora da parte chata, er, "educacional" do Instrutável.

Etapa 2: A ideia básica do script

O iTunes inclui um sistema de classificação de 5 estrelas para permitir que os usuários avaliem as músicas. Músicas com classificação de 5 estrelas são consideradas as melhores, enquanto músicas com classificação de 1 estrela são consideradas algumas das piores. Para nossos propósitos, assumiremos que qualquer música que não tenha uma classificação (também conhecida como 0 estrelas) é aquela que o usuário ainda não teve a chance de classificar. Pessoalmente, ao classificar músicas, se uma música tiver uma classificação de 1 estrela, I descobri que provavelmente é ruim o suficiente para não merecer o precioso espaço no disco rígido que a música ocupa. Portanto, o Perl Script que apresentarei a você neste Instructable analisará a biblioteca do iTunes e excluirá qualquer faixa que tenha recebido uma classificação de 1 estrela. Como um bônus adicional, as músicas podem ser classificadas enquanto o usuário está em trânsito usando um iPod. Dessa forma, você pode selecionar músicas para exclusão enquanto estiver em trânsito simplesmente classificando-as e elas serão excluídas automaticamente quando você sincronizar o iPod com o computador posteriormente (se sincronizar automaticamente o iPod com o computador). estamos fazendo, vamos ver como vamos extrair informações de músicas do iTunes para o Perl Script.

Etapa 3: A biblioteca XML: ITunes 'Goto Guy

A biblioteca XML: ITunes 'Goto Guy
A biblioteca XML: ITunes 'Goto Guy

Para excluir uma música do computador com base em sua classificação, exigimos 2 informações: a classificação da música e a localização da música. Felizmente para nós, existe um arquivo útil do qual podemos obter todas as informações que sempre desejamos sobre o iTunes: o arquivo XML da biblioteca de músicas do iTunes. O arquivo XML é denominado "iTunes Music Library.xml" e deve estar localizado no diretório de músicas do seu disco rígido principal.

Sobre o arquivo XML: O arquivo xml do iTunes é uma espécie de banco de dados mantido pelo iTunes e sempre atualizado. Quando uma modificação é feita no iTunes, a parte correspondente do arquivo XML do iTunes é modificada para observar essa mudança. Um exemplo de entrada do meu arquivo XML do iTunes é fornecido abaixo: 1218Track ID1218NameTake On MeArtistA-HaGenre80'sKindMPEG audio fileSize3682382Total Time230138Date Modified2007-09-24T02: 11: 30ZDate Added2008-05-28T05: 00: 24ZBit Date12817686 Taxa de Reprodução de UTC12817681008Tax de Reprodução de TTC1817681008 25T01: 26: 58ZRating40Album Rating40Album Rating ComputedPersistent ID9AC5DB9713240B44Track TypeFileLocationfile: //localhost/Volumes/HD1/iTunes%20Music/A-Ha/Unknown%20Album/Take%20Onibrary%20MePasta1.mp3File entrada da pasta Contagem de arquivo1. o arquivo XML consiste em valores cercados por tags de estilo HTML. Para os fins do script, estaremos interessados nas informações de ID da faixa, nome, artista, classificação e localização. Se você estiver olhando para o arquivo XML, poderá notar que essa música tem uma "classificação" de 40. O iTunes atribui a cada música um número inteiro, variando de 0 a 100, com cada 20 pontos sendo uma estrela adicional para a classificação. Portanto, uma avaliação de 20 corresponde a uma avaliação de 1 estrela, uma avaliação de 40 é uma avaliação de 2 estrelas e assim por diante, com 100 sendo uma avaliação de 5 estrelas. Agora que sabemos sobre o arquivo XML, vamos começar a criar scripts

Etapa 4: Seu amigo, o Hash (mesmo se você não estiver em Amsterdã)

Seu amigo, o Hash (mesmo se você não estiver em Amsterdã)
Seu amigo, o Hash (mesmo se você não estiver em Amsterdã)

Antes de eliminarmos os arquivos, precisamos de um banco de dados de trabalho que relacione todas as informações da música. Embora estruturas de dados mais sofisticadas, como um array de hashes ou hash de hashes, possam ser usados, este script é simples o suficiente para merecer o uso de uma lista simples de hashes. Para os não iniciados, um hash nada mais é do que um array que é indexado por strings ou uma massa confusa de pares chave / valor. Pode-se pensar em um hash como um grande barril com coisas (os valores) nele, e tudo no barril metafórico tem uma etiqueta (as chaves) anexada. Você pode puxar qualquer item do barril simplesmente encontrando sua etiqueta. Para obter mais informações sobre hashes, o link a seguir pode ser útil: https://www.tutorialspoint.com/perl/perl_hashes.htm Podemos usar a informação de que cada música no arquivo XML do iTunes é atribuída a um ID de faixa exclusivo para acompanhar as músicas. Por causa disso, o trackID é uma chave ideal para os hashes. Portanto, podemos configurar 4 hashes para o título da música, artista, classificação e localização. Uma vez que isso tenha sido estabelecido, podemos examinar o arquivo e preencher nosso banco de dados hash usando algumas expressões regulares simples, que serão mostradas a seguir.

Etapa 5: uma lição (muito) breve sobre expressões regulares

Para obter nossas entradas hash do arquivo XML, e também economizar um pouco de tempo na pesquisa, vamos querer pedir a ajuda de um dos recursos mais poderosos do Perl: a expressão regular. Farei uma breve lição sobre expressões regulares, mas para aqueles que desejam explicações mais detalhadas, existem muitos bons tutoriais de expressões regulares online. Confira https://perldoc.perl.org/perlretut.html para um bom tutorial de expressões regulares. Em suma, as expressões regulares nos fornecem um conjunto de ferramentas para percorrer strings, substituindo uma string por outra ou salvando partes de uma string para uso posterior. As expressões regulares fornecem 2 funções, os operadores de correspondência (m //) e substituição (s //), que serão usados neste projeto. Para usar qualquer uma dessas funções em um contexto de atribuição, usaremos o operador de ligação do Perl (= ~), que é usado para ligar um padrão a uma variável de string de escolha. Exemplos:

$ comentário = ~ / Purduecer /; # retorna verdadeiro se $ comentário string contém a frase "Purduecer" s / [a-z] / [A-Z] /; # pegue todas as letras minúsculas na string e coloque-as em $ _ stringUm segundo recurso útil das expressões regulares são as variáveis de memória. Em expressões regulares, você pode colocar certos itens entre parênteses e, em seguida, usar as variáveis de memória de correspondência de padrão especial $ 1, $ 2, etc. para acessar as partes das strings que corresponderam a essas partes posteriormente.

/ (Instructables) Robot /; #Corresponda a qualquer linha com a frase "Robô Instructables" $ website = $ 1; #Salve o resultado da correspondência de padrão bem-sucedida contida no primeiro conjunto de parênteses # (neste caso, a variável $ 1 contém "Instructables")Finalmente, em expressões regulares, existem certos caracteres que servem a um propósito especial. Estes são escapes de barra invertida (todos os quais devem parecer familiares para programadores C), classes de caracteres e metacaracteres. Por exemplo, para corresponder a qualquer letra que tenha uma guia em ambos os lados, poderíamos dizer

/ / t [a-zA-Z] t /Esses colchetes são usados em expressões regulares para definir uma classe de caracteres. Suponha, entretanto, que desejamos encontrar o texto entre colchetes na linha. Não poderíamos simplesmente escrever como está, como é mostrado abaixo

/

/

Etapa 6: aplicando expressões regulares ao script do ITunes

Aplicação de expressões regulares ao script do ITunes
Aplicação de expressões regulares ao script do ITunes

Agora que esperamos ter alguma ideia dos conceitos básicos subjacentes às expressões regulares, é hora de aplicá-los ao script do iTunes. Ao ler o código xml, certos caracteres, como a barra, são encontrados com bastante frequência. Portanto, tiraremos vantagem do fato de que o operador m // permite que você escolha quaisquer delimitadores que deseja no código (usaremos colchetes, embora outros delimitadores certamente funcionem) Em primeiro lugar, só precisamos ler uma parte de o arquivo XML completo do iTunes. Partes do arquivo contendo informações como listas de reprodução, etc. não são necessárias. A primeira linha da seção de listas de reprodução, que vem após as informações da música, se parece com o seguinte: Listas de reprodução Portanto, em um loop while, podemos adicionar uma instrução que pula para o final da leitura do arquivo se essa linha for encontrada.

while () {#loop_instructions_here último if ($ _ = ~ m [Playlists])}Em seguida, para construir os IDs de hash, podemos usar uma árvore if-elsif para construir nossos hashes de banco de dados, usando as variáveis de correspondência de memória que aprendemos na etapa anterior para salvar valores nos hashes

if ($ _ = ~ m [(d +)]) {$ id = $ 1; } elsif ($ _ = ~ m [Avaliação (d +)]) {$ rate_hash {$ id} = $ 1; } elsif ($ _ = ~ m [Nome (. +)]) {$ name_hash {$ id} = $ 1; } elsif ($ _ = ~ m [Artista (. +)]) {$ art_hash {$ id} = $ 1; } elsif ($ _ = ~ m [Locationfile: // localhost (. *)]) {$ loc_hash {$ id} = $ 1; }Agora que construímos a base de nosso banco de dados hash, abordaremos a localização e a remoção de arquivos de 1 estrela, para a próxima etapa!

Etapa 7: localizar e excluir as faixas de uma estrela

Localização e exclusão dessas faixas de 1 estrela
Localização e exclusão dessas faixas de 1 estrela

Agora que temos nosso banco de dados configurado, é hora de caçar as faixas de 1 estrela, para que possamos excluí-las. Perl fornece uma construção de loop útil chamada loop foreach que pode ser usada para iterar todas as chaves de nossos hashes. Deve-se observar que nem todas as faixas da biblioteca do iTunes terão uma entrada no hash de classificações. Isso ocorre porque as músicas que não têm uma classificação não recebem uma linha de classificação de faixa no arquivo XML do iTunes. Portanto, ao percorrer os hashes, queremos usar a seguinte construção:

foreach $ id (chaves de classificação% rate_hash) {#… insira o código de loop aqui}Depois disso, é tão simples quanto usar a seguinte instrução

desvincular $ loc_hash {$ id} se $ rate_hash {$ id} == 20;A função de desvinculação usada no código de exemplo acima é a maneira do Perl de excluir arquivos. Você pode ficar tentado a usar uma chamada de sistema para a função delete do seu sistema operacional, mas por motivos de portabilidade, o código que escrevi não usa a chamada de sistema. Agora temos a estrutura básica de nosso código. Nas etapas a seguir, faremos alguns refinamentos no código para que você possa ter um script funcional com todos os recursos para se livrar daquelas incômodas 1-estrela.

Etapa 8: escapes de URI e como contorná-los

Se você tentar executar o script como está, encontrará vários erros em seu sistema operacional e, se observar os caminhos de arquivo que está tentando excluir, poderá encontrar caracteres incomuns embutidos nos caminhos que são indesejáveis. Há uma boa chance de que esses caminhos contenham caracteres de escape de URI. O que são escapes de URI? Em HTML e XML, os caracteres de escape de URI (também conhecidos como escapes de URI) são metacaracteres especiais usados para pesquisar instâncias literais desse caractere. Por exemplo, você nunca verá um espaço em branco simples em uma string de caracteres XML. Você verá, no entanto, a representação XML de um espaço em branco simples,% 20. (Certamente você já viu isso na barra de URL em seu navegador e se perguntou o que eram. Bem, agora você sabe) Um escape de URI consiste em um sinal% seguido por um código hexadecimal de 2 dígitos que representa o valor ASCII do caractere. ponto, você poderia escrever um monte de instruções de substituição no hash de localização para substituir todos os metacaracteres possíveis que você encontrar (ou seja, $ loc_hash {$ id} = ~ s /% 20 / /; e assim por diante). Felizmente, porém, Perl fornece uma maneira melhor de cuidar dessas coisas. Perl vem com um módulo chamado URI:: Escape, que tem uma função incorporada, uri_unescape, que fará o trabalho de eliminar os escapes de URI para nós. Para usar o módulo, basta adicionar a seguinte linha na parte superior do seu código:

use URI:: Escape;Agora, depois de atribuirmos o array $ loc_hash {$ id} no loop do arquivo XML, podemos adicionar a seguinte linha depois

uri_unescape ($ loc_hash {$ id});A linha acima elimina automaticamente quaisquer caracteres de escape URI. Como um bônus adicional, ele traduz alguns personagens internacionais também. Eu executei o script com alguns caminhos de arquivo que continham konji japonês, e a função uri_unescape traduziu os formatos XML desses caracteres para seus caracteres originais para que o desvinculasse pudesse excluir o arquivo com sucesso. Antes de prosseguirmos, uma etapa adicional deve ser realizada. Por razões que não entendi totalmente, o iTunes codifica o símbolo do e comercial (&) como & em suas strings. Se alguém souber o porquê disso, por favor me avise. Enquanto isso, eliminamos esse problema adicionando a seguinte linha na linha uri_unescape

$ loc_hash {$ id} = ~ s / &#/ & /;Agora, o script terá caminhos de arquivo livres de caracteres estranhos e a função de desvinculação será capaz de encontrar arquivos em seus locais apropriados para excluí-los. Bem, será se você estiver usando Mac OSX (e provavelmente a maioria dos outros sistemas operacionais baseados em Unix também). Continue lendo para tornar o script compatível com outros sistemas operacionais (ou seja, Windows).

Etapa 9: Adicionando Compatibilidade de Script ao Windows

Adicionando Compatibilidade de Script ao Windows
Adicionando Compatibilidade de Script ao Windows

O script, como escrito até agora, remove efetivamente trilhas em sistemas operacionais baseados em Unix. Para fazê-lo funcionar no Windows, uma pequena adição é necessária. Ao contrário do Mac e de outros sistemas operacionais baseados em Unix, o Windows não oferece suporte ao conceito de um único diretório raiz. Portanto, todos os nomes de caminho começam com um volume (C: ou E: ou qualquer outra letra que você possa imaginar) em oposição ao diretório raiz (/). Felizmente para nós, Perl tem uma variável especial, $O (é um o maiúsculo, não zero), que nos diz qual sistema operacional estamos usando no momento. Portanto, se o valor armazenado nessa variável contém "Win", vamos querer remover a barra inicial em nosso caminho de arquivo de localização XML. Isso pode ser feito com a seguinte linha de código (adicionada depois de analisarmos com sucesso a localização de uma faixa do arquivo XML):

$ loc_hash {$ id} = substr ($ loc_hash {$ id}, 1) se $ ^ O = ~ / Win / i;Agora, o script funcionará independentemente de ser executado no OS X ou no Windows.

Etapa 10: O script concluído

O roteiro concluído
O roteiro concluído

Em anexo está a minha versão do script de exclusão automática completo do iTunes, para aqueles de vocês que queriam apenas o produto final e não a explicação de como ele funciona.

Para usar o script, você vai querer salvar o arquivo como um arquivo perl (extensão.pl) e então torná-lo executável (chmod 751 no Unix, não tenho certeza do que é para sistemas Windows).

Recomendado: