programing DfPlayer mp3 mini

I made a project with a mini DfPlayer mp3 module.
my goal when input D2 is logic 1 (lights up continuously), DfPlayer plays 1. Mp3 is only played once and when input D2 logic 0 (dies continuously) DfPlayer plays 2. Mp3 is only played once. but the program that I created actually plays continuously (looping). the following below is my program, please help to only play once

#include <SoftwareSerial.h>
#include <DFPlayer_Mini_Mp3.h>

SoftwareSerial mySerial(10, 11); // RX, TX

const int buttonSaya = 2; // mengubah ‘buttonSaya’ menjadi variabel pin 2
const int ledSaya = 8; // mengubah ‘ledSaya’ menjadi variabel pin 3
int buttonStatusSaya = 0; // mengubah ‘buttonStatusSaya’ menjadi variable 0

//-----------------------------------------------------------------------//
void setup() {
Serial.begin(9600);
mySerial.begin (9600);
mp3_set_serial (mySerial); //set softwareSerial for DFPlayer-mini mp3 module
delay(1); //wait 1ms for mp3 module to set volume
mp3_set_volume (25);

pinMode(ledSaya, OUTPUT); // mengubah ‘ledSaya’ menjadi pin OUTPUT
pinMode(buttonSaya, INPUT); //mengubah ‘buttonSaya’ menjadi pin INPUT
}

void loop()
{
buttonStatusSaya = digitalRead(buttonSaya); Serial.println(buttonStatusSaya);

if (buttonStatusSaya == HIGH)
{digitalWrite(ledSaya, HIGH);
mp3_play (5); delay (8000); }
else {mp3_play (4); delay (11000); digitalWrite(ledSaya, LOW); } }

Lookatthestatechagedetectionexample,toseehowtodosomethingwhenthestateofapinchanges.PlayyourtrackwhenthepinBECOMESHIGHorBECOMESLOW.

You didn't use any spaces in your program to make it readable, so I didn't use any in my reply, to make it readable. Good luck.