PageSourceSearch

https://omer-e8x.pages.dev/js/deeplinker.js

js omer-e8x.pages.dev collected 2026-10-03 05:28:03 UTC 5,750 bytes, 127 lines download raw bytes

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.