Récupération des informations sur l'écriture, la composition et l'arrangement du site Tower Records avec Python

introduction

Cette fois, je vais faire un simple grattage. Je ne pense pas qu'il y ait beaucoup de gens qui aiment collecter des sources sonores localement à l'apogée de l'abonnement et même étiqueter des chansons, des compositions et des arrangements, mais j'aimerais les présenter car ils peuvent être facilement étiquetés avec cela.

essayons

Le premier est la structure du site Tower Records. Quand j'ai recherché le xpath, qui était rempli d'informations importantes, il ressemblait à ce qui suit. //*[@id="RelationArtist_0_1_sub"]/div/div[3]/div[2]/a/text() Ceci représente les informations d'écriture de morceau pour le premier morceau sur Disc1. À partir du numéro précédent, numéro de disque, numéro de trace, paroles ou composition ou arrangement. Veuillez ne pas jouer avec le dernier numéro. Écrivons en fait le code. Les bibliothèques utilisées sont lxml (scraping), urllib (autour du net) et mutagen (lié aux balises musicales).

tagget.py


om mutagen.flac import FLAC
from urllib import request
import requests
from lxml import html
import os
import requests
import json

class Net():
    def Tower(self, no, html2, disc, item):
        content = list()
        if item=="W": #Jugez l'une des paroles, la composition et l'arrangement, et entrez le nombre approprié.
            i = "3"
        elif item=="C":
            i = "4"
        elif item=="A":
            i = "5"
        contentr = html2.xpath('//*[@id="RelationArtist_'+str(disc)+'_'+str(no)+'_sub"]/div/div['+i+']/div[2]/a/text()') #Spécifiez l'emplacement

        try:
            content.append(contentr[0].strip('\'').strip()) #Ce n'est pas intelligent, mais cela correspond au cas où plusieurs valeurs sont entrées
            content.append(contentr[1].strip('\'').strip()) #Utilisons pour ou While!
            content.append(contentr[2].strip('\'').strip())
            content.append(contentr[3].strip('\'').strip())
        except IndexError:
            print(content) #Si la valeur n'est plus saisie, une erreur sera émise pour afficher le type de balise acquis.
        return content

class Main():
    def Towerget(self,files,url):
        n = Net()
        r = requests.get(url) #Chargez la page
        html2 = html.fromstring(r.content) #Analyser la page
        for f in files:
            tag = FLAC(f) #Chargement des balises
            no = tag['tracknumber'][0].lstrip("0") #J'ai entré le numéro de disque à 1 chiffre en tant que 0x, donc je l'ai façonné selon Tower Records.
            disc = int(tag['discnumber'][0].lstrip("0")) - 1 #Le nombre représentant le disque commence à 0, alors ajustez-le.
            print(no)
            tag['word'] = n.Tower(no, html2, disc, item="W") #Entrée d'étiquette d'écriture de chanson
            tag['composer'] = n.Tower(no, html2, disc, item='C') #Entrée d'étiquette de composition
            tag['arranger'] = n.Tower(no, html2, disc, item="A") #Entrée d'étiquette d'arrangement
            tag.pprint() 
            tag.save() #Enregistrer la balise

os.chdir("E:\music\Non organisé\Frapper le club de la porte de la prison-15 prisons") #Le chemin du fichier à baliser
files0 = os.listdir(os.getcwd()) #Obtenez une liste de dossiers
files = list()

for f in files0: #Étant donné que le même fichier contient des fichiers de gestion Google Drive, des photos de jaquettes, etc., ne retirez que flac
    if f.endswith(".flac"):
        files.append(f)
        print(f)
    else:
        print("not "+f)

m = Main()
url = "https://tower.jp/item/4936516/15 prisons" #L'URL de la page Tower Records
m.Towerget(files, url)

Ce n'est pas un code très propre, mais vous pouvez l'obtenir pour le moment.

Points d'amélioration

・ Les chansons telles que Overture qui n'ont pas de chanson et pas de paroles ne sont pas synchronisées. ・ Tower Records n'a peut-être pas conclu l'arrangement. ・ Je souhaite obtenir automatiquement l'URL de la page Tower Records (cela semble difficile).

Recommended Posts

Récupération des informations sur l'écriture, la composition et l'arrangement du site Tower Records avec Python
Collecte d'informations sur Twitter avec Python (intégration de MySQL et Python)
Utilisez Firefox avec Selenium depuis python et enregistrez la capture d'écran
Collecter des informations sur Twitter avec Python (API Twitter)
Scraping depuis un site authentifié avec python
Créez un arbre de décision à partir de 0 avec Python et comprenez-le (5. Entropie des informations)
Visualisez les informations du capteur d'accélération de la carte micro-ordinateur en temps réel avec mbed + Python
Deep Learning from scratch La théorie et la mise en œuvre de l'apprentissage profond appris avec Python Chapitre 3
Collecter des informations depuis Twitter avec Python (construction de l'environnement)
[Note] Exportez le html du site avec python.
Résolution du modèle Lorenz 96 avec Julia et Python
Archivez et compressez tout le répertoire avec python
Obtenez des informations de localisation (latitude et longitude) à partir de l'adresse. Géocodage en Python ~ Géocodeur et pydams ~
Extraire des images et des tableaux de pdf avec python pour réduire la charge de reporting
Télécharger en masse des images à partir d'une URL de site spécifique avec python
Apprenez Nim avec Python (dès le début de l'année).
Collecte d'informations sur Twitter avec Python (analyse morphologique avec MeCab)
Visualisez la gamme d'insertions internes et externes avec python
Informations pour contrôler les moteurs avec Python sur RaspberryPi
Installez la dernière version stable de Python avec pyenv (à la fois 2 et 3)
Recevoir des e-mails de Gmail et étiqueter avec Python3
Installez le dernier Python de pyenv installé par homebrew
[Python] Obtenez des informations sur les utilisateurs et des articles sur l'API de Qiita
Mettez Ubuntu dans Raspi, mettez Docker dessus et contrôlez GPIO avec python à partir du conteneur
Essayez d'utiliser l'API Twitter rapidement et facilement avec Python
J'ai essayé d'utiliser la bibliothèque Python de Ruby avec PyCall
[Python] Lisez le fichier csv et affichez la figure avec matplotlib
Résolvez le livre en spirale (algorithme et structure de données) avec python!
Rationalisez la collecte d'informations avec l'API Twitter et les robots Slack
[Python] J'ai installé le jeu depuis pip et j'ai essayé de jouer
Hash avec python et échapper à l'égosa d'un certain ministre
[Python x Zapier] Obtenez des informations d'alerte et notifiez avec Slack
Jouez avec le mécanisme de mot de passe de GitHub Webhook et Python
Surveillance du site et notification d'alerte avec AWS Lambda + Python + Slack