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.
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.
・ 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