Skocz do zawartości

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Zdjęcie

Skrypt do demek


  • Zamknięty Temat jest zamknięty
13 odpowiedzi w tym temacie

#1 DB

    Wszechwidzący

  • Użytkownik

Reputacja: 19
Początkujący

  • Postów:230
Offline

Napisano 20.05.2009 20:54

Witam, szukam jakiegoś skryptu w php prezentującego pliki na stronie. Chodzi mi tu o skrypt do wstawiania demek.

coś takiego jak to : http://hltv.1shot1kill.pl/772

Wiem że firmy robią to na własny użytek, ale może ktoś zna jakiś gotowy na którym można się oprzeć przerabiając pod siebie.
  • +
  • -
  • 0

#2 MafiaDL

    Naj-Najstarszy Moderator

  • Przyjaciel

Reputacja: 561
Wszechwiedzący

  • Postów:3 492
  • GG:
  • Imię:Łukasz
  • Lokalizacja:Warsaw
Offline

Napisano 21.05.2009 00:42

przydalo by sie :P
  • +
  • -
  • 0

#3 wizu

    Godlike

  • Przyjaciel

Reputacja: 224
Profesjonalista

  • Postów:1 217
  • GG:
  • Lokalizacja:Sanok
Offline

Napisano 21.05.2009 10:51

Tzn masz demka na jakimś serwerze www i chcesz je w taki sposób prezentować? To mogę napisać na szybkiego ;)
Powiedz tylko jaka ścieżka do katalogu.
  • +
  • -
  • 0

#4 Misiaczek ;c

    /dev/null

  • Moderator

Reputacja: 1 678
Godlike

  • Postów:2 496
  • GG:
  • Steam:steam
  • Imię:Michał
  • Lokalizacja:Halemba
Offline

Napisano 21.05.2009 11:19

wizu, mu bardziej chyba rozchodzi sie o skrypt który pakuje demka z hltv, wysyła je na dany serwer www, i potem prezentuje w tej formie :D
  • +
  • -
  • 0

#5 DB

    Wszechwidzący

  • Autor tematu
  • Użytkownik

Reputacja: 19
Początkujący

  • Postów:230
Offline

Napisano 21.05.2009 12:16

Właśnie tak jak wizu pisze - potzrebuje skrypt który jakoś to zaprezentuje.
Wizu, daj obojętnie jaką ja sobie ustawie. Chodzi mi właśnie o taki sposób prezentacji tych demek jak jest na tej stronie


wizu, mu bardziej chyba rozchodzi sie o skrypt który pakuje demka z hltv, wysyła je na dany serwer www


To już sobie zrobiłem :>
  • +
  • -
  • 0

#6 MafiaDL

    Naj-Najstarszy Moderator

  • Przyjaciel

Reputacja: 561
Wszechwiedzący

  • Postów:3 492
  • GG:
  • Imię:Łukasz
  • Lokalizacja:Warsaw
Offline

Napisano 21.05.2009 12:20

Mi$^, ta moze jeszcze sam sie zmienia na avi i wypala na płyte ^^
  • +
  • -
  • 0

#7 Misiaczek ;c

    /dev/null

  • Moderator

Reputacja: 1 678
Godlike

  • Postów:2 496
  • GG:
  • Steam:steam
  • Imię:Michał
  • Lokalizacja:Halemba
Offline

Napisano 21.05.2009 12:33

DB, udostępnił byś skrypt od pakowania oraz wysyłania? :>
  • +
  • -
  • 0

#8 DB

    Wszechwidzący

  • Autor tematu
  • Użytkownik

Reputacja: 19
Początkujący

  • Postów:230
Offline

Napisano 21.05.2009 13:17

akurat mam serwer www i cs na jednej maszynie,więc to poprostu wpis do crona: szukanie odpowiednich plików i przenoszenie w inne miejsce a następnie pakowanie wiec nie wiem czy taki ci sie przyda ?

Podejrzewam że dałoby się również wysłać na zewnątrz przez wudowanego klienta ftp z dedyka. Kwestia pokombinowania

Jak chcesz to napisz na pw ścieżki skąd dokąd ma wysyłać i jakie pliki to moge coś pomyśleć

[ Dodano: 21-05-2009, 19:22 ]
OK, dzisiaj potestowałem trochę, muszę tylko poskładać wszystko do kupy i wrzucę skrypcik zgrywający, pakujący i wysyłający na serwer ftp.
  • +
  • -
  • 0

#9 wizu

    Godlike

  • Przyjaciel

Reputacja: 224
Profesjonalista

  • Postów:1 217
  • GG:
  • Lokalizacja:Sanok
Offline

Napisano 21.05.2009 19:59

Dzisiaj już nie zdąże, ale jutro Ci napisze.
  • +
  • -
  • 0

#10 DB

    Wszechwidzący

  • Autor tematu
  • Użytkownik

Reputacja: 19
Początkujący

  • Postów:230
Offline

Napisano 21.05.2009 23:47

ok, skrypt do pakowania, wrzucania demek już właściwie napisałem, jutro go sprawdzę i wrzucę na forum
  • +
  • -
  • 0

#11 wizu

    Godlike

  • Przyjaciel

Reputacja: 224
Profesjonalista

  • Postów:1 217
  • GG:
  • Lokalizacja:Sanok
Offline

Napisano 22.05.2009 10:39

Proszę Cię bardzo.
<?
//folder w którym mam demka
$folder = "dema";
$dir = opendir($folder);

$sciezka = pathinfo($_SERVER['PHP_SELF']);
$adres = 'http://'.$_SERVER['HTTP_HOST'].$sciezka['dirname'].'/';

echo '<table>
<tr><td>Kopiuj link</td><td>Mapa</td><td>Czas rozpoczęcia</td><td>Czas trwania</td><td>Rozmiar</td><td>Pobierz</td></tr>';
while($nazwa = readdir($dir))
{
	$demo = $folder.'/'.$nazwa;
	$rozsz = pathinfo($demo, PATHINFO_EXTENSION); 
	
	if(($rozsz == 'zip') or ($rozsz == 'rar'))
	{
		$dane = explode('-', $nazwa);
		
		$data = $dane[1];
		$rok = substr($data, 0, 2);
		$mies = substr($data, 2, 2);
		$dzien = substr($data, 4, 2);
		$godz = substr($data, 6, 2);
		$min = substr($data, 8, 2);
		
		$datarozpoczecia = '20'.$rok.'-'.$mies.'-'.$dzien.' '.$godz.':'.$min;
		$datazakonczenia = date ("Y-m-d H:i", filemtime($demo));
		$trwalo = (strtotime($datazakonczenia) - strtotime($datarozpoczecia)) / 60;
		
		$mapa = $dane[2];
		$mapa = explode('.', $mapa);
		$mapa = $mapa[0];
		
		$rozmiar = round( filesize($demo) / 1024 / 1024, 2);
		
		echo '<tr>
		<td><input type="text" value="'.$adres.$demo.'" readonly="yes" onclick="this.select()" /></td>
		<td>'.$mapa.'</td>
		<td>'.$datarozpoczecia.'</td>
		<td>'.date ("H:i", $trwalo).'</td>
		<td>'.$rozmiar.' MB</td>
		<td>[url="'.$adres.$demo."]Pobierz[/url]</td>
		</tr>';
	}
}
closedir($dir);
?>

Ważne
Aby skrypt działał tak jak powinien, nazwa demka musi być w odpowiednim formacie. Zrobiłem dla takich nazw jak na http://hltv.1shot1kill.pl/772
Czyli. Np demko HLTV_Tower1-0905221042-de_cpl_strike.dem.zip
nazwa hltv-data w takim formacie jak wyżej (rok, miesiąc, dzień, godzina, minuty)-mapa.dem. zip lub rar
Jeśli będziesz chciał coś zmienić, to pisz przerobie. Pamiętaj, żeby nie używać w nazwie dem więc niż tych dwóch pogrubionych pauz.
Długość demka jest obliczana na podstawie różnicy daty ostatniej modyfikacji i utworzenia (pobieranej z nazwy pliku).

Pamiętaj aby wrzucić Twój skrypt, może też się komuś przyda ;)
  • +
  • -
  • 0

#12 MafiaDL

    Naj-Najstarszy Moderator

  • Przyjaciel

Reputacja: 561
Wszechwiedzący

  • Postów:3 492
  • GG:
  • Imię:Łukasz
  • Lokalizacja:Warsaw
Offline

Napisano 22.05.2009 12:00

elegancja to było by dobre na Babilon mniej pracy dla H@ :P
  • +
  • -
  • 0

#13 DB

    Wszechwidzący

  • Autor tematu
  • Użytkownik

Reputacja: 19
Początkujący

  • Postów:230
Offline

Napisano 22.05.2009 15:51

Wczoraj coś wymyśliłem, a dzisiaj wpadlem na znacznie prostszy sposób i zrobiłem od nowa.

Instalacja:
Ściągamy załącznik, wrzucamy na serwer, ustawiamy chmody (chmod +x ./wysylanie.sh). Wiadomo że nie ma sensu odpalać go ręcznie co chwilę więc dodajemy do crona wpis uruchamiający powiedzmy co 10 minut (dema będą dodawane min. 2 a max 10 minut po zakończeniu mapy).

crontab -e > insert
*/10 * * * * ./wysylanie.sh
esc > shift+zz



> Należy ustawić adres serwera ftp, użytkownika ftp i hasło na ftp
oraz docelowy folder na ftp do którego będą wrzucane dema


Działanie:
1.Szukamy dem w katalogu cstrike do którego należy podać scieżkę
2. Pliki które zostały zmodyfikowane ostatnio później niż 2 minuty zostają przenoszone do katalogu "outbox" (katalog sam się utworzy, nie trzeba nic robić a po wysłaniu demek zostanie usunięty wraz z zawartością). Warunek modyfikacji > 2 min chroni przed kopiowaniem dem które się aktualnie nagrywają.
3. Po przeniesieniu plików .dem do tymczasowego katalogu zostają one spakowane gzipem.
4. Następnie następuje połączenie z serwerem ftp i upload spakowanych plików.
5. Po wysłaniu dema z tymczasowego folderu wraz z nim są usuwane.

Do działania oczywiście wymagany jest zainstalowany klient ftp, oraz gzip (ja zrobilem na podstawowym ftp bo najczęściej jest on wbudowany w podstawową instalację linuksa ale mozna po małych modyfikacjach skorzystać z innych). Katalog w którym znajduje się wysylanie.sh musi miec prawa zapisu - proponuje w $home go zostawić


_host="host"
_user="uzytkownik"
_pass="haslo"

_pliki="*.zip"
katalog_zdalny="dema"
katalog_lokalny="outbox"
katalog_cstrike="$HOME/hlds_l/cstrike/*.dem"


mkdir $katalog_lokalny
find $katalog_cstrike -mmin +2 -exec mv {} $katalog_lokalny ;
gzip -1f -S .zip $katalog_lokalny/*.dem

cd $katalog_lokalny
ftp -in $_host << KONIEC
user $_user $_pass
binary
mkdir $katalog_zdalny
cd $katalog_zdalny
send $_pliki
close
KONIEC

rm -f $katalog_lokalny


Jak sprawdzałem u siebie to działa. W razie problemów > PW.

Załączone pliki


  • +
  • -
  • 0

#14 wizu

    Godlike

  • Przyjaciel

Reputacja: 224
Profesjonalista

  • Postów:1 217
  • GG:
  • Lokalizacja:Sanok
Offline

Napisano 23.05.2009 09:50

Nowa wersja. Usunięty czas trwania, gdyż podawany czas nie był taki, jak czas trwania demka. Dodatkowo demka są posortowane od najnowszego do najstarszego.
<?
//folder w którym mam demka
$folder = "dema";

$ext   = array('zip', 'rar');

$sciezka = pathinfo($_SERVER['PHP_SELF']);
$adres = 'http://'.$_SERVER['HTTP_HOST'].$sciezka['dirname'].'/';

$files = scandir($folder);
$list  = array();

foreach($files as $file) 
{
	$file = pathinfo($file);
	if (in_array($file['extension'], $ext)) 
	{
		$list[filectime($folder.'/'.$file['basename'])] = $file['basename'];
	}
}
arsort($list);

echo '<table>
<tr><td>Kopiuj link</td><td>Mapa</td><td>Data</td><td>Godzina</td><td>Rozmiar</td><td>Pobierz</td></tr>';

foreach ($list as $nazwa) 
{
	$demo = $folder.'/'.$nazwa;
	$dane = explode('-', $nazwa);
		
	$data = $dane[1];
	$rok = substr($data, 0, 2);
	$mies = substr($data, 2, 2);
	$dzien = substr($data, 4, 2);
	$godz = substr($data, 6, 2);
	$min = substr($data, 8, 2);
		
	$data = '20'.$rok.'-'.$mies.'-'.$dzien;
	$godzina = $godz.':'.$min;
		
	$mapa = $dane[2];
	$mapa = explode('.', $mapa);
	$mapa = $mapa[0];
		
	$rozmiar = round( filesize($demo) / 1024 / 1024, 2);
	
	echo '<tr>
	<td><input type="text" value="'.$adres.$demo.'" readonly="yes" onclick="this.select()" /></td>
	<td>'.$mapa.'</td>
	<td>'.$data.'</td>
	<td>'.$godzina.'</td>
	<td>'.$rozmiar.' MB</td>
	<td>[url="'.$adres.$demo."]Pobierz[/url]</td>
	</tr>';
}
?>

  • +
  • -
  • 0




Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych