mouuff / mtranslate

A simple api for google translate
MIT License
286 stars 83 forks source link

Gives me an error after 266 translations #9

Closed eoehri closed 3 years ago

eoehri commented 7 years ago

After 266 translation calls (in a for-loop) I get always the following error (it's always exactly 266). Do you know why?

Traceback (most recent call last):
  File "/Users/username/PycharmProjects/Translation/GoogleTranslator.py", line 52, in <module>
    review_trans = translate(review, 'en')
  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/mtranslate/core.py", line 70, in translate
    page = urllib.request.urlopen(request).read().decode("utf-8")
  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/urllib/request.py", line 163, in urlopen
    return opener.open(url, data, timeout)
  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/urllib/request.py", line 472, in open
    response = meth(req, response)
  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/urllib/request.py", line 582, in http_response
    'http', request, response, code, msg, hdrs)
  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/urllib/request.py", line 510, in error
    return self._call_chain(*args)
  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/urllib/request.py", line 444, in _call_chain
    result = func(*args)
  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/urllib/request.py", line 590, in http_error_default
    raise HTTPError(req.full_url, code, msg, hdrs, fp)
urllib.error.HTTPError: HTTP Error 400: Bad Request
mouuff commented 7 years ago

I can't debug with only the error traceback, I need the exact request you have made,

eoehri commented 7 years ago

I get the date from a sql table, translate the strings in "topic" and "review" and store it back in a new table. After exactly 266 calls of translate() I keep getting the traceback error. Thanks for your help!

for (topic, review) in DBcursor:

     topic_trans = translate(topic, 'en')
     review_trans = translate(review, 'en')

     add_translation = ("INSERT INTO table_de_en(topic, review)"
                             "VALUES (%s, %s)")
     translation_data = (topic_trans, review_trans)
     DBcursor2.execute(add_translation, translation_data)
     database.commit()     
mouuff commented 7 years ago

I need the request, I can't debug with that print "topic" and "review" before it crash

eoehri commented 7 years ago

topic:

Spotify vs Apple Music

review:

Mal ein kurzer Vergleich der beiden Streaming-Anbieter, ich habe für beide ein Abo. Grundsätzlich sind beide Services aus meiner Sicht sehr gut und die Unterschiede sind finde ich nicht groß.

Pro & Contra

Apple Music:

  • Exklusive Vorab-Releases (z.B. Drake, Travis Scott)
  • Schnellerer Zugriff auf zuletzt hinzugefügte Alben
  • Bessere Einbettung in iOS
  • Alte Musiksammlung und Songs aus Apple Music in einer App
  • Sehr seltsames Warteschlangen-System (Wenn man Lieder aus einem Album abspielt, und dann ein Lied zu "Später wiedergeben" hinzufügt, wird es erst nach Durchlauf des Albums abgespielt anstatt nach der selbst gemachten Warteschlange)
  • Komplettes Durcheinander-Würfeln meiner ursprünglichen Musiksammlung durch die Synchronisierung mit Apple Music (nur beim Aktivieren von Apple Music): falsche Album-Cover, viele Lieder als "nicht verfügbar" angezeigt, meine ganze Mediathek war nicht mehr offline verfügbar. Musste ich mühsam beheben.
  • Keine Unterscheidung von Singles und Alben auf den Künstlerseiten. Kann ich nicht nachvollziehen und macht die Künstlerseiten finde ich viel unübersichtlicher.
  • fragwürdiges Design (v.a. die übergroße Schrift)

Spotify:

  • Sehr nice öffentliche Playlists für fast jeden Anlass und/oder Genre!
  • Insgesamt sehr schön designed, logischer und einfacher Aufbau der App, kaum Bugs
  • Übersichtlichere Künstlerseiten
  • Unnötige Funktionen: Dein Mix der Woche, Dein Mixtape, Podcasts
  • Keine Unterscheidung von Mixtapes und Alben auf den Künstlerseiten
  • Wenn man offline ist, werden viele Albumcover nicht im Sperrbildschirm angezeigt. Kann ich gar nicht nachvollziehen, so viel Speicher verbrauchen die jetzt auch nicht.

Insgesamt kann ich beide Musik-Streaming-Dienste sehr empfehlen. Wer seine bisherige Musiksammlung in einer App zusammen mit den Musik-Streaming-Downloads haben will, der sollte Apple Music benutzen. Es erfordert wie gesagt jedoch einiges an Aufwand, nach der Aktivierung von Apple Musik alles wieder in Ordnung zu bringen. Wer kein Problem mit einer separaten App hat, kann mit Spotify eigentlich nichts falsch machen.

The bullets are either "+" or "-", but got converted here.

mouuff commented 7 years ago

I believe the request is too long, it works while splitting your request, I m looking into it

mouuff commented 7 years ago

I think the best way is to limit the request size for now, I wont split the requests in the module, it will cause translation errors.

The way to fix that is too change the request method, from GET to POST, I can't do that for now,

varunbalupuri commented 6 years ago

The way to fix that is too change the request method, from GET to POST, I can't do that for now

Is this confirmed? At around >8000 characters with a GET or a POST request it returns HTTP error 413. Perhaps this is no longer the case now.

mouuff commented 6 years ago

yes this is still a problem, and yes the problem is caused by a payload too large

varunbalupuri commented 6 years ago

OP is getting 400 error, not 413, and my how do you know that changing to POST increasese this character limit? My tests indicate otherwise.

mouuff commented 6 years ago

I haven't tried but that should do it. here is why: in POST the data is stored in the body in GET the data is stored in the url (which causes the limitation I believe) https://www.w3schools.com/tags/ref_httpmethods.asp