Abrufen von Informationen zu Songwriting, Komposition und Arrangement von der Tower Records-Website mit Python

Einführung

Dieses Mal werde ich ein einfaches Schaben machen. Ich glaube nicht, dass es viele Leute gibt, die während der Blütezeit des Abonnements gerne lokale Schallquellen sammeln und sogar Songs, Kompositionen und Arrangements markieren, aber ich möchte sie vorstellen, weil sie leicht damit markiert werden können.

Lass es uns versuchen

Erstens ist die Struktur der Tower Records-Site. Als ich den xpath nachgeschlagen habe, der voller wichtiger Informationen war, sah er wie folgt aus. //*[@id="RelationArtist_0_1_sub"]/div/div[3]/div[2]/a/text() Dies sind die Songwriting-Informationen für das erste Lied auf Disc1. Aus den vorherigen Nummern, Disc-Nummer, Trac-Nummer, Text oder Komposition oder Arrangement. Bitte spielen Sie nicht mit der letzten Nummer. Lassen Sie uns den Code tatsächlich schreiben. Die verwendeten Bibliotheken sind lxml (Scraping), urllib (im Internet) und mutagen (Music Tag Related).

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": #Beurteilen Sie einen der Texte, Kompositionen und Arrangements und geben Sie die entsprechende Nummer ein.
            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()') #Geben Sie den Standort an

        try:
            content.append(contentr[0].strip('\'').strip()) #Es ist nicht klug, aber es entspricht dem Fall, in dem mehrere Werte eingegeben werden
            content.append(contentr[1].strip('\'').strip()) #Verwenden wir für oder während!
            content.append(contentr[2].strip('\'').strip())
            content.append(contentr[3].strip('\'').strip())
        except IndexError:
            print(content) #Wenn der Wert nicht mehr eingegeben wird, wird ein Fehler ausgegeben, um auszugeben, welche Art von Tag erfasst wurde.
        return content

class Main():
    def Towerget(self,files,url):
        n = Net()
        r = requests.get(url) #Laden Sie die Seite
        html2 = html.fromstring(r.content) #Analysieren Sie die Seite
        for f in files:
            tag = FLAC(f) #Tags laden
            no = tag['tracknumber'][0].lstrip("0") #Ich habe die 1-stellige Disc-Nummer als 0x eingegeben und sie gemäß Tower Records geformt.
            disc = int(tag['discnumber'][0].lstrip("0")) - 1 #Die Zahl, die die Disc darstellt, beginnt bei 0, passen Sie sie also an.
            print(no)
            tag['word'] = n.Tower(no, html2, disc, item="W") #Songwriting-Tag-Eingabe
            tag['composer'] = n.Tower(no, html2, disc, item='C') #Eingabe des Kompositions-Tags
            tag['arranger'] = n.Tower(no, html2, disc, item="A") #Eingabe des Arrangement-Tags
            tag.pprint() 
            tag.save() #Tag speichern

os.chdir("E:\music\Unorganisiert\Schlagen Gefängnis Tor Club-15 Gefängnisse") #Der Dateipfad der zu markierenden Datei
files0 = os.listdir(os.getcwd()) #Holen Sie sich eine Liste der Ordner
files = list()

for f in files0: #Da dieselbe Datei Google Drive-Verwaltungsdateien, Jackenfotos usw. enthält, nehmen Sie nur flac heraus
    if f.endswith(".flac"):
        files.append(f)
        print(f)
    else:
        print("not "+f)

m = Main()
url = "https://tower.jp/item/4936516/15 Gefängnisse" #Die URL der Tower Records-Seite
m.Towerget(files, url)

Es ist kein sehr sauberer Code, aber Sie können ihn vorerst bekommen.

Verbesserungspunkte

・ Songs wie Ouvertüre, die kein Lied und keinen Text haben, sind nicht synchron. ・ Tower Records haben die Vereinbarung möglicherweise nicht eingegeben. ・ Ich möchte die URL der Tower Records-Seite automatisch abrufen (dies scheint schwierig zu sein).

Recommended Posts

Abrufen von Informationen zu Songwriting, Komposition und Arrangement von der Tower Records-Website mit Python
Sammeln von Informationen von Twitter mit Python (Integration von MySQL und Python)
Betreiben Sie Firefox mit Selen aus Python und speichern Sie die Bildschirmaufnahme
Sammeln von Informationen von Twitter mit Python (Twitter API)
Scraping von einer authentifizierten Site mit Python
Erstellen Sie mit Python einen Entscheidungsbaum von 0 und verstehen Sie ihn (5. Information Entropy)
Visualisieren Sie Informationen zum Beschleunigungssensor von der Mikrocomputerplatine in Echtzeit mit mbed + Python
Deep Learning von Grund auf neu Die Theorie und Implementierung des mit Python erlernten Deep Learning Kapitel 3
Sammeln von Informationen von Twitter mit Python (Umgebungskonstruktion)
[Hinweis] Exportieren Sie das HTML der Site mit Python.
Lösen des Lorenz 96-Modells mit Julia und Python
Archivieren und komprimieren Sie das gesamte Verzeichnis mit Python
Informationen zum Standort (Breiten- und Längengrad) erhalten Sie von der Adresse. Geocode in Python ~ Geocoder und Pydams ~
Extrahieren Sie Bilder und Tabellen mit Python aus PDF, um die Berichtslast zu verringern
Massen-Download-Bilder von einer bestimmten Site-URL mit Python
Lerne Nim mit Python (ab Anfang des Jahres).
Sammeln von Informationen von Twitter mit Python (morphologische Analyse mit MeCab)
Visualisieren Sie den Bereich der internen und externen Einfügungen mit Python
Informationen zur Steuerung von Motoren mit Python auf RaspberryPi
Installieren Sie die neueste stabile Version von Python mit pyenv (sowohl 2 als auch 3).
Erhalten Sie E-Mails von Google Mail und beschriften Sie sie mit Python3
Installieren Sie das neueste Python von pyenv, das von Homebrew installiert wurde
[Python] Mit der API von Qiita erhalten Sie Benutzer- und Artikelinformationen
Setzen Sie Ubuntu in Raspi ein, setzen Sie Docker darauf und steuern Sie GPIO mit Python aus dem Container
Versuchen Sie, mit Python schnell und einfach auf die Twitter-API zuzugreifen
Ich habe versucht, die Python-Bibliothek von Ruby mit PyCall zu verwenden
[Python] Lesen Sie die CSV-Datei und zeigen Sie die Abbildung mit matplotlib an
Löse das Spiralbuch (Algorithmus und Datenstruktur) mit Python!
Optimieren Sie das Sammeln von Informationen mit Twitter API und Slack Bots
[Python] Ich habe das Spiel von pip installiert und versucht zu spielen
Hasch mit Python und entkomme dem Ego eines bestimmten Ministers
[Python x Zapier] Erhalten Sie Warninformationen und benachrichtigen Sie mit Slack
Spielen Sie mit dem Passwortmechanismus von GitHub Webhook und Python
Site-Überwachung und Alarmbenachrichtigung mit AWS Lambda + Python + Slack