am_dot_com

SW 2023-04-12

Apr 12th, 2023 (edited)
104
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.69 KB | None | 0 0
  1. <!-- gs.html -->
  2. <!DOCTYPE html>
  3. <html lang="pt">
  4. <head>
  5. <meta charset="UTF-8">
  6. <title>Uma interface alternativa para procuras Google</title>
  7. <script src="gs.js"></script>
  8. </head>
  9. <body>
  10. <form>
  11. <fieldset>
  12. <legend>Configuração da procura</legend>
  13. <label for="id_exp">
  14. Expressão a procurar:
  15. </label>
  16. <input type="text"
  17. id="id_exp"
  18. placeholder="procura algo"
  19. size="32">
  20. <br>
  21. <label for="id_check_ordem_relevante">
  22. Ordem dos termos é relevante:
  23. </label>
  24. <input type="checkbox"
  25. id="id_check_ordem_relevante"
  26. checked
  27. >
  28. <br>
  29. <!-- input para expressar termos a rejeitar -->
  30. <label for="id_reject">Expressão(ões) a rejeitar: </label>
  31. <input type="text"
  32. id="id_reject"
  33. placeholder="rejeitar resultados com..."
  34. size="32"
  35. >
  36. <fieldset>
  37. <legend>Rank inicial e quantidade de resultados</legend>
  38. <label for="id_rank_inicial">
  39. Rank do primeiro resultado:
  40. </label>
  41. <input id="id_rank_inicial"
  42. type="number"
  43. min="1"
  44. step="1"
  45. value="1"
  46. >
  47. <br>
  48. <label for="id_quantidade">
  49. Quantidade de resultados:
  50. </label>
  51. <input id="id_quantidade"
  52. type="number"
  53. min="10"
  54. max="50"
  55. value="50"
  56. >
  57. <br>
  58. </fieldset>
  59. <fieldset>
  60. <legend>Filtros de origem dos resultados</legend>
  61. <label for="id_filtro_site">Aceitar apenas resultados de: </label>
  62. <input type="text"
  63. id="id_filtro_site"
  64. placeholder=".facebook.com">
  65.  
  66. <br>
  67. <label for="id_filtros_pre_disponiveis">
  68. Filtros pré-disponíveis:
  69. </label>
  70. <select id="id_filtros_pre_disponiveis">
  71. <option value="" selected>respeitar a caixa de texto</option>
  72. <option value=".edu">.edu</option>
  73. <option value=".pt">.pt</option>
  74. <option value=".br">.br</option>
  75. <option value=".uk">.uk</option>
  76. <option value=".com">.com</option>
  77. </select>
  78. </fieldset>
  79. <fieldset>
  80. <legend>Segurança / Censura + Recência</legend>
  81. <label for="id_select_safety">A sua escolha:</label>
  82. <select id="id_select_safety">
  83. <option value="images">apenas quanto a imagens</option>
  84. <option value="off">sem qualquer segurança/censura</option>
  85. <option selected value="medium">média</option>
  86. <option value="high">alta</option>
  87. </select>
  88. <br>
  89. <label for="id_select_recency">Recência da indexação dos resultados:</label>
  90. <select id="id_select_recency">
  91. <option value="any">qualquer idade</option>
  92. <option value="d1">1 dia</option>
  93. <option value="w1">1 semana</option>
  94. <option value="m1">1 mês</option>
  95. <option value="y1">1 ano</option>
  96. </select>
  97. </fieldset>
  98. </fieldset>
  99. <input type="button"
  100. value="procurar"
  101. id="id_btn_procurar">
  102. </form>
  103. </body>
  104. </html>
  105.  
  106. *********************
  107.  
  108. // gs.js
  109. // *APENAS QUANDO* todos os recursos HTML e JS
  110. // do sistema tiverem sido integralmente
  111. // carregados pelo cliente/browser (e só então)
  112. // é que desencadeamos a computação; i.e. boot
  113. window.onload = boot;
  114.  
  115. const GS = "https://www.google.com/search"
  116.  
  117. const ID_EXP = "id_exp",
  118. ID_CHECK_ORDEM_RELEVANTE =
  119. "id_check_ordem_relevante",
  120. ID_BTN_PROCURAR = "id_btn_procurar",
  121. ID_REJECT = "id_reject",
  122. ID_RANK_INICIAL = "id_rank_inicial",
  123. ID_QUANTIDADE = "id_quantidade",
  124. ID_FILTRO_SITE = "id_filtro_site",
  125. ID_SELECT_FILTRO = "id_filtros_pre_disponiveis",
  126. ID_SELECT_SAFETY = "id_select_safety",
  127. ID_SELECT_RECENCY = "id_select_recency";
  128.  
  129. var oExp, // a expressão a procurar
  130. oCheckOrdemRelevante, // a ordem dos termos importa?
  131. oBtnProcurar, // botão q inicia a procura
  132. oReject, // texto a rejeitar
  133. oRankInicial, // o rank do primeiro resultado a apresentar
  134. oQuantidade, // a quantidade total de resultados a obter
  135. oFiltroSite, // nome de site(s) aceitáveis para origem dos resultados
  136. oSelectFiltro, // conj fechado de filtros
  137. oSelectSafety, // segurança/censura
  138. oSelectRecency; // recencia da indexação
  139. function id (pId){
  140. return document.getElementById(pId);
  141. }//id
  142.  
  143. function boot(){
  144. //1 - associações
  145. oExp = id(ID_EXP);
  146. oCheckOrdemRelevante = id(ID_CHECK_ORDEM_RELEVANTE);
  147. oBtnProcurar = id(ID_BTN_PROCURAR);
  148. oReject = id(ID_REJECT);
  149. oRankInicial = id(ID_RANK_INICIAL);
  150. oQuantidade = id(ID_QUANTIDADE);
  151. oFiltroSite = id(ID_FILTRO_SITE);
  152. oSelectFiltro = id(ID_SELECT_FILTRO);
  153. oSelectSafety = id(ID_SELECT_SAFETY);
  154. oSelectRecency = id(ID_SELECT_RECENCY);
  155.  
  156. // TODO : controlo de qualidade
  157.  
  158. //2 - conferir comportamento
  159. oBtnProcurar.onclick = go_procurar;
  160. oSelectFiltro.onchange = mudar_filtro;
  161. }//boot
  162.  
  163. function mudar_filtro(){
  164. novoValorEscolhido = oSelectFiltro.value;
  165. oFiltroSite.value = novoValorEscolhido;
  166. }
  167.  
  168. function go_procurar(){
  169. //v1
  170. //window.alert("Irei procurar, quando souber.")
  171.  
  172. pedido = GS+"?";
  173.  
  174. // acesso aos condicionantes da procura
  175. expressao = oExp.value.trim()
  176. expressaoCodificada =
  177. encodeURIComponent(expressao);
  178. textoParaRejeitar = oReject.value.trim();
  179.  
  180. //as_epq
  181. bOrdemRelevante =
  182. oCheckOrdemRelevante.checked;
  183.  
  184. // construção do pedido é condicional
  185. // python and or not
  186. // JS && e-lógico-cc || ou-lógico-cc ! negação & e-lógico-completo | ou-lógico-completo
  187. if(!bOrdemRelevante)
  188. pedido+="q="+expressaoCodificada;
  189.  
  190. else // sendo a ordem relevante, usar o param adequado
  191. pedido+="as_epq="+expressaoCodificada;
  192.  
  193. if(textoParaRejeitar!="") {
  194. textoParaRejeitar =
  195. encodeURIComponent(textoParaRejeitar);
  196.  
  197. pedido += "&as_eq=" + textoParaRejeitar;
  198. }
  199.  
  200. iRankInicial = Number(oRankInicial.value);
  201. pedido+="&start="+iRankInicial;
  202.  
  203. iQuantidade = Number(oQuantidade.value);
  204. pedido+="&num="+iQuantidade;
  205.  
  206. strFiltroSite = oFiltroSite.value.trim()
  207. if (strFiltroSite!=""){
  208. pedido+="&as_sitesearch="+strFiltroSite;
  209. }
  210.  
  211. seg_censura = oSelectSafety.value;
  212. pedido+="&safety="+seg_censura;
  213.  
  214. recencia = oSelectRecency.value;
  215. bFiltrar = recencia!="any";
  216. if(bFiltrar)
  217. pedido+="&as_qdr="+recencia;
  218.  
  219. document.location.href = pedido;
  220. }
Advertisement
Add Comment
Please, Sign In to add comment