MP3でテキストを非表示

世界では、すべての人々は2つのタイプに分けられます:何かを隠したい人もいれば 、逆に何かを見つけたい人もいます 。 今日は最初の味方になります。 隠れます。
多くの人は、おそらくシステム内のファイルを非表示にする方法をすでに知っています。 しかし、ファイル内のテキストを非表示にする方法を知っている人はほとんどいませんが、そのためテキストは表示されません。 それでは始めましょう。
「txt」ファイルからプレーンテキストを非表示にします。 そして、mp3ファイルに記録します。 多くの人々は、mp3ファイルにタグがあることを知っています。 しかし、誰も彼らの長さが何であり、彼らで何ができるのか疑問に思うことはほとんどありませんでした。 ウィキペディアによると、タグの長さ

30文字に等しい。 コメントタグはまだありますが、それには触れません。
タグは、特別なプログラムを使用して変更できます。 たとえばMp3Tagなど
何をどこに書くかがわかりました。 次に、何に書き込むかを決定します。 これらの目的のために、 PHPおよびPEARパッケージMP3_Idを選択しました 。 このセットに、 DenwerXAMPP、またはその他の仮想サーバーを追加する必要があります。 あなたが好きな人。
このツールは2つのスクリプトで構成され、1つはそれぞれ記録し、もう1つはMP3タグを読み取ります。

まず、PEAR MP3_Idモジュールをインストールする必要があります。

  1. スタートメニュー->実行-> CMD
  2. PHPインタープリターがインストールされているディレクトリーに移動します-> pear install MP3_Id

スクリプトの分析に進みましょう。

スクリプトナンバーワン。 read.php


以下に、このスクリプトで使用される関数をリストして解析します。

ファイル内の30文字の行数をカウントする関数が必要です。

function CalcSize($f) //    30  { $size = 0; //    while(!feof($f)) { fread($f, 1); $size++; } $dataCount = floor($size / 30) + 1; // 30             . fclose($f); return $dataCount; //     30  } 


ファイルから30文字を配列に読み込む関数。
 function ReadDataFiles($size) { $arr = array(); $f = fopen('data.txt','rb'); for($i = 0; $i < $size; $i++) { $arr[$i] = fread($f, 30);//    30  } fclose($f); return $arr; } 


タグを操作するための関数。
読書:
 function ReadTags($file) { echo $file.' '; $mp3 = &new MP3_Id(); $result = $mp3->read($file); echo $mp3->getTag('name'); echo $mp3->getTag('artists'); echo $mp3->getTag('album'); } 


記録:
 function SetTags($file, $data1,$data2,$data3) { $mp3 = &new MP3_Id(); $result = $mp3->read($file); $mp3->setTag('name', $data1); $mp3->setTag('artists', $data2); $mp3->setTag('album', $data3); $result = $mp3->write(); } 


また、任意のファイル名を作成する必要があります。 1つのソースを取得してコピーします。

 function GenerateName() { $abc = array('q','w','e','r','t','y', 'u','i','o','p','a','s', 'd','f','g','h','j','k', 'l','z','x','c','v','b', 'n','m','1','2','3','4', '5','6','7','8','9','0'); $name=""; for($i = 0; $i < 8; $i++) { $index = rand(0, count($abc) - 1); $name .= $abc[$index]; } return $name; } 


そして、必要な機能はすべて揃っています。 スクリプト構造を作成できます。
新しくインストールしたモジュールを接続します。
 require_once 'MP3/Id.php'; 


 $fileSize = CalcSize(); //    30  $words = ReadDataFiles($fileSize);//    


また、タグ内のテキストを非表示にする関数があります。 彼女の入力は、文字列と行数の配列です。

 function HideData($arr, $number) { $numberMp3Files = floor($number / 3) + 1; // 3   (          // mkdir('files');//    for($i = 0; $i < $numberMp3Files; $i++) //   { $name = GenerateName(); $name .= '.mp3'; copy('file.mp3','files/'.$name);//  } chdir('files');//    $list = glob('*.mp3'); //   mp3  sort($list); //   $a = 0; //    $b = 0; //     for($i = 0; $i < count($list); $i++) { SetTags($list[$i],$arr[$a],$arr[$a+1],$arr[$a+2]); $a +=3; if($b < count($list))$b++; //       else break; //   } } 


これが、mp3ファイルタグにテキストを書き込むためのスクリプト全体です。 コピーには小さなMP3ファイルを使用することをお勧めします。 そして、file.mp3と呼びます。

戻ってくるスクリプトを書くことが残っています。 mp3タグからテキストファイルへ。

スクリプト番号2。 write.php



PEARモジュールを再度接続します
 require_once 'MP3/Id.php'; 


記録用のファイルを作成します。
 $handle = fopen("new_data.txt","w"); 


タグを読み取るための既に馴染みのある関数。 わずかに変更。
 function ReadTags($file, $fo) { $mp3 = &new MP3_Id(); $result = $mp3->read($file); $name = $mp3->getTag('name'); $srtists = $mp3->getTag('artists'); $album = $mp3->getTag('album'); fputs($fo, "$name"); fputs($fo,"$artists"); fputs($fo, "$album"); } 


ファイルがあるディレクトリに移動します。
 chdir('files'); 


MP3ファイルのリストを作成する
 $list = glob('*.mp3'); 


並べ替える
 sort($list); 


そして、各ファイルに対して、ReadTags関数を呼び出します
 foreach($list as $a) { ReadTags($a, $handle); } 


PEAR MP3_Idを使用する方法は、オフサイトを参照する方が適切です。 私はほとんど明確に説明しません。 実験中に、ソースファイルにいくつかのタグがある場合、Windowsで作成されたファイルは同じタグを持つことが明らかになりました。 しかし同時に、私たちの情報はそれらに記録され、完全に読まれます。 タグがない場合、タグが書き込まれ、エクスプローラーで完全に表示されます。 そのため、タグ付きファイルを使用することをお勧めします。そうすると、すべてが間違いなく極秘になります。
エラーを見つけた場合、またはスクリプトを改善する方法を知っている場合は、必ず記述してください。 嬉しいだけです。 投稿のデザインの誤りをおaびします。彼が最初です。

Source: https://habr.com/ru/post/J112914/


All Articles