PageRenderTime 49ms CodeModel.GetById 20ms RepoModel.GetById 1ms app.codeStats 0ms

/share/spice/forvo/spice.js

https://github.com/aembleton/zeroclickinfo-spice
JavaScript | 123 lines | 93 code | 30 blank | 0 comment | 19 complexity | 9ed6795ffee8f4bae7219a7c9718a732 MD5 | raw file
  1. nrj("/forvo/jquery.min.js", true);
  2. nrj("/forvo/mediaelement-and-player.min.js", true);
  3. nrj("/forvo/init.js", true);
  4. function ddg_spice_forvo(data) {
  5. if (data.attributes.total != "0") {
  6. var words = data.items;
  7. var wrap = d.createElement("div");
  8. out = '';
  9. for (var i = 0; i < 3 && i < words.length; i++){
  10. var word = words[i];
  11. var container = d.createElement("div");
  12. YAHOO.util.Dom.addClass(container, 'forvo_container');
  13. var audio = d.createElement("audio");
  14. YAHOO.util.Dom.setAttribute(audio, 'preload', "none");
  15. var mp3_source = d.createElement("source");
  16. mp3_source.src = word.standard_pronunciation.pathmp3 + ".mp3";
  17. mp3_source.type = "audio/mp3";
  18. var ogg_source = d.createElement("source");
  19. ogg_source.src = word.standard_pronunciation.pathogg + ".ogg";
  20. ogg_source.type = "audio/ogg";
  21. audio.appendChild(mp3_source);
  22. audio.appendChild(ogg_source);
  23. var details_span = d.createElement("span");
  24. details_span.innerHTML = word.original;
  25. var details = d.createElement("div");
  26. YAHOO.util.Dom.addClass(details, 'forvo_track_details');
  27. details.appendChild(details_span);
  28. container.appendChild(audio);
  29. container.appendChild(details);
  30. wrap.appendChild(container);
  31. }
  32. out += wrap.innerHTML;
  33. var query = DDG.get_query();
  34. var replace = ["how to say", "how do you pronounce", "how do you say", "pronounciation of", "how to pronounce", "pronunciation", "pronounce", "forvo"];
  35. for (i in replace){
  36. var phrase = replace[i];
  37. if (query.indexOf(phrase) != -1) {
  38. query = query.replace(phrase, '');
  39. }
  40. }
  41. query = query.trim();
  42. items = new Array();
  43. items[0] = new Array();
  44. items[0]['a'] = out;
  45. items[0]['h'] = 'Pronunciations by Forvo';
  46. items[0]['s'] = 'Forvo';
  47. items[0]['u'] = 'http://www.forvo.com/search/' + encodeURIComponent(query);
  48. items[0]['force_no_fold'] = 1;
  49. items[0]['force_big_header'] = 1;
  50. nra(items, 1, 1);
  51. } else {
  52. var query = '';
  53. var replace_words = ["forvo", "pronounce", "in","how", "to", "abkhazian", "adygean", "afar", "afrikaans", "akan", "albanian", "amharic", "ancient greek", "arabic", "aragonese", "arb&#235;resh", "armenian", "assamese", "assyrian neo-aramaic", "asturian", "avaric", "aymara", "azerbaijani", "balochi", "bambara", "bardi", "bashkir", "basque", "bavarian", "belarusian", "bengali", "bihari", "bislama", "bosnian", "botlikh", "breton", "bulgarian", "buriat", "burmese", "burushaski", "cantonese", "cape verdean creole", "catalan", "cebuano", "central bikolano", "chamorro", "chechen", "cherokee", "chichewa", "chuvash", "cornish", "corsican", "cree", "creek", "crimean tatar", "croatian", "czech", "dagbani", "danish", "dari", "divehi", "dutch", "dzongkha", "emilian", "english", "erzya", "esperanto", "estonian", "eton", "ewe", "ewondo", "faroese", "fijian", "finnish", "flemish", "franco-proven&#231;al", "french", "friulan", "fulah", "galician", "gan chinese", "georgian", "german", "gilaki", "greek", "guarani", "gujarati", "haitian", "hakka", "hassaniyya", "hausa", "hawaiian", "hebrew", "herero", "hiligaynon", "hindi", "hiri motu", "hmong", "hungarian", "icelandic", "igbo", "iloko", "indonesian", "ingush", "interlingua", "inuktitut", "inupiaq", "irish", "italian", "iwaidja", "jamaican patois", "japanese", "javanese", "jin chinese", "kabardian", "kabyle", "kalaallisut", "kalmyk", "kannada", "kanuri", "karakalpak", "kashmiri", "kazakh", "khasi", "khmer", "kikuyu", "kimbundu", "kinyarwanda", "kirundi", "klingon", "komi", "kongo", "konkani", "korean", "kotava", "krio", "kuanyama", "kurdish", "kutchi", "kyrgyz", "lakota", "lao", "latin", "latvian", "lezgian", "ligurian", "limburgish", "lingala", "lithuanian", "lombard", "low german", "lozi", "luba-katanga", "luganda", "luo", "lushootseed", "luxembourgish", "macedonian", "mainfr&#228;nkisch", "malagasy", "malay", "malayalam", "maltese", "mandarin chinese", "manx", "m&#257;ori", "mapudungun", "marathi", "marshallese", "masbate&#241;o", "mauritian creole", "mazandarani", "mbe", "meitei", "micmac", "min dong", "min nan", "minangkabau", "mohawk", "moksha", "mongolian", "nahuatl", "nauru", "navajo", "naxi", "ndonga", "neapolitan", "nepal bhasa", "nepali", "nogai", "north ndebele", "northern sami", "norwegian bokm&#229;l", "norwegian nynorsk", "nuosu", "n&#448;uu", "occitan", "ojibwa", "okinawan", "oriya", "oromo", "osage", "ossetian", "ottoman turkish", "palauan", "palenquero", "pangasinan", "panjabi", "papiamento", "pashto", "pennsylvania dutch", "persian", "picard", "piedmontese", "pitjantjatjara", "polish", "portuguese", "pulaar", "quechua", "quiatoni zapotec", "rapa nui", "romagnol", "romani", "romanian", "romansh", "rukiga", "russian", "rusyn", "samoan", "sango", "sanskrit", "sardinian", "scots", "scottish gaelic", "serbian", "serer", "shona", "shoshoni", "sicilian", "silesian", "sindhi", "sinhalese", "slovak", "slovenian", "somali", "sotho", "south ndebele", "spanish", "sranan tongo", "sundanese", "swabian german", "swahili", "swati", "swedish", "swiss german", "sylheti", "tagalog", "tahitian", "tajik", "tamil", "tatar", "telugu", "tetum", "thai", "tibetan", "tigrinya", "tok pisin", "toki pona", "tondano", "tonga", "tsonga", "tswana", "tuareg", "tundra nenets", "turkish", "turkmen", "tuscarora", "tuvan", "twi", "udmurt", "uighur", "ukrainian", "upper sorbian", "urdu", "uzbek", "valencian", "venda", "venetian", "vietnamese", "v&#245;ro", "walloon", "welsh", "western frisian", "wolof", "wu chinese", "xhosa", "xiang chinese", "yakut", "yiddish", "yoruba", "yucatec maya", "yupik", "zazaki", "zhuang", "zulu"];
  54. var query_array = DDG.get_query().split(" ");
  55. for (var i=0; i < query_array.length; i++){
  56. if (replace_words.indexOf(query_array[i]) === -1) {
  57. if (query === ''){
  58. query += query_array[i]
  59. } else {
  60. query += " " + query_array[i];
  61. }
  62. }
  63. }
  64. nrj("http://api.duckduckgo.com/?q=spell%20" + encodeURIComponent(query) + "&format=json&pretty=1&callback=handle_ddg_api");
  65. }
  66. }
  67. function handle_ddg_api(data){
  68. if (data.AnswerType === "spell" && data.Answer && data.Answer.indexOf("right") === -1 && data.Answer.indexOf("No suggestions") === -1){
  69. var array = data.Answer.replace(/,/g, "").split("</i>");
  70. var suggestions = array[1].split(" ");
  71. var snippet = d.createElement("div");
  72. snippet.innerHTML = "Sorry, there were no pronunciations for your search. Did you mean to search for one of these?<br>";
  73. var span = d.createElement("span");
  74. for (var i=0; i < suggestions.length; i++){
  75. var anchor = d.createElement("a");
  76. anchor.innerHTML = suggestions[i];
  77. anchor.href += "/?q=pronounce%20" + suggestions[i];
  78. span.appendChild(anchor);
  79. if (i+1 != suggestions.length) {
  80. span.innerHTML += ", ";
  81. }
  82. }
  83. snippet.appendChild(span);
  84. items = new Array();
  85. items[0] = new Array();
  86. items[0]['a'] = snippet.innerHTML;
  87. items[0]['h'] = 'Forvo Disambiguations';
  88. items[0]['s'] = 'Forvo';
  89. items[0]['u'] = 'http://www.forvo.com/search/' + suggestions[0];
  90. items[0]['force_big_header'] = 1;
  91. nra(items, 0, 1);
  92. }
  93. }