-
Notifications
You must be signed in to change notification settings - Fork 0
/
fundo.php
117 lines (94 loc) · 3.82 KB
/
fundo.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
<pre><?php
//Requer número da coleção
if (!isset($_GET["colecao"])) die();
$colec = $_GET["colecao"];
//Define número da página
if (!isset($_GET["pag"])) {
$pagin = 1;
} else {
$pagin = $_GET["pag"];
}
//Requer script para login
require "login.php";
//Consulta à coleção
$params = [
"input_pesqfundocolecao" => $colec,
"data_inicio" => "",
"data_fim" => "",
"input_pesqnotacao" => "",
"nivel" => "",
"checked" => "checked",
"arquivo_digital" => "arquivo_digital",
"txt_pesquisa" => "",
"v_pesquisa" => "",
"v_fundo_colecao" => $colec,
"v_ordem" => "Relevancia",
"pesquisa" => ""
];
$ch = curl_init( "https://sian.an.gov.br/sianex/consulta/resultado_pesquisa_new.asp?v_pesquisa=&v_fundo_colecao=".$colec."&Pages=".$pagin );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
curl_setopt( $ch, CURLOPT_POST, true );
curl_setopt( $ch, CURLOPT_POSTFIELDS, http_build_query( $params ) );
curl_setopt( $ch, CURLOPT_HTTPHEADER, ['Referer' => 'https://sian.an.gov.br/sianex/consulta/resultado_pesquisa_new.asp']);
curl_setopt( $ch, CURLOPT_COOKIEJAR, "cookie.txt" );
curl_setopt( $ch, CURLOPT_COOKIEFILE, "cookie.txt" );
curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, false);
$output = curl_exec( $ch );
curl_close( $ch );
//Verifica se a consulta deu certo.
//Sem sucesso, aguarda 15 segundos e atualiza página.
//Com sucesso, retorna lista de links para outras páginas e links de arquivos para download.
if ($output == FALSE) {
sleep(15);
http_response_code(303);
header("Location: ".$local."/fundo.php?colecao=".$colec."&pag=".$pagin."&time=".time());
} else {
//Abre html
echo("<pre>");
//Captura número de páginas no fundo e cria loop para exibição da lista
preg_match_all('/var TotalPag = (\d*);/', $output, $pages);
for ($p=1; $p <= $pages['1']['0']; $p++) {
echo("<a href='fundo.php?colecao=".$colec."&pag=".$p."'>Página ".$p."</a>\n");
}
//Linha para diferenciar seções
echo("<hr>");
//Início da tabela
echo("<table border='1'>");
//Isola cada linha e inicia loop
preg_match_all('/<li><span class="titulo_conteudo">[\s\S]*?<\/li>/', $output, $files);
foreach ($files['0'] as $key => $file) {
//Verifica se há link para download
preg_match('/javascript:fjs_Link_download\(\'([^\']*)\',\'([^\']*)\'/', $file, $filecode);
//Continua para próxima linha caso linha atual não possua código para download
if(!isset($filecode['1'])) continue;
//Recupera nome do arquivo
preg_match('/BR_[\w]{2}AN[\w]{3}_[^ \.\x{005C}]*\.[\w]*/', $file, $filename);
//Recupera alias do arquivo para associar com seu dossiê
preg_match('/BR [\w]{2}AN[\w]{3} [^-]*/', $file, $filealias);
//Recupera número do dossiê
preg_match('/javascript:mudapagina_link\(\'in_([\d]*)/', $file, $filenumber);
echo("
<tr>
<td>".$pagin."</td>
<td>
<a
href='arquivo.php?arquivo={$filecode['1']}&NomeArquivo={$filecode['2']}&apresentacao=1'
download='{$filename['0']}'
>{$filename['0']}</a>
</td>
<td>");
if (!isset($filealias['0'])) {
echo "Arquivo sem dossiê";
} else {
$filealias['0'] = trim($filealias['0']);
echo "<a href='dossie.php?id={$filenumber['1']}'>{$filealias['0']}.html</a>";
}
echo("</td>
</tr>
");
}
//Fecha tabela
echo("</table>");
//Fecha html
echo("</pre>");
}