-
Notifications
You must be signed in to change notification settings - Fork 60
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Forvo #28
Comments
Short answer: no. On the other hand, i think giving another developer a hand is something else than encouraging end users to get a Forvo key. So, just look around at the branches of this repo. Or more specific, at the downloaders directory. |
Thank you. |
Looks like Forvo changed their policies. There is now a buck/month plan. They still say not encourage customers to get keys”, but when they *pay for the key, that doesn’t make too much sense. |
Looks like you copied a saved web page to And where is “here”? There is no link in your comment. You should copy back the old |
Ah OK, thanks I just copied and pasted the text into the file and it works great now. |
Is there still no interest on the forvo downloader? I am willing to pay the $1 month for the convenience and I am sure other users would be. Perhaps there could be a dialog where the user can input his or her API key and thus enable the forvo feature. If there is interest on this, I might be able to write it myself and submit a PR. Great job with the downloader!!! I use it almost everyday and it is an essential part of my Anki work-flow. |
The Forvo web page still says "You can't (…) encourage end users to get their own API keys. This is forbidden.”, so i will not encourage end users to get their own API keys. |
Ah I see, that is such a bizarre policy... Yet they ask for donations on their main website, as if it were a non-profit project. Thank you for your reply! |
I'd just like to point out that the $1/mo plan now literally mentions Anki now, as a motivation to purchase the plan. IMHO, that's tacit endorsement of DA. Maybe e-mail them and double-check? But it sounds to me like this needs to be re-enabled! |
No, their terms of use are largely unchanged, still contain
|
As this is free software, other people can do that, and risk the legal trouble, if they want to. |
I just wanted to point out a rudimentary hack for anyone interested in this issue that enables access to the Forvo mp3 files by circumventing the official API entirely and no sign-up is required. I modified the original ...
import re
import base64
from ..download_entry import DownloadEntry
from .downloader import AudioDownloader
class ForvoDownloader(AudioDownloader):
"""Download pronunciations from Forvo via accessing the website instead of their API."""
def __init__(self):
AudioDownloader.__init__(self)
self.file_extension = u'.mp3'
self.icon_url = 'http://www.forvo.com/'
self.field_data = None
def download_files(self, field_data):
"""
Get pronunciations of a word from Forvo
"""
self.downloads_list = []
self.field_data = field_data
if field_data.split:
return
if not field_data.word:
return
self.maybe_get_icon()
assert (self.language)
webPageUrl = "https://forvo.com/word/%s/#%s" % (self.field_data.word, self.language)
webPageText = self.get_data_from_url(webPageUrl)
PageTextList = re.findall("<em id=\"%s.*?</article>" % self.language, webPageText, re.DOTALL)
if len(PageTextList) == 0:
return '{"status":"error"}'
PageText = PageTextList[0]
pronunciations = re.findall("Play\(\d+,'(.*?)'", PageText)
for l in range(len(pronunciations)):
pronunciations[l] = "https://forvo.com/mp3/" + base64.b64decode(pronunciations[l]).decode()
self.get_items(pronunciations)
def get_items(self, items_list):
for itm in items_list:
extras = dict(Source='Forvo.com')
if self.language:
extras['Language'] = self.language
try:
file_path = self.get_tempfile_from_url(itm)
# I guess the try is not really necessary. Anyway.
except (ValueError, KeyError):
continue
entry = DownloadEntry(
self.field_data, file_path, extras, self.site_icon)
entry.file_extension = self.file_extension
self.downloads_list.append(entry) You also need to register this class in the ...
from .forvo_free import ForvoDownloader
downloaders = [
...
ForvoDownloader(),
] |
OK, nice. Also:
|
Would you like me to create a pull request with points 1.-3. fixed? I wasn't sure if you were interested so I didn't invest the time yet. Re: 3. I thought the plugin is Anki 2.0 only? |
3: Yes. When i have come around to updating this add-on to 2.1, then i’ll have another look at this and i may – or may not – do Forvo this way. |
3: Yes. When i have come around to updating this add-on to 2.1, then i’ll have another look at this and i may – or may not – do Forvo this way. See also https://ospalh.github.io/anki-addons/2017/10/26/Anki_21.html |
Do you not support forvo.com?
The text was updated successfully, but these errors were encountered: