Lite klurigheter.... Kört fast m.a.o.

PHP kan diskuteras här.

Moderatorer: Nille, Minime

Användares profilbild
MDKDIO
Allsmäktig
Poster: 327
Blev medlem: 21 Apr 2005 08:24
Ort: Bollnäs

Lite klurigheter.... Kört fast m.a.o.

Posta av MDKDIO » 02 Feb 2017 21:50

Yay! Endast 6 år sedan senaste posten (på ett ungefär..)

Scenario:
Huvudsidans sökfunktion för Slackware rel. paket.
Current
14.2 etc..

Jag började på följande:
1. Läsa in PACKAGES.TXT filen från packages.slackware.com
t.ex. h**p://mirror.onet.pl/pub/mirrors/slackware/slackware64-14.2/PACKAGES.TXT

2. Tog bort det mesta av texten, så just nu har jag en mängd med rader.
ConsoleKit2-1.0.0-x86_64-3.txz
Cython-0.23.4-x86_64-1.txz
o.s.v.

Dock stötte jag på ett problem med att filerna inte följer något standard schema, typ
namn-version-arch-rev.txz
utan en del filer har _ + @ och annat

Vad jag vill få till är:
ConsoleKit2 1.0.0 x86_64 3
(kan iofs ta bort x86_64, då det inte behövs).


Följande kod kör jag nu: Med viss hjälp från minime (Tusen tack!)

Kod: Välj alla

<?php

$lines = file('PACKAGES.TXT');  // Lokal gammal fil från 2015

foreach($lines as $line) {

if($line == "\n") {
   $line = "";
} else {
if($line != "") {
  $line = "$line<br />";
 }
}
//echo "$line";
$buffer = $line;

list($a,$b) = explode("PACKAGES.TXT;",$buffer);
list($a,$c) = explode("PACKAGE NAME:",$buffer);

$file_date = "$b";
$file = "$c";

$pkg = "$file";
list($p,$p1,$p2,$p3,$p4,$p5) = explode("-",$pkg);

echo $file_date;
echo $file;
}
fclose($lines);
?>
Vilket ger:

Thu Mar 5 22:08:24 UTC 2015
ConsoleKit-0.4.5-x86_64-1.txz
GConf-3.2.6-x86_64-1.txz
M2Crypto-0.21.1-x86_64-2.txz
MPlayer-1.1_20130819-x86_64-3.txz
ModemManager-1.0.0-x86_64-2.txz
NetworkManager-0.9.8.8-x86_64-1.txz
PyQt-4.9.6-x86_64-1.txz
QScintilla-2.6.1-x86_64-4.txz
Thunar-1.6.3-x86_64-2.txz
a2ps-4.14-x86_64-5.txz
aaa_base-14.1-x86_64-1.txz
aaa_elflibs-14.1-x86_64-4.txz
aaa_terminfo-5.8-x86_64-1.txz
aalib-1.4rc5-x86_64-5.txz
acct-6.5.4-x86_64-2.txz
acl-2.2.51-x86_64-1.txz
acpid-2.0.19-x86_64-1.txz
akonadi-1.9.2-x86_64-1.txz
alpine-2.20-x86_64-1.txz
alsa-lib-1.0.27.2-x86_64-1.txz

o.s.v.
Slackware 64-bit 14.2 x 1 (KDE) (desktop)
Slackware 64-bit 14.2 x 1 (XFCE) (Stenålders Laptop)
Slackware 14.2 (xfce) (MediaPC)
+ Div annat Gott & Blandat :)
Linux Counter. User 267939

Användares profilbild
MDKDIO
Allsmäktig
Poster: 327
Blev medlem: 21 Apr 2005 08:24
Ort: Bollnäs

Re: Lite klurigheter.... Kört fast m.a.o.

Posta av MDKDIO » 26 Okt 2017 12:58

Skam den som ger sig...

Efter en "liten push" från minime i går kväll, så ser resultatet ut som nedan....

Kod: Välj alla

Wed Oct 18 18:54:22 UTC 2017 
bash-4.3.048-x86_64-1 
bind-9.10.5_P3-x86_64-1 
bluez-5.47-x86_64-1 
ca-certificates-20161130-noarch-1 
etc.....
Så nu borde det vara nära en fungerande paketsök funktion...

/J
Slackware 64-bit 14.2 x 1 (KDE) (desktop)
Slackware 64-bit 14.2 x 1 (XFCE) (Stenålders Laptop)
Slackware 14.2 (xfce) (MediaPC)
+ Div annat Gott & Blandat :)
Linux Counter. User 267939

Användares profilbild
Minime
Allsmäktig
Poster: 280
Blev medlem: 14 Okt 2005 14:27
Ort: Loos
Kontakt:

Re: Lite klurigheter.... Kört fast m.a.o.

Posta av Minime » 06 Nov 2017 10:35

Påbörjat att fila lite på detta, kommit en bra bit.

Använt cURL-mod till PHP för att hämta data p.g.a fread inte klara av https förfrågningar.
Lite strul med regexp "pattern" för stunden... Men det tar sig. 😊

Server EeeBox Atom 1,2MHz 1 Gb RAM Slackware 13.37
EPox AMD 2800+ 2,6 GHz 1024 Mb RAM Slackware 14.0
Lenovo Thinkpad Edge E531Core i7 2.2GHz 8Gb RAM Wintendo 8.1 x64bit
Miraclebox Premium Twin HD - Egami 6.6.3 (Neotion CI+ CA-modul)

Användares profilbild
Minime
Allsmäktig
Poster: 280
Blev medlem: 14 Okt 2005 14:27
Ort: Loos
Kontakt:

Re: Lite klurigheter.... Kört fast m.a.o.

Posta av Minime » 07 Nov 2017 23:57

Vad jag kommit fram till så långt...(Work in progress) :-)

Kod: Välj alla

/*
 Slackware packages dump version 0.2 by Minime - 2017
*/
error_reporting(E_ALL);
ini_set("display_errors", 1);

function getSslPage($url) {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
    curl_setopt($ch, CURLOPT_HEADER, false);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($ch, CURLOPT_URL, 'https://ftp.acc.umu.se/mirror/slackware.com/'.$url);
    curl_setopt($ch, CURLOPT_REFERER, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
    $result = curl_exec($ch);
    curl_close($ch);
    return $result;
}

function regex_filter($pattern, $data) {
	preg_match_all("/$pattern/i",$data, $match);
	return $match;
}

$fileinfo_pkg = getSslPage('slackware64-14.2/PACKAGES.TXT');

$arr_package = regex_filter('(?:PACKAGE\sNAME:\s\s)(.*\.t\wz)',$fileinfo_pkg);
$arr_package_location = regex_filter('(?:PACKAGE\sLOCATION:\s\s\.\/)(.*[\.\w\/])',$fileinfo_pkg);
$arr_package_compr = regex_filter('(?:PACKAGE\sSIZE\s\(compressed\):\s\s)(.*[\d])(?:\s\w)',$fileinfo_pkg);
$arr_package_uncompr = regex_filter('(?:PACKAGE\sSIZE\s\(uncompressed\):\s\s)(.*[\d])(?:\s\w)',$fileinfo_pkg);

$arr_res_rows = count($arr_package[1]);

echo '<table>';
$pn = 1;
for ($i = 0; $i < $arr_res_rows; $i++) {
	echo '<tr>';
	echo '<td>'.$pn.'<td>';
	echo '<td>'.$arr_package[1][$i].'</td>';
    $pack_fix = regex_filter('(^.+?)(?:\-[0-9\_\.\w\+]+\-(i\d{1}86|x86|x86\_64|noarch|fw)\-\d{1,2}\.t\wz$)',$arr_package[1][$i]);
    echo '<td>'.$pack_fix[1][0].'</td>';
	echo '<td>'.$arr_package_location[1][$i].'</td>';
	echo '<td>'.$arr_package_compr[1][$i].'</td>';
	echo '<td>'.$arr_package_uncompr[1][$i].'</td>';
	echo '</tr>';
	$pn++;
}
echo '</table>';
Vilket ger:
1 ConsoleKit2-1.0.0-x86_64-3.txz ConsoleKit2 slackware64/l 148 760
2 Cython-0.23.4-x86_64-1.txz Cython slackware64/d 2024 9760
3 GConf-3.2.6-x86_64-3.txz GConf slackware64/l 908 7670
4 LibRaw-0.17.2-x86_64-1.txz LibRaw slackware64/l 328 2130
5 M2Crypto-0.23.0-x86_64-1.txz M2Crypto slackware64/l 216 1220
6 MPlayer-1.2_20160125-x86_64-3.txz MPlayer slackware64/xap 13136 39680
7 ModemManager-1.4.14-x86_64-1.txz ModemManager slackware64/n 820 5930
8 NetworkManager-1.2.2-x86_64-2.txz NetworkManager slackware64/n 3900 29530
9 PyQt-4.11.4-x86_64-1.txz PyQt slackware64/l 8400 40960
10 QScintilla-2.9.1-x86_64-1.txz QScintilla slackware64/l 1552 8420
11 Thunar-1.6.10-x86_64-3.txz Thunar slackware64/xfce 920 5440
12 a2ps-4.14-x86_64-5.txz a2ps slackware64/ap 732 4560
13 a52dec-0.7.4-x86_64-2.txz a52dec slackware64/l 52 180
14 aaa_base-14.2-x86_64-2.txz aaa_base slackware64/a 12 90
15 aaa_elflibs-14.2-x86_64-23.txz aaa_elflibs slackware64/a 5748 21560

Och så vidare..

Server EeeBox Atom 1,2MHz 1 Gb RAM Slackware 13.37
EPox AMD 2800+ 2,6 GHz 1024 Mb RAM Slackware 14.0
Lenovo Thinkpad Edge E531Core i7 2.2GHz 8Gb RAM Wintendo 8.1 x64bit
Miraclebox Premium Twin HD - Egami 6.6.3 (Neotion CI+ CA-modul)

Skriv Svar