[PYTHON] Ich habe versucht, englische Untertitel mit Udemy gewaltsam ins Japanische zu übersetzen

Motivation

** Sehen Sie sich einen Vortrag an, der in Udemy interessant aussieht !! Wow! Es gibt keine japanischen Untertitel ... ** ~~ Weil Englisch lernen mühsam ist ~~ ** Möchten Sie es ins Japanische übersetzen !!! **

Einführung

Ich kann Englisch lesen und schreiben, daher kann ich es nicht lesen. Da es jedoch nicht mit der nativen Geschwindigkeit mithalten kann, muss das Video einzeln angehalten und mit einer Hand des Wörterbuchs übersetzt werden. Ich möchte diese Ineffizienz jedoch nicht tun, da sie problematisch ist. Lassen Sie uns also die aktuellen Untertitel automatisch ins Japanische übersetzen.

Holen Sie sich englische Untertitel

Viele Udemy-Videos haben englische Untertitel. Sie können auf die Schaltfläche unten rechts im Video klicken, um alle Untertitel für dieses Video anzuzeigen. Die Untertitel des Teils, in dem der Kursleiter spricht, werden hellblau hervorgehoben. image.png Mit anderen Worten, wenn Sie diesen hervorgehobenen Untertitel erhalten können, sollten Sie ihn übersetzen können.

Schaben

Als ich im Internet nach "Python Scraping" suchte, stellte ich fest, dass es ein Modul namens Selenium gab, also werde ich es verwenden.

Scraping mit Selen in Python (Basic)

Wenn Sie sich den obigen Artikel ansehen, scheint es, dass Sie das Element nach ID, Klasse, Name erhalten können. Ich bin mir nicht sicher, weil ich nicht viel HTML und CSS gemacht habe. Wenn Sie die ID und Klasse des Untertitels kennen, den Sie vorerst möchten, können Sie ihn anscheinend irgendwie bekommen.

Über die gewünschten Elemente

Ich ging zur entsprechenden Kursseite von Udemy und sah mir die Untertitel an, die in den Entwicklertools hervorgehoben wurden.

** Hervorgehobene Untertitel **

highlight.html


<span data-purpose="cue-text" class="transcript--highlight-cue--1bEgq">Highlight text</span>

** Untertitel ohne Highlights **

nonhighlight.html


<span data-purpose="cue-text" class="">Non highlight text</span>

Als ich es während der Wiedergabe des Videos überprüfte, wechselte das Innere der Klasse zwischen normalen Untertiteln und hervorgehobenen Untertiteln. Anscheinend ist die Klasse des hervorgehobenen Elements "Transkript - Highlight-Cue - 1bEgq".

Quellcode für die Untertitelerfassung

Ich habe die Untertitel mit Selenium tatsächlich mit dem folgenden Code erhalten.

scraping.py


import time
from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException

driver = webdriver.Chrome(driver_path)
driver.get(r'https://www.udemy.com/join/login-popup/?next=/home/my-courses/learning/')
last_text = None

while True:
    try:
        ret = driver.find_element_by_class_name('transcript--highlight-cue--1bEgq')
        #0.Da die Elemente in Intervallen von 2 Sekunden erfasst werden, wird nur gedruckt, wenn sich die Elemente von den zuvor erfassten Elementen unterscheiden.
        if ret.text != last_text:
            last_text = ret.text
            print(last_text)
    except NoSuchElementException:
        #Wenn das Element nicht gefunden wird, tritt eine Ausnahme auf. Drücken Sie es daher nur zu diesem Zeitpunkt
        pass
    except Exception as e:
        #Bei anderen Ausnahmen endet es vorerst
        print(e)
        print('Fertig')
        exit()

    #0.2 Sekunden sind angemessen
    time.sleep(0.2)

Es scheint, dass ich es sicher bekommen konnte, also vorerst als nächstes.

Übersetzung ins Japanische

Apropos Übersetzung, ** Google Lehrer **. Als ich es nachgeschlagen habe, scheint es, dass Google-Übersetzung mit Python möglich ist.

Mit googletrans in Python übersetzen

Ich habe den Quellcode unter Bezugnahme auf den obigen Artikel hinzugefügt.

Endgültiger Quellcode

translate.py


import time
from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException
from googletrans import Translator

driver = webdriver.Chrome(driver_path)
driver.get(r'https://www.udemy.com/join/login-popup/?next=/home/my-courses/learning/')
last_text = None

translator = Translator()

while True:
    try:
        ret = driver.find_element_by_class_name('transcript--highlight-cue--1bEgq')
        #0.Da die Elemente in Intervallen von 2 Sekunden erfasst werden, wird nur gedruckt, wenn sich die Elemente von den zuvor erfassten Elementen unterscheiden.
        if ret.text is not None and ret.text != last_text:
            last_text = ret.text
            print(last_text)
            print(translator.translate(last_text, dest='ja').text)
    except NoSuchElementException:
        #Wenn das Element nicht gefunden wird, tritt eine Ausnahme auf. Drücken Sie es daher nur zu diesem Zeitpunkt
        pass
    except Exception as e:
        #Bei anderen Ausnahmen endet es vorerst
        print(e)
        print('Fertig')
        exit()

    #0.2 Sekunden sind angemessen
    time.sleep(0.2)

Schließlich

Vorläufig konnte ich es in Echtzeit ins Japanische übersetzen, also ** Yoshi! ** Sie müssen sich jedes Mal anmelden, wenn Sie das Skript ausführen. Manchmal endet es mit einer mysteriösen Ausnahme, und die Japaner sind aufgrund der falschen englischen Untertitel in erster Linie durcheinander, aber es ist weniger stressig als das Übersetzen mit einer Hand des Wörterbuchs Ich kann es tun, also werde ich es weiter benutzen.

Recommended Posts

Ich habe versucht, englische Untertitel mit Udemy gewaltsam ins Japanische zu übersetzen
Ich habe verschiedene Methoden ausprobiert, um japanische Post mit Python zu senden
Ich habe versucht, Autoencoder mit TensorFlow zu implementieren
Ich habe versucht, AutoEncoder mit TensorFlow zu visualisieren
Ich habe versucht, mit Hy anzufangen
Ich habe versucht, nächstes Jahr mit AI vorherzusagen
Ich habe versucht, das Lesen von Dataset mit PyTorch zu implementieren
Ich habe versucht, lightGBM, xg Boost mit Boruta zu verwenden
Ich habe versucht, mit TF Learn die logische Operation zu lernen
Ich habe versucht, GAN (mnist) mit Keras zu bewegen
Ich habe versucht, die Daten mit Zwietracht zu speichern
Ich habe versucht, mit OpenCV Bewegungen schnell zu erkennen
Ich habe versucht, Keras in TFv1.1 zu integrieren
[Python] Memo zur Übersetzung von Matplotlib ins Japanische [Windows]
Ich habe versucht, LLVM IR mit Python auszugeben
Ich habe versucht, ein Objekt mit M2Det zu erkennen!
Ich habe versucht, die Herstellung von Sushi mit Python zu automatisieren
Ich habe versucht, Linux mit Discord Bot zu betreiben
Ich habe versucht, DP mit Fibonacci-Sequenz zu studieren
Ich habe versucht, Jupyter mit allen Amazon-Lichtern zu starten
Ich habe versucht, Tundele mit Naive Bays zu beurteilen
Ich habe versucht zu debuggen.
Ich habe versucht, die Sündenfunktion mit Chainer zu trainieren
Ich habe versucht, Funktionen mit SIFT von OpenCV zu extrahieren
Ich habe versucht, Faster R-CNN mit Pytorch auszuführen
Ich habe versucht, mit VOICEROID2 2 automatisch zu lesen und zu speichern
Ich habe versucht, DCGAN mit PyTorch zu implementieren und zu lernen
Ich habe versucht, Mine Sweeper auf dem Terminal mit Python zu implementieren
Ich habe versucht, mit Blenders Python script_Part 01 zu beginnen
Ich habe versucht, eine CSV-Datei mit Python zu berühren
Ich habe versucht, Soma Cube mit Python zu lösen
Ich habe versucht, mit VOICEROID2 automatisch zu lesen und zu speichern
Ich habe versucht, mit Blenders Python script_Part 02 zu beginnen
Ich habe versucht, ObjectId (Primärschlüssel) mit Pymongo zu generieren
Ich habe versucht, künstliches Perzeptron mit Python zu implementieren
Ich habe versucht, eine ML-Pipeline mit Cloud Composer zu erstellen
Ich habe versucht, unsere Dunkelheit mit der Chatwork-API aufzudecken
Ich habe versucht, Pytest in die eigentliche Schlacht zu bringen
[Einführung in Pytorch] Ich habe versucht, Cifar10 mit VGG16 ♬ zu kategorisieren
Ich habe versucht, das Problem mit Python Vol.1 zu lösen
Ich habe versucht, Grad-CAM mit Keras und Tensorflow zu implementieren
Ich habe versucht, Mask R-CNN mit Optical Flow zu interpolieren
Übersetzen Sie DeepL automatisch mit Python und Selen ins Englische
Ich habe versucht, die Bayes'sche Optimierung zu durchlaufen. (Mit Beispielen)
Ich habe versucht, die alternative Klasse mit Tensorflow zu finden
[Einführung in AWS] Ich habe versucht, mit der Sprach-Text-Konvertierung zu spielen ♪
Ich habe versucht, AOJs Integer-Theorie mit Python zu lösen
Ich habe versucht, mit Quantx eine Linie mit gleitendem Durchschnitt des Volumens zu implementieren
Ich habe versucht, Überlebende der Titanic mit Kaggle vorherzusagen und einzureichen
Ich habe versucht, die Entropie des Bildes mit Python zu finden
Ich habe fp-Wachstum mit Python versucht
Ich habe versucht, mit Python zu kratzen
Ich habe versucht zu simulieren, wie sich die Infektion mit Python ausbreitet
Ich habe versucht, die Emotionen des gesamten Romans "Wetterkind" zu analysieren