1/** 2 * ì¤ë¨¸(Omer) - ë¤ì´ë믹 ë¥ë§í¬ ì ëë ì´í° 3 * ì¶ì² ì리 â ì¸ë¶ ë ìí¼ íë«í¼ì¼ë¡ ì¦ì ì´ë 4 */ 5 6const DeepLinker = { 7 /** YouTube ê²ì */ 8 youtube(searchKeywords) { 9 return `https://www.youtube.com/results?search_query=${encodeURIComponent(searchKeywords)}`; 10 }, 11 12 /** êµ¬ê¸ ê²ì */ 13 google(searchKeywords) { 14 return `https://www.google.com/search?q=${encodeURIComponent(searchKeywords)}`; 15 }, 16 17 /** ë§ê°ì ë ìí¼ ê²ì */ 18 tenThousandRecipe(dishName) { 19 return `https://www.10000recipe.com/recipe/list.html?q=${encodeURIComponent(dishName)}`; 20 }, 21 22 /** ë¤ì´ë² ë¸ë¡ê·¸ ê²ì */ 23 naverBlog(searchKeywords) { 24 return `https://search.naver.com/search.naver?where=post&query=${encodeURIComponent(searchKeywords)}`; 25 }, 26 27 /** ì¿¡í¨ë Cookpad (ì¼ì´) */ 28 cookpad(dishName) { 29 return `https://cookpad.com/search/${encodeURIComponent(dishName)}`; 30 }, 31 32 /** ìì´ì¿¡ iCook (ëë§ì´) */ 33 icook(dishName) { 34 return `https://icook.tw/search/${encodeURIComponent(dishName)}`; 35 }, 36 37 /** í ì´ì¤í° Tasty (ìì´) */ 38 tasty(dishName) { 39 return `https://tasty.co/search?q=${encodeURIComponent(dishName)}`; 40 }, 41 42 /** ë§í¬ ë²í¼ HTML ìì± (ì¸ì´ ì¤ì 기ë°) */ 43 renderLinks(recipe, lang = 'ko') { 44 const dict = TRANSLATIONS[lang] || TRANSLATIONS['ko']; 45 const translatedName = (dict.items && dict.items[recipe.dish_name]) || recipe.dish_name; 46 47 let linksHtml = ''; 48 49 if (lang === 'ko') { 50 const ytLink = this.youtube(recipe.search_keywords); 51 const ttLink = this.tenThousandRecipe(recipe.dish_name); 52 const nvLink = this.naverBlog(recipe.search_keywords); 53 linksHtml = `
54 <a href="${ytLink}" target="_blank" rel="noopener" class="deep-link deep-link--youtube" title="YouTubeìì ë ìí¼ ë³´ê¸°"> 55 <span class="deep-link__icon">â¶</span> 56 <span class="deep-link__label">YouTube</span> 57 </a> 58 <a href="${ttLink}" target="_blank" rel="noopener" class="deep-link deep-link--10000" title="ë§ê°ì ë ìí¼ìì 보기"> 59 <span class="deep-link__icon">ð</span> 60 <span class="deep-link__label">ë§ê°ìë ìí¼</span> 61 </a> 62 <a href="${nvLink}" target="_blank" rel="noopener" class="deep-link deep-link--naver" title="ë¤ì´ë² ë¸ë¡ê·¸ìì 보기"> 63 <span class="deep-link__icon">ð</span> 64 <span class="deep-link__label">ë¤ì´ë²</span> 65 </a> 66 `; 67 } else if (lang === 'ja') { 68 const ytLink = this.youtube(translatedName + " ã¬ã·ã"); 69 const cpLink = this.cookpad(translatedName); 70 const ggLink = this.google(translatedName + " ã¬ã·ã"); 71 linksHtml = ` 72 <a href="${ytLink}" target="_blank" rel="noopener" class="deep-link deep-link--youtube" title="YouTubeã§ã¬ã·ãæ¤ç´¢"> 73 <span class="deep-link__icon">â¶</span> 74 <span class="deep-link__label">YouTube</span> 75 </a> 76 <a href="${cpLink}" target="_blank" rel="noopener" class="deep-link" style="background: rgba(242,95,92,0.12); color: #f25f5c;" title="Cookpadã§æ¤ç´¢"> 77 <span class="deep-link__icon">ð³</span> 78 <span class="deep-link__label">Cookpad</span> 79 </a> 80 <a href="${ggLink}" target="_blank" rel="noopener" class="deep-link" style="background: rgba(66,133,244,0.12); color: #4285f4;" title="Googleã§æ¤ç´¢"> 81 <span class="deep-link__icon">ð</span> 82 <span class="deep-link__label">Google</span> 83 </a> 84 `; 85 } else if (lang === 'zh') { 86 const ytLink = this.youtube(translatedName + " é£è"); 87 const icLink = this.icook(translatedName); 88 const ggLink = this.google(translatedName + " é£è"); 89 linksHtml = `
90 <a href="${ytLink}" target="_blank" rel="noopener" class="deep-link deep-link--youtube" title="å¨ YouTube æå°é£è"> 91 <span class="deep-link__icon">â¶</span> 92 <span class="deep-link__label">YouTube</span> 93 </a> 94 <a href="${icLink}" target="_blank" rel="noopener" class="deep-link" style="background: rgba(255,159,67,0.12); color: #ff9f43;" title="å¨ ææç æå°"> 95 <span class="deep-link__icon">ð³</span> 96 <span class="deep-link__label">ææç</span> 97 </a> 98 <a href="${ggLink}" target="_blank" rel="noopener" class="deep-link" style="background: rgba(66,133,244,0.12); color: #4285f4;" title="å¨ Google æå°"> 99 <span class="deep-link__icon">ð</span> 100 <span class="deep-link__label">Google</span> 101 </a> 102 `; 103 } else { // en 104 const ytLink = this.youtube(translatedName + " recipe"); 105 const tsLink = this.tasty(translatedName); 106 const ggLink = this.google(translatedName + " recipe"); 107 linksHtml = `
108 <a href="${ytLink}" target="_blank" rel="noopener" class="deep-link deep-link--youtube" title="Search recipe on YouTube"> 109 <span class="deep-link__icon">â¶</span> 110 <span class="deep-link__label">YouTube</span> 111 </a> 112 <a href="${tsLink}" target="_blank" rel="noopener" class="deep-link" style="background: rgba(243,156,18,0.12); color: #f39c12;" title="Search on Tasty"> 113 <span class="deep-link__icon">ð³</span> 114 <span class="deep-link__label">Tasty</span> 115 </a> 116 <a href="${ggLink}" target="_blank" rel="noopener" class="deep-link" style="background: rgba(66,133,244,0.12); color: #4285f4;" title="Search on Google"> 117 <span class="deep-link__icon">ð</span> 118 <span class="deep-link__label">Google</span> 119 </a> 120 `; 121 } 122 123 return `<div class="deep-links">${linksHtml}</div>`; 124 } 125}; 126 127window.DeepLinker = DeepLinker;
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.