benjamin5607 commited on
Commit
c7eeef5
ยท
verified ยท
1 Parent(s): 6ec11a5

Update places.json

Browse files
Files changed (1) hide show
  1. places.json +596 -34
places.json CHANGED
@@ -1,34 +1,596 @@
1
- [
2
- {
3
- "name": "Jameson Distillery Bow St.",
4
- "category": "distillery",
5
- "lat": 53.3484,
6
- "lng": -6.2773,
7
- "desc": "1780๋…„๋ถ€ํ„ฐ ์ด์–ด์ง„ ์ œ์ž„์Šจ์˜ ๋ณธ๊ฐ€. ๋‹ค์–‘ํ•œ ์ฒดํ—˜ ํ”„๋กœ๊ทธ๋žจ ์šด์˜.",
8
- "must_buy": "Jameson 18 Years Bow St. Edition (๋ฉด์„ธ์ ์—” ์—†์Œ!)"
9
- },
10
- {
11
- "name": "The Temple Bar",
12
- "category": "pub",
13
- "lat": 53.3454,
14
- "lng": -6.2641,
15
- "desc": "๋”๋ธ”๋ฆฐ์˜ ์•„์ด์ฝ˜. ๊ด€๊ด‘๊ฐ์ด ๋งŽ์ง€๋งŒ ๊ธฐ๋„ค์Šค ๋ง›์€ ํ™•์‹คํ•จ.",
16
- "must_buy": "Fresh Guinness Pint (๊ธฐ๋…ํ’ˆ ์ปต ๊ตฌ๋งค ๊ฐ€๋Šฅ)"
17
- },
18
- {
19
- "name": "London City Distillery",
20
- "category": "distillery",
21
- "lat": 51.5199,
22
- "lng": -0.0939,
23
- "desc": "๋Ÿฐ๋˜ ์‹œํ‹ฐ ๋‚ด ์œ ์ผํ•œ ์ง„(Gin) ์ฆ๋ฅ˜์†Œ.",
24
- "must_buy": "City of London Authentic Dry Gin"
25
- },
26
- {
27
- "name": "์ „ํ†ต์ฃผ ๊ฐค๋Ÿฌ๋ฆฌ (The Sool Gallery)",
28
- "category": "museum",
29
- "lat": 37.5802,
30
- "lng": 126.9845,
31
- "desc": "์„œ์šธ ๋ถ์ดŒ. ๋Œ€ํ•œ๋ฏผ๊ตญ ์‹ํ’ˆ๋ช…์ธ์ด ๋งŒ๋“  ์ „ํ†ต์ฃผ ์‹œ์Œ ๋ฐ ๊ตฌ๋งค.",
32
- "must_buy": "๋งค๋‹ฌ ๋ณ€๊ฒฝ๋˜๋Š” '์ด๋‹ฌ์˜ ์‹œ์Œ์ฃผ' ํ•œ์ • ํŒจํ‚ค์ง€"
33
- }
34
- ]
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "South Korea ๐Ÿ‡ฐ๐Ÿ‡ท": [
3
+ {"name": "Zest", "category": "Bar", "label": "๐Ÿธ Asia's Best", "lat": 37.526, "lon": 127.040, "desc_ko": "์•„์‹œ์•„ ๋ฒ ์ŠคํŠธ ๋ฐ” 2์œ„, ์ œ๋กœ์›จ์ด์ŠคํŠธ ์ง„ํ† ๋‹‰ ์„ฑ์ง€", "desc_en": "Asia's leading zero-waste bar."},
4
+ {"name": "Bar Cham", "category": "Bar", "label": "๐Ÿธ Hanok Bar", "lat": 37.578, "lon": 126.970, "desc_ko": "์„œ์ดŒ ํ•œ์˜ฅ์—์„œ ์ฆ๊ธฐ๋Š” ๋…์ฐฝ์ ์ธ ์ „ํ†ต์ฃผ ์นตํ…Œ์ผ", "desc_en": "Cocktails with Korean spirits in a Hanok."},
5
+ {"name": "Charles H.", "category": "Bar", "label": "๐Ÿธ Speakeasy", "lat": 37.570, "lon": 126.975, "desc_ko": "๊ด‘ํ™”๋ฌธ ํฌ์‹œ์ฆŒ์Šค ์ง€ํ•˜์˜ ์ „์„ค์ ์ธ ์Šคํ”ผํฌ์ด์ง€ ๋ฐ”", "desc_en": "Legendary speakeasy at Four Seasons."},
6
+ {"name": "Le Chamber", "category": "Bar", "label": "๐Ÿธ Secret", "lat": 37.524, "lon": 127.041, "desc_ko": "์ฑ…์žฅ์„ ๋ฐ€๊ณ  ๋“ค์–ด๊ฐ€๋Š” ์ฒญ๋‹ด๋™ ์Šคํ”ผํฌ์ด์ง€", "desc_en": "Hidden bar behind a bookshelf."},
7
+ {"name": "Pine & Co.", "category": "Bar", "label": "๐Ÿธ Trendy", "lat": 37.523, "lon": 127.028, "desc_ko": "์••๊ตฌ์ •์˜ ํž™ํ•œ ๋ชจ๋˜ ๋ฐ”, ํ•œ๊ตญ ์‹์žฌ๋ฃŒ ์žฌํ•ด์„", "desc_en": "Modern bar reinterpreting Korean ingredients."},
8
+ {"name": "Mr. Ahn's Craft Makgeolli", "category": "Bar", "label": "๐Ÿถ Michelin Pub", "lat": 37.540, "lon": 126.987, "desc_ko": "๋ฏธ์А๋žญ ๊ฐ€์ด๋“œ ๋“ฑ์žฌ, ์ „ํ†ต์ฃผ ๊ฐ€์ŠคํŠธ๋กœ ํŽ", "desc_en": "Michelin-recognized Korean gastropub."},
9
+ {"name": "Alice Cheongdam", "category": "Bar", "label": "๐Ÿธ Concept", "lat": 37.525, "lon": 127.041, "desc_ko": "์ด์ƒํ•œ ๋‚˜๋ผ์˜ ์•จ๋ฆฌ์Šค ์ปจ์…‰์˜ ํ™˜์ƒ์ ์ธ ๋ฐ”", "desc_en": "Alice in Wonderland themed bar."},
10
+ {"name": "Hwayo Distillery", "category": "Spirits", "label": "๐Ÿญ Premium Soju", "lat": 37.294, "lon": 127.632, "desc_ko": "ํ•œ๊ตญ ํ”„๋ฆฌ๋ฏธ์—„ ์†Œ์ฃผ 'ํ™”์š”'์˜ ๋ณธ์‚ฐ", "desc_en": "Home of Hwayo Soju."},
11
+ {"name": "Andong Soju Museum", "category": "Traditional", "label": "๐Ÿถ Heritage", "lat": 36.568, "lon": 128.729, "desc_ko": "700๋…„ ์—ญ์‚ฌ, ๋ช…์ธ ๋ฐ•์žฌ์„œ ์•ˆ๋™์†Œ์ฃผ", "desc_en": "Museum of Andong Soju."},
12
+ {"name": "Sansawon", "category": "Traditional", "label": "๐Ÿ›๏ธ Museum", "lat": 37.899, "lon": 127.279, "desc_ko": "๋А๋ฆฐ๋งˆ์„ ๋ง‰๊ฑธ๋ฆฌ์™€ ์ „ํ†ต์ฃผ ์ •์›(์‚ฐ์‚ฌ์›)", "desc_en": "Traditional liquor museum and brewery park."},
13
+ {"name": "Haechang Brewery", "category": "Traditional", "label": "๐Ÿถ Premium", "lat": 34.428, "lon": 126.588, "desc_ko": "๋ง‰๊ฑธ๋ฆฌ๊ณ„์˜ ๋กค์Šค๋กœ์ด์Šค, ํ•ด๋‚จ ํ•ด์ฐฝ", "desc_en": "The Rolls-Royce of Makgeolli."},
14
+ {"name": "Boksoondoga", "category": "Traditional", "label": "๐Ÿถ Champagne", "lat": 35.539, "lon": 129.106, "desc_ko": "์†์œผ๋กœ ๋นš๋Š” ์ฒœ์—ฐ ํƒ„์‚ฐ ์ƒดํŽ˜์ธ ๋ง‰๊ฑธ๋ฆฌ", "desc_en": "Hand-brewed sparkling Makgeolli."},
15
+ {"name": "Jindo Hongju", "category": "Traditional", "label": "๐Ÿถ Red Spirit", "lat": 34.482, "lon": 126.261, "desc_ko": "์ง€์ดˆ๋กœ ๋ถ‰์€ ๋น›์„ ๋‚ธ ์ง„๋„ ๋ช…์ฃผ", "desc_en": "Traditional red liquor from Jindo."},
16
+ {"name": "Jeonju Igangju", "category": "Traditional", "label": "๐Ÿถ Pear & Ginger", "lat": 35.845, "lon": 127.108, "desc_ko": "๋ฐฐ์™€ ์ƒ๊ฐ•์œผ๋กœ ๋นš์€ ์กฐ์„  3๋Œ€ ๋ช…์ฃผ", "desc_en": "Top 3 liquor of Joseon Dynasty."},
17
+ {"name": "Hansan Sogokju", "category": "Traditional", "label": "๐Ÿถ Rice Wine", "lat": 36.066, "lon": 126.657, "desc_ko": "ํ•œ๋ฒˆ ์•‰์œผ๋ฉด ๋ชป ์ผ์–ด๋‚˜๋Š” ์•‰์€๋ฑ…์ด ์ˆ ", "desc_en": "Sogokju, known as 'cripple wine'."},
18
+ {"name": "Munbaeju", "category": "Traditional", "label": "๐Ÿถ Royal", "lat": 37.457, "lon": 126.677, "desc_ko": "ํ‰์–‘ ์œ ๋ž˜, ๋‚จ๋ถ์ •์ƒํšŒ๋‹ด ๋งŒ์ฐฌ์ฃผ", "desc_en": "Royal spirit from Pyongyang."},
19
+ {"name": "Gamhongro", "category": "Traditional", "label": "๐Ÿถ Herbal", "lat": 37.948, "lon": 126.745, "desc_ko": "๋ณ„์ฃผ๋ถ€์ „์— ๋‚˜์˜ค๋Š” ์ „์„ค์˜ ๋ช…์ฃผ", "desc_en": "Legendary herbal liquor."},
20
+ {"name": "Three Societies", "category": "Whiskey", "label": "๐Ÿญ Single Malt", "lat": 37.625, "lon": 127.189, "desc_ko": "ํ•œ๊ตญ ์ตœ์ดˆ ์‹ฑ๊ธ€๋ชฐํŠธ ์œ„์Šคํ‚ค ์ฆ๋ฅ˜์†Œ '๊ธฐ์›'", "desc_en": "Korea's first single malt distillery."},
21
+ {"name": "Kimchangsoo Whisky", "category": "Whiskey", "label": "๐Ÿญ Craft", "lat": 37.660, "lon": 126.770, "desc_ko": "๊น€์ฐฝ์ˆ˜ ๋ช…์ธ์˜ ํ•œ๊ตญ ์ •ํ†ต ์œ„์Šคํ‚ค", "desc_en": "Authentic whisky made by Kim Chang-soo."},
22
+ {"name": "Jeju Beer Company", "category": "Beer", "label": "๐Ÿบ Craft", "lat": 33.364, "lon": 126.242, "desc_ko": "์ œ์ฃผ ์œ„ํŠธ ์—์ผ์˜ ํƒ„์ƒ์ง€", "desc_en": "Birthplace of Jeju Wit Ale."},
23
+ {"name": "Magpie Brewing", "category": "Beer", "label": "๐Ÿบ Craft", "lat": 33.523, "lon": 126.559, "desc_ko": "์ œ์ฃผ์˜ ํž™ํ•œ ๊ฐ์„ฑ, ๋งฅํŒŒ์ด", "desc_en": "Jeju's hippest craft beer brewery."},
24
+ {"name": "Amazing Brewing", "category": "Beer", "label": "๐Ÿบ Brewpub", "lat": 37.545, "lon": 127.056, "desc_ko": "์„ฑ์ˆ˜๋™ ์ˆ˜์ œ ๋งฅ์ฃผ์˜ ๋žœ๋“œ๋งˆํฌ", "desc_en": "Landmark of craft beer in Seongsu."},
25
+ {"name": "Cheongdo Wine Tunnel", "category": "Wine", "label": "๐Ÿท Persimmon", "lat": 35.617, "lon": 128.734, "desc_ko": "ํ„ฐ๋„์—์„œ ์ˆ™์„ฑ๋˜๋Š” ๊ฐ ์™€์ธ", "desc_en": "Persimmon wine tunnel."},
26
+ {"name": "Gochang Seonun", "category": "Wine", "label": "๐Ÿท Bokbunja", "lat": 35.483, "lon": 126.583, "desc_ko": "๊ณ ์ฐฝ ๋ณต๋ถ„์ž์ฃผ(๋ธ”๋ž™ ๋ผ์ฆˆ๋ฒ ๋ฆฌ) ํŠน๊ตฌ", "desc_en": "Famous for Bokbunja wine."},
27
+ {"name": "Yesan Apple Winery", "category": "Wine", "label": "๐Ÿท Apple", "lat": 36.745, "lon": 126.742, "desc_ko": "์ถ”์‚ฌ ์‚ฌ๊ณผ ์™€์ธ๊ณผ ๋ธŒ๋žœ๋””", "desc_en": "Apple wine and brandy distillery."},
28
+ {"name": "Muju Meoru", "category": "Wine", "label": "๐Ÿท Wild Grape", "lat": 35.975, "lon": 127.688, "desc_ko": "๋•์œ ์‚ฐ ๋™๊ตด ์ˆ™์„ฑ ๋จธ๋ฃจ ์™€์ธ", "desc_en": "Wild grape wine aged in cave."}
29
+ ],
30
+ "Vietnam ๐Ÿ‡ป๐Ÿ‡ณ": [
31
+ {"name": "Bia Hoi Junction", "category": "Beer", "label": "๐Ÿบ Street Beer", "lat": 21.035, "lon": 105.852, "desc_ko": "ํ•˜๋…ธ์ด ๋งฅ์ฃผ ๊ฑฐ๋ฆฌ. ๋ชฉ์š•ํƒ• ์˜์ž์— ์•‰์•„ ๋งˆ์‹œ๋Š” 500์› ์ƒ๋งฅ์ฃผ(๋น„์•„ ํ—ˆ์ด).", "desc_en": "Famous beer corner with cheap fresh beer."},
32
+ {"name": "Train Street", "category": "Bar", "label": "๐Ÿš‚ Photo Spot", "lat": 21.030, "lon": 105.844, "desc_ko": "๊ธฐ์ฐป๊ธธ ๋ฐ”๋กœ ์˜†์—์„œ ๋งฅ์ฃผ ํ•œ ์ž”. ์Šค๋ฆด๊ณผ ๋‚ญ๋งŒ.", "desc_en": "Iconic street where trains pass inches away."},
33
+ {"name": "Binh Minh Jazz Club", "category": "Bar", "label": "๐ŸŽท Legend", "lat": 21.035, "lon": 105.855, "desc_ko": "๋ฒ ํŠธ๋‚จ ์žฌ์ฆˆ์˜ ์•„๋ฒ„์ง€ Quyen Van Minh์˜ ์ „์„ค์ ์ธ ํด๋Ÿฝ.", "desc_en": "Legendary jazz club behind the Opera House."},
34
+ {"name": "Ne Cocktail Bar", "category": "Bar", "label": "๐Ÿธ Pho Cocktail", "lat": 21.031, "lon": 105.846, "desc_ko": "ํ•˜๋…ธ์ด ์‹œ๊ทธ๋‹ˆ์ฒ˜ 'ํฌ(Pho) ์นตํ…Œ์ผ'์˜ ๋ฐœ์ƒ์ง€.", "desc_en": "Home of the famous Pho Cocktail."},
35
+ {"name": "Kumquat Tree", "category": "Bar", "label": "๐Ÿธ Speakeasy", "lat": 21.036, "lon": 105.853, "desc_ko": "๋น„๋ฐ€์Šค๋Ÿฌ์šด ๋ถ‰์€ ๋ฌธ์„ ์—ด๊ณ  ๋“ค์–ด๊ฐ€๋Š” ๋™์–‘์  ์Šคํ”ผํฌ์ด์ง€.", "desc_en": "Atmospheric speakeasy bar."},
36
+ {"name": "Pasteur Street", "category": "Beer", "label": "๐Ÿบ Craft", "lat": 21.031, "lon": 105.852, "desc_ko": "ํ˜ธ์•ˆ๋ผ์—  ๊ทผ์ฒ˜, ๋ฒ ํŠธ๋‚จ ํฌ๋ž˜ํ”„ํŠธ ๋งฅ์ฃผ์˜ ์ •์„.", "desc_en": "Vietnam's original craft brewery taproom."},
37
+ {"name": "Standing Bar", "category": "Beer", "label": "๐Ÿบ Lake View", "lat": 21.042, "lon": 105.839, "desc_ko": "์„œํ˜ธ(West Lake)๋ฅผ ๋ฐ”๋ผ๋ณด๋ฉฐ ์ฆ๊ธฐ๋Š” ํƒญ ํ•˜์šฐ์Šค.", "desc_en": "Craft beer with a view of West Lake."},
38
+ {"name": "Lang Thang", "category": "Traditional", "label": "๐Ÿถ Local Spirit", "lat": 21.034, "lon": 105.830, "desc_ko": "๋ฒ ํŠธ๋‚จ ์ „ํ†ต์ฃผ์™€ ํ“จ์ „ ํƒ€ํŒŒ์Šค๋ฅผ ์ฆ๊ธธ ์ˆ˜ ์žˆ๋Š” ํž™ํ•œ ๊ณต๊ฐ„.", "desc_en": "Hip spot for local spirits and tapas."},
39
+ {"name": "Long Bien Bridge", "category": "Traditional", "label": "๐ŸŒ… Sunset", "lat": 21.042, "lon": 105.855, "desc_ko": "์—ํŽ ํƒ‘ ์„ค๊ณ„์ž๊ฐ€ ๋งŒ๋“  ๋‹ค๋ฆฌ ์œ„์—์„œ ์ฆ๊ธฐ๋Š” ๋…ธ์„๊ณผ ๋งฅ์ฃผ.", "desc_en": "Historic bridge perfect for sunset drinks."},
40
+ {"name": "Le Mat Snake Village", "category": "Traditional", "label": "๐Ÿ Snake Wine", "lat": 21.042, "lon": 105.896, "desc_ko": "๋ฑ€ ์‹ฌ์žฅ์ด ๋“ค์–ด๊ฐ„ ์ˆ ์„ ์ฒดํ—˜ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋ฌ˜ํ•œ ๋งˆ์„.", "desc_en": "Traditional snake wine village."},
41
+ {"name": "Ruou Can (Highland)", "category": "Traditional", "label": "๐Ÿบ Jar Wine", "lat": 21.028, "lon": 105.850, "desc_ko": "๊ธด ๋Œ€๋‚˜๋ฌด ๋นจ๋Œ€๋กœ ํ•ญ์•„๋ฆฌ ์ˆ ์„ ๋‚˜๋ˆ  ๋งˆ์‹œ๋Š” ์ „ํ†ต ์ฒดํ—˜.", "desc_en": "Traditional jar wine experience."}
42
+ ],
43
+ "Japan ๐Ÿ‡ฏ๐Ÿ‡ต": [
44
+ {"name": "Suntory Yamazaki", "category": "Whiskey", "label": "๐Ÿญ Legend", "lat": 34.892, "lon": 135.674, "desc_ko": "์ผ๋ณธ ์œ„์Šคํ‚ค์˜ ์‹œ์ดˆ", "desc_en": "Birthplace of Japanese whisky."},
45
+ {"name": "Suntory Hakushu", "category": "Whiskey", "label": "๐Ÿญ Forest", "lat": 35.807, "lon": 138.303, "desc_ko": "์ˆฒ์†์˜ ์ฆ๋ฅ˜์†Œ", "desc_en": "Distillery in the forest."},
46
+ {"name": "Nikka Yoichi", "category": "Whiskey", "label": "๐Ÿญ Hokkaido", "lat": 43.186, "lon": 140.798, "desc_ko": "ํƒ€์ผ€์ธ ๋ฃจ์˜ ๊ฟˆ", "desc_en": "Masataka Taketsuru's dream."},
47
+ {"name": "Nikka Miyagikyo", "category": "Whiskey", "label": "๐Ÿญ Sendai", "lat": 38.312, "lon": 140.654, "desc_ko": "๋ถ€๋“œ๋Ÿฝ๊ณ  ์šฐ์•„ํ•œ ์œ„์Šคํ‚ค", "desc_en": "Distillery known for fruity elegance."},
48
+ {"name": "Chichibu", "category": "Whiskey", "label": "๐Ÿญ Craft", "lat": 36.026, "lon": 139.055, "desc_ko": "์ด์น˜๋กœ์Šค ๋ชฐํŠธ", "desc_en": "Home of Ichiro's Malt."},
49
+ {"name": "Dassai Brewery", "category": "Traditional", "label": "๐Ÿถ Premium", "lat": 34.120, "lon": 132.029, "desc_ko": "์˜ค๋ฐ”๋งˆ ๋งŒ์ฐฌ์ฃผ ๋‹ท์‚ฌ์ด", "desc_en": "Famous Dassai Sake."},
50
+ {"name": "Gekkeikan Okura", "category": "Traditional", "label": "๐Ÿถ Sake", "lat": 34.929, "lon": 135.761, "desc_ko": "๊ตํ†  ์‚ฌ์ผ€ ๋ฐ•๋ฌผ๊ด€", "desc_en": "History of sake brewing."},
51
+ {"name": "Ki No Bi Kyoto", "category": "Spirits", "label": "๐Ÿธ Craft Gin", "lat": 34.969, "lon": 135.756, "desc_ko": "๊ตํ† ์˜ ์‹๋ฌผ๋กœ ๋งŒ๋“œ๋Š” ํฌ๋ž˜ํ”„ํŠธ ์ง„", "desc_en": "Kyoto's dry gin distillery."},
52
+ {"name": "Sapporo Beer Museum", "category": "Beer", "label": "๐Ÿ›๏ธ Museum", "lat": 43.071, "lon": 141.369, "desc_ko": "์‚ฟํฌ๋กœ ๋งฅ์ฃผ์˜ ์—ญ์‚ฌ", "desc_en": "Japan's only beer museum."},
53
+ {"name": "Bar High Five", "category": "Bar", "label": "๐Ÿธ Ginza", "lat": 35.671, "lon": 139.764, "desc_ko": "๊ธด์ž์˜ ์ „์„ค์ ์ธ ๋ฐ”", "desc_en": "Legendary bar in Ginza."}
54
+ ],
55
+ "Sweden ๐Ÿ‡ธ๐Ÿ‡ช": [
56
+ {"name": "O.P. Anderson", "category": "Traditional", "label": "๐Ÿฅ” Aquavit", "lat": 62.336, "lon": 17.039, "desc_ko": "์Šค์›จ๋ด ์•„์ฟ ์•„๋น„ํŠธ์˜ ์ œ์™•", "desc_en": "King of Swedish Aquavit."},
57
+ {"name": "Absolut Home", "category": "Spirits", "label": "๐Ÿญ Vodka", "lat": 55.923, "lon": 14.294, "desc_ko": "์•ฑ์†”๋ฃจํŠธ ๋ณด๋“œ์นด์˜ ๊ณ ํ–ฅ", "desc_en": "Home of Absolut Vodka."},
58
+ {"name": "Mackmyra", "category": "Whiskey", "label": "๐Ÿญ Nordic", "lat": 60.638, "lon": 17.037, "desc_ko": "์Šค์›จ๋ด ์ค‘๋ ฅ ์ฆ๋ฅ˜์†Œ", "desc_en": "Gravity distillery."},
59
+ {"name": "Hernรถ Gin", "category": "Spirits", "label": "๐Ÿธ Best Gin", "lat": 62.684, "lon": 17.794, "desc_ko": "์„ธ๊ณ„ ์ตœ๋‹ค ์ˆ˜์ƒ ์ง„ ์ฆ๋ฅ˜์†Œ", "desc_en": "Most awarded gin in Europe."},
60
+ {"name": "High Coast", "category": "Whiskey", "label": "๐Ÿญ Northern", "lat": 62.983, "lon": 17.817, "desc_ko": "๋ถ์œ„ 63๋„, ์˜น๋‹ฌ์ƒ˜ ์œ„์Šคํ‚ค", "desc_en": "Whisky from the High Coast."},
61
+ {"name": "Akkurat", "category": "Bar", "label": "๐Ÿบ Beer", "lat": 59.319, "lon": 18.070, "desc_ko": "์ „ ์„ธ๊ณ„ ๋งฅ์ฃผ ๋•ํ›„๋“ค์˜ ์„ฑ์ง€", "desc_en": "World-famous beer bar."}
62
+ ],
63
+ "Norway ๐Ÿ‡ณ๐Ÿ‡ด": [
64
+ {"name": "Himkok", "category": "Bar", "label": "๐Ÿธ Distillery", "lat": 59.916, "lon": 10.750, "desc_ko": "์ž์ฒด ์ฆ๋ฅ˜ ์•„์ฟ ์•„๋น„ํŠธ ๋ฐ”", "desc_en": "In-house distillery bar."},
65
+ {"name": "Lรธiten Brรฆnderi", "category": "Traditional", "label": "๐Ÿฅ” Aquavit", "lat": 60.821, "lon": 11.343, "desc_ko": "๋…ธ๋ฅด์›จ์ด ์•„์ฟ ์•„๋น„ํŠธ ์—ญ์‚ฌ๊ด€", "desc_en": "Aquavit history."},
66
+ {"name": "Arcus (Linie)", "category": "Traditional", "label": "๐Ÿšข Aquavit", "lat": 59.970, "lon": 10.930, "desc_ko": "์ ๋„๋ฅผ ๋‘ ๋ฒˆ ํ†ต๊ณผํ•œ ๋ฆฌ๋‹ˆ์—", "desc_en": "Equator aged Aquavit."},
67
+ {"name": "Aurora Spirit", "category": "Whiskey", "label": "๐Ÿญ Arctic", "lat": 69.619, "lon": 20.272, "desc_ko": "์„ธ๊ณ„ ์ตœ๋ถ๋‹จ ์ฆ๋ฅ˜์†Œ", "desc_en": "Northernmost distillery."},
68
+ {"name": "Nรธgne ร˜", "category": "Beer", "label": "๐Ÿบ Craft", "lat": 58.398, "lon": 8.643, "desc_ko": "์œ ๋Ÿฝ ํฌ๋ž˜ํ”„ํŠธ ๋งฅ์ฃผ์˜ ์ „์„ค", "desc_en": "Legendary craft brewery."},
69
+ {"name": "ร†gir Bryggeri", "category": "Beer", "label": "๐Ÿบ Viking", "lat": 60.863, "lon": 7.114, "desc_ko": "ํ”ผ์š”๋ฅด๋“œ ์† ๋ฐ”์ดํ‚น ์–‘์กฐ์žฅ", "desc_en": "Viking style brewery."}
70
+ ],
71
+ "China ๐Ÿ‡จ๐Ÿ‡ณ": [
72
+ {"name": "Kweichow Moutai", "category": "Traditional", "label": "๐Ÿถ National", "lat": 27.842, "lon": 106.378, "desc_ko": "์ค‘๊ตญ์˜ ๊ตญ์ฃผ ๋งˆ์˜คํƒ€์ด", "desc_en": "China's national liquor."},
73
+ {"name": "Wuliangye", "category": "Traditional", "label": "๐Ÿถ Baijiu", "lat": 28.752, "lon": 104.607, "desc_ko": "๋†ํ–ฅํ˜• ๋ฐฑ์ฃผ์˜ ์™•", "desc_en": "King of strong-aroma baijiu."},
74
+ {"name": "Fenjiu", "category": "Traditional", "label": "๐Ÿถ Light", "lat": 37.332, "lon": 111.758, "desc_ko": "์ฒญํ–ฅํ˜• ๋ฐฑ์ฃผ์˜ ๋Œ€ํ‘œ", "desc_en": "Representative of light-aroma."},
75
+ {"name": "The Chuan", "category": "Whiskey", "label": "๐Ÿญ Emeishan", "lat": 29.548, "lon": 103.376, "desc_ko": "ํŽ˜๋ฅด๋…ธ๋ฆฌ์นด ์ค‘๊ตญ ์ฆ๋ฅ˜์†Œ", "desc_en": "Pernod Ricard's iconic distillery."},
76
+ {"name": "Laizhou", "category": "Whiskey", "label": "๐Ÿญ Sichuan", "lat": 30.297, "lon": 103.023, "desc_ko": "๋ฐ”์ปค์Šค ๊ทธ๋ฃน ๊ฑฐ๋Œ€ ์ฆ๋ฅ˜์†Œ", "desc_en": "Massive whisky distillery."},
77
+ {"name": "Tsingtao Museum", "category": "Beer", "label": "๐Ÿ›๏ธ Beer", "lat": 36.077, "lon": 120.344, "desc_ko": "์นญ๋‹ค์˜ค ๋งฅ์ฃผ ๋ฐ•๋ฌผ๊ด€", "desc_en": "Historic Tsingtao beer museum."},
78
+ {"name": "Hope & Sesame", "category": "Bar", "label": "๐Ÿธ Speakeasy", "lat": 23.129, "lon": 113.292, "desc_ko": "๊ด‘์ €์šฐ ํžˆ๋“  ๋ฐ”", "desc_en": "Legendary speakeasy."},
79
+ {"name": "Chateau Changyu", "category": "Wine", "label": "๐Ÿท Ningxia", "lat": 38.337, "lon": 106.079, "desc_ko": "์ค‘๊ตญ์˜ ๋ชจ์ ค ์™€์ด๋„ˆ๋ฆฌ", "desc_en": "Iconic chateau in Ningxia."}
80
+ ],
81
+ "Scotland ๐Ÿด๓ ง๓ ข๓ ณ๓ ฃ๓ ด๓ ฟ": [
82
+ {"name": "The Macallan", "category": "Whiskey", "label": "๐Ÿญ Speyside", "lat": 57.484, "lon": -3.206, "desc_ko": "์œ„์Šคํ‚ค์˜ ๋กค์Šค๋กœ์ด์Šค", "desc_en": "The Rolls-Royce of whisky."},
83
+ {"name": "Laphroaig", "category": "Whiskey", "label": "๐Ÿญ Islay", "lat": 55.629, "lon": -6.153, "desc_ko": "ํ”ผํŠธ ํ–ฅ์˜ ์ •์ˆ˜", "desc_en": "Richly flavoured peaty whisky."},
84
+ {"name": "Glenfiddich", "category": "Whiskey", "label": "๐Ÿญ Speyside", "lat": 57.454, "lon": -3.128, "desc_ko": "์„ธ๊ณ„ ํŒ๋งค 1์œ„ ์‹ฑ๊ธ€๋ชฐํŠธ", "desc_en": "World's most awarded single malt."},
85
+ {"name": "Lagavulin", "category": "Whiskey", "label": "๐Ÿญ Islay", "lat": 55.635, "lon": -6.126, "desc_ko": "์Šค๋ชจํ‚ค์˜ ์ œ์™•", "desc_en": "The King of Islay."},
86
+ {"name": "Ardbeg", "category": "Whiskey", "label": "๐Ÿญ Islay", "lat": 55.642, "lon": -6.112, "desc_ko": "๊ถ๊ทน์˜ ํ”ผํŠธ ๊ดด๋ฌผ", "desc_en": "The ultimate Islay malt."},
87
+ {"name": "The Balvenie", "category": "Whiskey", "label": "๐Ÿญ Craft", "lat": 57.455, "lon": -3.126, "desc_ko": "์ „ํ†ต ์ˆ˜์ œ ๋ฐฉ์‹", "desc_en": "Dedicated to the traditional craft."},
88
+ {"name": "Talisker", "category": "Whiskey", "label": "๐Ÿญ Skye", "lat": 57.302, "lon": -6.356, "desc_ko": "์Šค์นด์ด ์„ฌ์˜ ํ™”์‚ฐ ๊ฐ™์€ ๊ฐ•๋ ฌํ•จ", "desc_en": "Made by the sea on Isle of Skye."},
89
+ {"name": "Highland Park", "category": "Whiskey", "label": "๐Ÿญ Orkney", "lat": 58.974, "lon": -2.953, "desc_ko": "๋ฐ”์ดํ‚น์˜ ํ˜ผ", "desc_en": "The Viking soul of whisky."},
90
+ {"name": "Springbank", "category": "Whiskey", "label": "๐Ÿญ Campbeltown", "lat": 55.426, "lon": -5.606, "desc_ko": "100% ์ˆ˜์ œ ์œ„์Šคํ‚ค", "desc_en": "Handmade whisky legend."},
91
+ {"name": "Dalmore", "category": "Whiskey", "label": "๐Ÿญ Highland", "lat": 57.694, "lon": -4.240, "desc_ko": "12๋ฟ” ์‚ฌ์Šด์˜ ์ „์„ค", "desc_en": "A masterpiece of malt whisky."},
92
+ {"name": "Oban", "category": "Whiskey", "label": "๐Ÿญ Highland", "lat": 56.414, "lon": -5.471, "desc_ko": "๋ฐ”๋‹ค์™€ ์œก์ง€๊ฐ€ ๋งŒ๋‚˜๋Š” ๊ณณ", "desc_en": "Where the Highlands meet the Islands."}
93
+ ],
94
+ "USA ๐Ÿ‡บ๐Ÿ‡ธ": [
95
+ {"name": "Jack Daniel's", "category": "Whiskey", "label": "๐Ÿญ Tennessee", "lat": 35.284, "lon": -86.368, "desc_ko": "๋ฏธ๊ตญ ์œ„์Šคํ‚ค์˜ ์ƒ์ง•", "desc_en": "Top selling American whiskey."},
96
+ {"name": "Buffalo Trace", "category": "Whiskey", "label": "๐Ÿญ Bourbon", "lat": 38.217, "lon": -84.870, "desc_ko": "๋ฒ„๋ฒˆ ์œ„์Šคํ‚ค์˜ ์ „์„ค", "desc_en": "Legendary bourbon distillery."},
97
+ {"name": "Jim Beam", "category": "Whiskey", "label": "๐Ÿญ Bourbon", "lat": 37.931, "lon": -85.654, "desc_ko": "์„ธ๊ณ„ 1์œ„ ๋ฒ„๋ฒˆ", "desc_en": "World's No.1 Bourbon."},
98
+ {"name": "Maker's Mark", "category": "Whiskey", "label": "๐Ÿญ Bourbon", "lat": 37.647, "lon": -85.349, "desc_ko": "๋ถ‰์€ ์™์Šค ๋ด‰์ธ", "desc_en": "Iconic red wax dipped."},
99
+ {"name": "Woodford Reserve", "category": "Whiskey", "label": "๐Ÿญ Bourbon", "lat": 38.113, "lon": -84.811, "desc_ko": "์ผ„ํ„ฐํ‚ค ๋”๋น„ ๊ณต์‹ ๋ฒ„๋ฒˆ", "desc_en": "Historic distillery."},
100
+ {"name": "Wild Turkey", "category": "Whiskey", "label": "๐Ÿญ Bourbon", "lat": 38.043, "lon": -84.857, "desc_ko": "๊ฐ•๋ ฌํ•œ ์•ผ์ƒ์˜ ๋ง›", "desc_en": "Authentic Kentucky Straight Bourbon."},
101
+ {"name": "Robert Mondavi", "category": "Wine", "label": "๐Ÿท Napa", "lat": 38.427, "lon": -122.404, "desc_ko": "๋‚˜ํŒŒ ๋ฐธ๋ฆฌ์˜ ์•„๋ฒ„์ง€", "desc_en": "Soul of Napa Valley."},
102
+ {"name": "Opus One", "category": "Wine", "label": "๐Ÿท Cult", "lat": 38.428, "lon": -122.409, "desc_ko": "๋ฏธ๊ตญ ์ปฌํŠธ ์™€์ธ", "desc_en": "Ultra-premium winery."},
103
+ {"name": "Sierra Nevada", "category": "Beer", "label": "๐Ÿบ Craft", "lat": 39.724, "lon": -121.816, "desc_ko": "ํฌ๋ž˜ํ”„ํŠธ ๋งฅ์ฃผ ์„ ๊ตฌ์ž", "desc_en": "Pioneers of craft brewing."},
104
+ {"name": "The Dead Rabbit", "category": "Bar", "label": "๐Ÿธ NYC Icon", "lat": 40.703, "lon": -74.011, "desc_ko": "๋‰ด์š• ์ตœ๊ณ ์˜ ์นตํ…Œ์ผ ํŽ", "desc_en": "World's best bar winner."}
105
+ ],
106
+ "Ireland ๐Ÿ‡ฎ๐Ÿ‡ช": [
107
+ {"name": "Guinness Storehouse", "category": "Beer", "label": "๐Ÿบ Stout", "lat": 53.341, "lon": -6.286, "desc_ko": "๋”๋ธ”๋ฆฐ์˜ ์‹ฌ์žฅ, ๊ธฐ๋„ค์Šค", "desc_en": "Ireland's No.1 attraction."},
108
+ {"name": "Jameson Bow St.", "category": "Whiskey", "label": "๐Ÿญ Whiskey", "lat": 53.348, "lon": -6.277, "desc_ko": "์ œ์ž„์Šจ ์œ„์Šคํ‚ค", "desc_en": "Birthplace of Irish whiskey."},
109
+ {"name": "Teeling", "category": "Whiskey", "label": "๐Ÿญ Whiskey", "lat": 53.337, "lon": -6.277, "desc_ko": "๋”๋ธ”๋ฆฐ ์œ„์Šคํ‚ค ๋ถ€ํ™œ", "desc_en": "Reviving Dublin whiskey."},
110
+ {"name": "Bushmills", "category": "Whiskey", "label": "๐Ÿญ Oldest", "lat": 55.207, "lon": -6.524, "desc_ko": "์„ธ๊ณ„ ์ตœ๊ณ (ๆœ€ๅค) ๋ฉดํ—ˆ ์ฆ๋ฅ˜์†Œ", "desc_en": "World's oldest licensed distillery."},
111
+ {"name": "The Temple Bar", "category": "Bar", "label": "๐Ÿธ Pub", "lat": 53.345, "lon": -6.264, "desc_ko": "๊ฐ€์žฅ ์œ ๋ช…ํ•œ ๋ถ‰์€ ํŽ", "desc_en": "Dublin's iconic red pub."}
112
+ ],
113
+ "France ๐Ÿ‡ซ๐Ÿ‡ท": [
114
+ {"name": "Moรซt & Chandon", "category": "Wine", "label": "๐Ÿท Champagne", "lat": 49.043, "lon": 3.957, "desc_ko": "์ƒนํŒŒ๋‰ด ์ง€ํ•˜ ๋™๊ตด, ๋” ํŽ˜๋ฆฌ๋‡ฝ", "desc_en": "Cellars of Dom Pรฉrignon."},
115
+ {"name": "Maison Hennessy", "category": "Spirits", "label": "๐Ÿญ Cognac", "lat": 45.694, "lon": -0.327, "desc_ko": "์„ธ๊ณ„ 1์œ„ ์ฝ”๋ƒ‘", "desc_en": "World's finest cognac."},
116
+ {"name": "Chรขteau Margaux", "category": "Wine", "label": "๐Ÿท Bordeaux", "lat": 45.044, "lon": -0.668, "desc_ko": "๋ณด๋ฅด๋„ 5๋Œ€ ์ƒคํ† ", "desc_en": "Legendary Bordeaux wine."},
117
+ {"name": "Citรฉ du Vin", "category": "Wine", "label": "๐Ÿ›๏ธ Museum", "lat": 44.862, "lon": -0.550, "desc_ko": "๋ณด๋ฅด๋„ ์™€์ธ ๋ฐ•๋ฌผ๊ด€", "desc_en": "Immersive wine museum."}
118
+ ],
119
+ "Germany ๐Ÿ‡ฉ๐Ÿ‡ช": [
120
+ {"name": "Hofbrรคuhaus", "category": "Beer", "label": "๐Ÿบ Beer Hall", "lat": 48.137, "lon": 11.580, "desc_ko": "๋ฎŒํ—จ ๋งฅ์ฃผํ™€", "desc_en": "World's famous beer hall."},
121
+ {"name": "Weihenstephan", "category": "Beer", "label": "๐Ÿบ Oldest", "lat": 48.395, "lon": 11.729, "desc_ko": "์„ธ๊ณ„ ์ตœ๊ณ  ์–‘์กฐ์žฅ", "desc_en": "Oldest brewery."},
122
+ {"name": "Paulaner", "category": "Beer", "label": "๐Ÿบ Brewery", "lat": 48.121, "lon": 11.582, "desc_ko": "๋ฎŒํ—จ ๋Œ€ํ‘œ ๋ฐ€๋งฅ์ฃผ", "desc_en": "Famous Munich brewery."},
123
+ {"name": "Schloss Johannisberg", "category": "Wine", "label": "๐Ÿท Riesling", "lat": 50.003, "lon": 7.986, "desc_ko": "๋ฆฌ์Šฌ๋ง์˜ ๋ฐœ์ƒ์ง€", "desc_en": "First Riesling winery."}
124
+ ],
125
+ "Belgium ๐Ÿ‡ง๐Ÿ‡ช": [
126
+ {"name": "Cantillon", "category": "Beer", "label": "๐Ÿบ Lambic", "lat": 50.841, "lon": 4.335, "desc_ko": "์ž์—ฐ ๋ฐœํšจ ๋žŒ๋น…", "desc_en": "Traditional lambic brewery."},
127
+ {"name": "Westvleteren", "category": "Beer", "label": "๐Ÿบ Trappist", "lat": 50.896, "lon": 2.720, "desc_ko": "์ˆ˜๋„์› ๋งฅ์ฃผ", "desc_en": "Best beer in the world."},
128
+ {"name": "Delirium Cafรฉ", "category": "Bar", "label": "๐Ÿบ Pub", "lat": 50.848, "lon": 4.354, "desc_ko": "2000์ข… ์ด์ƒ์˜ ๋งฅ์ฃผ", "desc_en": "2000+ beers on menu."}
129
+ ],
130
+ "Italy ๐Ÿ‡ฎ๐Ÿ‡น": [
131
+ {"name": "Antinori", "category": "Wine", "label": "๐Ÿท Tuscany", "lat": 43.616, "lon": 11.196, "desc_ko": "ํ† ์Šค์นด๋‚˜ ๊ฑธ์ž‘", "desc_en": "Architectural masterpiece."},
132
+ {"name": "Poli Grappa", "category": "Spirits", "label": "๐Ÿ›๏ธ Grappa", "lat": 45.679, "lon": 11.638, "desc_ko": "๊ทธ๋ผํŒŒ ๋ฐ•๋ฌผ๊ด€", "desc_en": "Museum of Grappa."},
133
+ {"name": "Casa Martini", "category": "Spirits", "label": "๐Ÿธ Vermouth", "lat": 44.968, "lon": 7.769, "desc_ko": "๋งˆํ‹ฐ๋‹ˆ์˜ ๊ณ ํ–ฅ", "desc_en": "Home of Martini & Rossi."}
134
+ ],
135
+ "Spain ๐Ÿ‡ช๐Ÿ‡ธ": [
136
+ {"name": "Marquรฉs de Riscal", "category": "Wine", "label": "๐Ÿท Rioja", "lat": 42.511, "lon": -2.622, "desc_ko": "๋ฆฌ์˜คํ•˜ ๋žœ๋“œ๋งˆํฌ", "desc_en": "Architectural wonder."},
137
+ {"name": "Tio Pepe", "category": "Wine", "label": "๐Ÿท Sherry", "lat": 36.681, "lon": -6.141, "desc_ko": "์…ฐ๋ฆฌ์˜ ๋Œ€๋ช…์‚ฌ", "desc_en": "Famous Sherry winery."},
138
+ {"name": "Estrella Damm", "category": "Beer", "label": "๐Ÿบ Barcelona", "lat": 41.319, "lon": 2.093, "desc_ko": "๋ฐ”๋ฅด์…€๋กœ๋‚˜ ๋งฅ์ฃผ", "desc_en": "The beer of Barcelona."}
139
+ ],
140
+ "Taiwan ๐Ÿ‡น๐Ÿ‡ผ": [
141
+ {"name": "Kavalan", "category": "Whiskey", "label": "๐Ÿญ World Class", "lat": 24.711, "lon": 121.691, "desc_ko": "๋Œ€๋งŒ์˜ ์ž์กด์‹ฌ, ์นด๋ฐœ๋ž€", "desc_en": "World-class Taiwanese whisky."},
142
+ {"name": "Nantou (Omar)", "category": "Whiskey", "label": "๐Ÿญ Fruit Cask", "lat": 23.931, "lon": 120.675, "desc_ko": "๊ณผ์ผํ–ฅ ๊ฐ€๋“ํ•œ ์˜ค๋งˆ๋ฅด", "desc_en": "Famous for fruit liqueur finish."},
143
+ {"name": "Draft Land", "category": "Bar", "label": "๐Ÿธ Cocktail", "lat": 25.042, "lon": 121.548, "desc_ko": "ํƒญ ์นตํ…Œ์ผ ๋ฐ”", "desc_en": "Cocktails on tap."}
144
+ ],
145
+ "Russia ๐Ÿ‡ท๐Ÿ‡บ": [
146
+ {"name": "Russian Vodka Museum", "category": "Spirits", "label": "๐Ÿ›๏ธ Vodka", "lat": 59.932, "lon": 30.298, "desc_ko": "์ƒํŠธํŽ˜ํ…Œ๋ฅด๋ถ€๋ฅดํฌ ๋ณด๋“œ์นด ๋ฐ•๋ฌผ๊ด€", "desc_en": "Museum of Russian Vodka."},
147
+ {"name": "Cristall Distillery", "category": "Spirits", "label": "๐Ÿญ Historic", "lat": 55.757, "lon": 37.678, "desc_ko": "๋ชจ์Šคํฌ๋ฐ” ์ „์„ค์˜ ๊ณต์žฅ", "desc_en": "Legendary Moscow distillery."},
148
+ {"name": "El Copitas", "category": "Bar", "label": "๐Ÿธ Bar", "lat": 59.928, "lon": 30.346, "desc_ko": "์ˆจ๊ฒจ์ง„ ๋ฉ•์‹œ์นธ ๋ฐ”", "desc_en": "Hidden gem bar."}
149
+ ],
150
+ "Poland ๐Ÿ‡ต๐Ÿ‡ฑ": [
151
+ {"name": "Polish Vodka Museum", "category": "Spirits", "label": "๐Ÿ›๏ธ Heritage", "lat": 52.253, "lon": 21.041, "desc_ko": "ํด๋ž€๋“œ ๋ณด๋“œ์นด ๋ฐ•๋ฌผ๊ด€", "desc_en": "Polish vodka heritage."},
152
+ {"name": "Chopin Distillery", "category": "Spirits", "label": "๐Ÿญ Potato", "lat": 52.197, "lon": 22.315, "desc_ko": "๊ฐ์ž ๋ณด๋“œ์นด ๋ช…๊ฐ€", "desc_en": "Famous potato vodka."}
153
+ ],
154
+ "Finland ๐Ÿ‡ซ๐Ÿ‡ฎ": [
155
+ {"name": "Kyrรถ Distillery", "category": "Whiskey", "label": "๐Ÿญ Rye", "lat": 62.973, "lon": 22.353, "desc_ko": "100% ํ˜ธ๋ฐ€ ์œ„์Šคํ‚ค", "desc_en": "All-rye distillery."},
156
+ {"name": "Helsinki Distilling", "category": "Spirits", "label": "๐Ÿญ Urban", "lat": 60.185, "lon": 24.975, "desc_ko": "ํ—ฌ์‹ฑํ‚ค ๋„์‹ฌ ์ฆ๋ฅ˜์†Œ", "desc_en": "Urban distillery."}
157
+ ],
158
+ "Mexico ๐Ÿ‡ฒ๐Ÿ‡ฝ": [
159
+ {"name": "Mundo Cuervo", "category": "Spirits", "label": "๐Ÿญ Tequila", "lat": 20.878, "lon": -103.836, "desc_ko": "๋ฐํ‚ฌ๋ผ์˜ ์—ญ์‚ฌ", "desc_en": "Oldest distillery."},
160
+ {"name": "Los Danzantes", "category": "Spirits", "label": "๐Ÿญ Mezcal", "lat": 16.903, "lon": -96.423, "desc_ko": "์˜ค์•…์‚ฌ์นด ๋ฉ”์Šค์นผ", "desc_en": "Artisanal Mezcal."},
161
+ {"name": "Museo del Pulque", "category": "Traditional", "label": "๐ŸŒต Pulque", "lat": 19.437, "lon": -99.140, "desc_ko": "์‹ ๋“ค์˜ ์Œ๋ฃŒ ํ’€์ผ€", "desc_en": "Museum of Pulque."}
162
+ ],
163
+ "Brazil ๐Ÿ‡ง๐Ÿ‡ท": [
164
+ {"name": "Weber Haus", "category": "Spirits", "label": "๐Ÿน Cachaรงa", "lat": -29.567, "lon": -51.272, "desc_ko": "์นด์ƒค์‚ฌ ๋ช…๊ฐ€", "desc_en": "Artisanal Cachaรงa."},
165
+ {"name": "Cervejaria Colorado", "category": "Beer", "label": "๐Ÿบ Craft", "lat": -21.170, "lon": -47.810, "desc_ko": "๋ธŒ๋ผ์งˆ ํฌ๋ž˜ํ”„ํŠธ ๋งฅ์ฃผ", "desc_en": "Brazilian craft beer."}
166
+ ],
167
+ "Peru ๐Ÿ‡ต๐Ÿ‡ช": [
168
+ {"name": "Hacienda La Caravedo", "category": "Spirits", "label": "๐Ÿ‡ Pisco", "lat": -14.005, "lon": -75.762, "desc_ko": "๋‚จ๋ฏธ ์ตœ๊ณ  ํ”ผ์Šค์ฝ” ์–‘์กฐ์žฅ", "desc_en": "Oldest distillery in Americas."},
169
+ {"name": "Museo del Pisco", "category": "Bar", "label": "๐Ÿธ Pisco Sour", "lat": -13.516, "lon": -71.978, "desc_ko": "ํ”ผ์Šค์ฝ” ๋ฐ•๋ฌผ๊ด€ ๋ฐ ๋ฐ”", "desc_en": "Pisco tasting."},
170
+ {"name": "La Chicherรญa", "category": "Traditional", "label": "๐ŸŒฝ Chicha", "lat": -13.516, "lon": -71.978, "desc_ko": "์ž‰์นด ์˜ฅ์ˆ˜์ˆ˜ ๋ฐœํšจ์ฃผ", "desc_en": "Inca corn beer."}
171
+ ],
172
+ "Argentina ๐Ÿ‡ฆ๐Ÿ‡ท": [
173
+ {"name": "Catena Zapata", "category": "Wine", "label": "๐Ÿท Malbec", "lat": -33.155, "lon": -68.929, "desc_ko": "๋ฉ˜๋„์‚ฌ ์™€์ธ ์ƒ์ง•", "desc_en": "Icon of Argentine Malbec."}
174
+ ],
175
+ "Canada ๐Ÿ‡จ๐Ÿ‡ฆ": [
176
+ {"name": "Canadian Club", "category": "Whiskey", "label": "๐Ÿญ Historic", "lat": 42.324, "lon": -83.013, "desc_ko": "์•Œ ์นดํฌ๋„ค์˜ ์œ„์Šคํ‚ค", "desc_en": "Historic Canadian whisky."},
177
+ {"name": "Steam Whistle", "category": "Beer", "label": "๐Ÿบ Pilsner", "lat": 43.641, "lon": -79.387, "desc_ko": "ํ† ๋ก ํ†  ํ•„์Šค๋„ˆ", "desc_en": "Premium pilsner brewery."}
178
+ ],
179
+ "India ๐Ÿ‡ฎ๐Ÿ‡ณ": [
180
+ {"name": "Amrut", "category": "Whiskey", "label": "๐Ÿญ Single Malt", "lat": 12.868, "lon": 77.447, "desc_ko": "์ธ๋„ ์œ„์Šคํ‚ค ์„ธ๊ณ„ํ™”", "desc_en": "Pioneer of Indian single malt."},
181
+ {"name": "Paul John", "category": "Whiskey", "label": "๐Ÿญ Goa Malt", "lat": 15.226, "lon": 74.004, "desc_ko": "๊ณ ์•„์˜ ์—ด๋Œ€ ์œ„์Šคํ‚ค", "desc_en": "Tropical whisky from Goa."},
182
+ {"name": "Cazulo Feni", "category": "Traditional", "label": "๐Ÿฅฅ Heritage", "lat": 15.345, "lon": 73.921, "desc_ko": "๊ณ ์•„ ์ „ํ†ต์ฃผ 'ํŽ˜๋‹ˆ' ์ฒดํ—˜", "desc_en": "Heritage Feni tour in Goa."}
183
+ ],
184
+ "Thailand ๐Ÿ‡น๐Ÿ‡ญ": [
185
+ {"name": "Chalong Bay", "category": "Spirits", "label": "๐Ÿน Rum", "lat": 7.832, "lon": 98.349, "desc_ko": "ํ‘ธ์ผ“ ์‚ฌํƒ•์ˆ˜์ˆ˜ ๋Ÿผ", "desc_en": "Phuket sugarcane rum."},
186
+ {"name": "Tep Bar", "category": "Bar", "label": "๐Ÿถ Thai", "lat": 13.740, "lon": 100.514, "desc_ko": "ํƒœ๊ตญ ์ „ํ†ต์ฃผ ์•ผ๋™", "desc_en": "Thai herbal liquor."}
187
+ ],
188
+ "Malaysia ๐Ÿ‡ฒ๐Ÿ‡พ": [
189
+ {"name": "The Old Tuak House", "category": "Traditional", "label": "๐Ÿถ Tribal", "lat": 3.147, "lon": 101.708, "desc_ko": "๋ณด๋ฅด๋„ค์˜ค ์ „ํ†ต์ฃผ ํˆฌ์•…", "desc_en": "Authentic Borneo rice wine."},
190
+ {"name": "Bar Trigona", "category": "Bar", "label": "๐Ÿธ Best Bar", "lat": 3.155, "lon": 101.714, "desc_ko": "์•„์‹œ์•„ ๋ฒ ์ŠคํŠธ, ํ† ์ข… ๊ฟ€", "desc_en": "Asia's 50 Best."},
191
+ {"name": "JungleBird", "category": "Bar", "label": "๐Ÿน Rum", "lat": 3.153, "lon": 101.621, "desc_ko": "์„ธ๊ณ„์  ๋Ÿผ ๋ฐ”", "desc_en": "World-renowned Rum house."}
192
+ ],
193
+ "Singapore ๐Ÿ‡ธ๐Ÿ‡ฌ": [
194
+ {"name": "Long Bar", "category": "Bar", "label": "๐Ÿธ Historic", "lat": 1.294, "lon": 103.854, "desc_ko": "์‹ฑ๊ฐ€ํฌ๋ฅด ์Šฌ๋ง ํƒ„์ƒ์ง€", "desc_en": "Birthplace of Singapore Sling."},
195
+ {"name": "Atlas", "category": "Bar", "label": "๐Ÿธ Gin", "lat": 1.300, "lon": 103.858, "desc_ko": "์„ธ๊ณ„ ์ตœ๋Œ€ ์ง„ ์ปฌ๋ ‰์…˜", "desc_en": "World's largest gin collection."}
196
+ ],
197
+ "Mongolia ๐Ÿ‡ฒ๐Ÿ‡ณ": [
198
+ {"name": "Genghis Khan", "category": "Traditional", "label": "๐ŸŽ Airag", "lat": 47.858, "lon": 107.595, "desc_ko": "์ดˆ์›์˜ ๋งˆ์œ ์ฃผ ์ฒดํ—˜", "desc_en": "Experience Airag."}
199
+ ],
200
+ "Ethiopia ๐Ÿ‡ช๐Ÿ‡น": [
201
+ {"name": "Yod Abyssinia", "category": "Traditional", "label": "๐Ÿฏ Tej", "lat": 8.995, "lon": 38.770, "desc_ko": "๋ฒŒ๊ฟ€์ˆ  ํ…Œ์ง€", "desc_en": "Honey Wine Tej."}
202
+ ],
203
+ "Georgia ๐Ÿ‡ฌ๐Ÿ‡ช": [
204
+ {"name": "Pheasant's Tears", "category": "Wine", "label": "๐Ÿบ Qvevri", "lat": 41.621, "lon": 45.922, "desc_ko": "8000๋…„ ํ•ญ์•„๋ฆฌ ์™€์ธ", "desc_en": "Ancient Qvevri wine."}
205
+ ],
206
+ "Czech Republic ๐Ÿ‡จ๐Ÿ‡ฟ": [
207
+ {"name": "Pilsner Urquell", "category": "Beer", "label": "๐Ÿบ Pilsner", "lat": 49.747, "lon": 13.388, "desc_ko": "๋ผ๊ฑฐ์˜ ์›์กฐ", "desc_en": "Birthplace of Pilsner."}
208
+ ]
209
+ }
210
+
211
+ db_json = json.dumps(PLACE_DB)
212
+
213
+ # 4. HTML/JS ์ „์ฒด ์ฝ”๋“œ
214
+ html_code = f"""
215
+ <!DOCTYPE html>
216
+ <html>
217
+ <head>
218
+ <meta charset="utf-8">
219
+ <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
220
+ <title>Drunken Plane Tour</title>
221
+
222
+ <script src="https://js.puter.com/v2/"></script>
223
+ <link rel="stylesheet" href="https://unpkg.com/leaflet@1.9.4/dist/leaflet.css" />
224
+ <script src="https://unpkg.com/leaflet@1.9.4/dist/leaflet.js"></script>
225
+
226
+ <style>
227
+ :root {{ --gold: #d4af37; --dark: #0a0a0a; --card-bg: #1c1c1c; --text: #e0e0e0; --accent: #c5a059; }}
228
+ body {{ margin: 0; padding: 0; background: var(--dark); color: var(--text); font-family: 'Segoe UI', sans-serif; overflow: hidden; }}
229
+
230
+ #main-page {{
231
+ position: absolute; top: 0; left: 0; width: 100%; height: 100vh;
232
+ background: linear-gradient(rgba(0,0,0,0.7), rgba(0,0,0,0.95)), url('https://images.unsplash.com/photo-1516981879613-9f5da904015f?q=80&w=2560&auto=format&fit=crop');
233
+ background-size: cover; background-position: center;
234
+ z-index: 5000; display: flex; flex-direction: column; align-items: center; justify-content: flex-start;
235
+ padding-top: 20px; box-sizing: border-box;
236
+ transition: transform 0.6s cubic-bezier(0.22, 1, 0.36, 1);
237
+ }}
238
+
239
+ .lang-switcher {{ position: absolute; top: 20px; right: 20px; z-index: 6000; display: flex; gap: 8px; }}
240
+ .lang-btn {{ background: rgba(0,0,0,0.5); border: 1px solid #555; color: #aaa; padding: 5px 10px; border-radius: 15px; cursor: pointer; font-size: 12px; font-weight: bold; transition: all 0.2s; }}
241
+ .lang-btn.active {{ background: var(--gold); color: black; border-color: var(--gold); }}
242
+
243
+ .brand-title {{ font-size: 24px; font-weight: 900; color: var(--gold); letter-spacing: 4px; margin: 20px 0 0 0; text-transform: uppercase; }}
244
+ .brand-subtitle {{ font-size: 11px; color: #ccc; letter-spacing: 2px; margin-bottom: 20px; }}
245
+
246
+ .country-select-wrapper {{ width: 80%; max-width: 400px; margin-bottom: 15px; }}
247
+ .country-select {{
248
+ width: 100%; padding: 12px; background: rgba(30,30,30,0.9); border: 1px solid var(--gold);
249
+ color: white; font-size: 16px; border-radius: 8px; outline: none; appearance: none;
250
+ background-image: url("data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22292.4%22%20height%3D%22292.4%22%3E%3Cpath%20fill%3D%22%23d4af37%22%20d%3D%22M287%2069.4a17.6%2017.6%200%200%200-13-5.4H18.4c-5%200-9.3%201.8-12.9%205.4A17.6%2017.6%200%200%200%200%2082.2c0%205%201.8%209.3%205.4%2012.9l128%20127.9c3.6%203.6%207.8%205.4%2012.8%205.4s9.2-1.8%2012.8-5.4L287%2095c3.5-3.5%205.4-7.8%205.4-12.8%200-5-1.9-9.2-5.5-12.8z%22%2F%3E%3C%2Fsvg%3E");
251
+ background-repeat: no-repeat; background-position: right 15px top 50%; background-size: 12px auto;
252
+ }}
253
+
254
+ .type-filter-container {{ width: 100%; padding: 10px 20px; overflow-x: auto; display: flex; gap: 8px; scrollbar-width: none; }}
255
+ .type-btn {{ padding: 6px 14px; border-radius: 20px; font-size: 12px; font-weight: bold; cursor: pointer; background: #222; color: #888; border: 1px solid #444; white-space: nowrap; transition: all 0.2s; display: flex; align-items: center; gap: 5px; }}
256
+ .type-btn.selected {{ background: var(--gold); color: black; border-color: var(--gold); }}
257
+
258
+ .place-list-container {{ width: 100%; max-width: 600px; flex: 1; overflow-y: auto; padding: 10px 20px 50px 20px; box-sizing: border-box; }}
259
+ .place-card {{ background: rgba(30,30,30,0.6); backdrop-filter: blur(10px); border: 1px solid rgba(255,255,255,0.1); border-radius: 12px; padding: 15px; margin-bottom: 12px; cursor: pointer; transition: all 0.2s; display: flex; flex-direction: column; position: relative; }}
260
+ .place-card:active {{ transform: scale(0.98); border-color: var(--gold); }}
261
+
262
+ .card-header {{ display: flex; justify-content: space-between; align-items: flex-start; margin-bottom: 5px; }}
263
+ .card-label {{ font-size: 10px; background: rgba(212, 175, 55, 0.2); color: var(--gold); padding: 3px 8px; border-radius: 4px; font-weight: bold; border: 1px solid var(--gold); }}
264
+ .pc-name {{ font-size: 16px; font-weight: bold; color: white; }}
265
+ .pc-desc {{ font-size: 12px; color: #bbb; line-height: 1.4; margin-top: 5px; }}
266
+ .pc-cta {{ margin-top: 10px; font-size: 11px; color: #666; text-align: right; }}
267
+
268
+ #detail-page {{ position: absolute; top: 0; left: 0; width: 100%; height: 100vh; transform: translateX(100%); transition: transform 0.5s cubic-bezier(0.22, 1, 0.36, 1); z-index: 6000; display: flex; flex-direction: column; background: #111; }}
269
+ .nav-bar {{ height: 50px; background: rgba(0,0,0,0.9); border-bottom: 1px solid #333; display: flex; align-items: center; padding: 0 15px; justify-content: space-between; }}
270
+ .back-btn {{ background: none; border: none; color: var(--gold); font-size: 24px; cursor: pointer; }}
271
+ #map {{ width: 100%; height: 35%; border-bottom: 2px solid var(--gold); }}
272
+ .report-container {{ flex: 1; overflow-y: auto; padding: 25px 20px 80px 20px; }}
273
+ .report-title {{ font-size: 24px; color: var(--gold); font-weight: bold; margin-bottom: 5px; }}
274
+ .report-meta {{ font-size: 12px; color: #666; margin-bottom: 20px; border-bottom: 1px solid #333; padding-bottom: 15px; }}
275
+ .ai-content {{ font-size: 15px; color: #ddd; line-height: 1.8; white-space: pre-wrap; }}
276
+ .gmap-btn {{ display: block; width: 90%; margin: 0 auto; padding: 15px 0; background: var(--gold); color: black; text-align: center; font-weight: bold; text-decoration: none; border-radius: 30px; position: fixed; bottom: 20px; left: 5%; z-index: 7000; }}
277
+ .gmap-btn.naver {{ background: #03C75A !important; color: white !important; }}
278
+
279
+ .loading-screen {{ position: absolute; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0,0,0,0.9); z-index: 8000; display: none; flex-direction: column; justify-content: center; align-items: center; }}
280
+ .loader-ring {{ width: 40px; height: 40px; border: 3px solid #333; border-top: 3px solid var(--gold); border-radius: 50%; animation: spin 1s linear infinite; margin-bottom: 15px; }}
281
+ .loader-text {{ color: var(--gold); font-family: monospace; font-size: 13px; text-align: center; }}
282
+ @keyframes spin {{ 0% {{ transform: rotate(0deg); }} 100% {{ transform: rotate(360deg); }} }}
283
+ </style>
284
+ </head>
285
+ <body>
286
+
287
+ <div id="main-page">
288
+ <div class="lang-switcher">
289
+ <div class="lang-btn active" onclick="setLanguage('KO', this)">๐Ÿ‡ฐ๐Ÿ‡ท</div>
290
+ <div class="lang-btn" onclick="setLanguage('EN', this)">๐Ÿ‡บ๐Ÿ‡ธ</div>
291
+ <div class="lang-btn" onclick="setLanguage('JP', this)">๐Ÿ‡ฏ๐Ÿ‡ต</div>
292
+ <div class="lang-btn" onclick="setLanguage('CN', this)">๐Ÿ‡จ๐Ÿ‡ณ</div>
293
+ </div>
294
+
295
+ <div style="text-align:center;">
296
+ <div class="brand-title">DRUNKEN PLANE</div>
297
+ <div id="app-subtitle" class="brand-subtitle">GLOBAL ALCOHOL HERITAGE TOUR</div>
298
+ </div>
299
+
300
+ <div class="country-select-wrapper">
301
+ <select id="country-select" class="country-select" onchange="selectCountry(this.value)"></select>
302
+ </div>
303
+
304
+ <div class="type-filter-container">
305
+ <div class="type-btn selected" id="filter-all" onclick="filterType('All', this)">๐ŸŒ All</div>
306
+ <div class="type-btn" id="filter-traditional" onclick="filterType('Traditional', this)">๐Ÿบ Traditional</div>
307
+ <div class="type-btn" id="filter-whiskey" onclick="filterType('Whiskey', this)">๐Ÿฅƒ Whiskey</div>
308
+ <div class="type-btn" id="filter-spirits" onclick="filterType('Spirits', this)">๐Ÿธ Spirits</div>
309
+ <div class="type-btn" id="filter-beer" onclick="filterType('Beer', this)">๐Ÿบ Beer</div>
310
+ <div class="type-btn" id="filter-wine" onclick="filterType('Wine', this)">๐Ÿท Wine</div>
311
+ <div class="type-btn" id="filter-bar" onclick="filterType('Bar', this)">๐Ÿน Bar</div>
312
+ </div>
313
+
314
+ <div class="place-list-container" id="place-list"></div>
315
+ </div>
316
+
317
+ <div id="detail-page">
318
+ <div class="nav-bar">
319
+ <button class="back-btn" onclick="goBack()">โ†</button>
320
+ <div id="report-header" style="color:white; font-weight:bold;">TRAVEL REPORT</div>
321
+ <div style="width:24px;"></div>
322
+ </div>
323
+ <div id="map"></div>
324
+ <div class="report-container">
325
+ <div id="repo-title" class="report-title"></div>
326
+ <div id="repo-meta" class="report-meta"></div>
327
+ <div id="repo-content" class="ai-content"></div>
328
+ </div>
329
+ <a id="gmap-link" href="#" target="_blank" class="gmap-btn">๐Ÿ—บ๏ธ Google Maps</a>
330
+ </div>
331
+
332
+ <div id="loader" class="loading-screen">
333
+ <div class="loader-ring"></div>
334
+ <div id="loader-msg" class="loader-text"></div>
335
+ </div>
336
+
337
+ <script>
338
+ const PLACE_DB = {db_json};
339
+
340
+ let map = null;
341
+ let currentMarker = null;
342
+ let selectedCountry = "";
343
+ let selectedType = "All";
344
+ let currentLang = "KO";
345
+
346
+ const TRANSLATIONS = {{
347
+ "KO": {{
348
+ "subtitle": "๊ธ€๋กœ๋ฒŒ ์ฃผ๋ฅ˜ ํ—ค๋ฆฌํ‹ฐ์ง€ ํˆฌ์–ด",
349
+ "filters": {{ "All": "์ „์ฒด", "Whiskey": "์œ„์Šคํ‚ค", "Spirits": "์ฆ๋ฅ˜์ฃผ", "Beer": "๋งฅ์ฃผ", "Wine": "์™€์ธ", "Traditional": "์ „ํ†ต์ฃผ/ํ† ์†์ฃผ", "Bar": "๋ฐ”/ํŽ" }},
350
+ "report_header": "์—ฌํ–‰ ๋ฆฌํฌํŠธ",
351
+ "loader": "Puter AI๊ฐ€ ๋ฆฌํฌํŠธ๋ฅผ<br>์ž‘์„ฑํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค...",
352
+ "gmap": "๊ตฌ๊ธ€๋งต์—์„œ ๊ธธ์ฐพ๊ธฐ",
353
+ "nmap": "๋„ค์ด๋ฒ„ ์ง€๋„์—์„œ ๊ธธ์ฐพ๊ธฐ",
354
+ "cta": "AI ๋ฆฌ๋ทฐ ๋ณด๊ธฐ โ†’",
355
+ "ai_error": "AI ์—ฐ๊ฒฐ ๋ถˆ๊ฐ€. ์˜คํ”„๋ผ์ธ ์ •๋ณด๋กœ ๋Œ€์ฒดํ•ฉ๋‹ˆ๋‹ค."
356
+ }},
357
+ "EN": {{
358
+ "subtitle": "GLOBAL ALCOHOL HERITAGE TOUR",
359
+ "filters": {{ "All": "All", "Whiskey": "Whiskey", "Spirits": "Spirits", "Beer": "Beer", "Wine": "Wine", "Traditional": "Traditional", "Bar": "Bar" }},
360
+ "report_header": "TRAVEL REPORT",
361
+ "loader": "Puter AI is writing...",
362
+ "gmap": "Open in Google Maps",
363
+ "nmap": "Open in Naver Map",
364
+ "cta": "Read Review โ†’",
365
+ "ai_error": "AI connection failed. Running offline mode."
366
+ }},
367
+ "JP": {{
368
+ "subtitle": "ไธ–็•ŒใฎใŠ้…’ใƒ˜ใƒชใƒ†ใƒผใ‚ธใƒ„ใ‚ขใƒผ",
369
+ "filters": {{ "All": "ใ™ในใฆ", "Whiskey": "ใ‚ฆใ‚คใ‚นใ‚ญใƒผ", "Spirits": "่’ธ็•™้…’", "Beer": "ใƒ“ใƒผใƒซ", "Wine": "ใƒฏใ‚คใƒณ", "Traditional": "ไผ็ตฑ้…’", "Bar": "ใƒใƒผ" }},
370
+ "report_header": "ๆ—…่กŒใƒฌใƒใƒผใƒˆ",
371
+ "loader": "AIใŒไฝœๆˆไธญ...",
372
+ "gmap": "Googleใƒžใƒƒใƒ—ใง้–‹ใ",
373
+ "nmap": "Naverใƒžใƒƒใƒ—ใง้–‹ใ",
374
+ "cta": "ใƒฌใƒ“ใƒฅใƒผใ‚’่ฆ‹ใ‚‹ โ†’",
375
+ "ai_error": "ใ‚ชใƒ•ใƒฉใ‚คใƒณใƒขใƒผใƒ‰ใงๅฎŸ่กŒใ—ใพใ™ใ€‚"
376
+ }},
377
+ "CN": {{
378
+ "subtitle": "ๅ…จ็ƒ้…’็ฑป้—ไบงไน‹ๆ—…",
379
+ "filters": {{ "All": "ๅ…จ้ƒจ", "Whiskey": "ๅจๅฃซๅฟŒ", "Spirits": "็ƒˆ้…’", "Beer": "ๅ•ค้…’", "Wine": "่‘ก่„้…’", "Traditional": "ไผ ็ปŸ้…’", "Bar": "้…’ๅง" }},
380
+ "report_header": "ๆ—…ๆธธๆŠฅๅ‘Š",
381
+ "loader": "AIๆญฃๅœจๅ†™ไฝœ...",
382
+ "gmap": "ๅœจ่ฐทๆญŒๅœฐๅ›พไธญๆ‰“ๅผ€",
383
+ "nmap": "ๅœจNaverๅœฐๅ›พไธญๆ‰“ๅผ€",
384
+ "cta": "ๆŸฅ็œ‹่ฏ„่ฎบ โ†’",
385
+ "ai_error": "ไปฅ็ฆป็บฟๆจกๅผ่ฟ่กŒใ€‚"
386
+ }}
387
+ }};
388
+
389
+ window.onload = function() {{
390
+ initCountryDropdown();
391
+ // Default select
392
+ const keys = Object.keys(PLACE_DB).sort();
393
+ const defaultKey = keys.find(k => k.includes("Korea")) || keys[0];
394
+ document.getElementById('country-select').value = defaultKey;
395
+ selectCountry(defaultKey);
396
+ updateUIText();
397
+ }};
398
+
399
+ function setLanguage(lang, el) {{
400
+ currentLang = lang;
401
+ document.querySelectorAll('.lang-btn').forEach(b => b.classList.remove('active'));
402
+ el.classList.add('active');
403
+ updateUIText();
404
+ renderList();
405
+ }}
406
+
407
+ function updateUIText() {{
408
+ const t = TRANSLATIONS[currentLang];
409
+ document.getElementById('app-subtitle').innerText = t.subtitle;
410
+ document.getElementById('report-header').innerText = t.report_header;
411
+ document.getElementById('loader-msg').innerHTML = t.loader;
412
+
413
+ document.getElementById('filter-all').innerText = `๐ŸŒ ${{t.filters.All}}`;
414
+ document.getElementById('filter-whiskey').innerText = `๐Ÿฅƒ ${{t.filters.Whiskey}}`;
415
+ document.getElementById('filter-spirits').innerText = `๐Ÿธ ${{t.filters.Spirits}}`;
416
+ document.getElementById('filter-beer').innerText = `๐Ÿบ ${{t.filters.Beer}}`;
417
+ document.getElementById('filter-wine').innerText = `๐Ÿท ${{t.filters.Wine}}`;
418
+ document.getElementById('filter-traditional').innerText = `๐Ÿบ ${{t.filters.Traditional}}`;
419
+ document.getElementById('filter-bar').innerText = `๐Ÿน ${{t.filters.Bar}}`;
420
+ }}
421
+
422
+ function initCountryDropdown() {{
423
+ const select = document.getElementById('country-select');
424
+ const keys = Object.keys(PLACE_DB).sort();
425
+ keys.forEach(country => {{
426
+ const option = document.createElement('option');
427
+ option.value = country;
428
+ option.text = country;
429
+ select.appendChild(option);
430
+ }});
431
+ }}
432
+
433
+ function selectCountry(country) {{
434
+ selectedCountry = country;
435
+ renderList();
436
+ }}
437
+
438
+ function filterType(type, el) {{
439
+ selectedType = type;
440
+ document.querySelectorAll('.type-btn').forEach(b => b.classList.remove('selected'));
441
+ el.classList.add('selected');
442
+ renderList();
443
+ }}
444
+
445
+ function renderList() {{
446
+ const list = document.getElementById('place-list');
447
+ list.innerHTML = "";
448
+
449
+ const places = PLACE_DB[selectedCountry];
450
+ const filtered = selectedType === "All" ? places : places.filter(p => p.category === selectedType);
451
+
452
+ if (filtered.length === 0) {{
453
+ list.innerHTML = "<div style='color:#888; text-align:center; padding:20px;'>No places found.</div>";
454
+ return;
455
+ }}
456
+
457
+ const t = TRANSLATIONS[currentLang];
458
+
459
+ filtered.forEach(place => {{
460
+ const card = document.createElement('div');
461
+ card.className = 'place-card';
462
+ card.onclick = () => openDetail(place);
463
+
464
+ let desc = currentLang === 'KO' ? place.desc_ko : place.desc_en;
465
+ if(currentLang === 'JP' || currentLang === 'CN') desc = place.desc_en;
466
+
467
+ card.innerHTML = `
468
+ <div class="card-header">
469
+ <div class="pc-name">${{place.name}}</div>
470
+ <div class="card-label">${{place.label}}</div>
471
+ </div>
472
+ <div class="pc-desc">${{desc}}</div>
473
+ <div class="pc-cta">${{t.cta}}</div>
474
+ `;
475
+ list.appendChild(card);
476
+ }});
477
+ }}
478
+
479
+ async function openDetail(place) {{
480
+ document.getElementById('main-page').style.transform = 'translateX(-30%)';
481
+ document.getElementById('detail-page').style.transform = 'translateX(0%)';
482
+ document.getElementById('loader').style.display = 'flex';
483
+
484
+ document.getElementById('repo-title').innerText = place.name;
485
+ document.getElementById('repo-meta').innerText = `${{place.label}} โ€ข ${{selectedCountry}}`;
486
+
487
+ // ๐Ÿ”ฅ Map Logic: Korea -> Naver, Others -> Google
488
+ const btn = document.getElementById('gmap-link');
489
+ const isKorea = selectedCountry.includes("Korea");
490
+ const query = encodeURIComponent(place.name);
491
+
492
+ if (isKorea) {{
493
+ btn.innerText = TRANSLATIONS[currentLang].nmap;
494
+ btn.classList.add("naver");
495
+ btn.href = `https://map.naver.com/v5/search/${{query}}`;
496
+ }} else {{
497
+ btn.innerText = TRANSLATIONS[currentLang].gmap;
498
+ btn.classList.remove("naver");
499
+ btn.href = `https://www.google.com/maps/search/?api=1&query=${{query}}%20${{selectedCountry}}`;
500
+ }}
501
+
502
+ document.getElementById('repo-content').innerHTML = "";
503
+
504
+ if (!map) {{
505
+ map = L.map('map');
506
+ L.tileLayer('https://{{s}}.tile.openstreetmap.org/{{z}}/{{x}}/{{y}}.png', {{ attribution: 'ยฉ OpenStreetMap' }}).addTo(map);
507
+ }}
508
+ setTimeout(() => {{
509
+ map.invalidateSize();
510
+ map.setView([place.lat, place.lon], 15);
511
+ if (currentMarker) map.removeLayer(currentMarker);
512
+ currentMarker = L.marker([place.lat, place.lon]).addTo(map).bindPopup(place.name).openPopup();
513
+ }}, 300);
514
+
515
+ let fallbackDesc = currentLang === 'KO' ? place.desc_ko : place.desc_en;
516
+ if(currentLang === 'JP' || currentLang === 'CN') fallbackDesc = place.desc_en;
517
+
518
+ await generatePuterReport(place, fallbackDesc);
519
+ }}
520
+
521
+ async function generatePuterReport(place, fallbackDesc) {{
522
+ let langFull = "Korean";
523
+ if(currentLang === "EN") langFull = "English";
524
+ if(currentLang === "JP") langFull = "Japanese";
525
+ if(currentLang === "CN") langFull = "Chinese";
526
+
527
+ const prompt = `
528
+ Act as a professional alcohol critic and travel expert.
529
+ Write a detailed analysis of "${{place.name}}" in ${{selectedCountry}}.
530
+
531
+ Strictly follow this structure:
532
+ 1. ๐Ÿ“ **Address**: (Find approximate address)
533
+ 2. โญ **Reputation**: (Summarize visitor ratings and atmosphere)
534
+ 3. ๐Ÿท **Signature Drink & Process**: (Describe the key drink and brief brewing/distilling process)
535
+ 4. โœจ **The Experience**: (What makes this place special?)
536
+
537
+ Language: ${{langFull}}.
538
+ Length: Concise but detailed (approx 600 chars).
539
+ Format: Clean Markdown.
540
+ `;
541
+
542
+ try {{
543
+ // Puter.js ํ˜ธ์ถœ
544
+ const response = await puter.ai.chat(prompt);
545
+
546
+ let text = "";
547
+ if (typeof response === 'string') {{
548
+ text = response;
549
+ }} else if (response && response.message && response.message.content) {{
550
+ text = response.message.content;
551
+ }} else {{
552
+ throw new Error("Invalid Puter response");
553
+ }}
554
+
555
+ document.getElementById('loader').style.display = 'none';
556
+
557
+ // ํƒ€์ดํ•‘ ํšจ๊ณผ ์ œ๊ฑฐ -> ์ฆ‰์‹œ ๋ Œ๋”๋ง
558
+ const el = document.getElementById('repo-content');
559
+ el.innerHTML = text.replace(/\\n/g, '<br>');
560
+
561
+ }} catch(e) {{
562
+ console.warn(e);
563
+ generateLocalReport(place, fallbackDesc);
564
+ }}
565
+ }}
566
+
567
+ function generateLocalReport(place, dbDesc) {{
568
+ document.getElementById('loader').style.display = 'none';
569
+ const report = `
570
+ โœจ **[Offline Info] ${{TRANSLATIONS[currentLang].ai_error}}**
571
+
572
+ **${{place.name}}**
573
+
574
+ ${{dbDesc}}
575
+
576
+ This place is highly recommended for travelers seeking authentic experiences in ${{selectedCountry}}.
577
+ You can enjoy unique flavors and a great atmosphere here.
578
+
579
+ (Click the Map button below for details.)
580
+ `;
581
+
582
+ const el = document.getElementById('repo-content');
583
+ el.innerHTML = report.replace(/\\n/g, '<br>');
584
+ }}
585
+
586
+ function goBack() {{
587
+ document.getElementById('detail-page').style.transform = 'translateX(100%)';
588
+ document.getElementById('main-page').style.transform = 'translateX(0%)';
589
+ }}
590
+
591
+ </script>
592
+ </body>
593
+ </html>
594
+ """
595
+
596
+ components.html(html_code, height=1000, scrolling=True)