1. Halo Guest, pastikan Anda selalu menaati peraturan forum sebelum mengirimkan post atau thread baru.

Belajar membuat script grabber 4shared dari API nya yuk

Discussion in 'Pemrograman Web' started by nababan, Nov 30, 2011.

  1. nababan

    nababan Ads.id Fan

    Joined:
    Mar 8, 2011
    Messages:
    136
    Likes Received:
    57
    Location:
    Flashdisk
    Kebetulan kemarin sedang cari-cari pembahasan Array XML dapat nemu contoh script grabbing 4shared.


    Sekalian aja saya coba share dan mendiskusikannya dengan kumendan, moga ada master wap yang mau ikutan dan mau mengajari hamba. :you:


    Kelebihan dari 4shared API ini adalah karena akses dan fetch list file nya yg jauh lebih ringan, lebih cepat dan tentunya lebih hemat bandwith/resource server kita karena kita tidak lagi banyak menggunakan regexp untuk memotong/cut content yg tidak kita butuhkan. Dan tentunya lebih simple menggunakannya :)


    Baiklah cukup basa-basinya, sekarang kita mulai yuuuuuk.... (siapkan secangkir kopi panas)


    Oke, pertama kali kita buat dulu class fungsi untuk membuat array dari XML Format yg didapatkan:
    PHP:
    <?php
    function xmltoarray($contents$get_attributes=1) {
        if(!
    $contents) return array();
        if(!
    function_exists('xml_parser_create')) {
            return array();
            }
        
    $parser xml_parser_create();
        
    xml_parser_set_option$parserXML_OPTION_CASE_FOLDING);
        
    xml_parser_set_option$parserXML_OPTION_SKIP_WHITE);
        
    xml_parse_into_struct$parser$contents$xml_values );
        
    xml_parser_free$parser );
        if(!
    $xml_values) return;
        
    $xml_array = array();
        
    $parents = array();
        
    $opened_tags = array();
        
    $arr = array();
        
    $current = &$xml_array;
        foreach(
    $xml_values as $data) {
            unset(
    $attributes,$value);
            
    extract($data);
            
    $result '';
            if(
    $get_attributes) {
                
    $result = array();
                if(isset(
    $value)) $result['value'] = $value;
                if(isset(
    $attributes)) {
                    foreach(
    $attributes as $attr => $val) {
                        if(
    $get_attributes == 1$result['attr'][$attr] = $val;
                        }
                    }
                } elseif(isset(
    $value)) {
                
    $result $value;
                }
            if(
    $type == "open") {
                
    $parent[$level-1] = &$current;
                if(!
    is_array($current) or (!in_array($tagarray_keys($current)))) {
                    
    $current[$tag] = $result;
                    
    $current = &$current[$tag];
                    } else {
                    if(isset(
    $current[$tag][0])) {
                        
    array_push($current[$tag], $result);
                        } else {
                        
    $current[$tag] = array($current[$tag],$result);
                        }
                    
    $last count($current[$tag]) - 1;
                    
    $current = &$current[$tag][$last];
                    }
                } elseif(
    $type == "complete") {
                if(!isset(
    $current[$tag])) {
                    
    $current[$tag] = $result;
                    } else {
                    if((
    is_array($current[$tag]) and $get_attributes == 0)
                    or (isset(
    $current[$tag][0]) and is_array($current[$tag][0]) and $get_attributes == 1)) {
                        
    array_push($current[$tag],$result);
                        } else {
                        
    $current[$tag] = array($current[$tag],$result);
                        }
                    }
                } elseif(
    $type == 'close') {
                
    $current = &$parent[$level-1];
                }
            }
        return(
    $xml_array);
        }
    ?>

    Fungsi diatas adalah fungsi xmltoarray() (untuk pecl sebenarnya xml2array) yang merupakan pecl dari PHP, merupakan plugin fungsi tambahan dan bukan bawaan PHP default, sehingga kalau PHP nya belum enable maka fungsi xml2array harus dibuat manual seperti diatas yg diberi nama fungsi xmltoarray().


    Nah dengan adanya fungsi diatas maka kita bisa membuat hasil results pencarian file MP3 dari 4shared API Server dalam bentuk array, sehingga kita dapat lebih leluasa meletakkan dan mem print-out hasil yg didapatkan sesuai dengan format halaman yang kita buat.


    Adapun server API dari 4shared yang digunakan adalah:

    Perhatikan 2 kata yg saya beri warna merah, yaitu:
    • KATA_KUNCI
      Kata kunci disini merupakan keywords yang dipakai saat kita melakukan pencarian file dari 4shared, merupakan string dan untuk lebih amannya saran saya menggunakan urlencode().
    • START
      START yang disini dimaksudkan untuk penomoran file untuk lists file yg didapatkan (Maksudnya adalah file dalam halaman).
      Lebih simple nya, start disini dimaksudkan untuk halaman-halaman pada lists file yg didapatkan.


    Jadi dengan ke-dua parameter diatas, kita hanya butuh 2 variable pada web/wap kita yg dinamis untuk penggunaan Kata_kunci dan halaman.
    Misalnya saya buat 2 variable itu adalah:

    Jadi kita dapay membuat contoh sebagai berikut:
    PHP:
    <?php
    $katakunci 
    = isset($_GET['katakunci']) ? $_GET['katakunci'] : '';
    $page = isset($_GET['page']) ? $_GET['page'] : 0;
    ?>

    Untuk filter (menghindari hack/xss pada wap/web kita):
    PHP:
    <?php
    if ( (is_array($katakunci) === true) || (is_array($page) === true) ) {
        die(
    'Ada array string pada kata kunci atau page yg dipakai.');
        }
    $katakunci urlencode($katakunci);
    $page intval($page);
    ?>

    Sekarang, tinggal kita buat contoh form pencariannya:
    PHP:
    <form action="<?=$_SERVER['PHP_SELF']?>" method="post">
        <div class="postreply">
            <input type="text" name="katakunci" value="" />
            <input type="submit" name="search" value="Search" />
        </div>
    </form>

    Dengan form diatas, kita bisa mendapatkan variabel field katakunci yaitu pada <input type="text" name="katakunci" value="" /> dan variabel field tambahan search yaitu pada <input type="submit" name="search" value="Search" /> dimana field search ini sengaja saya tambahkan untuk aksi yang dilakukan.


    Jadi bisa kita buat misalnya:
    PHP:
    <?php
    if (isset($_POST['search'])) {
        
    $keywords = isset($_POST['katakunci']) ? $_POST['katakunci'] : '';
        if (empty(
    $keywords) || $keywords == '') { die('Kata kunci nya kosong kumendan.'); }
        
    $keywords urlencode($keywords);
        
    header('Location: '.$_SERVER['PHP_SELF'].'?katakunci='.$keywords);
        exit;
        }
    ?>

    Kenapa muncul variable $keywords diatas? Itu adalah penerjemah dari field katakunci yang kita isi, karena $katakunci kita terjemahkan sebelumnya adalah superglobal $_GET, padahal asi yang kita lakukan adalah global $_POST.
    Sebenarnya untuk menggabungkan kedua aksi ini supaya lebih sedikit variable, kita bisa menggunakan global $_REQUEST tetapi saran saya lebih ke $_GET dan $_POST aja karena selain metode get dan post, $_REQUEST juga didalamnya termasuk $_COOKIE dan $_SESSION (CMIIW).


    Nah dengan aksi POST dan API Server serta fungsi xmltoarray() yang kita buat, kita bisa melakukan fetch data dari server API 4shared dengan menggunakan file_get_contents(), seperti berikut:
    PHP:
    <?php
    if ($katakunci) {
        
    $url 'http://search.4shared.com/network/searchXml.jsp?q='.$katakunci.'&searchExtention=mp3&sortType=1&sortOrder=1&searchmode=3';
        if (
    $page) { $url .= '&start='.($page 10); }
        
    $result = @file_get_contents($url);
        if (
    $result == false) {
            die(
    'Error fetch content.');
            }
        else {
            
    $results xmltoarray($result);
            if (
    intval($results['search-result']['total-files']['value']) > 1) {
                foreach    (
    $results['search-result']['result-files']['file'] as $resultfiles) {
                    
    ?>
                    <div style="border-bottom:1px solid #898989;">
                        <div style="color:red;border-bottom:1px solid #363636;"><?=$resultfiles['name']['value']?></div>
                        <a href="<?=$resultfiles['flash-preview-url']['value']?>">Download Preview</a>
                    </div>
                    <?php
                    
    }
                } else {
                
    ?>
                <div style="border-bottom:1px solid #898989;">
                    <div style="color:red;border-bottom:1px solid #363636;"><?=$results['search-result']['result-files']['file']['name']['value']?></div>
                    <a href="<?=$results['search-result']['result-files']['file']['flash-preview-url']['value']?>">Download Preview</a>
                </div>
                <?php
                
    }
            }
        
    ?>
        <div style="border-top:1px solid #ff7200;">
            Paging<br/>
            <?php
            
    if ($page 1) { echo ' <a href="'.$_SERVER['PHP_SELF'].'?katakunci='.$katakunci.'&amp;page='.($page 1).'">Prev</a> '; }
            echo 
    ' <a href="'.$_SERVER['PHP_SELF'].'?katakunci='.$katakunci.'&amp;page='.($page 1).'">Next</a> ';
            
    ?>
        </div>
        <?php
        
    }
    ?>

    Jika ingin mendapatkan results yang lebih lengkap silahkan kumendan print out hasil results nya dalam bentuk array dan silahkan dimodifikasi untuk mem print-out array yang dibutuhkan:
    PHP:
    <?php
    echo '<pre>';
    print_r($results);
    echo 
    '</pre>';
    ?>



    Semoga bermanfaat ya kumendan... Yuk kita mulai membahas nya... :beer:

    PHP:
    http://imzers.org/forum/threaddisplay/t/32659/yuk-belajar-membuat-grab-4shared
     
    vivovace, f4q1h, Aan Aliudin and 30 others like this.
  2. masadi

    masadi Super Hero

    Joined:
    Dec 12, 2010
    Messages:
    2,334
    Likes Received:
    144
    Location:
    mas-adi.com
    super complete...
    Laik penceted.... :silau:
     
  3. nababan

    nababan Ads.id Fan

    Joined:
    Mar 8, 2011
    Messages:
    136
    Likes Received:
    57
    Location:
    Flashdisk
    wiih.. makasih komandan..
    Mohon dikembangkan ndan.. Ini kan hanya dasar..

    Besa pengalaman tentunya beda algoritma dan pengembangan :D
     
  4. GentZu AoZora

    GentZu AoZora Forbidden

    Joined:
    Nov 28, 2010
    Messages:
    2,932
    Likes Received:
    275
    Location:
    Bandung City
    kalau nampilin file yang disembunyiin dari search result gmn? misal bonjovi, michael jackson dll
    hmmm kayaknya ntar pak indro (ogah) ntar nungul kesini deh...
     
  5. nababan

    nababan Ads.id Fan

    Joined:
    Mar 8, 2011
    Messages:
    136
    Likes Received:
    57
    Location:
    Flashdisk
    Logika saya di array dulu nama-nama artis yg tersembunyi terus katakunci ditambahkan judul lagu :p
     
  6. mp3online

    mp3online Super Hero

    Joined:
    Jul 19, 2011
    Messages:
    2,228
    Likes Received:
    294
    Location:
    jakarta
    yang itu rahasia perusahaan brur, kalau ketahuan member yang di otaknya cuma ada duit ntar scriptnya pada dijual2in xexexe
    coba manfaatin 2shared.com aja :)

    ---------- Post added at 10:52 AM ---------- Previous post was at 10:33 AM ----------

    berarti perlu riset dulu nih kata kunci apa aja yang tersembunyi, padahal jumlahnya mungkin ribuan bahkan mungkin ratusan ribu :D
     
  7. nababan

    nababan Ads.id Fan

    Joined:
    Mar 8, 2011
    Messages:
    136
    Likes Received:
    57
    Location:
    Flashdisk
    Ada rahasia nya ga..?? Boleh dong share ( lewat PM juga gpp :p )

    Oh iya tau XML API untuk deskripsi file ga? Thx
     
  8. bursalagu

    bursalagu Ads.id Starter

    Joined:
    Apr 6, 2010
    Messages:
    84
    Likes Received:
    1
    lengkap dan padat... tapi kenapa pake file_get_contents?
     
  9. mp3online

    mp3online Super Hero

    Joined:
    Jul 19, 2011
    Messages:
    2,228
    Likes Received:
    294
    Location:
    jakarta
    dibilang ada rahasia ya ada, dibilang gak ada ya gak ada, tergantung kita menggunakan logika kita gimana.
    padahal mungkin udah pada tahu cuma gak ngeh aja hehe
    kalau aku kasih tau caranya mungkin semua akan pada bilang "sialan ternyata cuma gitu, kenapa gak kepikir pakai itu ya?" :D

    deskripsi kan tinggal ngambil bagian <description>blablabla</description> boss..


    4shared API gak perlu paremeter macam2 dan gak perlu header macam2 boss, jadi pakai file_get_contents sudah cukup, dan kayaknya lebih irit resource server dibanding pakai curl.

    cuma penggunaan @ sebaiknya dihindari. gak pakai @ akan lebih cepat dibanding pakai @

    @ di depan file_get_contents itu artinya kalau gak salah jika ada atau jika bisa pakai file_get_contents maka pakai file_get_contents
    nah kalau gak pakai @ kan langsung tancap gas file_get_contents, gak perlu ngecek jika2nya dulu
     
  10. bursalagu

    bursalagu Ads.id Starter

    Joined:
    Apr 6, 2010
    Messages:
    84
    Likes Received:
    1
    gampang kok, tp gak boleh dishare di sini :)



    ---------- Post added at 01:33 PM ---------- Previous post was at 01:25 PM ----------

    oh gitu ya, tp gw prefer ngga pake file_get_contents. karena kalo ada problem diremote server, bakalan berabe. handling timeoutnya ngga bagus dibanding curl
     
  11. mp3online

    mp3online Super Hero

    Joined:
    Jul 19, 2011
    Messages:
    2,228
    Likes Received:
    294
    Location:
    jakarta
    kalau mau search michael jackson grab aja punya boss bursalagu xexexe
    atau grab aja punyaku yang hxxp://ogah.uv.ro/index2.php :)
     
  12. nababan

    nababan Ads.id Fan

    Joined:
    Mar 8, 2011
    Messages:
    136
    Likes Received:
    57
    Location:
    Flashdisk
    Pm dong... kalau boleh :D

    Susah nih banyak bilang bisa dan hanya seperti ini, tp ngasih tau clue aja ga mau [sedih mode ON]

    Malah minta nge grab situs grabbing *berabe
     
  13. GentZu AoZora

    GentZu AoZora Forbidden

    Joined:
    Nov 28, 2010
    Messages:
    2,932
    Likes Received:
    275
    Location:
    Bandung City
    Iya PM caranya dong, minimal dikasih clue.
    Yg jelas gk bakalan dijual lg.
     
  14. shelfie

    shelfie Super Hero

    Joined:
    Aug 3, 2010
    Messages:
    1,911
    Likes Received:
    301
    tinggalin jejak .... + bookmark
     
  15. mp3online

    mp3online Super Hero

    Joined:
    Jul 19, 2011
    Messages:
    2,228
    Likes Received:
    294
    Location:
    jakarta
    ini kayaknya bagus juga :)
    hxxp://googlemusicsearch.com
     
  16. bursalagu

    bursalagu Ads.id Starter

    Joined:
    Apr 6, 2010
    Messages:
    84
    Likes Received:
    1
    bakalan kerja keras nyari traffic kalo cuman ngandelin ajax
     
  17. mp3online

    mp3online Super Hero

    Joined:
    Jul 19, 2011
    Messages:
    2,228
    Likes Received:
    294
    Location:
    jakarta
    iya harus ngajax (baca ngajak) orang beramai2 untuk datang hehe
     
  18. dedensupiyanto

    dedensupiyanto Super Hero

    Joined:
    Jun 26, 2010
    Messages:
    2,089
    Likes Received:
    441
    Location:
    RahasiaFB.Info
    Mantebs, tapi ane pake blogcepot
     
  19. mp3online

    mp3online Super Hero

    Joined:
    Jul 19, 2011
    Messages:
    2,228
    Likes Received:
    294
    Location:
    jakarta
    weleh weleh... quote segitu panjangnya tapi postingnya cuma kayak gitu :)
     
  20. dhevganx

    dhevganx Ads.id Fan

    Joined:
    Dec 8, 2009
    Messages:
    235
    Likes Received:
    53
    Location:
    A43T
    mantab, ane coba bisa. tapi ada hasil search yg gak ada resultnya. mis: eminem.. gimana caranya?? ato emang ada script lagi buat bisa munculin resultnya ?

    ty
     

Share This Page