Showing posts with label php. Show all posts
Showing posts with label php. Show all posts
Cara Membaca ID3 Tags Dari File Mp3 Dengan PHP

Cara Membaca ID3 Tags Dari File Mp3 Dengan PHP

No Comments
Waktu nyari-nyari mp3 lewat google terus masuk ke situs pencari mp3 seperti beemp3.com dan mp3skull.com, saya jadi penasaran dengan index mp3 yang mereka miliki. Kok bisa ya mereka bisa dapet informasi metadata dari banyak sekali mp3 yang ada di hasil pencarian mereka? padahal kalau saya lihat mereka nggak make 4shared apiKaskus Emoticon :confused

Setelah saya browsing-browsing ternyata dengan PHP bisa juga baca ID3 Tags dari file mp3. Tapi setelah saya pikir-pikir kalau mereka baca satu persatu ID3 Tags dari file mp3 di index mereka, bukannya itu makan resource sangat besar? Bayangin aja kalau harus baca ID3 Tags dari satu juta file mp3 yang ukurannya rata-rata 5MBKaskus Emoticon :takuts

Setelah saya browsing lagi terus ketemu web ini: Read remote MP3/AVI file header/ID3 tag information, saya jadi tau kalau ID3 Tags dari file mp3 bisa dibaca tanpa harus mendownload keseluruhan dari file mp3 yang akan dibaca. Tapi ternyata ada kekurangannya juga. Kalau pake cara ini yang kebaca cuma ID3v2 soalnya ID3v2 ada dibagian awal file sedangkan ID3v1 ada diakhir file. Karena saya nggak tau gimana caranya baca file dari belakang tanpa download keseluruhan file jadinya kalau mau baca ID3v1 mau nggak mau harus download keseluruhan file. Kemarin saya pernah tanya di stackoverflow.com tentang cara baca file dari belakang tanpa download keseluruhan file dan ada yang jawab nggak bisa Kaskus Emoticon :confused

Di PHP untuk membaca ID3 Tags kita bisa menggunakan class getID3. Sebenarnya ada yang lain, banyak mungkin. Saya taunya cuma ini sih Kaskus Emoticon :ngakak

Silahkan download dulu classnya di sini (download). Kalau udah didownload terus extract. Copy folder getid3 karena yang dibutuhkan cuma isi dari folder ini. Karena di sini kita cuma baca ID3 Tags dari file mp3, hapus file selain file-file ini:
1-getid3.lib.php
2-getid3.php
3-module.audio.mp3.php
4-module.tag.apetag.php
5-module.tag.id3v1.php
6-module.tag.id3v2.php
7-module.tag.lyrics3.php
kemudian siapkan contoh file mp3 yang akan dibaca. Di sini saya kasih nama "example.mp3". Contoh penggunaan class ini adalah seperti ini:
1<?php
2include 'getid3/getid3.php';
3$id3=new getid3();
4$id3v2=$id3->analyze('example.mp3');
5print_r($id3v2);
6?>
Kalau sukses kira-kira outputnya seperti ini:
01Array
02(
03    [GETID3_VERSION] => 1.9.3-20111213
04    [filesize] => 6311818
05    [filename] => example.mp3
06    [filepath] => /var/www/script/getid3
07    [filenamepath] => /var/www/script/getid3/example.mp3
08    [avdataoffset] => 2074
09    [avdataend] => 6311690
10    [fileformat] => mp3
11    [audio] => Array
12        (
13            [dataformat] => mp3
14            [channels] => 2
15            [sample_rate] => 44100
16            [bitrate] => 160000
17            [channelmode] => joint stereo
18            [bitrate_mode] => cbr
19            [lossless] =>
20            [encoder_options] => CBR160
21            [compression_ratio] => 0.11337868480726
22            [streams] => Array
23                (
24                    [0] => Array
25                        (
26                            [dataformat] => mp3
27                            [channels] => 2
28                            [sample_rate] => 44100
29                            [bitrate] => 160000
30                            [channelmode] => joint stereo
31                            [bitrate_mode] => cbr
32                            [lossless] =>
33                            [encoder_options] => CBR160
34                            [compression_ratio] => 0.11337868480726
35                        )
36
37                )
38
39        )
40
41    [tags] => Array
42        (
43            [id3v1] => Array
44                (
45                    [title] => Array
46                        (
47                            [0] => Ryuusei
48                        )
49
50                    [artist] => Array
51                        (
52                            [0] => TIA
53                        )
54
55                    [album] => Array
56                        (
57                            [0] => NARUTO BEST HIT COLLECTION 2
58                        )
59...
Contoh diatas kita harus mendownload keseluruhan file. Sedangkan jika hanya membaca bagian file yang diperlukan, cara kerjanya adalah kita download bagian file yang dibutuhkan lalu disimpan di tempat yang telah dipilih, baru kemudian dibaca ID3 Tagsnya.

Biar lebih cepet saya buat 2 fungsi, getPartFile dan getContentLength.
01<?php
02function getPartFile($url, $offset, $limit)
03{
04 $ch=curl_init();
05 curl_setopt($ch, CURLOPT_URL, $url);
06 curl_setopt($ch, CURLOPT_RANGE, $offset.'-'.$limit);
07 curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);
08 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
09 $result=curl_exec($ch);
10 curl_close($ch);
11 return $result;
12}
13?>
01<?php
02function getContentLength($url)
03{
04 $ch=curl_init();
05 curl_setopt($ch, CURLOPT_URL, $url);
06 curl_setopt($ch, CURLOPT_NOBODY, 1);
07 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
08 curl_exec($ch);
09 $ContentLength=curl_getinfo($ch, CURLINFO_CONTENT_LENGTH_DOWNLOAD);
10 curl_close($ch);
11 return $ContentLength;
12}
13?>
Fungsi getPartFile nanti digunakan untuk mendownload file berdasarkan offset dan limitnya. Misalnya untuk mendownload 1KB/1024 bytes pertama dari sebuah file, maka penggunaanya seperti ini: getPartFile($url,0,1023) Nah karena ukuran file yang didapat dari ID3 Tags adalah ukuran file setelah dipotong tadi (1 KB), jadi untuk mendapatkan ukuran file asli kita pake cURL yang ada pada fungsi getContentLength. Jika ukuran file tidak diketahui atau file tersebut kosong, fungsi ini akan bernilai -1.

Script akhirnya:
01<?php
02include 'getid3/getid3.php';
03
04function getPartFile($url, $offset, $limit)
05{
06 $ch=curl_init();
07 curl_setopt($ch, CURLOPT_URL, $url);
08 curl_setopt($ch, CURLOPT_RANGE, $offset.'-'.$limit);
09 curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);
10 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
11 $result=curl_exec($ch);
12 curl_close($ch);
13 return $result;
14}
15
16function getContentLength($url)
17{
18 $ch=curl_init();
19 curl_setopt($ch, CURLOPT_URL, $url);
20 curl_setopt($ch, CURLOPT_NOBODY, 1);
21 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
22 curl_exec($ch);
23 $ContentLength=curl_getinfo($ch, CURLINFO_CONTENT_LENGTH_DOWNLOAD);
24 curl_close($ch);
25 return $ContentLength;
26}
27
28$id3=new getid3();
29$id3v2=sys_get_temp_dir().'/temp.mp3';
31$size=getContentLength($url);
32//Jika ukuran file diketahui atau tidak kosong
33if($size!='-1'){
34//Menyimpan file hasil getPartFile($url,0,1023) kedalam tempat yang ada di variabel $id3v2.
35 $firstFile=file_put_contents($id3v2,getPartFile($url,0,1023));
36 $id3v2=$id3->analyze($id3v2);
37 print_r($id3v2);
38}
39else{
40 echo 'File kosong';
41}
42?>

PHP (Pemberi Harapan Palsu)

No Comments


Awalnya kenal, terus sms-an, ngumbar kata mesra dan… gak ada komitmen. Itulah sedikit skenario yang ada dalam istilah “(PHP) Pemberi Harapan Palsu”.
Simpelnya gini, ada dua orang sebut aja Adit dan Putri. Adit terkenal sebagai orang yang supel dan deket dengan beberapa cewek. Awalnya kenal terus mereka rajin banget sms-an. Adit selalu nanggepin dengan balesan sms yang bernada perhatian banget. Tanpa sadar Putri punya perasaan lebih dari temen ke Adit. Dengan tanggepan Adit yang baik banget, Putri ngerasa Adit punya perasaan yang sama. Karena dari perhatian yang Adit kasih menunjukkan sinyal-sinyal tersebut. Bahkan Adit sempat mengatakan “Miss you” dan Putri menganggap itu adalah hal yang luar biasa. Hari berganti hari, hubungan mereka masih sebatas berteman. Akhirnya Putri menyinggung soal komitmen dan Adit selalu berdalih setiap mereka masuk ke topik itu.
Dalam hal ini, Putri ngerasa di-PHP-in. Sebenernya PHP itu gimana??? PHP (Pemberi Harapan Palsu) adalah kondisi dimana ada orang yang perhatian banget sama lo dan lo nunggu banget momen ditembak/nembak tapi ternyata semua hanya FATAMORGANA dan pada akhirnya doi bilang “Emang aku ngasih harepan yah? Maaf deh”.  Biasanya, kata PHP ini ditujukan kepada para cowok. Bukan berarti cewek gak bisa jadi PHP, tapi kalo cewek lebih sering masuk ke kategori FRIENDZONE.



Apakah di-PHPin itu gak enak? So pasti! Diawal pasti terasa menggebu-gebu dengan perhatian si doi. Kita merasa jadi orang paling beruntung apalagi kalo doi emang banyak yang nyukain. Soalnya, orang yang PHP itu cenderung orang yang punya pesona khusus dan banyak yang naksir. Itu makanya, korban PHP biasanya bangga banget diawal hubungan.
Saking bangganya, biasanya korban PHP juga suka ngebangga-banggain doi di depan temen-temennya. Padahal ditembak aja belum! Bosen juga lama-lama digantungin, akhirnya korban mulai menyinggung status hubungan. Dan saat si PHP bilang “Emang aku ngasi harepan yah? Maaf deh..” disaat itu ibarat langit runtuh, harapan kita runtuh seketika. Efeknya? Galau menahun! Status Galauers bakal kita pegang. Obatnya apa? Move-on! Tapi apa mungkin secepat itu? Karena pasti masih ada trauma yang menghantui.
So, what should I do?
Nah, sebenernya gak semua cowok yang perhatian itu PHP. Kebanyakan cowok yang nyaman ngobrol sama cewek, belum tentu doi suka sama kalian (cewek). Bisa jadi karena hobi yang sama, pemikiran yang sejalan, atau emang doi gak pengen ngecewain kalian. Kalo ada cewek yang perhatian banget sama cowok, biasanya si cowok cenderung membalas perhatian tersebut. Mungkin karena cewek pada umumnya bekerja dengan perasaan, cewek gampang geer dengan perhatian cowok. Hal ini yang seringkali mengakibatkan cewek merasa si cowok suka sama dia dan ketika kenyataan berbeda, si cewek nganggep cowok itu PHP!
Menurut gue sendiri, kalian para cewek harus lebih pintar dalam menjalani sebuah hubungan. Bukan berarti tiap ada yang ngeflirt kalian, dia suka sama kalian. Bukan berarti tiap ada yang perhatian sama kalian, dia cinta sama kalian. Gak gue pungkiri, kita cowok bakal deketin cewek yang menarik buat kita. Tapi, gak gue pungkiri juga, Cowok Pasti Nyari Yang Terbaik. Jadi, bisa aja ke-PHP-an itu dilakukan dalam pencarian yang terbaik. Bisa jadi sebenernya diawal hubungan, si cowok ada rasa, tapi ternyata setelah survey, ada beberapa sifat lo yang gak bisa doi terima. Sah-sah aja toh, kan belum ada komitmen.
PHP terjadi pada hubungan yang singkat. Baru kenal terus, langsung sok mesra gitu. Tapi bukan berarti pdkt yang lama gak bakal kejadian yg namanya PHP. Dan gue termasuk orang yang nikmatin proses. Dalam perspektif ini, menurut gue kalo emang lo ngerasa di-PHPin, ya nikmatin aja selama bikin lo seneng. Anggep aja ngisi waktu luang. Jangan terlalu terbawa perasaan dan terlalu agresif. 
Let it flow, kalo emang si PHP suka sama lo, suatu saat mungkin doi bakal nembak lo. But don't hope too much. Karena gak selamanya ekspektasi kita itu sesuai dengan kenyataan. Tapi bisa jadi orang yang tertuduh PHP emang gak niat PHP, who knows. Bisa aja kan emang kalian (cewek) kegeeran? Tapi buat lo yang niat jadi PHP, inget, KARMA SELALU ADA! Kalo gak pengen diselingkuhin, jangan pernah selingkuhin orang. Kalo gak pengen di-PHPin, jangan pernah meng-PHPkan seseorang, karena akan berujung hal yang lebih pahit.
Buat lo yang terjebak kisah PHP, santai aja, gak harus showeran mulu tiap malem.Move On! jangan cuma niat tapi juga usaha. Trust me, lo bakal dapet yang terbaik ketika lo berusaha menjadi lebih baik.

Jadi gimana biar nggak kena php?
1. Lo mesti jadi pribadi yang pinter. PHP itu awalnya terlihat nyata, tapi lama-lama palsu. Gimana cara liatnya kalau itu palsu? Harapan palsu itu awalnya terlihat 'nyata'. Karena itu jangan mudah percaya & terpaku sama apa yang pernah dia bilang, tapi liat dari apa yang pernah dia perbuat untuk lo. Dan bandingin apa yang dia bilang itu lebih banyak terwujud atau lebih banyak di bibir doang? Liat itu lewat tindakan nyata, yang bener-bener nyata. Yaitu 'pengorbanan'.
2. Pahami dia lagi deket sama siapa aja dan liat posisi lo di kehidupan dia itu gimana.
3. Jangan menanggapi semuanya secara berlebihan sebelum ada kepastian dari dua nomor diatas. 
4. Kalau lo cewek, jangan malu buat nanya kalau lo merasa kepastian nggak muncul-muncul padahal udah jamuran lo nunggunya. NANYA loh bukan nyatain. Mungkin setelah di gertak gitu, dia bakal nembak lo krn merasa udah dikode akut. Atau, dia bakal bilang alasan sebenernya knp dia lama kayak supir taksi ngasih kembalian. Kalaupun dia ngejauh, itu berarti dia udah sadar atau malu kepergok php.
Kalau lo baru aja di php-in. Gue tau lo rasanya pgn lempar sambel ijo-nya nasi padang ke muka dia. Tapi itu adalah sebuah pengalaman. Mungkin ada hal-hal yang hrs lo perbaiki dari diri lo. Biasanya setelah di php-in ada orang yang semakin pasrah, ada orang yang jadi lebih pinter lihat kondisi. Jadilah orang yang lebih pinter. Jangan pasrah sama keadaan. Kalau gitu terus, kebahagiaan lo di injek orang lain terus, diambil orang lain terus. 
Tapi inget, kalau lo merasa di php-in sebisa mungkin jangan bales dendam tapi di gertak aja. Karena nanti pasti bakal ada yang balesin. Kalau lo bales dendam, nanti ada yang balesin lo lagi. Kan gaenak, muter-muter terus gitu. Dan nggak semua org yang lo anggep php itu emang niatnya php awalnya. Bisa aja separuh kesalahan terjadi di lo yang mudah percaya. Walau mungkin, maksud lo baik. Cuman ingin dicintai.
Terakhir dari gue, inti dari post ini. Jangan mudah percaya akan kata-kata, percayalah pada tindakan yang berupa 'pengorbanan'. Karena orang akan berkorban untuk orang yang dicintainya. Kalau dia saking niatnya juga bikin pengorbanan palsu, dia gila. 

Dan untuk php yang baca post ini. Begitu lo tau hubungan itu nggak bakal 'ada'. Tinggalin dia. Dia terlalu berharga untuk tersakiti. Dia berhak bahagia. Karena lo tau nggak? Berapa waktu yang udah dia abisin untuk lo? Seengaknya, dia bisa pake waktu itu untuk hal lain yang lebih berguna buat dia. Lo udah ngambil hal yang berharga buat dia, waktu dan perasaan.
"Eh iya, tau nggak kenapa dulu dikit yang php? Karena jaman dulu nyatain perasaan dulu baru sayang-sayangan, kalau jaman sekarang sayang-sayangan dulu baru nyatain perasaan. Makanya jaman sekarang, orang jadi cepet bosen."