Mała poprawka w klasie wrzuty

0

Witam.
Miałbym małą prośbę :)
Mam taką podręczną pobierajke z wrzuty, którą czesto podsyłam znajomym, żeby sobie pobrali jakieś pliki, bo nie wiedzą jak.
Ostatnio jednak wrzuta zmieniła ścieżki i potrzebna jest drobna modyfikacja.
Jeżeli byłby ktoś uprzejmy i wytłumaczył jak zmienić, lub podkomentować kod na przyszłość, to byłbym bardzo wdzięczny i podesłał wirtualnego browarka :)

Przykład:
Link który wysyłamy: http://waves93.wrzuta.pl/audio/8I2j2A68ZuK/09_akon_-_beautiful_feat._kardinal_offishall_colby_o_donis

Poniższa klasa generuje linka: http://www.wrzuta.pl/aud/file/8I2j2A68ZuK

A powinno wygenerować: http://waves93.wrzuta.pl/sr/f/8I2j2A68ZuK/09_akon_-_beautiful_feat._kardinal_offishall_colby_o_donis

Klasa:

<?php
    /**
     * @copyright Copyright &copy; 2007
     * @Dziekujemy!
    **/
    class Wrzuta
    {
        public function execute( $url )
        {
            if( !preg_match( '#.*?wrzuta.pl/(audio|film)/([A-z0-9]+)/.*#', $url, $data ) )
            {
                throw new Exception( '<b><big>Podany adres nie jest poprawny!</big></b><br><br>' );
            }

            switch( $data[1] )
            {
                case 'audio':
                    $url = 'http://www.wrzuta.pl/sr/f/$data';
                break;

                case 'film':
                    $url = 'http://www.wrzuta.pl/vid/file/';
                break;
            }
$licznik_nabijaj=file("l.txt");
$stan_licznika=$licznik_nabijaj[0]+1;
$licznik_nabijaj=fopen("l.txt","w");
fputs($licznik_nabijaj,$stan_licznika);
fclose($licznik_nabijaj);
echo '<a href="';
echo $url;
echo $data[2];
echo '">';
echo $url;
echo $data[2];
echo '</a>';
echo '<script>setTimeout( "';
echo "document.location.href='";
echo $url;
echo $data[2];
echo "';";
echo '", 5000 );';
echo '</script>';
    //header( 'Location: ' . $url . $data[2] );
        }
    }
    $oWrzuta = new Wrzuta( );
    try
    {
        $oWrzuta -> execute( $_POST['adres'] );
    }
    catch( Exception $ex )
    {
        die( $ex -> getMessage( ) );
    }
?> 

Pozdrawiam

0

Przecież ta klasa wygeneruje sr/f...

0

o men zmień w case na http://waves93.wrzuta.pl bvo reszta jest ok

0

Kerai, w case audio jest /aud/file/ , nie sr/f - zapomniałem zmienić bo grzebałem.

Co do tego case:
Nie wiem jak można pobrać przedrostek adresu i tytuł tj. www.xxx.wrzuta.pl/fGssjdl534/Tiesto - Elements of life

0

A to jest jakkolwiek potrzebny? Bo ja uważam że nie.
Edit: Nie, no faktycznie trza wydobyć. Spróbuj w regexpie dać var_dump(), na data.

0

Ojj, na razie PHP to jeszcze czarna magia.

Mógłby ktoś podkomentować kod? Byłbym bardzo wdzięczny

0
<?php
    /**
     * @copyright Copyright &copy; 2007
     * @Dziekujemy!
     * @Adnotacje by Demonical Monk
    **/
    class Wrzuta
    {
        public function execute( $url )
        {
            //Sprawdzamy czy URL pasuje do wzorca
            if( !preg_match( '#.*?wrzuta.pl/(sr/f|vid)/([A-z0-9]+)/.*#', $url, $data ) )
            { //Jak nie, to wyrzucamy wyjątek i nie kontynuujemy.
                throw new Exception( '<b><big>Podany adres nie jest poprawny!</big></b><br><br>' );
            }

            //Argumenty które zwraca preg_match w tym przypadku:
            //$data[4] - fragment "#.*?wrzuta.pl", więc to co jest przed domeną wrzuta.pl
            //$data[1] - fragment "(sr/f|vid)", a więc sprawdzamy czy user chce dostać video czy piosenkę
            //$data[2] - fragment "([A-z0-9]+)" z kodem materiału
            //$data[3] - fragment z opisem, nieistotny
            switch( $data[1] )
            {
                case 'sr/f': //jeśli sr/f czyli audio
                    $url = 'http://'.$data[0].'.wrzuta.pl/sr/f/'.$data[2]; //Tu poprawiłem chory nawyk :)
                break;

                case 'vid': //jeśli video
                    $url = 'http://'.$data[0].'.wrzuta.pl/vid/file/'.$data[2]; //Tutaj dodałem .$data
                break;
            }
         echo('<a href="'.$url.'">Kliknij tutaj, aby pobrać wybrany materiał</a>
                  <script type="text/javascript"> function dlm() { parent.location.href = "'.$url.'"; } setTimeout('dlm()', 2000);</script>'); //Wysyłamy link z URLem i po 2 sekundach automatycznie go otwieramy.
        }
    }
    $oWrzuta = new Wrzuta( );
    try
    {
        $oWrzuta -> execute( $_POST['adres'] );
    }
    catch( Exception $ex )
    {
        die( $ex -> getMessage( ) );
    }
?>
0

Szkoda, że z tego co widzę, to ten kod wymaga zapodania gotowego linka, a nie linka do strony gdzie można obejrzeć...

0

WTF?! Przecież to jest GOTOWY link. -_-

0

Ehe... Autor topicu chce zrobić coś takiego, że podaje się http://waves93.wrzuta.pl/audio/8I2j2A68ZuK/09_akon_-_beautiful_feat._kardinal_offishall_colby_o_donis, a dostaje http://waves93.wrzuta.pl/sr/f/8I2j2A68ZuK/09_akon_-_beautiful_feat._kardinal_offishall_colby_o_donis... Twój kod nic nie robi praktycznie.

Zresztą... w $data[0] jest (cytując za manualem PHP) "$matches[0] will contain the text that matched the full pattern".

0

To zróbcie dump i sprawdźcie jakie są ID.

0

jaki znowu dump
odpowiedź:
weź kod z pierwszego postu, z postu demokogoś weź tylko tą linijkę:

$url = 'http://'.$data[0].'.wrzuta.pl/sr/f/'.$data[2]; //Tu poprawiłem chory nawyk :)

i tylko ją podmień w odpowiednim miejscu

0
$url = 'http://'.$data[1].'.wrzuta.pl/sr/f/'.$data[2]; //Tu poprawiłem chory nawyk :)
0

@up: Właśnie stworzyłeś link postaci:
http://sr/f.wrzuta.pl/sr/f/jakis_tam_id

Wyraźnie widać że z pregiem się nie znasz najlepiej.

    class Wrzuta
    {
        public static function execute( $url )
        {
            if( !preg_match( '#^(.*?)wrzuta.pl/(audio|vid)/([^/]+)/#', ltrim($url), $data ) ) {
                throw new Exception( '<b><big>Podany adres nie jest poprawny!</big></b><br><br>' );
            }
            switch( $data[1] ) {
                case 'audio':
                    $url = $data[1].'.wrzuta.pl/sr/f/'.$data[2];
                    break;
                case 'vid':
                    $url = $data[1].'.wrzuta.pl/vid/file/'.$data[2];
                    break;
            }
            echo('<a href="'.$url.'">Kliknij tutaj, aby pobrać wybrany materiał</a> <script type="text/javascript"> function dlm() { parent.location.href = "'.$url.'"; } setTimeout(\'dlm()\', 2000);</script>');
        }
    }
0

coś ten powyższy nie działa, bo przekierowuje na strone piosenki

0

a to ty jeszcze się z tym męczysz? :| minęło z 5 tygodni ...
masz kod:

<?php Header('Location: ' . str_replace('/audio/', '/sr/f/', $_GET['link']); ?>

przerób se go na klasę, opraw w ramkę i powieś nad łóżkiem

0

tam nawiasu zapomniałem zamknąć więc nie oprawiaj w ramkę

0

Hahaha, jakiś mądry na blogu się męczył z regexpem, ten przyszedł i wszystkich str_replace położył na kolana xD

header('Location: ' . str_replace(array('/audio/', '/vid/'), array('/sr/f/', '/vid/file/'), $_GET['link']));

To opraw w ramkę i powieś nad łóżkiem.

0

Niestety wrzuta zmieniła swoje zabezpieczenia i już ta klasa nie działa

0

Eetam zabezpieczenia, po prostu format adresu się zmienił.

0

A wiecie moze z jakiego adresu teraz mp3 sa pobierane ? ;]

0

Ojj, kolego, uratowales mi zycie hehe :D Wielkie dzieki, tego potrzebowalem :)

0

Firebug -> zakładka Sieć. To nie boli.

1 użytkowników online, w tym zalogowanych: 0, gości: 1