Compare commits
5 Commits
b6cad2a241
...
newlogic_n
| Author | SHA1 | Date | |
|---|---|---|---|
| 6153b70c1e | |||
| 47134525b8 | |||
| fe177abd85 | |||
| 79ea65c74b | |||
| 1ffea0f61f |
@ -1,11 +1,4 @@
|
|||||||
rank,Latitude,Longitude,Name of City,Country,2021 Population,2020 Population,Growth,Population Difference,Population Change
|
rank,Latitude,Longitude,Name of City,Country,2021 Population,2020 Population,Growth,Population Difference,Population Change
|
||||||
17,6.4550575,3.3941795,Lagos,Nigeria,14862111,14368332,0.0344,493779,grew
|
|
||||||
18,14.5907332,120.9809674,Manila,Philippines,14158573,13923452,0.0169,235121,grew
|
|
||||||
19,39.0856735,117.1951073,Tianjin,China,13794450,13589078,0.0151,205372,grew
|
|
||||||
20,23.1301964,113.2592945,Guangzhou,China,13635397,13301532,0.0251,333865,grew
|
|
||||||
21,-22.9110137,-43.2093727,Rio de Janeiro,Brazil,13544462,13458075,0.0064,86387,grew
|
|
||||||
22,31.5656822,74.3141829,Lahore,Pakistan,13095166,12642423,0.0358,452743,grew
|
|
||||||
23,12.9767936,77.590082,Bangalore,India,12764935,12326532,0.0356,438403,grew
|
|
||||||
24,55.7504461,37.6174943,Moscow,Russia,12593252,12537954,0.0044,55298,grew
|
24,55.7504461,37.6174943,Moscow,Russia,12593252,12537954,0.0044,55298,grew
|
||||||
25,22.555454,114.0543297,Shenzhen,China,12591696,12356820,0.019,234876,grew
|
25,22.555454,114.0543297,Shenzhen,China,12591696,12356820,0.019,234876,grew
|
||||||
26,13.0836939,80.270186,Chennai,India,11235018,10971108,0.0241,263910,grew
|
26,13.0836939,80.270186,Chennai,India,11235018,10971108,0.0241,263910,grew
|
||||||
|
|||||||
|
@ -2096,3 +2096,717 @@ City,Website URL,Email
|
|||||||
"Manila,"http://www.bahaytsinoy.org/","null"
|
"Manila,"http://www.bahaytsinoy.org/","null"
|
||||||
"Manila,"http://malacanang.gov.ph/","pml@malacanang.gov.ph"
|
"Manila,"http://malacanang.gov.ph/","pml@malacanang.gov.ph"
|
||||||
"Manila,"http://intramuros.gov.ph/","null"
|
"Manila,"http://intramuros.gov.ph/","null"
|
||||||
|
"Manila,"http://www.nationalmuseum.gov.ph/#page=page-1","null"
|
||||||
|
"Manila,"https://museosanagustin.com/","null"
|
||||||
|
"Manila,"https://www.nationalmuseum.gov.ph/our-museums/national-museum-of-natural-history/","null"
|
||||||
|
"Manila,"https://www.facebook.com/nationalmuseumofthephilippines/","null"
|
||||||
|
"Manila,"https://www.facebook.com/museofilipino","flowerstoriesweddings@gmail.com"
|
||||||
|
"Manila,"http://www.bahaytsinoy.org/","null"
|
||||||
|
"Manila,"http://malacanang.gov.ph/","pml@malacanang.gov.ph"
|
||||||
|
"Manila,"http://intramuros.gov.ph/","null"
|
||||||
|
"Manila,"http://www.nationalmuseum.gov.ph/index.html#page=page-1","null"
|
||||||
|
"Manila,"http://www.museopambata.org/","null"
|
||||||
|
"Manila,"http://www.mcadmanila.org.ph/","mcad@benilde.edu.ph"
|
||||||
|
"Manila,"http://www.facebook.com/pages/Intramuros-Rizal-Bagumbayan-Light-Sound-Museum/130520447058610","null"
|
||||||
|
"Manila,"http://www.facebook.com/SilahisCenter/","export@silahis.com"
|
||||||
|
"Manila,"https://www.facebook.com/ChinatownMuseum/","chinatownmuseumph@gmail.com"
|
||||||
|
"Manila,"null","null"
|
||||||
|
"Manila,"http://www.travelsmart.net/article/105434/","null"
|
||||||
|
"Manila,"http://www.facebook.com/manilaclocktowermuseum","null"
|
||||||
|
"Manila,"http://ustmuseum.ust.edu.ph/","museum@mnl.ust.edu.ph"
|
||||||
|
"Manila,"null","null"
|
||||||
|
"Manila,"null","null"
|
||||||
|
"Manila,"http://www.nationalmuseum.gov.ph/#page=page-1","null"
|
||||||
|
"Manila,"https://museosanagustin.com/","null"
|
||||||
|
"Manila,"https://www.nationalmuseum.gov.ph/our-museums/national-museum-of-natural-history/","null"
|
||||||
|
"Manila,"https://www.facebook.com/nationalmuseumofthephilippines/","null"
|
||||||
|
"Manila,"https://www.facebook.com/museofilipino","flowerstoriesweddings@gmail.com"
|
||||||
|
"Manila,"http://www.bahaytsinoy.org/","null"
|
||||||
|
"Manila,"http://malacanang.gov.ph/","pml@malacanang.gov.ph"
|
||||||
|
"Manila,"http://intramuros.gov.ph/","null"
|
||||||
|
"Manila,"http://www.nationalmuseum.gov.ph/index.html#page=page-1","null"
|
||||||
|
"Manila,"http://www.museopambata.org/","null"
|
||||||
|
"Manila,"http://www.mcadmanila.org.ph/","mcad@benilde.edu.ph"
|
||||||
|
"Manila,"http://www.facebook.com/pages/Intramuros-Rizal-Bagumbayan-Light-Sound-Museum/130520447058610","null"
|
||||||
|
"Manila,"http://www.facebook.com/SilahisCenter/","export@silahis.com"
|
||||||
|
"Manila,"https://www.facebook.com/ChinatownMuseum/","chinatownmuseumph@gmail.com"
|
||||||
|
"Manila,"null","null"
|
||||||
|
"Manila,"http://www.travelsmart.net/article/105434/","null"
|
||||||
|
"Manila,"http://www.facebook.com/manilaclocktowermuseum","null"
|
||||||
|
"Manila,"http://ustmuseum.ust.edu.ph/","museum@mnl.ust.edu.ph"
|
||||||
|
"Manila,"null","null"
|
||||||
|
"Manila,"null","null"
|
||||||
|
"Manila,"http://www.nationalmuseum.gov.ph/#page=page-1","null"
|
||||||
|
"Manila,"https://museosanagustin.com/","null"
|
||||||
|
"Manila,"https://www.nationalmuseum.gov.ph/our-museums/national-museum-of-natural-history/","null"
|
||||||
|
"Manila,"https://www.facebook.com/nationalmuseumofthephilippines/","null"
|
||||||
|
"Manila,"https://www.facebook.com/museofilipino","flowerstoriesweddings@gmail.com"
|
||||||
|
"Manila,"http://www.bahaytsinoy.org/","null"
|
||||||
|
"Manila,"http://malacanang.gov.ph/","pml@malacanang.gov.ph"
|
||||||
|
"Manila,"http://intramuros.gov.ph/","null"
|
||||||
|
"Manila,"http://www.nationalmuseum.gov.ph/index.html#page=page-1","null"
|
||||||
|
"Manila,"http://www.museopambata.org/","null"
|
||||||
|
"Manila,"http://www.mcadmanila.org.ph/","mcad@benilde.edu.ph"
|
||||||
|
"Manila,"http://www.facebook.com/pages/Intramuros-Rizal-Bagumbayan-Light-Sound-Museum/130520447058610","null"
|
||||||
|
"Manila,"http://www.facebook.com/SilahisCenter/","export@silahis.com"
|
||||||
|
"Manila,"https://www.facebook.com/ChinatownMuseum/","chinatownmuseumph@gmail.com"
|
||||||
|
"Manila,"null","null"
|
||||||
|
"Manila,"http://www.travelsmart.net/article/105434/","null"
|
||||||
|
"Manila,"http://www.facebook.com/manilaclocktowermuseum","null"
|
||||||
|
"Manila,"http://ustmuseum.ust.edu.ph/","museum@mnl.ust.edu.ph"
|
||||||
|
"Manila,"null","null"
|
||||||
|
"Manila,"null","null"
|
||||||
|
"Manila,"http://www.nationalmuseum.gov.ph/#page=page-1","null"
|
||||||
|
"Manila,"https://museosanagustin.com/","null"
|
||||||
|
"Manila,"https://www.nationalmuseum.gov.ph/our-museums/national-museum-of-natural-history/","null"
|
||||||
|
"Manila,"https://www.facebook.com/nationalmuseumofthephilippines/","null"
|
||||||
|
"Manila,"https://www.facebook.com/museofilipino","flowerstoriesweddings@gmail.com"
|
||||||
|
"Manila,"http://www.bahaytsinoy.org/","null"
|
||||||
|
"Manila,"http://malacanang.gov.ph/","pml@malacanang.gov.ph"
|
||||||
|
"Manila,"http://intramuros.gov.ph/","null"
|
||||||
|
"Manila,"http://www.nationalmuseum.gov.ph/index.html#page=page-1","null"
|
||||||
|
"Manila,"http://www.museopambata.org/","null"
|
||||||
|
"Manila,"http://www.mcadmanila.org.ph/","mcad@benilde.edu.ph"
|
||||||
|
"Manila,"http://www.facebook.com/pages/Intramuros-Rizal-Bagumbayan-Light-Sound-Museum/130520447058610","null"
|
||||||
|
"Manila,"http://www.facebook.com/SilahisCenter/","export@silahis.com"
|
||||||
|
"Manila,"https://www.facebook.com/ChinatownMuseum/","chinatownmuseumph@gmail.com"
|
||||||
|
"Manila,"null","null"
|
||||||
|
"Manila,"http://www.travelsmart.net/article/105434/","null"
|
||||||
|
"Manila,"http://www.facebook.com/manilaclocktowermuseum","null"
|
||||||
|
"Manila,"http://ustmuseum.ust.edu.ph/","museum@mnl.ust.edu.ph"
|
||||||
|
"Manila,"null","null"
|
||||||
|
"Manila,"null","null"
|
||||||
|
"Manila,"http://www.nationalmuseum.gov.ph/#page=page-1","null"
|
||||||
|
"Manila,"https://museosanagustin.com/","null"
|
||||||
|
"Manila,"https://www.nationalmuseum.gov.ph/our-museums/national-museum-of-natural-history/","null"
|
||||||
|
"Manila,"https://www.facebook.com/nationalmuseumofthephilippines/","null"
|
||||||
|
"Manila,"https://www.facebook.com/museofilipino","flowerstoriesweddings@gmail.com"
|
||||||
|
"Manila,"http://www.bahaytsinoy.org/","null"
|
||||||
|
"Manila,"http://malacanang.gov.ph/","pml@malacanang.gov.ph"
|
||||||
|
"Manila,"http://intramuros.gov.ph/","null"
|
||||||
|
"Manila,"http://www.nationalmuseum.gov.ph/index.html#page=page-1","null"
|
||||||
|
"Manila,"http://www.museopambata.org/","null"
|
||||||
|
"Manila,"http://www.mcadmanila.org.ph/","mcad@benilde.edu.ph"
|
||||||
|
"Manila,"http://www.facebook.com/pages/Intramuros-Rizal-Bagumbayan-Light-Sound-Museum/130520447058610","null"
|
||||||
|
"Manila,"http://www.facebook.com/SilahisCenter/","export@silahis.com"
|
||||||
|
"Manila,"https://www.facebook.com/ChinatownMuseum/","chinatownmuseumph@gmail.com"
|
||||||
|
"Manila,"null","null"
|
||||||
|
"Manila,"http://www.travelsmart.net/article/105434/","null"
|
||||||
|
"Manila,"http://www.facebook.com/manilaclocktowermuseum","null"
|
||||||
|
"Manila,"http://ustmuseum.ust.edu.ph/","museum@mnl.ust.edu.ph"
|
||||||
|
"Manila,"null","null"
|
||||||
|
"Manila,"null","null"
|
||||||
|
"Manila,"http://www.nationalmuseum.gov.ph/#page=page-1","null"
|
||||||
|
"Manila,"https://museosanagustin.com/","null"
|
||||||
|
"Manila,"https://www.nationalmuseum.gov.ph/our-museums/national-museum-of-natural-history/","null"
|
||||||
|
"Manila,"https://www.facebook.com/nationalmuseumofthephilippines/","null"
|
||||||
|
"Manila,"https://www.facebook.com/museofilipino","flowerstoriesweddings@gmail.com"
|
||||||
|
"Manila,"http://www.bahaytsinoy.org/","null"
|
||||||
|
"Manila,"http://malacanang.gov.ph/","pml@malacanang.gov.ph"
|
||||||
|
"Manila,"http://intramuros.gov.ph/","null"
|
||||||
|
"Manila,"http://www.nationalmuseum.gov.ph/index.html#page=page-1","null"
|
||||||
|
"Manila,"http://www.museopambata.org/","null"
|
||||||
|
"Manila,"http://www.mcadmanila.org.ph/","mcad@benilde.edu.ph"
|
||||||
|
"Manila,"http://www.facebook.com/pages/Intramuros-Rizal-Bagumbayan-Light-Sound-Museum/130520447058610","null"
|
||||||
|
"Manila,"http://www.facebook.com/SilahisCenter/","export@silahis.com"
|
||||||
|
"Manila,"https://www.facebook.com/ChinatownMuseum/","chinatownmuseumph@gmail.com"
|
||||||
|
"Manila,"null","null"
|
||||||
|
"Manila,"http://www.travelsmart.net/article/105434/","null"
|
||||||
|
"Manila,"http://www.facebook.com/manilaclocktowermuseum","null"
|
||||||
|
"Manila,"http://ustmuseum.ust.edu.ph/","museum@mnl.ust.edu.ph"
|
||||||
|
"Manila,"null","null"
|
||||||
|
"Manila,"null","null"
|
||||||
|
"Manila,"http://www.nationalmuseum.gov.ph/#page=page-1","null"
|
||||||
|
"Manila,"https://museosanagustin.com/","null"
|
||||||
|
"Manila,"https://www.nationalmuseum.gov.ph/our-museums/national-museum-of-natural-history/","null"
|
||||||
|
"Manila,"null","null"
|
||||||
|
"Manila,"null","null"
|
||||||
|
"Manila,"http://www.bahaytsinoy.org/","null"
|
||||||
|
"Manila,"http://malacanang.gov.ph/","pml@malacanang.gov.ph"
|
||||||
|
"Manila,"http://intramuros.gov.ph/","null"
|
||||||
|
"Manila,"http://www.nationalmuseum.gov.ph/index.html#page=page-1","null"
|
||||||
|
"Manila,"http://www.museopambata.org/","null"
|
||||||
|
"Manila,"http://www.mcadmanila.org.ph/","mcad@benilde.edu.ph"
|
||||||
|
"Manila,"http://www.facebook.com/pages/Intramuros-Rizal-Bagumbayan-Light-Sound-Museum/130520447058610","null"
|
||||||
|
"Manila,"http://www.facebook.com/SilahisCenter/","export@silahis.com"
|
||||||
|
"Manila,"https://www.facebook.com/ChinatownMuseum/","chinatownmuseumph@gmail.com"
|
||||||
|
"Manila,"null","null"
|
||||||
|
"Manila,"http://www.travelsmart.net/article/105434/","null"
|
||||||
|
"Manila,"http://www.facebook.com/manilaclocktowermuseum","null"
|
||||||
|
"Manila,"http://ustmuseum.ust.edu.ph/","museum@mnl.ust.edu.ph"
|
||||||
|
"Manila,"null","null"
|
||||||
|
"Manila,"null","null"
|
||||||
|
"Manila,"http://www.nationalmuseum.gov.ph/#page=page-1","null"
|
||||||
|
"Manila,"https://museosanagustin.com/","null"
|
||||||
|
"Manila,"https://www.nationalmuseum.gov.ph/our-museums/national-museum-of-natural-history/","null"
|
||||||
|
"Manila,"https://www.facebook.com/nationalmuseumofthephilippines/","null"
|
||||||
|
"Manila,"https://www.facebook.com/museofilipino","flowerstoriesweddings@gmail.com"
|
||||||
|
"Manila,"http://www.bahaytsinoy.org/","null"
|
||||||
|
"Manila,"http://malacanang.gov.ph/","pml@malacanang.gov.ph"
|
||||||
|
"Manila,"http://intramuros.gov.ph/","null"
|
||||||
|
"Manila,"http://www.nationalmuseum.gov.ph/index.html#page=page-1","null"
|
||||||
|
"Manila,"http://www.museopambata.org/","null"
|
||||||
|
"Manila,"http://www.mcadmanila.org.ph/","mcad@benilde.edu.ph"
|
||||||
|
"Manila,"http://www.facebook.com/pages/Intramuros-Rizal-Bagumbayan-Light-Sound-Museum/130520447058610","null"
|
||||||
|
"Manila,"http://www.facebook.com/SilahisCenter/","export@silahis.com"
|
||||||
|
"Manila,"https://www.facebook.com/ChinatownMuseum/","chinatownmuseumph@gmail.com"
|
||||||
|
"Manila,"null","null"
|
||||||
|
"Manila,"http://www.travelsmart.net/article/105434/","null"
|
||||||
|
"Manila,"http://www.facebook.com/manilaclocktowermuseum","null"
|
||||||
|
"Manila,"http://ustmuseum.ust.edu.ph/","museum@mnl.ust.edu.ph"
|
||||||
|
"Manila,"null","null"
|
||||||
|
"Manila,"null","null"
|
||||||
|
"Manila,"http://www.nationalmuseum.gov.ph/#page=page-1","null"
|
||||||
|
"Manila,"https://museosanagustin.com/","null"
|
||||||
|
"Manila,"https://www.nationalmuseum.gov.ph/our-museums/national-museum-of-natural-history/","null"
|
||||||
|
"Manila,"https://www.facebook.com/nationalmuseumofthephilippines/","null"
|
||||||
|
"Manila,"https://www.facebook.com/museofilipino","flowerstoriesweddings@gmail.com"
|
||||||
|
"Manila,"http://www.bahaytsinoy.org/","null"
|
||||||
|
"Manila,"http://malacanang.gov.ph/","pml@malacanang.gov.ph"
|
||||||
|
"Manila,"http://intramuros.gov.ph/","null"
|
||||||
|
"Manila,"http://www.nationalmuseum.gov.ph/index.html#page=page-1","null"
|
||||||
|
"Manila,"http://www.museopambata.org/","null"
|
||||||
|
"Manila,"http://www.mcadmanila.org.ph/","mcad@benilde.edu.ph"
|
||||||
|
"Manila,"http://www.facebook.com/pages/Intramuros-Rizal-Bagumbayan-Light-Sound-Museum/130520447058610","null"
|
||||||
|
"Manila,"http://www.facebook.com/SilahisCenter/","export@silahis.com"
|
||||||
|
"Manila,"https://www.facebook.com/ChinatownMuseum/","chinatownmuseumph@gmail.com"
|
||||||
|
"Manila,"null","null"
|
||||||
|
"Manila,"http://www.travelsmart.net/article/105434/","null"
|
||||||
|
"Manila,"http://www.facebook.com/manilaclocktowermuseum","null"
|
||||||
|
"Manila,"http://ustmuseum.ust.edu.ph/","museum@mnl.ust.edu.ph"
|
||||||
|
"Manila,"null","null"
|
||||||
|
"Manila,"null","null"
|
||||||
|
"Manila,"http://www.nationalmuseum.gov.ph/#page=page-1","null"
|
||||||
|
"Manila,"https://museosanagustin.com/","null"
|
||||||
|
"Manila,"https://www.nationalmuseum.gov.ph/our-museums/national-museum-of-natural-history/","null"
|
||||||
|
"Manila,"https://www.facebook.com/nationalmuseumofthephilippines/","null"
|
||||||
|
"Manila,"https://www.facebook.com/museofilipino","flowerstoriesweddings@gmail.com"
|
||||||
|
"Manila,"http://www.bahaytsinoy.org/","null"
|
||||||
|
"Manila,"http://malacanang.gov.ph/","pml@malacanang.gov.ph"
|
||||||
|
"Manila,"http://intramuros.gov.ph/","null"
|
||||||
|
"Manila,"http://www.nationalmuseum.gov.ph/index.html#page=page-1","null"
|
||||||
|
"Manila,"http://www.museopambata.org/","null"
|
||||||
|
"Manila,"http://www.mcadmanila.org.ph/","mcad@benilde.edu.ph"
|
||||||
|
"Manila,"http://www.facebook.com/pages/Intramuros-Rizal-Bagumbayan-Light-Sound-Museum/130520447058610","null"
|
||||||
|
"Manila,"http://www.facebook.com/SilahisCenter/","export@silahis.com"
|
||||||
|
"Manila,"https://www.facebook.com/ChinatownMuseum/","chinatownmuseumph@gmail.com"
|
||||||
|
"Manila,"null","null"
|
||||||
|
"Manila,"http://www.travelsmart.net/article/105434/","null"
|
||||||
|
"Manila,"http://www.facebook.com/manilaclocktowermuseum","null"
|
||||||
|
"Manila,"http://ustmuseum.ust.edu.ph/","museum@mnl.ust.edu.ph"
|
||||||
|
"Manila,"null","null"
|
||||||
|
"Manila,"null","null"
|
||||||
|
"Tianjin,"http://www.tjbwg.com/","tjbwg_xxzx@126.com"
|
||||||
|
"Tianjin,"null","null"
|
||||||
|
"Tianjin,"http://www.tjnhm.org/","null"
|
||||||
|
"Tianjin,"null","null"
|
||||||
|
"Tianjin,"null","null"
|
||||||
|
"Tianjin,"null","null"
|
||||||
|
"Tianjin,"null","null"
|
||||||
|
"Tianjin,"null","null"
|
||||||
|
"Tianjin,"https://guojiahaiyang.com/","null"
|
||||||
|
"Tianjin,"null","null"
|
||||||
|
"Tianjin,"null","null"
|
||||||
|
"Tianjin,"null","null"
|
||||||
|
"Tianjin,"null","null"
|
||||||
|
"Tianjin,"http://www.mocf.org.cn/","lms@mocf.org.cn"
|
||||||
|
"Tianjin,"http://www.bhwhzx.cn/","null"
|
||||||
|
"Tianjin,"null","null"
|
||||||
|
"Tianjin,"null","null"
|
||||||
|
"Tianjin,"null","null"
|
||||||
|
"Tianjin,"null","null"
|
||||||
|
"Tianjin,"null","null"
|
||||||
|
"Tianjin,"http://www.tjmodernmuseum.org/","null"
|
||||||
|
"Tianjin,"null","null"
|
||||||
|
"Tianjin,"null","null"
|
||||||
|
"Tianjin,"null","null"
|
||||||
|
"Tianjin,"null","1192721748@qq.com"
|
||||||
|
"Tianjin,"http://www.tpeh.net/","null"
|
||||||
|
"Tianjin,"null","null"
|
||||||
|
"Tianjin,"null","null"
|
||||||
|
"Tianjin,"null","null"
|
||||||
|
"Tianjin,"null","null"
|
||||||
|
"Tianjin,"null","null"
|
||||||
|
"Tianjin,"null","null"
|
||||||
|
"Tianjin,"null","null"
|
||||||
|
"Tianjin,"null","null"
|
||||||
|
"Tianjin,"null","null"
|
||||||
|
"Tianjin,"null","null"
|
||||||
|
"Tianjin,"null","null"
|
||||||
|
"Tianjin,"null","null"
|
||||||
|
"Tianjin,"null","null"
|
||||||
|
"Tianjin,"null","null"
|
||||||
|
"Tianjin,"null","null"
|
||||||
|
"Tianjin,"null","null"
|
||||||
|
"Tianjin,"null","null"
|
||||||
|
"Tianjin,"null","null"
|
||||||
|
"Tianjin,"null","null"
|
||||||
|
"Tianjin,"null","null"
|
||||||
|
"Tianjin,"null","null"
|
||||||
|
"Tianjin,"null","null"
|
||||||
|
"Guangzhou,"null","null"
|
||||||
|
"Guangzhou,"http://www.eguangzhou.gov.cn/2018-09/07/c_269272.htm","null"
|
||||||
|
"Guangzhou,"http://www.gdmuseum.com/","null"
|
||||||
|
"Guangzhou,"http://www.guangzhoumuseum.cn/main.asp","guangzhoubwg@126.com"
|
||||||
|
"Guangzhou,"http://www.gdsc.cn/","null"
|
||||||
|
"Guangzhou,"http://www.gdmoa.org/","info@gdmon"
|
||||||
|
"Guangzhou,"null","null"
|
||||||
|
"Guangzhou,"http://www.gzam.com.cn/","gzam2005@126.com"
|
||||||
|
"Guangzhou,"http://theorientalmuseum.org/","dfbwg@qq.com"
|
||||||
|
"Guangzhou,"null","null"
|
||||||
|
"Guangzhou,"null","null"
|
||||||
|
"Guangzhou,"http://www.zhujiangbeer.com/qyzx/qywh/bwg/","null"
|
||||||
|
"Guangzhou,"null","null"
|
||||||
|
"Guangzhou,"null","null"
|
||||||
|
"Guangzhou,"null","null"
|
||||||
|
"Guangzhou,"http://www.gdhqbwg.com/","null"
|
||||||
|
"Guangzhou,"http://www.gemg1959.cn/","null"
|
||||||
|
"Guangzhou,"http://luxun.chinaspirit.net.cn/spjj.htm","null"
|
||||||
|
"Guangzhou,"null","null"
|
||||||
|
"Guangzhou,"null","null"
|
||||||
|
"Guangzhou,"http://www.xhgmjng.com/","null"
|
||||||
|
"Guangzhou,"null","null"
|
||||||
|
"Guangzhou,"http://www.newsgd.com/node_99363c4f3b/6d0d63c34a.shtml","null"
|
||||||
|
"Guangzhou,"http://www.leonacraig.com/","null"
|
||||||
|
"Guangzhou,"null","null"
|
||||||
|
"Guangzhou,"null","null"
|
||||||
|
"Guangzhou,"null","null"
|
||||||
|
"Guangzhou,"null","null"
|
||||||
|
"Guangzhou,"null","null"
|
||||||
|
"Guangzhou,"null","null"
|
||||||
|
"Guangzhou,"http://www.gzhsmuseum.com/","null"
|
||||||
|
"Guangzhou,"null","null"
|
||||||
|
"Guangzhou,"null","null"
|
||||||
|
"Guangzhou,"null","null"
|
||||||
|
"Guangzhou,"null","null"
|
||||||
|
"Guangzhou,"null","vip@cqvip.com"
|
||||||
|
"Guangzhou,"null","null"
|
||||||
|
"Guangzhou,"http://www.whbzt.com/","null"
|
||||||
|
"Guangzhou,"null","null"
|
||||||
|
"Guangzhou,"null","null"
|
||||||
|
"Guangzhou,"null","null"
|
||||||
|
"Guangzhou,"null","null"
|
||||||
|
"Guangzhou,"null","null"
|
||||||
|
"Guangzhou,"null","null"
|
||||||
|
"Guangzhou,"null","null"
|
||||||
|
"Guangzhou,"null","null"
|
||||||
|
"Guangzhou,"null","null"
|
||||||
|
"Rio de Janeiro,"http://www.museudoamanha.org.br/","contato@museudoamanha.org.br"
|
||||||
|
"Rio de Janeiro,"http://culturabancodobrasil.com.br/portal/rio-de-janeiro/","ccbbrio@bb.com.br"
|
||||||
|
"Rio de Janeiro,"http://www.aquariomarinhodorio.com.br/","contato@aquariomarinhodorio.com.br"
|
||||||
|
"Rio de Janeiro,"http://www.mhexfc.eb.mil.br/","null"
|
||||||
|
"Rio de Janeiro,"http://mhn.museus.gov.br/","faleconosco.mhn@museus.gov.br"
|
||||||
|
"Rio de Janeiro,"https://museudeartedorio.org.br/","null"
|
||||||
|
"Rio de Janeiro,"http://museudarepublica.museus.gov.br/","MR@museus.gov.br"
|
||||||
|
"Rio de Janeiro,"https://www.gov.br/museus/pt-br/museus-ibram/mnba","MNBA@museus.gov.br"
|
||||||
|
"Rio de Janeiro,"http://ims.com.br/unidade/rio-de-janeiro/","imsrj@ims.com.br"
|
||||||
|
"Rio de Janeiro,"http://museudarepublica.museus.gov.br/","null"
|
||||||
|
"Rio de Janeiro,"http://www2.fab.mil.br/musal","musal@musal.aer.mil.br"
|
||||||
|
"Rio de Janeiro,"http://www.mam.rio/","comunicacao@mam.rio"
|
||||||
|
"Rio de Janeiro,"http://museuscastromaya.com.br/","chacara@museuscastromaya.com.br"
|
||||||
|
"Rio de Janeiro,"http://www.marinha.mil.br/dphdm/espaco-cultural-da-marinha","faleconosco@dphdm.mar.mil.br"
|
||||||
|
"Rio de Janeiro,"http://www.museudopontal.org.br/","institucional@museudopontal.org.br"
|
||||||
|
"Rio de Janeiro,"http://www.casaruibarbosa.gov.br/","museu@rb.gov.br"
|
||||||
|
"Rio de Janeiro,"http://www.crab.sebrae.com.br/","crab@rj.sebrae.com.br"
|
||||||
|
"Rio de Janeiro,"http://www.caixacultural.com.br/","null"
|
||||||
|
"Rio de Janeiro,"http://www.flamengo.com.br/museu-do-flamengo-e-tour-da-gavea-","null"
|
||||||
|
"Rio de Janeiro,"http://outeirodagloria.org.br/","null"
|
||||||
|
"Rio de Janeiro,"https://www.facebook.com/1897719023853433","null"
|
||||||
|
"Rio de Janeiro,"http://www.museudefavela.org/","querovisitar@museudefavela.org"
|
||||||
|
"Rio de Janeiro,"http://www.alerj.rj.gov.br/","null"
|
||||||
|
"Rio de Janeiro,"http://www.museusdorio.com.br/joomla/index.php?option=com_k2&view=item&id=49:complexo-cultural-da-marinha-museu-naval-sede-da-dphdm","secon@dohdm.mar.mil.br"
|
||||||
|
"Rio de Janeiro,"http://www.museunaif.com/","mian@museunaif.com.br"
|
||||||
|
"Rio de Janeiro,"https://www.facebook.com/191424130887852","null"
|
||||||
|
"Rio de Janeiro,"http://www.fabricabhering.com/","null"
|
||||||
|
"Rio de Janeiro,"http://www.museuscastromaya.com.br/acude.htm","MDAC@museus.gov.br"
|
||||||
|
"Rio de Janeiro,"http://www.oifuturo.org.br/","null"
|
||||||
|
"Rio de Janeiro,"http://www.mar.mil.br/dphdm/riachu/riachu.htm","null"
|
||||||
|
"Rio de Janeiro,"http://www.mnmsgm.ensino.eb.br/","comsoc.mnmsgm@hotmail.com"
|
||||||
|
"Rio de Janeiro,"http://www.planetariodorio.com.br/","contato@planeta.rio"
|
||||||
|
"Rio de Janeiro,"http://www.museudavida.fiocruz.br/","museudavida@fiocruz.br"
|
||||||
|
"Rio de Janeiro,"http://www.mast.br/","null"
|
||||||
|
"Rio de Janeiro,"http://cidadecopacabana.com.br/","null"
|
||||||
|
"Rio de Janeiro,"http://www.fortedecopacabana.com/mmcl","mmcl@fortedecopacabana.com"
|
||||||
|
"Rio de Janeiro,"http://www.casadeculturalauraalvim.rj.gov.br/","null"
|
||||||
|
"Rio de Janeiro,"http://www.firjan.com.br/firjan/empresas/competitividade-empresarial/casa-firjan/quem-somos/","casafirjan@firjan.com.br"
|
||||||
|
"Rio de Janeiro,"null","museudesporto@dpep.ensino.eb.br"
|
||||||
|
"Rio de Janeiro,"http://www.pretosnovos.com.br/index.html","null"
|
||||||
|
"Rio de Janeiro,"https://www.tiaciata.org.br/","casa@tiaciata.org.br"
|
||||||
|
"Rio de Janeiro,"http://www.oifuturo.org.br/cultura/museu-das-telecomunicacoes/","faleconosco@oifuturo.org.br"
|
||||||
|
"Rio de Janeiro,"http://www.tourmaracana.com.br/ingressos","null"
|
||||||
|
"Rio de Janeiro,"http://www.jbrj.gov.br/visitacao/espacotomjobim","null"
|
||||||
|
"Rio de Janeiro,"http://www.cnfcp.gov.br/interna.php?ID_Secao=2","museu.folclore@iphan.gov.br"
|
||||||
|
"Rio de Janeiro,"http://www.evaklabin.org.br/","null"
|
||||||
|
"Rio de Janeiro,"http://www.museudamare.org.br/","null"
|
||||||
|
"Rio de Janeiro,"http://www.catedral.com.br/museuArteSacra.php","catedral@catedral.com.br"
|
||||||
|
"Rio de Janeiro,"http://www.pedeboi.com.br/","pedeboi@pedeboi.com.br"
|
||||||
|
"Rio de Janeiro,"http://www.cprm.gov.br/publique/cgi/cgilua.exe/sys/start.htm?sid=93&infoid=341","mcter.dnpm@dnpm.gov.br"
|
||||||
|
"Rio de Janeiro,"http://www.quintinofutebolclube.com.br/","null"
|
||||||
|
"Rio de Janeiro,"http://www.casadamoeda.gov.br/agendavisita/","null"
|
||||||
|
"Rio de Janeiro,"null","null"
|
||||||
|
"Rio de Janeiro,"http://www.bazardooriente.com.br/jimmy","null"
|
||||||
|
"Rio de Janeiro,"http://rioillusions.com/","contact@rioillusions.com.br"
|
||||||
|
"Rio de Janeiro,"null","null"
|
||||||
|
"Rio de Janeiro,"http://www.museuscastromaya.com.br/","null"
|
||||||
|
"Rio de Janeiro,"null","null"
|
||||||
|
"Rio de Janeiro,"null","null"
|
||||||
|
"Rio de Janeiro,"http://www.mar.mil.br/cgcfn/museu/index.htm","ronaldo@cgcfn.mar.mil.br"
|
||||||
|
"Rio de Janeiro,"http://www.casadaescadacolorida.com/","info@casadaescadacolorida.com"
|
||||||
|
"Rio de Janeiro,"http://www.museuimagensdoinconsciente.org.br/","null"
|
||||||
|
"Rio de Janeiro,"http://www.naucultural.com.br/","contato@naucultural.com.br"
|
||||||
|
"Rio de Janeiro,"http://www.flaexperience.com.br/","contato@flaexperience.com.br"
|
||||||
|
"Rio de Janeiro,"http://visit.rio/que_fazer/nave-do-conhecimento-e-museu-cidade-olimpica/","null"
|
||||||
|
"Rio de Janeiro,"http://www.museudoindio.gov.br/","atividades@museudoindio.org.br"
|
||||||
|
"Rio de Janeiro,"null","null"
|
||||||
|
"Rio de Janeiro,"http://www.museu.cbmerj.rj.gov.br/","museu@cbmerj.rj.gov.br"
|
||||||
|
"Rio de Janeiro,"http://www.conarq.gov.br/consulta-a-entidades/item/museu-da-justica.html","museudajustica@tjrj.jus.br"
|
||||||
|
"Rio de Janeiro,"http://www.mis.rj.gov.br/","null"
|
||||||
|
"Rio de Janeiro,"http://museudopontal.org.br/","institucional@museudopontal.org.br"
|
||||||
|
"Rio de Janeiro,"http://jbrj.gov.br/visitacao/museucasapiloes","sbarrer@jbrj.gov.br"
|
||||||
|
"Rio de Janeiro,"http://www.galeria-ipanema.com/","null"
|
||||||
|
"Rio de Janeiro,"http://www.bndes.gov.br/wps/portal/espacobndes/espacobndes/home/!ut/p/z1/04_Sj9CPykssy0xPLMnMz0vMAfIjo8ziTTxdXD0M3A18DEK9XA0cDf18DAwMvAz8TUz0wwkpiAJKG-AAjgZA_VFgJT6W3q4eJv4GPv5m3kATQh39Q4MsvY0NfEygCvCYUZAbYZDpqKgIAPJrVdg!/dz/d5/L2dBISEvZ0FBIS9nQSEh","null"
|
||||||
|
"Rio de Janeiro,"http://www.facebook.com/CMA.HelioOiticica","null"
|
||||||
|
"Rio de Janeiro,"http://www.facebook.com/laurindasantoslobo","null"
|
||||||
|
"Rio de Janeiro,"http://www.museudacidadedorio.com.br/","mcrj@pcrj.rj.gov.br"
|
||||||
|
"Rio de Janeiro,"http://sitioburlemarx.blogspot.com.br/","null"
|
||||||
|
"Rio de Janeiro,"http://www.pinakotheke.com.br/new/pinakotheke-rio-de-janeiro.php","null"
|
||||||
|
"Rio de Janeiro,"http://www.correios.com.br/sobreCorreios/educacaoCultura/centrosEspacosCulturais/default.cfm","null"
|
||||||
|
"Rio de Janeiro,"http://baukurs.com.br/","secretaria@baukurs.com.br"
|
||||||
|
"Rio de Janeiro,"http://www.facebook.com/MuseuCasaBenjaminConstant/","mcbc@museus.gov.br"
|
||||||
|
"Rio de Janeiro,"null","museubispodorosario@ig.com.br"
|
||||||
|
"Rio de Janeiro,"http://ererio.itamaraty.gov.br/pt-br/museu_historico_e_diplomatico.xml","ererio.museu@itamaraty.gov.br"
|
||||||
|
"Rio de Janeiro,"null","null"
|
||||||
|
"Rio de Janeiro,"http://www.casadaciencia.ufrj.br/","null"
|
||||||
|
"Rio de Janeiro,"http://museudomeioambiente.jbrj.gov.br/","museumeioambiente@jbrj.gov.br"
|
||||||
|
"Rio de Janeiro,"http://www.museuvillalobos.org.br/","mvillalobos@museuvillalobos.org.br"
|
||||||
|
"Rio de Janeiro,"http://www.facebook.com/memorialmunicipalgetuliovargas","memorialgetuliovargas.cultura@gmail.com"
|
||||||
|
"Rio de Janeiro,"null","null"
|
||||||
|
"Rio de Janeiro,"http://www.casadochoro.com.br/","null"
|
||||||
|
"Rio de Janeiro,"http://mapas.cultura.gov.br/espaco/6149/","imprensa@suderj.rj.gov.br"
|
||||||
|
"Rio de Janeiro,"null","gepro@inea.rj.gov.br"
|
||||||
|
"Rio de Janeiro,"http://www.belohorizonte.mg.gov.br/local/atrativo-turistico/artistico-cultural/museu-da-forca-expedicionaria-brasileira-feb","anvfeb@uol.com.br"
|
||||||
|
"Rio de Janeiro,"http://www.puc-rio.br/sobrepuc/depto/solar","null"
|
||||||
|
"Rio de Janeiro,"http://www.museujudaico.org.br/","museu@museujudaico.org.br"
|
||||||
|
"Rio de Janeiro,"http://www.oifuturo.org.br/cultura/oi-futuro-ipanema/","null"
|
||||||
|
"Rio de Janeiro,"http://www.casafrancabrasil.rj.gov.br/","null"
|
||||||
|
"Rio de Janeiro,"https://instagram.com/memorialdoholocaustorio?igshid=ndk5n2nlzjq=","null"
|
||||||
|
"Rio de Janeiro,"http://www.largodasartes.com.br/","null"
|
||||||
|
"Rio de Janeiro,"null","null"
|
||||||
|
"Rio de Janeiro,"http://www.museuhistoriconacional.com.br/","null"
|
||||||
|
"Rio de Janeiro,"null","liesarj@liesa.com.br"
|
||||||
|
"Rio de Janeiro,"null","memorial@sbp.com.br"
|
||||||
|
"Rio de Janeiro,"null","museu@pcerj.rj.gov.br"
|
||||||
|
"Rio de Janeiro,"http://www.museu.igeo.ufrj.br/","mgeo@ufrj.br"
|
||||||
|
"Rio de Janeiro,"null","santacasa@openlink.com.br"
|
||||||
|
"Rio de Janeiro,"http://www.ecomuseusantacruz.com.br/","ecomuseuqcsc_smc@rio.rj.gov.br"
|
||||||
|
"Rio de Janeiro,"http://agentilcarioca.com.br/","null"
|
||||||
|
"Rio de Janeiro,"null","abtbr@abtbr.org.br"
|
||||||
|
"Rio de Janeiro,"null","rgaspar@sbb.org.br"
|
||||||
|
"Rio de Janeiro,"http://www.cartola.org.br/","cartola@cartola.org.br"
|
||||||
|
"Rio de Janeiro,"http://www.funceb.org.br/espacoCultural.asp?materia=268","null"
|
||||||
|
"Rio de Janeiro,"null","null"
|
||||||
|
"Rio de Janeiro,"null","museu_pmerj@policiamilitar.rj.gov.br"
|
||||||
|
"Rio de Janeiro,"null","null"
|
||||||
|
"Rio de Janeiro,"http://www.anm.org.br/","centrodamemoriamedica@anm.org.br"
|
||||||
|
"Rio de Janeiro,"http://www.funarj.rj.gov.br/","null"
|
||||||
|
"Rio de Janeiro,"http://www.kreatori.com.br/","institutokreatori@gmail.com"
|
||||||
|
"Rio de Janeiro,"http://www.iq.ufrj.br/museu","diretoria@iq.ufrj.br"
|
||||||
|
"Rio de Janeiro,"null","null"
|
||||||
|
"Rio de Janeiro,"http://www.sergiogoncalvesgaleria.com/","vendas@almacengaleria.com"
|
||||||
|
"Rio de Janeiro,"http://www.ccme.org.br/","ccme@terra.com.br"
|
||||||
|
"Rio de Janeiro,"null","museudesporto@dpep.ensino.eb.br"
|
||||||
|
"Rio de Janeiro,"https://instagram.com/memorialdoholocaustorio?igshid=ndk5n2nlzjq=","null"
|
||||||
|
"Rio de Janeiro,"null","abf@abf.org.br"
|
||||||
|
"Rio de Janeiro,"null","mjm@capemi.org.br"
|
||||||
|
"Rio de Janeiro,"http://museus.cultura.gov.br/espaco/7504/","dzm01@yahoo.com.br"
|
||||||
|
"Rio de Janeiro,"http://www.bernardomonteverde.com/","memorial@bernardomonteverde.com"
|
||||||
|
"Rio de Janeiro,"null","centroludico@bol.com.br"
|
||||||
|
"Rio de Janeiro,"null","museudosteatros@gmail.com"
|
||||||
|
"Rio de Janeiro,"http://galeriamovimento.com.br/","contato@galeriamovimento.com"
|
||||||
|
"Rio de Janeiro,"https://www.instagram.com/1bimec_exercito/?hl=pt-br#","null"
|
||||||
|
"Rio de Janeiro,"http://emccf.biof.ufrj.br/","memorial@biof.ufrj.br"
|
||||||
|
"Rio de Janeiro,"null","cepegpseap@gmail.com"
|
||||||
|
"Rio de Janeiro,"http://www.galeriadagavea.com.br/","null"
|
||||||
|
"Rio de Janeiro,"null","null"
|
||||||
|
"Rio de Janeiro,"https://www.facebook.com/vidigalhangout/","vidigalhangout@gmail.com"
|
||||||
|
"Rio de Janeiro,"http://aeo.com.br/","null"
|
||||||
|
"Rio de Janeiro,"null","null"
|
||||||
|
"Rio de Janeiro,"http://arturfidalgo.com.br/","null"
|
||||||
|
"Rio de Janeiro,"https://www.facebook.com/palartgallery/","pallepost@gmail.com"
|
||||||
|
"Rio de Janeiro,"https://galaxion.site/","galaxionrio@gmail.com"
|
||||||
|
"Rio de Janeiro,"http://cadastro.museus.gov.br/museus/museu-aeroterrestre","museuaeroterrestre@gmail.com"
|
||||||
|
"Rio de Janeiro,"https://riofootballexperience.com.br/","info@riofootballexperience.com.br"
|
||||||
|
"Rio de Janeiro,"https://galaxion.site/","galaxionrio@gmail.com"
|
||||||
|
"Rio de Janeiro,"http://cadastro.museus.gov.br/museus/museu-aeroterrestre","museuaeroterrestre@gmail.com"
|
||||||
|
"Rio de Janeiro,"https://riofootballexperience.com.br/","info@riofootballexperience.com.br"
|
||||||
|
"Rio de Janeiro,"https://galaxion.site/","galaxionrio@gmail.com"
|
||||||
|
"Rio de Janeiro,"http://cadastro.museus.gov.br/museus/museu-aeroterrestre","museuaeroterrestre@gmail.com"
|
||||||
|
"Rio de Janeiro,"https://riofootballexperience.com.br/","info@riofootballexperience.com.br"
|
||||||
|
"Rio de Janeiro,"https://galaxion.site/","galaxionrio@gmail.com"
|
||||||
|
"Rio de Janeiro,"http://cadastro.museus.gov.br/museus/museu-aeroterrestre","museuaeroterrestre@gmail.com"
|
||||||
|
"Rio de Janeiro,"https://riofootballexperience.com.br/","info@riofootballexperience.com.br"
|
||||||
|
"Lahore,"http://lahoremuseum.org/","null"
|
||||||
|
"Lahore,"https://armymuseumlahore.pk/","siaf.123@gmail.com"
|
||||||
|
"Lahore,"http://www.daraz.pk/shop/maya-traders-lahore","null"
|
||||||
|
"Lahore,"http://fakirkhanamuseum.blogspot.com/","null"
|
||||||
|
"Lahore,"http://www.naqshschoolofarts.com/","null"
|
||||||
|
"Lahore,"http://lahore.city-history.com/places/punjab-exhibition-hall-tollinton-market/","null"
|
||||||
|
"Lahore,"null","null"
|
||||||
|
"Lahore,"http://www.facebook.com/nhmlahore/","info_nhm@citizensarchive.org"
|
||||||
|
"Lahore,"http://www.facebook.com/nairang.art.","null"
|
||||||
|
"Lahore,"https://www.facebook.com/PIA-Planetarium-203454656344611","pia.pltkhi@yahoo.com"
|
||||||
|
"Lahore,"http://lahoremuseum.org/","null"
|
||||||
|
"Lahore,"https://armymuseumlahore.pk/","siaf.123@gmail.com"
|
||||||
|
"Lahore,"http://www.daraz.pk/shop/maya-traders-lahore","null"
|
||||||
|
"Lahore,"http://fakirkhanamuseum.blogspot.com/","null"
|
||||||
|
"Lahore,"http://www.naqshschoolofarts.com/","null"
|
||||||
|
"Lahore,"http://lahore.city-history.com/places/punjab-exhibition-hall-tollinton-market/","null"
|
||||||
|
"Lahore,"null","null"
|
||||||
|
"Lahore,"http://www.facebook.com/nhmlahore/","info_nhm@citizensarchive.org"
|
||||||
|
"Lahore,"http://www.facebook.com/nairang.art.","null"
|
||||||
|
"Lahore,"https://www.facebook.com/PIA-Planetarium-203454656344611","pia.pltkhi@yahoo.com"
|
||||||
|
"Lahore,"http://www.unicorngalleryart.com/","info@unicorngalleryblog.com"
|
||||||
|
"Lahore,"http://oceanartgalleries.com/","contact@oceanartgalleries.com"
|
||||||
|
"Lahore,"http://lahoremuseum.org/","null"
|
||||||
|
"Lahore,"https://armymuseumlahore.pk/","siaf.123@gmail.com"
|
||||||
|
"Lahore,"http://www.daraz.pk/shop/maya-traders-lahore","null"
|
||||||
|
"Lahore,"http://fakirkhanamuseum.blogspot.com/","null"
|
||||||
|
"Lahore,"http://www.naqshschoolofarts.com/","null"
|
||||||
|
"Lahore,"http://lahore.city-history.com/places/punjab-exhibition-hall-tollinton-market/","null"
|
||||||
|
"Lahore,"null","null"
|
||||||
|
"Lahore,"http://www.facebook.com/nhmlahore/","info_nhm@citizensarchive.org"
|
||||||
|
"Lahore,"http://www.facebook.com/nairang.art.","null"
|
||||||
|
"Lahore,"https://www.facebook.com/PIA-Planetarium-203454656344611","pia.pltkhi@yahoo.com"
|
||||||
|
"Lahore,"http://www.unicorngalleryart.com/","info@unicorngalleryblog.com"
|
||||||
|
"Lahore,"http://oceanartgalleries.com/","contact@oceanartgalleries.com"
|
||||||
|
"Lahore,"http://lahoremuseum.org/","null"
|
||||||
|
"Lahore,"https://armymuseumlahore.pk/","siaf.123@gmail.com"
|
||||||
|
"Lahore,"http://www.daraz.pk/shop/maya-traders-lahore","null"
|
||||||
|
"Lahore,"http://fakirkhanamuseum.blogspot.com/","null"
|
||||||
|
"Lahore,"http://www.naqshschoolofarts.com/","null"
|
||||||
|
"Lahore,"http://lahore.city-history.com/places/punjab-exhibition-hall-tollinton-market/","null"
|
||||||
|
"Lahore,"null","null"
|
||||||
|
"Lahore,"http://www.facebook.com/nhmlahore/","info_nhm@citizensarchive.org"
|
||||||
|
"Lahore,"http://www.facebook.com/nairang.art.","null"
|
||||||
|
"Lahore,"https://www.facebook.com/PIA-Planetarium-203454656344611","pia.pltkhi@yahoo.com"
|
||||||
|
"Lahore,"http://www.unicorngalleryart.com/","info@unicorngalleryblog.com"
|
||||||
|
"Lahore,"http://oceanartgalleries.com/","contact@oceanartgalleries.com"
|
||||||
|
"Lahore,"http://lahoremuseum.org/","null"
|
||||||
|
"Lahore,"https://armymuseumlahore.pk/","siaf.123@gmail.com"
|
||||||
|
"Lahore,"http://www.daraz.pk/shop/maya-traders-lahore","null"
|
||||||
|
"Lahore,"http://fakirkhanamuseum.blogspot.com/","null"
|
||||||
|
"Lahore,"http://www.naqshschoolofarts.com/","null"
|
||||||
|
"Lahore,"http://lahore.city-history.com/places/punjab-exhibition-hall-tollinton-market/","null"
|
||||||
|
"Lahore,"null","null"
|
||||||
|
"Lahore,"http://www.facebook.com/nhmlahore/","info_nhm@citizensarchive.org"
|
||||||
|
"Lahore,"http://www.facebook.com/nairang.art.","null"
|
||||||
|
"Lahore,"https://www.facebook.com/PIA-Planetarium-203454656344611","pia.pltkhi@yahoo.com"
|
||||||
|
"Lahore,"http://www.unicorngalleryart.com/","info@unicorngalleryblog.com"
|
||||||
|
"Lahore,"http://oceanartgalleries.com/","contact@oceanartgalleries.com"
|
||||||
|
"Lahore,"http://lahoremuseum.org/","null"
|
||||||
|
"Lahore,"https://armymuseumlahore.pk/","siaf.123@gmail.com"
|
||||||
|
"Lahore,"http://www.daraz.pk/shop/maya-traders-lahore","null"
|
||||||
|
"Lahore,"http://fakirkhanamuseum.blogspot.com/","null"
|
||||||
|
"Lahore,"http://www.naqshschoolofarts.com/","null"
|
||||||
|
"Lahore,"http://lahore.city-history.com/places/punjab-exhibition-hall-tollinton-market/","null"
|
||||||
|
"Lahore,"null","null"
|
||||||
|
"Lahore,"http://www.facebook.com/nhmlahore/","info_nhm@citizensarchive.org"
|
||||||
|
"Lahore,"http://www.facebook.com/nairang.art.","null"
|
||||||
|
"Lahore,"https://www.facebook.com/PIA-Planetarium-203454656344611","pia.pltkhi@yahoo.com"
|
||||||
|
"Lahore,"http://www.unicorngalleryart.com/","info@unicorngalleryblog.com"
|
||||||
|
"Lahore,"http://oceanartgalleries.com/","contact@oceanartgalleries.com"
|
||||||
|
"Lahore,"http://lahoremuseum.org/","null"
|
||||||
|
"Lahore,"https://armymuseumlahore.pk/","siaf.123@gmail.com"
|
||||||
|
"Lahore,"http://www.daraz.pk/shop/maya-traders-lahore","null"
|
||||||
|
"Lahore,"http://fakirkhanamuseum.blogspot.com/","null"
|
||||||
|
"Lahore,"http://www.naqshschoolofarts.com/","null"
|
||||||
|
"Lahore,"http://lahore.city-history.com/places/punjab-exhibition-hall-tollinton-market/","null"
|
||||||
|
"Lahore,"null","null"
|
||||||
|
"Lahore,"http://www.facebook.com/nhmlahore/","info_nhm@citizensarchive.org"
|
||||||
|
"Lahore,"http://www.facebook.com/nairang.art.","null"
|
||||||
|
"Lahore,"https://www.facebook.com/PIA-Planetarium-203454656344611","pia.pltkhi@yahoo.com"
|
||||||
|
"Lahore,"http://www.unicorngalleryart.com/","info@unicorngalleryblog.com"
|
||||||
|
"Lahore,"http://oceanartgalleries.com/","contact@oceanartgalleries.com"
|
||||||
|
"Lahore,"http://lahoremuseum.org/","null"
|
||||||
|
"Lahore,"https://armymuseumlahore.pk/","siaf.123@gmail.com"
|
||||||
|
"Lahore,"http://www.daraz.pk/shop/maya-traders-lahore","null"
|
||||||
|
"Lahore,"http://fakirkhanamuseum.blogspot.com/","null"
|
||||||
|
"Lahore,"http://www.naqshschoolofarts.com/","null"
|
||||||
|
"Lahore,"http://lahore.city-history.com/places/punjab-exhibition-hall-tollinton-market/","null"
|
||||||
|
"Lahore,"null","null"
|
||||||
|
"Lahore,"http://www.facebook.com/nhmlahore/","info_nhm@citizensarchive.org"
|
||||||
|
"Lahore,"http://www.facebook.com/nairang.art.","null"
|
||||||
|
"Lahore,"https://www.facebook.com/PIA-Planetarium-203454656344611","pia.pltkhi@yahoo.com"
|
||||||
|
"Lahore,"http://www.unicorngalleryart.com/","info@unicorngalleryblog.com"
|
||||||
|
"Lahore,"http://oceanartgalleries.com/","contact@oceanartgalleries.com"
|
||||||
|
"Lahore,"http://lahoremuseum.org/","null"
|
||||||
|
"Lahore,"https://armymuseumlahore.pk/","siaf.123@gmail.com"
|
||||||
|
"Lahore,"http://www.daraz.pk/shop/maya-traders-lahore","null"
|
||||||
|
"Lahore,"http://fakirkhanamuseum.blogspot.com/","null"
|
||||||
|
"Lahore,"http://www.naqshschoolofarts.com/","null"
|
||||||
|
"Lahore,"http://lahore.city-history.com/places/punjab-exhibition-hall-tollinton-market/","null"
|
||||||
|
"Lahore,"null","null"
|
||||||
|
"Lahore,"http://www.facebook.com/nhmlahore/","info_nhm@citizensarchive.org"
|
||||||
|
"Lahore,"http://www.facebook.com/nairang.art.","null"
|
||||||
|
"Lahore,"https://www.facebook.com/PIA-Planetarium-203454656344611","pia.pltkhi@yahoo.com"
|
||||||
|
"Lahore,"http://www.unicorngalleryart.com/","info@unicorngalleryblog.com"
|
||||||
|
"Lahore,"http://oceanartgalleries.com/","contact@oceanartgalleries.com"
|
||||||
|
"Lahore,"http://lahoremuseum.org/","null"
|
||||||
|
"Lahore,"https://armymuseumlahore.pk/","siaf.123@gmail.com"
|
||||||
|
"Lahore,"http://www.daraz.pk/shop/maya-traders-lahore","null"
|
||||||
|
"Lahore,"http://fakirkhanamuseum.blogspot.com/","null"
|
||||||
|
"Lahore,"http://www.naqshschoolofarts.com/","null"
|
||||||
|
"Lahore,"http://lahore.city-history.com/places/punjab-exhibition-hall-tollinton-market/","null"
|
||||||
|
"Lahore,"null","null"
|
||||||
|
"Lahore,"http://www.facebook.com/nhmlahore/","info_nhm@citizensarchive.org"
|
||||||
|
"Lahore,"http://www.facebook.com/nairang.art.","null"
|
||||||
|
"Lahore,"https://www.facebook.com/PIA-Planetarium-203454656344611","pia.pltkhi@yahoo.com"
|
||||||
|
"Lahore,"http://www.unicorngalleryart.com/","info@unicorngalleryblog.com"
|
||||||
|
"Lahore,"http://oceanartgalleries.com/","contact@oceanartgalleries.com"
|
||||||
|
"Lahore,"http://lahoremuseum.org/","null"
|
||||||
|
"Lahore,"https://armymuseumlahore.pk/","siaf.123@gmail.com"
|
||||||
|
"Lahore,"http://www.daraz.pk/shop/maya-traders-lahore","null"
|
||||||
|
"Lahore,"http://fakirkhanamuseum.blogspot.com/","null"
|
||||||
|
"Lahore,"http://www.naqshschoolofarts.com/","null"
|
||||||
|
"Lahore,"http://lahore.city-history.com/places/punjab-exhibition-hall-tollinton-market/","null"
|
||||||
|
"Lahore,"null","null"
|
||||||
|
"Lahore,"http://www.facebook.com/nhmlahore/","info_nhm@citizensarchive.org"
|
||||||
|
"Lahore,"http://www.facebook.com/nairang.art.","null"
|
||||||
|
"Lahore,"https://www.facebook.com/PIA-Planetarium-203454656344611","pia.pltkhi@yahoo.com"
|
||||||
|
"Lahore,"http://www.unicorngalleryart.com/","info@unicorngalleryblog.com"
|
||||||
|
"Lahore,"http://oceanartgalleries.com/","contact@oceanartgalleries.com"
|
||||||
|
"Bangalore,"http://www.vismuseum.gov.in/","vitmuseum@gmail.com"
|
||||||
|
"Bangalore,"http://www.cauveryhandicrafts.net/","null"
|
||||||
|
"Bangalore,"http://www.indianmusicexperience.org/","info@indianmusicexperience.org"
|
||||||
|
"Bangalore,"null","null"
|
||||||
|
"Bangalore,"http://hal-india.co.in/Heritage%20Centre%20and%20Aerospace%20Museum/M__20","halmuseum@gmail.com"
|
||||||
|
"Bangalore,"http://www.taralaya.org/","null"
|
||||||
|
"Bangalore,"https://www.facebook.com/ngmablr/","null"
|
||||||
|
"Bangalore,"http://www.curiouscity.org/","info@curiouscity.org"
|
||||||
|
"Bangalore,"http://www.kynkyny.com/","art@kynkyny.com"
|
||||||
|
"Bangalore,"http://vagforum.in/","null"
|
||||||
|
"Bangalore,"http://www.bluesignprint.com/","null"
|
||||||
|
"Bangalore,"http://www.nimhans.ac.in/neuropathology/brain-museum","null"
|
||||||
|
"Bangalore,"https://www.facebook.com/RangoliMetroArtCenter/","null"
|
||||||
|
"Bangalore,"null","null"
|
||||||
|
"Bangalore,"http://www.blrcreativecircus.com/","info@blrcreativecircus.com"
|
||||||
|
"Bangalore,"https://verdecanvas.com/","artbyabhi@gmail.com"
|
||||||
|
"Bangalore,"https://paramscience.org/parsec","marketing@paraminnovation.org"
|
||||||
|
"Bangalore,"http://paraminnovation.org/","info@paraminnovation.org"
|
||||||
|
"Bangalore,"null","null"
|
||||||
|
"Bangalore,"http://www.mahuagallery.com/","jahnvi@mahuagallery.com"
|
||||||
|
"Bangalore,"https://www.indianpapermoneymuseum.com/","contact@indianpapermoneymuseum.com"
|
||||||
|
"Bangalore,"http://www.crimsonartgallery.com/","info@crimsonartgallery.com"
|
||||||
|
"Bangalore,"http://www.peepletree.in/","maya@peepletree.in"
|
||||||
|
"Bangalore,"https://www.facebook.com/102287651237756","null"
|
||||||
|
"Bangalore,"http://www.shadescreativegallery.com/","shadescreativegallery@gmail.com"
|
||||||
|
"Bangalore,"null","null"
|
||||||
|
"Bangalore,"null","null"
|
||||||
|
"Bangalore,"http://www.sublimegalleria.com/","sublime@prestigeconstructions.com"
|
||||||
|
"Bangalore,"https://www.sumukha.com/","info@sumukha.com"
|
||||||
|
"Bangalore,"http://www.genethos.com/","null"
|
||||||
|
"Bangalore,"http://www.swethamberarts.com/","swethamberarts@gmail.com"
|
||||||
|
"Bangalore,"https://tretahandicrafts.com/","tretahandicrafts@gmail.com"
|
||||||
|
"Bangalore,"null","maya5622@gmail.com"
|
||||||
|
"Bangalore,"https://map-india.org/","hello@map-india.org"
|
||||||
|
"Bangalore,"http://www.gitagged.com/","care@gitagged.com"
|
||||||
|
"Bangalore,"http://map-india.org/contact-us/","hello@map-india.org"
|
||||||
|
"Bangalore,"null","null"
|
||||||
|
"Bangalore,"null","null"
|
||||||
|
"Bangalore,"http://www.sublimegalleria.com/","sublime@prestigeconstructions.com"
|
||||||
|
"Bangalore,"https://www.sumukha.com/","info@sumukha.com"
|
||||||
|
"Bangalore,"http://www.genethos.com/","null"
|
||||||
|
"Bangalore,"http://www.swethamberarts.com/","swethamberarts@gmail.com"
|
||||||
|
"Bangalore,"https://tretahandicrafts.com/","tretahandicrafts@gmail.com"
|
||||||
|
"Bangalore,"null","maya5622@gmail.com"
|
||||||
|
"Bangalore,"https://map-india.org/","hello@map-india.org"
|
||||||
|
"Bangalore,"http://www.gitagged.com/","care@gitagged.com"
|
||||||
|
"Bangalore,"http://map-india.org/contact-us/","hello@map-india.org"
|
||||||
|
"Bangalore,"null","null"
|
||||||
|
"Bangalore,"null","null"
|
||||||
|
"Bangalore,"http://www.sublimegalleria.com/","sublime@prestigeconstructions.com"
|
||||||
|
"Bangalore,"https://www.sumukha.com/","info@sumukha.com"
|
||||||
|
"Bangalore,"http://www.genethos.com/","null"
|
||||||
|
"Bangalore,"http://www.swethamberarts.com/","swethamberarts@gmail.com"
|
||||||
|
"Bangalore,"https://tretahandicrafts.com/","tretahandicrafts@gmail.com"
|
||||||
|
"Bangalore,"null","maya5622@gmail.com"
|
||||||
|
"Bangalore,"https://map-india.org/","hello@map-india.org"
|
||||||
|
"Bangalore,"http://www.gitagged.com/","care@gitagged.com"
|
||||||
|
"Bangalore,"http://map-india.org/contact-us/","hello@map-india.org"
|
||||||
|
"Bangalore,"null","null"
|
||||||
|
"Bangalore,"null","null"
|
||||||
|
"Bangalore,"http://www.sublimegalleria.com/","sublime@prestigeconstructions.com"
|
||||||
|
"Bangalore,"https://www.sumukha.com/","info@sumukha.com"
|
||||||
|
"Bangalore,"http://www.genethos.com/","null"
|
||||||
|
"Bangalore,"http://www.swethamberarts.com/","swethamberarts@gmail.com"
|
||||||
|
"Bangalore,"https://tretahandicrafts.com/","tretahandicrafts@gmail.com"
|
||||||
|
"Bangalore,"null","maya5622@gmail.com"
|
||||||
|
"Bangalore,"https://map-india.org/","hello@map-india.org"
|
||||||
|
"Bangalore,"http://www.gitagged.com/","care@gitagged.com"
|
||||||
|
"Bangalore,"http://map-india.org/contact-us/","hello@map-india.org"
|
||||||
|
"Bangalore,"null","null"
|
||||||
|
"Bangalore,"null","null"
|
||||||
|
"Bangalore,"http://www.sublimegalleria.com/","sublime@prestigeconstructions.com"
|
||||||
|
"Bangalore,"https://www.sumukha.com/","info@sumukha.com"
|
||||||
|
"Bangalore,"http://www.genethos.com/","null"
|
||||||
|
"Bangalore,"http://www.swethamberarts.com/","swethamberarts@gmail.com"
|
||||||
|
"Bangalore,"https://tretahandicrafts.com/","tretahandicrafts@gmail.com"
|
||||||
|
"Bangalore,"null","maya5622@gmail.com"
|
||||||
|
"Bangalore,"https://map-india.org/","hello@map-india.org"
|
||||||
|
"Bangalore,"http://www.gitagged.com/","care@gitagged.com"
|
||||||
|
"Bangalore,"http://map-india.org/contact-us/","hello@map-india.org"
|
||||||
|
"Bangalore,"null","null"
|
||||||
|
"Bangalore,"null","null"
|
||||||
|
"Bangalore,"http://www.sublimegalleria.com/","sublime@prestigeconstructions.com"
|
||||||
|
"Bangalore,"https://www.sumukha.com/","info@sumukha.com"
|
||||||
|
"Bangalore,"http://www.genethos.com/","null"
|
||||||
|
"Bangalore,"http://www.swethamberarts.com/","swethamberarts@gmail.com"
|
||||||
|
"Bangalore,"https://tretahandicrafts.com/","tretahandicrafts@gmail.com"
|
||||||
|
"Bangalore,"null","maya5622@gmail.com"
|
||||||
|
"Bangalore,"https://map-india.org/","hello@map-india.org"
|
||||||
|
"Bangalore,"http://www.gitagged.com/","care@gitagged.com"
|
||||||
|
"Bangalore,"http://map-india.org/contact-us/","hello@map-india.org"
|
||||||
|
"Bangalore,"null","null"
|
||||||
|
"Bangalore,"null","null"
|
||||||
|
"Bangalore,"http://www.sublimegalleria.com/","sublime@prestigeconstructions.com"
|
||||||
|
"Bangalore,"https://www.sumukha.com/","info@sumukha.com"
|
||||||
|
"Bangalore,"http://www.genethos.com/","null"
|
||||||
|
"Bangalore,"http://www.swethamberarts.com/","swethamberarts@gmail.com"
|
||||||
|
"Bangalore,"https://tretahandicrafts.com/","tretahandicrafts@gmail.com"
|
||||||
|
"Bangalore,"null","maya5622@gmail.com"
|
||||||
|
"Bangalore,"https://map-india.org/","hello@map-india.org"
|
||||||
|
"Bangalore,"http://www.gitagged.com/","care@gitagged.com"
|
||||||
|
"Bangalore,"http://map-india.org/contact-us/","hello@map-india.org"
|
||||||
|
"Bangalore,"null","null"
|
||||||
|
"Bangalore,"null","null"
|
||||||
|
"Bangalore,"http://www.sublimegalleria.com/","sublime@prestigeconstructions.com"
|
||||||
|
"Bangalore,"https://www.sumukha.com/","info@sumukha.com"
|
||||||
|
"Bangalore,"http://www.genethos.com/","null"
|
||||||
|
"Bangalore,"http://www.swethamberarts.com/","swethamberarts@gmail.com"
|
||||||
|
"Bangalore,"https://tretahandicrafts.com/","tretahandicrafts@gmail.com"
|
||||||
|
"Bangalore,"null","maya5622@gmail.com"
|
||||||
|
"Bangalore,"https://map-india.org/","hello@map-india.org"
|
||||||
|
"Bangalore,"http://www.gitagged.com/","care@gitagged.com"
|
||||||
|
"Bangalore,"http://map-india.org/contact-us/","hello@map-india.org"
|
||||||
|
"Bangalore,"null","null"
|
||||||
|
"Bangalore,"null","null"
|
||||||
|
"Bangalore,"http://www.sublimegalleria.com/","sublime@prestigeconstructions.com"
|
||||||
|
"Bangalore,"https://www.sumukha.com/","info@sumukha.com"
|
||||||
|
"Bangalore,"http://www.genethos.com/","null"
|
||||||
|
"Bangalore,"http://www.swethamberarts.com/","swethamberarts@gmail.com"
|
||||||
|
"Bangalore,"https://tretahandicrafts.com/","tretahandicrafts@gmail.com"
|
||||||
|
"Bangalore,"null","maya5622@gmail.com"
|
||||||
|
"Bangalore,"https://map-india.org/","hello@map-india.org"
|
||||||
|
"Bangalore,"http://www.gitagged.com/","care@gitagged.com"
|
||||||
|
"Bangalore,"http://map-india.org/contact-us/","hello@map-india.org"
|
||||||
|
"Moscow,"http://www.kreml.ru/en/","head@kremlin.museum.ru"
|
||||||
|
"Moscow,"http://www.mgomz.ru/","null"
|
||||||
|
"Moscow,"http://www.tretyakovgallery.ru/about/history/zdanie-v-lavrushinskom-pereulke/","tretyakov@tretyakov.ru"
|
||||||
|
"Moscow,"http://www.kreml.ru/en/","head@kremlin.museum.ru"
|
||||||
|
"Moscow,"http://www.mgomz.ru/","null"
|
||||||
|
"Moscow,"http://www.tretyakovgallery.ru/about/history/zdanie-v-lavrushinskom-pereulke/","tretyakov@tretyakov.ru"
|
||||||
|
"Moscow,"https://vk.com/tsaritsynomuseum","info@tsaritsyno.net"
|
||||||
|
"Moscow,"http://kosmo-museum.ru/","editormmk@gmail.com"
|
||||||
|
"Moscow,"http://www.kreml.ru/","null"
|
||||||
|
"Moscow,"null","null"
|
||||||
|
"Moscow,"http://www.bunker42.com/","zakaz@bunker42.com"
|
||||||
|
|||||||
|
Can't render this file because it contains an unexpected character in line 2 and column 8.
|
106
src/index.ts
106
src/index.ts
@ -9,7 +9,7 @@ import chrome, { ServiceBuilder } from 'selenium-webdriver/chrome';
|
|||||||
import * as fs from 'fs';
|
import * as fs from 'fs';
|
||||||
import * as path from 'path';
|
import * as path from 'path';
|
||||||
import { getCities } from './lib/cities';
|
import { getCities } from './lib/cities';
|
||||||
import { WebDriverUtils, saveContactInfoToCSV, useExistingChrome, disableCookiesInChrome } from './lib/utils';
|
import { WebDriverUtils, saveContactInfoToCSV, useExistingChrome, disableCookiesInChrome, useChrome } from './lib/utils';
|
||||||
import * as UIActions from './lib/UIActions';
|
import * as UIActions from './lib/UIActions';
|
||||||
import { randomUUID } from 'crypto';
|
import { randomUUID } from 'crypto';
|
||||||
|
|
||||||
@ -30,10 +30,6 @@ async function visitCityPages(): Promise<void> {
|
|||||||
for (let i = 0; i < cities.length; i++) {
|
for (let i = 0; i < cities.length; i++) {
|
||||||
const city = cities[i];
|
const city = cities[i];
|
||||||
console.log(`[${i + 1}/${cities.length}] Visiting TripAdvisor page for ${city}...`);
|
console.log(`[${i + 1}/${cities.length}] Visiting TripAdvisor page for ${city}...`);
|
||||||
let originalWindow;
|
|
||||||
let cityTopWindow;
|
|
||||||
let attactionsWindow;
|
|
||||||
let museumWindow;
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
|
||||||
@ -41,93 +37,52 @@ async function visitCityPages(): Promise<void> {
|
|||||||
|
|
||||||
console.log("Logo click")
|
console.log("Logo click")
|
||||||
if (!await UIActions.gotoHome(driver)) throw `${city} failed`;
|
if (!await UIActions.gotoHome(driver)) throw `${city} failed`;
|
||||||
await WebDriverUtils.wait();
|
await WebDriverUtils.wait(driver);
|
||||||
|
|
||||||
console.log("Exec Search")
|
console.log("Exec Search")
|
||||||
if (!await UIActions.execSearch(driver, city)) throw `${city} failed`;
|
if (!await UIActions.execSearch(driver, `${city} museum`)) throw `${city} failed`;
|
||||||
await WebDriverUtils.wait(5);
|
await WebDriverUtils.wait(driver);
|
||||||
|
|
||||||
console.log("Click See all")
|
|
||||||
if (!await UIActions.clickSeeAll(driver)) {
|
|
||||||
if (!await UIActions.clickTourismLink(driver)) throw `${city} failed`;
|
|
||||||
if (!await UIActions.clickSeeAll(driver)) throw `${city} failed`;
|
|
||||||
}
|
|
||||||
await WebDriverUtils.wait();
|
|
||||||
|
|
||||||
console.log("Switch tab")
|
|
||||||
let windows = await driver.getAllWindowHandles();
|
|
||||||
// Switch to the newly opened window/tab
|
|
||||||
for (const handle of windows) {
|
|
||||||
if (handle !== originalWindow) {
|
|
||||||
cityTopWindow = handle;
|
|
||||||
await driver.switchTo().window(handle);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
console.log("Click See all attractions")
|
|
||||||
if (!await UIActions.clickSeeAllAttractions(driver)) throw `${city} failed`;
|
|
||||||
await WebDriverUtils.wait();
|
|
||||||
|
|
||||||
console.log("Switch tab to Attraction")
|
|
||||||
windows = await driver.getAllWindowHandles();
|
|
||||||
// Switch to the newly opened window/tab
|
|
||||||
for (const handle of windows) {
|
|
||||||
if (handle !== originalWindow && handle !== cityTopWindow) {
|
|
||||||
attactionsWindow = handle;
|
|
||||||
await driver.switchTo().window(attactionsWindow);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// click museum
|
|
||||||
console.log("Click Museum link");
|
|
||||||
if (!await UIActions.clickMuseumsLink(driver)) throw `${city} failed`;
|
|
||||||
await WebDriverUtils.wait();
|
|
||||||
|
|
||||||
let page = 1;
|
let page = 1;
|
||||||
|
let museumNames: string[] = [];
|
||||||
|
|
||||||
while (1) {
|
while (1) {
|
||||||
|
|
||||||
// get list of museums
|
// get list of museums
|
||||||
console.log("Get list of museums");
|
console.log("Get list of museums");
|
||||||
const museumElms = await UIActions.getMusiums(driver);
|
const tmpMuseumNames = await UIActions.getAttractionNames(driver);
|
||||||
await WebDriverUtils.wait();
|
await WebDriverUtils.wait(driver);
|
||||||
|
museumNames = [...museumNames, ...tmpMuseumNames]
|
||||||
for (const listItem of museumElms) {
|
|
||||||
|
|
||||||
await listItem.click();
|
|
||||||
await WebDriverUtils.wait();
|
|
||||||
|
|
||||||
windows = await driver.getAllWindowHandles();
|
|
||||||
for (const handle of windows) {
|
|
||||||
if (handle !== originalWindow && handle !== cityTopWindow && handle !== attactionsWindow) {
|
|
||||||
museumWindow = handle;
|
|
||||||
await driver.switchTo().window(museumWindow);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const { websiteUrl, email } = await UIActions.getWebsiteAndEmail(driver);
|
|
||||||
|
|
||||||
console.log(`${websiteUrl} / ${email}`);
|
|
||||||
saveContactInfoToCSV(city, { websiteUrl: websiteUrl, email: email }, path.join(__dirname, '../data/contact_info.csv'));
|
|
||||||
|
|
||||||
museumWindow && await driver.switchTo().window(museumWindow);
|
|
||||||
await driver.close();
|
|
||||||
await WebDriverUtils.wait();
|
|
||||||
|
|
||||||
attactionsWindow && await driver.switchTo().window(attactionsWindow);
|
|
||||||
await WebDriverUtils.wait();
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
page++;
|
page++;
|
||||||
|
|
||||||
if (page > 10) break;
|
if (page > 10) break;
|
||||||
|
|
||||||
UIActions.clickPagination(driver, page);
|
UIActions.clickPagination(driver, page);
|
||||||
await WebDriverUtils.wait();
|
await WebDriverUtils.wait(driver);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for (const museumName of museumNames) {
|
||||||
|
|
||||||
|
console.log("back to home");
|
||||||
|
if (!await UIActions.gotoHome(driver)) throw `${city} failed`;
|
||||||
|
await WebDriverUtils.wait(driver);
|
||||||
|
|
||||||
|
if (!await UIActions.typeSearch(driver, `${city} ${museumName}`)) throw `${city} failed`;
|
||||||
|
await WebDriverUtils.wait(driver);
|
||||||
|
|
||||||
|
if (!await UIActions.clickFirstAttractionLinkInForm(driver)) throw `${city} failed`;
|
||||||
|
await WebDriverUtils.wait(driver);
|
||||||
|
|
||||||
|
const { websiteUrl, email } = await UIActions.getWebsiteAndEmail(driver);
|
||||||
|
|
||||||
|
console.log(`${websiteUrl} / ${email}`);
|
||||||
|
saveContactInfoToCSV(city, { websiteUrl: websiteUrl, email: email }, path.join(__dirname, '../data/contact_info.csv'));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log(museumNames);
|
||||||
await UIActions.closeAllTabsExceptFirst(driver);
|
await UIActions.closeAllTabsExceptFirst(driver);
|
||||||
|
|
||||||
|
|
||||||
@ -135,9 +90,8 @@ async function visitCityPages(): Promise<void> {
|
|||||||
console.log(`Waiting for 5000 seconds before next city...`);
|
console.log(`Waiting for 5000 seconds before next city...`);
|
||||||
await WebDriverUtils.wait(); // Wait 5000 seconds before next city
|
await WebDriverUtils.wait(); // Wait 5000 seconds before next city
|
||||||
}
|
}
|
||||||
} catch (error) {
|
|
||||||
|
|
||||||
await UIActions.closeAllTabsExceptFirst(driver);
|
} catch (error) {
|
||||||
|
|
||||||
// If the button is not found within the timeout, log and continue to the next city
|
// If the button is not found within the timeout, log and continue to the next city
|
||||||
console.log(`No Museums button found for ${city}. Moving to next city after 5 seconds...`);
|
console.log(`No Museums button found for ${city}. Moving to next city after 5 seconds...`);
|
||||||
|
|||||||
@ -8,7 +8,7 @@ import { ContactInfo } from './types';
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
export async function execSearch(driver: WebDriver, city: string): Promise<boolean> {
|
export async function execSearch(driver: WebDriver, searchTerm: string): Promise<boolean> {
|
||||||
try {
|
try {
|
||||||
// Find the search input field
|
// Find the search input field
|
||||||
const searchSelector = 'input[name="q"][placeholder="Places to go, things to do, hotels..."]';
|
const searchSelector = 'input[name="q"][placeholder="Places to go, things to do, hotels..."]';
|
||||||
@ -18,12 +18,12 @@ export async function execSearch(driver: WebDriver, city: string): Promise<boole
|
|||||||
|
|
||||||
// Clear any existing text and enter the city name
|
// Clear any existing text and enter the city name
|
||||||
await searchInput.clear();
|
await searchInput.clear();
|
||||||
await searchInput.sendKeys(city);
|
await searchInput.sendKeys(searchTerm);
|
||||||
|
|
||||||
// Submit the search (press Enter)
|
// Submit the search (press Enter)
|
||||||
await WebDriverUtils.wait(2);
|
await WebDriverUtils.wait(driver);
|
||||||
await searchInput.sendKeys('\uE007'); // Unicode for Enter key
|
await searchInput.sendKeys('\uE007'); // Unicode for Enter key
|
||||||
await WebDriverUtils.wait(5); // Wait 5 seconds before next city
|
await WebDriverUtils.wait(driver); // Wait 5 seconds before next city
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
@ -31,6 +31,25 @@ export async function execSearch(driver: WebDriver, city: string): Promise<boole
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export async function typeSearch(driver: WebDriver, searchTerm: string): Promise<boolean> {
|
||||||
|
try {
|
||||||
|
// Find the search input field
|
||||||
|
const searchSelector = 'input[name="q"][placeholder="Places to go, things to do, hotels..."]';
|
||||||
|
await WebDriverUtils.waitForElement(driver, searchSelector, 10000);
|
||||||
|
console.log("Search box found");
|
||||||
|
const searchInput = await driver.findElement(By.css(searchSelector));
|
||||||
|
|
||||||
|
// Clear any existing text and enter the city name
|
||||||
|
await searchInput.clear();
|
||||||
|
await searchInput.sendKeys(searchTerm);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
} catch (e) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
export async function clickSeeAll(driver: WebDriver): Promise<boolean> {
|
export async function clickSeeAll(driver: WebDriver): Promise<boolean> {
|
||||||
try {
|
try {
|
||||||
const seeAllElement = await driver.wait(
|
const seeAllElement = await driver.wait(
|
||||||
@ -49,6 +68,21 @@ export async function clickSeeAll(driver: WebDriver): Promise<boolean> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export async function getSeeAllUrl(driver: WebDriver): Promise<string> {
|
||||||
|
const xpath = `//h3[normalize-space(.)='Things to do']/ancestor::div[1]//a[starts-with(@href, '/Attractions')]`;
|
||||||
|
|
||||||
|
try {
|
||||||
|
const anchor = await driver.wait(until.elementLocated(By.xpath(xpath)), 5000);
|
||||||
|
const url = await anchor.getAttribute('href');
|
||||||
|
console.log('Found Attractions URL:', url);
|
||||||
|
return url;
|
||||||
|
} catch (err) {
|
||||||
|
console.warn('Could not find the Attractions link:', err);
|
||||||
|
}
|
||||||
|
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
export async function gotoHome(driver: WebDriver): Promise<boolean> {
|
export async function gotoHome(driver: WebDriver): Promise<boolean> {
|
||||||
try {
|
try {
|
||||||
// Click on the Tripadvisor logo before searching for the city
|
// Click on the Tripadvisor logo before searching for the city
|
||||||
@ -65,7 +99,7 @@ export async function gotoHome(driver: WebDriver): Promise<boolean> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export async function clickSeeAllAttractions(driver: WebDriver): Promise<boolean> {
|
export async function clickSeeAllAttractions(driver: WebDriver): Promise<boolean> {
|
||||||
const xpath = `//h2[starts-with(normalize-space(.), 'Top Attractions in')]/parent::*[1]//a[starts-with(@href, '/Attractions') and .//span[normalize-space(.)='See all']]`;
|
const xpath = `//h3[starts-with(normalize-space(.), 'Things to do')]/parent::*[1]//a[starts-with(@href, '/Attractions') and .//span[normalize-space(.)='See all']]`;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const anchorElement = await driver.wait(until.elementLocated(By.xpath(xpath)), 5000);
|
const anchorElement = await driver.wait(until.elementLocated(By.xpath(xpath)), 5000);
|
||||||
@ -82,6 +116,22 @@ export async function clickSeeAllAttractions(driver: WebDriver): Promise<boolean
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export async function getSeeAllAttractionsUrl(driver: WebDriver): Promise<string | null> {
|
||||||
|
const xpath = `//h3[starts-with(normalize-space(.), 'Top Attractions in')]/parent::*[1]//a[starts-with(@href, '/Attractions') and .//span[normalize-space(.)='See all']]`;
|
||||||
|
|
||||||
|
try {
|
||||||
|
const anchorElement = await driver.wait(until.elementLocated(By.xpath(xpath)), 5000);
|
||||||
|
|
||||||
|
await driver.wait(until.elementIsVisible(anchorElement), 5000);
|
||||||
|
|
||||||
|
const href = await anchorElement.getAttribute('href');
|
||||||
|
return href;
|
||||||
|
} catch (error) {
|
||||||
|
console.warn('Element not found or href not retrievable.', error);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
export async function clickMuseumsLink(driver: WebDriver): Promise<boolean> {
|
export async function clickMuseumsLink(driver: WebDriver): Promise<boolean> {
|
||||||
const xpath = `//a[.//*[normalize-space(.)='Museums']]`;
|
const xpath = `//a[.//*[normalize-space(.)='Museums']]`;
|
||||||
|
|
||||||
@ -130,6 +180,49 @@ export async function getMusiums(driver: WebDriver): Promise<WebElement[]> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export async function getMuseumsLinks(driver: WebDriver): Promise<string[]> {
|
||||||
|
const xpath = `//div//section[.//a[starts-with(@href, '/Attraction')] and .//h3]//a[starts-with(@href, '/Attraction') and .//img]`;
|
||||||
|
|
||||||
|
try {
|
||||||
|
const links = await driver.findElements(By.xpath(xpath));
|
||||||
|
|
||||||
|
const urls: string[] = [];
|
||||||
|
for (const link of links) {
|
||||||
|
const href = await link.getAttribute('href');
|
||||||
|
if (href) {
|
||||||
|
urls.push(href);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return urls;
|
||||||
|
} catch (error) {
|
||||||
|
console.warn('Error getting attraction URLs:', error);
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function getAttractionNames(driver: WebDriver): Promise<string[]> {
|
||||||
|
// XPath to find <h3> inside <a> whose href starts with /Attraction_Review
|
||||||
|
const xpath = `//a[starts-with(@href, '/Attraction_Review')]/h3`;
|
||||||
|
|
||||||
|
try {
|
||||||
|
const h3Elements = await driver.findElements(By.xpath(xpath));
|
||||||
|
|
||||||
|
const names: string[] = [];
|
||||||
|
for (const h3 of h3Elements) {
|
||||||
|
const text = await h3.getText();
|
||||||
|
if (text) {
|
||||||
|
names.push(text.trim().replace(/^\d+\.\s*/, ''));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return names;
|
||||||
|
} catch (error) {
|
||||||
|
console.warn('Error getting attraction names:', error);
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
export async function getWebsiteAndEmail(driver: WebDriver): Promise<ContactInfo> {
|
export async function getWebsiteAndEmail(driver: WebDriver): Promise<ContactInfo> {
|
||||||
const result: ContactInfo = { websiteUrl: null, email: null };
|
const result: ContactInfo = { websiteUrl: null, email: null };
|
||||||
|
|
||||||
@ -194,3 +287,23 @@ export async function closeAllTabsExceptFirst(driver: WebDriver): Promise<void>
|
|||||||
await driver.switchTo().window(originalHandle);
|
await driver.switchTo().window(originalHandle);
|
||||||
console.log(`Switched back to original tab: ${originalHandle}`);
|
console.log(`Switched back to original tab: ${originalHandle}`);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export async function clickFirstAttractionLinkInForm(driver: WebDriver): Promise<boolean> {
|
||||||
|
const xpath = `//form//a[starts-with(@href, '/Attraction')]`;
|
||||||
|
|
||||||
|
try {
|
||||||
|
// Wait for the link to appear inside a form
|
||||||
|
const link = await driver.wait(until.elementLocated(By.xpath(xpath)), 5000);
|
||||||
|
|
||||||
|
await driver.wait(until.elementIsVisible(link), 5000);
|
||||||
|
await driver.wait(until.elementIsEnabled(link), 5000);
|
||||||
|
|
||||||
|
await link.click();
|
||||||
|
console.log('Clicked the first attraction link in the form.');
|
||||||
|
|
||||||
|
return true;
|
||||||
|
} catch (error) {
|
||||||
|
console.warn('Attraction link not found or not clickable.', error);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@ -14,10 +14,33 @@ export class WebDriverUtils {
|
|||||||
* @param seconds Number of seconds to wait
|
* @param seconds Number of seconds to wait
|
||||||
* @returns Promise that resolves after the specified time
|
* @returns Promise that resolves after the specified time
|
||||||
*/
|
*/
|
||||||
static async wait(seconds: number = 3): Promise<void> {
|
static async wait(driver?: WebDriver): Promise<void> {
|
||||||
seconds = Math.floor(Math.random() * 1000) % 3 + 3;
|
const seconds = Math.floor(Math.random() * 1000) % 3 + 3;
|
||||||
console.log(`Waiting for ${seconds} seconds...`);
|
console.log(`Scrolling to bottom for ${seconds} seconds...`);
|
||||||
return new Promise(resolve => setTimeout(resolve, seconds * 1000));
|
|
||||||
|
const endTime = Date.now() + seconds * 1000;
|
||||||
|
|
||||||
|
let scrollCounter = 0;
|
||||||
|
|
||||||
|
while (Date.now() < endTime) {
|
||||||
|
|
||||||
|
/*
|
||||||
|
try {
|
||||||
|
if (driver) {
|
||||||
|
await driver.executeScript(`
|
||||||
|
window.scrollBy(0, 10);
|
||||||
|
`);
|
||||||
|
|
||||||
|
scrollCounter++;
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
console.warn('Scroll failed:', error);
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
// Wait a little between scrolls
|
||||||
|
await new Promise(resolve => setTimeout(resolve, 500));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -85,6 +108,45 @@ export async function disableCookiesInChrome(): Promise<WebDriver | null> {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export async function useChrome(initialUrl: string = "https://www.tripadvisor.com/"): Promise<WebDriver | null> {
|
||||||
|
// Set Chrome options
|
||||||
|
const options = new chrome.Options();
|
||||||
|
|
||||||
|
// 1. Block all cookies
|
||||||
|
//options.setUserPreferences({
|
||||||
|
// 'profile.default_content_setting_values.cookies': 2, // 2 = Block all
|
||||||
|
// 'profile.block_third_party_cookies': true
|
||||||
|
//});
|
||||||
|
|
||||||
|
// 2. Optional: Launch in incognito for extra privacy
|
||||||
|
options.addArguments('--incognito');
|
||||||
|
options.addArguments('--start-maximized');
|
||||||
|
|
||||||
|
let driver: WebDriver | null = null;
|
||||||
|
|
||||||
|
try {
|
||||||
|
driver = await new Builder()
|
||||||
|
.forBrowser('chrome')
|
||||||
|
.setChromeOptions(options)
|
||||||
|
.build();
|
||||||
|
|
||||||
|
await driver.get(initialUrl);
|
||||||
|
|
||||||
|
console.log('Chrome launched with cookies disabled.');
|
||||||
|
|
||||||
|
// Optional: Verify cookies are blocked by trying to set/get a cookie
|
||||||
|
await driver.manage().addCookie({ name: 'test', value: '123' });
|
||||||
|
const cookies = await driver.manage().getCookies();
|
||||||
|
console.log('Cookies after trying to add:', cookies); // Should be empty or restricted
|
||||||
|
|
||||||
|
return driver;
|
||||||
|
} catch (error) {
|
||||||
|
console.error('Error:', error);
|
||||||
|
return driver;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
export async function useExistingChrome(): Promise<WebDriver> {
|
export async function useExistingChrome(): Promise<WebDriver> {
|
||||||
// Connect to an existing Chrome browser running in debug mode on port 9222
|
// Connect to an existing Chrome browser running in debug mode on port 9222
|
||||||
const options = new chrome.Options();
|
const options = new chrome.Options();
|
||||||
|
|||||||
Reference in New Issue
Block a user