From 32f3e0c78512830b55d4fc6be4041f84aa082440 Mon Sep 17 00:00:00 2001 From: bob Date: Mon, 3 Feb 2025 19:29:59 +0100 Subject: [PATCH] first commit --- accueil.php | 751 +++++++ archive.php | 178 ++ berlin.html | 8 + chat.php | 220 ++ chat2.php | 198 ++ favicon.ico | Bin 0 -> 162738 bytes hotgluecode.php | 35 + hotgluetransformation.php | 440 ++++ includes/Parsedown.php | 1994 +++++++++++++++++ includes/chatContent.php | 272 +++ includes/chatLoad.php | 79 + includes/content.txt | 2 + includes/file.txt | 6 + includes/item-title-split.php | 37 + includes/knownNames.txt | 1 + includes/lastTimecode.txt | 1 + includes/loadItemIndex.php | 210 ++ includes/nc-data-request.php | 68 + includes/nc-one-file-request.php | 140 ++ includes/nowLive.js | 49 + includes/nowLive.php | 17 + includes/personalColors.txt | 1 + includes/soundItemTitleAnalyse.php | 14 + includes/soundplay.js | 114 + includes/tagDiscription.php | 65 + index.php | 1004 +++++++++ load.php | 267 +++ loadFocus.php | 252 +++ newmap.css | 2093 ++++++++++++++++++ phpinfo.php | 1 + player.js | 37 + rename-files.php | 49 + scripts/ARCHIVE_music_duration_output.txt | 1 + scripts/MUSIC_music_duration_output.txt | 2 + scripts/find_files_without_md_and_update.sh | 22 + scripts/music.m3u | 127 ++ scripts/music.txt | 915 ++++++++ scripts/nextcloud-sync-md-transform.sh | 36 + scripts/total-minutes-of-music-in-archive.sh | 31 + scripts/total-minutes-of-music-in-music.sh | 29 + scripts/update-music-playlist.sh | 3 + testgrid.php | 737 ++++++ url.php | 6 + 43 files changed, 10512 insertions(+) create mode 100644 accueil.php create mode 100644 archive.php create mode 100644 berlin.html create mode 100644 chat.php create mode 100644 chat2.php create mode 100644 favicon.ico create mode 100644 hotgluecode.php create mode 100644 hotgluetransformation.php create mode 100644 includes/Parsedown.php create mode 100644 includes/chatContent.php create mode 100644 includes/chatLoad.php create mode 100644 includes/content.txt create mode 100644 includes/file.txt create mode 100644 includes/item-title-split.php create mode 100644 includes/knownNames.txt create mode 100644 includes/lastTimecode.txt create mode 100644 includes/loadItemIndex.php create mode 100644 includes/nc-data-request.php create mode 100644 includes/nc-one-file-request.php create mode 100644 includes/nowLive.js create mode 100644 includes/nowLive.php create mode 100644 includes/personalColors.txt create mode 100644 includes/soundItemTitleAnalyse.php create mode 100644 includes/soundplay.js create mode 100644 includes/tagDiscription.php create mode 100644 index.php create mode 100644 load.php create mode 100644 loadFocus.php create mode 100644 newmap.css create mode 100644 phpinfo.php create mode 100644 player.js create mode 100644 rename-files.php create mode 100644 scripts/ARCHIVE_music_duration_output.txt create mode 100644 scripts/MUSIC_music_duration_output.txt create mode 100644 scripts/find_files_without_md_and_update.sh create mode 100644 scripts/music.m3u create mode 100644 scripts/music.txt create mode 100644 scripts/nextcloud-sync-md-transform.sh create mode 100644 scripts/total-minutes-of-music-in-archive.sh create mode 100644 scripts/total-minutes-of-music-in-music.sh create mode 100644 scripts/update-music-playlist.sh create mode 100644 testgrid.php create mode 100644 url.php diff --git a/accueil.php b/accueil.php new file mode 100644 index 0000000..66ee736 --- /dev/null +++ b/accueil.php @@ -0,0 +1,751 @@ +connect_error) { + die("Verbindung fehlgeschlagen: " . $conn->connect_error); + } + + // 1. Abfrage: Alle Dateien, deren Pfad '%files/archive/%' enthält + $sql1 = "SELECT fc.fileid, fc.name AS file_name, fc.path AS file_path, fc.size, fc.mimetype + FROM oc_filecache AS fc + WHERE fc.path LIKE '%files/archive/%' + ORDER BY fc.name DESC"; + + $result1 = $conn->query($sql1); + + + + // 2. Abfrage: Alle Mimetypes und ihre IDs + $sql2 = "SELECT id, mimetype FROM oc_mimetypes"; + $result2 = $conn->query($sql2); + + // 3. Abfrage: Alle Tags im System + $sql3 = "SELECT id, name FROM oc_systemtag"; + $result3 = $conn->query($sql3); + + // 4. Abfrage: Verknüpfung zwischen Files und Tags (mit 'files' statt 'file') + $sql4 = "SELECT objectid, systemtagid + FROM oc_systemtag_object_mapping + WHERE objecttype = 'files'"; + + $result4 = $conn->query($sql4); + + // Alle Mimetypes in einem Array speichern + $mimetypes = []; + while ($row = $result2->fetch_assoc()) { + $mimetypes[$row['id']] = $row['mimetype']; + } + + // Alle Tags in einem Array speichern + $tags = []; + while ($row = $result3->fetch_assoc()) { + $tags[$row['id']] = $row['name']; + } + + // Tags mit Dateiinformationen verbinden + $fileTags = []; + while ($row = $result4->fetch_assoc()) { + $fileTags[$row['objectid']][] = $tags[$row['systemtagid']]; + } + +?> + + + + + + + + + + + + + + + + + + + +
+
+ + "; + echo "
" . $Parsedown->text($file_content) . "
"; + ?> + +
+ +
+ text($file_content); + $file_content_html = str_replace('src=".attachments.', 'class="" id="nextliveImg" onclick="focusItem(\''.$imgLink.'\')" src="ncdataaccueil/.attachments.', $file_content_html); + + echo "
$file_content_html
"; + ?> +
+ +
";?>
+ + + +
";?>
+ +
";?>
+ +
";?>
+ +
";?>
+ +
text($file_content); + ?> +
+ +
+ +
";?>
+ +
";?>
+ + + + +
+ + + + + + + + + + + +
+ +
+
close index [x]
+
+ +
+ +
+ + +
+ +
+ + + + + + + + + File Information + + + + + + + + "; + + + + + + + echo " + + + + + + + + + + + + + + + + + "; + + + // Array zum Speichern der fileids + $fileids = array(); + + if ($result1->num_rows > 0) { + while ($row = $result1->fetch_assoc()) { + $file_id = $row['fileid']; + $file_name = $row['file_name']; + $file_size = $row['size']; + $file_size_in_mb = number_format($file_size / (1024 * 1024), 2); + $mimetype_id = $row['mimetype']; + $mimetype_name = isset($mimetypes[$mimetype_id]) ? $mimetypes[$mimetype_id] : 'Unknown'; + + + // Hole die Tags für diese Datei + $file_tags = isset($fileTags[$file_id]) ? implode(', ', $fileTags[$file_id]) : 'No Tags'; + + // Prüfen, ob der Dateiname mit einem Datum im gewünschten Format beginnt (DDMMYY-HHMM oder DDMMYY_HHMM) + if (!preg_match('/^\d{6}[-_]\d{4}/', $file_name)) { + continue; // Diese Datei überspringen, wenn der Dateiname nicht mit dem gewünschten Format beginnt + } + + $fileids[] = $row['fileid']; + + // TO NOT SHOW THE DESCRIPTION FILES !! + // if (str_contains($file_tags, 'Tags')) { + // continue; + // } + + include 'includes/item-title-split.php'; + + // Generiere die URL für die Datei + $file_url = "https://pl4tform.org/ncdata/{$file_name}"; + $file_url = str_replace(" ","%20",$file_url); + + $file_date = "$file_day.$file_month.$file_year"; + $file_time = "$file_hour:$file_minute"; + + $mimetype_name = explode('/', $mimetype_name)[0]; + + // Zeile in die Tabelle einfügen und Dateinamen als Link formatieren + // echo " + echo " + + + + + + + + + + + + + + "; + } + } else { + echo ""; + } + + echo " +
File Name
$file_id$file_name$file_title$file_tags$file_date$file_time$mimetype_name$file_size_in_mb20$file_year$file_month"; + echo "mimetype: $mimetype_name, link: $file_url"; + // ACTIVER POUR QUE LES RECHERCHE PRENNENT AUSSI COMPTE DES CONTENUES DES FICHIER !!! ===>> problem avec les fichier de discription son parce qu'il ont le display = none + if (str_contains($mimetype_name, 'text') AND !str_contains($file_tags, 'No Tags')) { + $file_content = file_get_contents($file_url); + echo $file_content; + } + echo "$file_year$file_month$file_day$file_hour$file_minute
No data found
+ + "; + + $conn->close(); + ?> + + + + +
+ + + 0) { + // $random_fileid = $fileids[array_rand($fileids)]; + // } else {} + + $fileids_js_array = json_encode($fileids); + ?> + + + + + +
+ +
+
+
+
+
+
+
+ +
+ + + + + + + + + +
+
+
<= BACK
+
+
+
+
+
+ +
+
+
+
+ + + +
+ + + + + + + + + + + + + + + diff --git a/archive.php b/archive.php new file mode 100644 index 0000000..e5ac0e5 --- /dev/null +++ b/archive.php @@ -0,0 +1,178 @@ +connect_error) { + die("Verbindung fehlgeschlagen: " . $conn->connect_error); +} + +// 1. Abfrage: Alle Dateien, deren Pfad '%files/archive/%' enthält +$sql1 = "SELECT fc.fileid, fc.name AS file_name, fc.path AS file_path, fc.size, fc.mimetype + FROM oc_filecache AS fc + WHERE fc.path LIKE '%files/archive/%' + ORDER BY fc.name DESC"; + +$result1 = $conn->query($sql1); + +// 2. Abfrage: Alle Mimetypes und ihre IDs +$sql2 = "SELECT id, mimetype FROM oc_mimetypes"; +$result2 = $conn->query($sql2); + +// 3. Abfrage: Alle Tags im System +$sql3 = "SELECT id, name FROM oc_systemtag"; +$result3 = $conn->query($sql3); + +// 4. Abfrage: Verknüpfung zwischen Files und Tags (mit 'files' statt 'file') +$sql4 = "SELECT objectid, systemtagid + FROM oc_systemtag_object_mapping + WHERE objecttype = 'files'"; + +$result4 = $conn->query($sql4); + +// Alle Mimetypes in einem Array speichern +$mimetypes = []; +while ($row = $result2->fetch_assoc()) { + $mimetypes[$row['id']] = $row['mimetype']; +} + +// Alle Tags in einem Array speichern +$tags = []; +while ($row = $result3->fetch_assoc()) { + $tags[$row['id']] = $row['name']; +} + +// Tags mit Dateiinformationen verbinden +$fileTags = []; +while ($row = $result4->fetch_assoc()) { + $fileTags[$row['objectid']][] = $tags[$row['systemtagid']]; +} + +// Füge den Tag "archive" zu jedem Eintrag in fileTags hinzu +// foreach ($fileTags as $fileId => $existingTags) { +// // Prüfen, ob der Tag "archive" bereits vorhanden ist +// if (!in_array('archive', $existingTags)) { +// // Füge den Tag "archive" hinzu (nur im Array, nicht in der DB) +// $fileTags[$fileId][] = 'archive'; +// } +// } + + +// HTML-Tabelle erstellen +echo " + + + + + File Information + + + + + + + + + +

File Information and Tags

+ +

All Tags:

+ "; + + + + echo "

All files in Archive:

+ + + + + + + + + + + + + "; + +if ($result1->num_rows > 0) { + while ($row = $result1->fetch_assoc()) { + $file_id = $row['fileid']; + $file_name = $row['file_name']; + $file_size = $row['size']; + $file_size_in_mb = number_format($file_size / (1024 * 1024), 2); + $mimetype_id = $row['mimetype']; + $mimetype_name = isset($mimetypes[$mimetype_id]) ? $mimetypes[$mimetype_id] : 'Unknown'; + + // Hole die Tags für diese Datei + $file_tags = isset($fileTags[$file_id]) ? implode(', ', $fileTags[$file_id]) : 'No Tags'; + + // Prüfen, ob der Dateiname mit einem Datum im gewünschten Format beginnt (DDMMYY-HHMM oder DDMMYY_HHMM) + if (!preg_match('/^\d{6}[-_]\d{4}/', $file_name)) { + continue; // Diese Datei überspringen, wenn der Dateiname nicht mit dem gewünschten Format beginnt + } + + // Generiere die URL für die Datei + $file_url = "https://pl4tform.org/data/files/{$file_name}"; + + // Zeile in die Tabelle einfügen und Dateinamen als Link formatieren + echo " + + + + + + + "; + } +} else { + echo ""; +} + +echo " +
File IDFile NameSize (MB)MimetypeTagsedit
{$file_id}{$file_name}{$file_size_in_mb}{$mimetype_name}{$file_tags}edit
No data found
+ + + +"; + +$conn->close(); +?> diff --git a/berlin.html b/berlin.html new file mode 100644 index 0000000..ea1f0da --- /dev/null +++ b/berlin.html @@ -0,0 +1,8 @@ + + + +

Vollbildanzeige

+ + + + \ No newline at end of file diff --git a/chat.php b/chat.php new file mode 100644 index 0000000..b23f8fa --- /dev/null +++ b/chat.php @@ -0,0 +1,220 @@ + + +$lastTimecode"; + +?> + + + +
CH4TFORM
+ +
+ +

CH4TFORM

+ +
+ +
+
+
+ + + +
+ + + + +
+ +
+ +
+ + + + + + + + + + + + + + + diff --git a/chat2.php b/chat2.php new file mode 100644 index 0000000..181a626 --- /dev/null +++ b/chat2.php @@ -0,0 +1,198 @@ + + + +College Enquiry Chat + + + + + + + + + + + +
+
+
+

College Enquiry Chat

+
+
+ + +
+ +
+
+
+

that mongodb thing looks good, huh? + tiny master db, and huge document store

+
+
+
+ +
+
+
+

that mongodb thing looks good, huh? + tiny master db, and huge document store

+
+
+
+ + . +
+ + + +
+ + + + + + + + + \ No newline at end of file diff --git a/favicon.ico b/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..a79a61f6fa3f0c0eda1c04ca0c4c8cf4724c5e00 GIT binary patch literal 162738 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 z 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
gLBj3Ide2{JlxO7`f3L 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 literal 0 HcmV?d00001 diff --git a/hotgluecode.php b/hotgluecode.php new file mode 100644 index 0000000..408cfc0 --- /dev/null +++ b/hotgluecode.php @@ -0,0 +1,35 @@ + + + "; + + + }; \ No newline at end of file diff --git a/hotgluetransformation.php b/hotgluetransformation.php new file mode 100644 index 0000000..19b7eaa --- /dev/null +++ b/hotgluetransformation.php @@ -0,0 +1,440 @@ + + + + + + + + +"; + echo "
"; + } + elseif ($objectData['page-background-color']) { + $backgroundColor = $objectData['page-background-color']; + // echo "
"; + echo "
"; + } + + + } + else { + + + + + if ($objectData['object-width'] > 1) { + +///////////////// PARSING BRGINN ///////////////// + + + $objectType = $objectData['type']; + + $zIndex = $objectData['object-zindex']; + + $height = $objectData['object-height']; + $heightNumb = substr($height, 0, strlen($height)-3); + $screenHeight = 907; + $heightCalc = $heightNumb / $screenHeight * 100; + $heightProcent = $heightCalc . "vh"; + + $top = $objectData['object-top']; + $topNumb = substr($top, 0, strlen($lft)-3); + $topCalc = $topNumb / $screenHeight * 100; + $topProcent = $topCalc . "vh"; + + + $width = $objectData['object-width']; + $widthNumb = substr($width, 0, strlen($width)-3); + $screenWidth = 1919; + $widthCalc = $widthNumb / $screenWidth * 100; + $widthProcent = $widthCalc . "vw"; + + $left = $objectData['object-left']; + $leftNumb = substr($left, 0, strlen($lft)-3); + $leftCalc = $leftNumb / $screenWidth * 100; + $leftProcent = $leftCalc . "vw"; + + + + $link = substr($objectData['object-link'], 0, -1); + + if (str_contains($objectType, 'image')) { + + //// iamg file specifications alayisis + + // echo "yes its an image
"; + $path = "https://pl4tform.org/".$hotglueSitePathFromDatabase."shared/" . $objectData['image-file']; + + } + + // elseif (str_contains($objectType, 'iframe')) { + // $iframeUrl = $objectData['iframe-url']; + // $objectWidth = $objectData['object-width']; + + // } + + else { + + + //// text file specifications alayisis + + + $lastLines = array_slice($lines, $textStartLine); + $text = implode("
", $lastLines); + + // echo "its a text
text: $text
"; + $path = ""; + $fontSize = $objectData['text-font-size']; + $fontColor = $objectData['text-font-color']; + $backgroundColor = $objectData['text-background-color']; + $objectWidth = $objectData['object-width']; + + // attention there will be "" inside the font family + $fontFamily = $objectData['text-font-family']; + $fontStyle = $objectData['text-font-style']; + $fontWeight = $objectData['text-font-weight']; + $letterSpacing = $objectData['text-letter-spacing']; + $lineHeight = $objectData['text-line-height']; + $paddingTop = $objectData['text-padding-y']; + $paddingBottom = $objectData['text-padding-y']; + $paddingLeft = $objectData['text-padding-x']; + $paddingRight = $objectData['text-padding-x']; + $textAlign = $objectData['text-align']; + $wordSpacing = $objectData['text-word-spacing']; + + + + $iframeUrl = $objectData['iframe-url']; + + + } + + + +///////////////// PARSING END ///////////////// + + +$ratioHW = $heightNumb / $widthNumb; +$heightNew = $ratioHW * $widthCalc . "vw"; + +$ratioTW = $topNumb / $widthNumb; +$topNew = $ratioTW * $widthCalc . "vw"; + +$url = ""; + + +if (strlen($link < 1)) { + #### NOFUNCTION + $btnType = 'noFunctionBtn'; + $load = ""; + $directFocus = ""; + $cat = ""; + $onclick = ''; + $loadOnHover = $link; + $loadOnHover_name = $loadOnHover; +} + +elseif (str_contains($link, "livestream")){ + ##### LIVESTREAM + $load = "loadLiveBtn"; + $directFocus = ""; + $cat = ""; + $onclick = 'audioPlay("https://pl4tform.org/stream","livestream")'; + $loadOnHover = 'Livestream'; + $loadOnHover_name = "Livestream"; +} + +elseif (str_contains($link, "play")){ + ##### DIRECT PLAY + $load = ""; + $cat = $link; + $loadOnHover = ""; + $cat = str_replace('play', '', $cat); + $file_id = $cat; + // Abrufen der Datei-Informationen + $file_info = getFileInfo($file_id); + // Überprüfen, ob die Datei gefunden wurde + if ($file_info) { + $file_id = $file_info['file_id']; + $file_name = $file_info['file_name']; + $file_size = $file_info['file_size']; + $mimetype_name = $file_info['mimetype_name']; + $file_tags = $file_info['file_tags']; + $file_title = $file_info['file_title']; + } + // echo "CAAAT: $cat and file_name: $file_name"; + $loadOnHover_name = $file_title; + $onclick = 'audioPlay("https://pl4tform.org/ncdata/'.$file_name.'","'.$file_name.'");'; +} + +########## HAVE TO FIX HOVER LATER !!! +// elseif (str_contains($link, "hover")){ +// $load = "hoverFocusBtn"; +// $directFocus = ""; +// $cat = $btnId; + +// if (str_contains($btnId, ".txt")) { +// $loadOnHover = file_get_contents("https://pl4tform.org/data/files/".$cat); +// $loadOnHover = str_replace("\n", '', $loadOnHover); +// } +// else { +// $loadOnHover = $btnId; +// } +// $onclick = ''; +// } + +elseif (str_contains($link, "archive")){ + ##### ARCHIVE CHRONOLOGIC + $load = "loadMapBtn"; + $directFocus = ""; + $btnId = $link; + $cat = $btnId; + $onclick = 'openMap("archive")'; + $loadOnHover = "Chronologic Archive"; + $loadOnHover_name = $loadOnHover; +} + +elseif (str_contains($link, "url")){ + ##### ARCHIVE CHRONOLOGIC + $load = "loadMapBtn"; + $directFocus = ""; + $btnId = $link; + $cat = $btnId; + $onclick = ''; + $url = str_replace("url","https://",$link); + $loadOnHover = $url; + $loadOnHover_name = $loadOnHover; +} + +elseif (str_contains($link, "home")){ + ##### HOME CLOSE ALL + $load = "loadMapBtn"; + $directFocus = ""; + $btnId = $link; + $cat = $btnId; + $onclick = 'closeAll()'; + $loadOnHover = "Home"; + $loadOnHover_name = $loadOnHover; +} + + +elseif (str_contains($link, "search")){ + ##### SEARCH + $load = "loadMapBtn"; + $directFocus = ""; + $btnId = $link; + $cat = $btnId; + $onclick = 'openSearchBar()'; + $loadOnHover = "Search"; + $loadOnHover_name = $loadOnHover; +} + +elseif(preg_match("/[a-z]/i", $link) OR strlen($link < 3)){ + ##### MAP (and old zone) (it has letters !) + $load = "loadMapBtn"; + $directFocus = ""; + $btnId = $link; + $cat = $btnId; + $onclick = 'openMap("'.$btnId.'")'; + $loadOnHover = $link; + $loadOnHover_name = $loadOnHover; +} + +elseif (strlen($link > 3) AND preg_match('~[0-9]+~', $link)) { + // echo "itsafocusss"; + #### FOCUS + $btnType = "focus"; + $load = ""; + $cat = $link; + $loadOnHover = $cat; + // Beispiel: Datei-ID, die du abfragen möchtest + $file_id = $cat; + // Abrufen der Datei-Informationen + $file_info = getFileInfo($file_id); + // Überprüfen, ob die Datei gefunden wurde + if ($file_info) { + $file_id = $file_info['file_id']; + $file_name = $file_info['file_name']; + $file_size = $file_info['file_size']; + $mimetype_name = $file_info['mimetype_name']; + $file_tags = $file_info['file_tags']; + $file_title = $file_info['file_title']; + } + // echo "CAAAT: $cat and file_name: $file_name"; + $loadOnHover_name = $file_title; + $onclick = 'focusItem("'.$file_id.'");'; +} + + + +// $btnType = "NOMOREBTNTYPE"; + + + + + + + + + + + + + + +///////////////// OUTPUT ///////////////// + + + if (strlen($url > 1)) { + echo "
"; + // echo "yoo"; + } + + + if (str_contains($objectType, 'image')) { + + // IMAGE + + echo " +
+ +
+
"; + + } + + elseif (str_contains($objectType, 'iframe')) { + + // IFRAME + + echo " +
+ +
+ "; + + } + + else { + + // TEXT + + echo " +
+ +
$text
+
+
"; + + } + + if (strlen($url > 1)) { + echo "
"; + } + + + + + + + } + + + else { + + } + + + } +}; + + + if (isset($_POST["mapId"])) { + $mapId = substr($_POST["mapId"], 0, strlen($_POST["mapId"])); + + echo ""; + + } + + ?> + + + + diff --git a/includes/Parsedown.php b/includes/Parsedown.php new file mode 100644 index 0000000..68f2cfb --- /dev/null +++ b/includes/Parsedown.php @@ -0,0 +1,1994 @@ +textElements($text); + + # convert to markup + $markup = $this->elements($Elements); + + # trim line breaks + $markup = trim($markup, "\n"); + + return $markup; + } + + protected function textElements($text) + { + # make sure no definitions are set + $this->DefinitionData = array(); + + # standardize line breaks + $text = str_replace(array("\r\n", "\r"), "\n", $text); + + # remove surrounding line breaks + $text = trim($text, "\n"); + + # split text into lines + $lines = explode("\n", $text); + + # iterate through lines to identify blocks + return $this->linesElements($lines); + } + + # + # Setters + # + + function setBreaksEnabled($breaksEnabled) + { + $this->breaksEnabled = $breaksEnabled; + + return $this; + } + + protected $breaksEnabled; + + function setMarkupEscaped($markupEscaped) + { + $this->markupEscaped = $markupEscaped; + + return $this; + } + + protected $markupEscaped; + + function setUrlsLinked($urlsLinked) + { + $this->urlsLinked = $urlsLinked; + + return $this; + } + + protected $urlsLinked = true; + + function setSafeMode($safeMode) + { + $this->safeMode = (bool) $safeMode; + + return $this; + } + + protected $safeMode; + + function setStrictMode($strictMode) + { + $this->strictMode = (bool) $strictMode; + + return $this; + } + + protected $strictMode; + + protected $safeLinksWhitelist = array( + 'http://', + 'https://', + 'ftp://', + 'ftps://', + 'mailto:', + 'tel:', + 'data:image/png;base64,', + 'data:image/gif;base64,', + 'data:image/jpeg;base64,', + 'irc:', + 'ircs:', + 'git:', + 'ssh:', + 'news:', + 'steam:', + ); + + # + # Lines + # + + protected $BlockTypes = array( + '#' => array('Header'), + '*' => array('Rule', 'List'), + '+' => array('List'), + '-' => array('SetextHeader', 'Table', 'Rule', 'List'), + '0' => array('List'), + '1' => array('List'), + '2' => array('List'), + '3' => array('List'), + '4' => array('List'), + '5' => array('List'), + '6' => array('List'), + '7' => array('List'), + '8' => array('List'), + '9' => array('List'), + ':' => array('Table'), + '<' => array('Comment', 'Markup'), + '=' => array('SetextHeader'), + '>' => array('Quote'), + '[' => array('Reference'), + '_' => array('Rule'), + '`' => array('FencedCode'), + '|' => array('Table'), + '~' => array('FencedCode'), + ); + + # ~ + + protected $unmarkedBlockTypes = array( + 'Code', + ); + + # + # Blocks + # + + protected function lines(array $lines) + { + return $this->elements($this->linesElements($lines)); + } + + protected function linesElements(array $lines) + { + $Elements = array(); + $CurrentBlock = null; + + foreach ($lines as $line) + { + if (chop($line) === '') + { + if (isset($CurrentBlock)) + { + $CurrentBlock['interrupted'] = (isset($CurrentBlock['interrupted']) + ? $CurrentBlock['interrupted'] + 1 : 1 + ); + } + + continue; + } + + while (($beforeTab = strstr($line, "\t", true)) !== false) + { + $shortage = 4 - mb_strlen($beforeTab, 'utf-8') % 4; + + $line = $beforeTab + . str_repeat(' ', $shortage) + . substr($line, strlen($beforeTab) + 1) + ; + } + + $indent = strspn($line, ' '); + + $text = $indent > 0 ? substr($line, $indent) : $line; + + # ~ + + $Line = array('body' => $line, 'indent' => $indent, 'text' => $text); + + # ~ + + if (isset($CurrentBlock['continuable'])) + { + $methodName = 'block' . $CurrentBlock['type'] . 'Continue'; + $Block = $this->$methodName($Line, $CurrentBlock); + + if (isset($Block)) + { + $CurrentBlock = $Block; + + continue; + } + else + { + if ($this->isBlockCompletable($CurrentBlock['type'])) + { + $methodName = 'block' . $CurrentBlock['type'] . 'Complete'; + $CurrentBlock = $this->$methodName($CurrentBlock); + } + } + } + + # ~ + + $marker = $text[0]; + + # ~ + + $blockTypes = $this->unmarkedBlockTypes; + + if (isset($this->BlockTypes[$marker])) + { + foreach ($this->BlockTypes[$marker] as $blockType) + { + $blockTypes []= $blockType; + } + } + + # + # ~ + + foreach ($blockTypes as $blockType) + { + $Block = $this->{"block$blockType"}($Line, $CurrentBlock); + + if (isset($Block)) + { + $Block['type'] = $blockType; + + if ( ! isset($Block['identified'])) + { + if (isset($CurrentBlock)) + { + $Elements[] = $this->extractElement($CurrentBlock); + } + + $Block['identified'] = true; + } + + if ($this->isBlockContinuable($blockType)) + { + $Block['continuable'] = true; + } + + $CurrentBlock = $Block; + + continue 2; + } + } + + # ~ + + if (isset($CurrentBlock) and $CurrentBlock['type'] === 'Paragraph') + { + $Block = $this->paragraphContinue($Line, $CurrentBlock); + } + + if (isset($Block)) + { + $CurrentBlock = $Block; + } + else + { + if (isset($CurrentBlock)) + { + $Elements[] = $this->extractElement($CurrentBlock); + } + + $CurrentBlock = $this->paragraph($Line); + + $CurrentBlock['identified'] = true; + } + } + + # ~ + + if (isset($CurrentBlock['continuable']) and $this->isBlockCompletable($CurrentBlock['type'])) + { + $methodName = 'block' . $CurrentBlock['type'] . 'Complete'; + $CurrentBlock = $this->$methodName($CurrentBlock); + } + + # ~ + + if (isset($CurrentBlock)) + { + $Elements[] = $this->extractElement($CurrentBlock); + } + + # ~ + + return $Elements; + } + + protected function extractElement(array $Component) + { + if ( ! isset($Component['element'])) + { + if (isset($Component['markup'])) + { + $Component['element'] = array('rawHtml' => $Component['markup']); + } + elseif (isset($Component['hidden'])) + { + $Component['element'] = array(); + } + } + + return $Component['element']; + } + + protected function isBlockContinuable($Type) + { + return method_exists($this, 'block' . $Type . 'Continue'); + } + + protected function isBlockCompletable($Type) + { + return method_exists($this, 'block' . $Type . 'Complete'); + } + + # + # Code + + protected function blockCode($Line, $Block = null) + { + if (isset($Block) and $Block['type'] === 'Paragraph' and ! isset($Block['interrupted'])) + { + return; + } + + if ($Line['indent'] >= 4) + { + $text = substr($Line['body'], 4); + + $Block = array( + 'element' => array( + 'name' => 'pre', + 'element' => array( + 'name' => 'code', + 'text' => $text, + ), + ), + ); + + return $Block; + } + } + + protected function blockCodeContinue($Line, $Block) + { + if ($Line['indent'] >= 4) + { + if (isset($Block['interrupted'])) + { + $Block['element']['element']['text'] .= str_repeat("\n", $Block['interrupted']); + + unset($Block['interrupted']); + } + + $Block['element']['element']['text'] .= "\n"; + + $text = substr($Line['body'], 4); + + $Block['element']['element']['text'] .= $text; + + return $Block; + } + } + + protected function blockCodeComplete($Block) + { + return $Block; + } + + # + # Comment + + protected function blockComment($Line) + { + if ($this->markupEscaped or $this->safeMode) + { + return; + } + + if (strpos($Line['text'], '') !== false) + { + $Block['closed'] = true; + } + + return $Block; + } + } + + protected function blockCommentContinue($Line, array $Block) + { + if (isset($Block['closed'])) + { + return; + } + + $Block['element']['rawHtml'] .= "\n" . $Line['body']; + + if (strpos($Line['text'], '-->') !== false) + { + $Block['closed'] = true; + } + + return $Block; + } + + # + # Fenced Code + + protected function blockFencedCode($Line) + { + $marker = $Line['text'][0]; + + $openerLength = strspn($Line['text'], $marker); + + if ($openerLength < 3) + { + return; + } + + $infostring = trim(substr($Line['text'], $openerLength), "\t "); + + if (strpos($infostring, '`') !== false) + { + return; + } + + $Element = array( + 'name' => 'code', + 'text' => '', + ); + + if ($infostring !== '') + { + /** + * https://www.w3.org/TR/2011/WD-html5-20110525/elements.html#classes + * Every HTML element may have a class attribute specified. + * The attribute, if specified, must have a value that is a set + * of space-separated tokens representing the various classes + * that the element belongs to. + * [...] + * The space characters, for the purposes of this specification, + * are U+0020 SPACE, U+0009 CHARACTER TABULATION (tab), + * U+000A LINE FEED (LF), U+000C FORM FEED (FF), and + * U+000D CARRIAGE RETURN (CR). + */ + $language = substr($infostring, 0, strcspn($infostring, " \t\n\f\r")); + + $Element['attributes'] = array('class' => "language-$language"); + } + + $Block = array( + 'char' => $marker, + 'openerLength' => $openerLength, + 'element' => array( + 'name' => 'pre', + 'element' => $Element, + ), + ); + + return $Block; + } + + protected function blockFencedCodeContinue($Line, $Block) + { + if (isset($Block['complete'])) + { + return; + } + + if (isset($Block['interrupted'])) + { + $Block['element']['element']['text'] .= str_repeat("\n", $Block['interrupted']); + + unset($Block['interrupted']); + } + + if (($len = strspn($Line['text'], $Block['char'])) >= $Block['openerLength'] + and chop(substr($Line['text'], $len), ' ') === '' + ) { + $Block['element']['element']['text'] = substr($Block['element']['element']['text'], 1); + + $Block['complete'] = true; + + return $Block; + } + + $Block['element']['element']['text'] .= "\n" . $Line['body']; + + return $Block; + } + + protected function blockFencedCodeComplete($Block) + { + return $Block; + } + + # + # Header + + protected function blockHeader($Line) + { + $level = strspn($Line['text'], '#'); + + if ($level > 6) + { + return; + } + + $text = trim($Line['text'], '#'); + + if ($this->strictMode and isset($text[0]) and $text[0] !== ' ') + { + return; + } + + $text = trim($text, ' '); + + $Block = array( + 'element' => array( + 'name' => 'h' . $level, + 'handler' => array( + 'function' => 'lineElements', + 'argument' => $text, + 'destination' => 'elements', + ) + ), + ); + + return $Block; + } + + # + # List + + protected function blockList($Line, ?array $CurrentBlock = null) + { + list($name, $pattern) = $Line['text'][0] <= '-' ? array('ul', '[*+-]') : array('ol', '[0-9]{1,9}+[.\)]'); + + if (preg_match('/^('.$pattern.'([ ]++|$))(.*+)/', $Line['text'], $matches)) + { + $contentIndent = strlen($matches[2]); + + if ($contentIndent >= 5) + { + $contentIndent -= 1; + $matches[1] = substr($matches[1], 0, -$contentIndent); + $matches[3] = str_repeat(' ', $contentIndent) . $matches[3]; + } + elseif ($contentIndent === 0) + { + $matches[1] .= ' '; + } + + $markerWithoutWhitespace = strstr($matches[1], ' ', true); + + $Block = array( + 'indent' => $Line['indent'], + 'pattern' => $pattern, + 'data' => array( + 'type' => $name, + 'marker' => $matches[1], + 'markerType' => ($name === 'ul' ? $markerWithoutWhitespace : substr($markerWithoutWhitespace, -1)), + ), + 'element' => array( + 'name' => $name, + 'elements' => array(), + ), + ); + $Block['data']['markerTypeRegex'] = preg_quote($Block['data']['markerType'], '/'); + + if ($name === 'ol') + { + $listStart = ltrim(strstr($matches[1], $Block['data']['markerType'], true), '0') ?: '0'; + + if ($listStart !== '1') + { + if ( + isset($CurrentBlock) + and $CurrentBlock['type'] === 'Paragraph' + and ! isset($CurrentBlock['interrupted']) + ) { + return; + } + + $Block['element']['attributes'] = array('start' => $listStart); + } + } + + $Block['li'] = array( + 'name' => 'li', + 'handler' => array( + 'function' => 'li', + 'argument' => !empty($matches[3]) ? array($matches[3]) : array(), + 'destination' => 'elements' + ) + ); + + $Block['element']['elements'] []= & $Block['li']; + + return $Block; + } + } + + protected function blockListContinue($Line, array $Block) + { + if (isset($Block['interrupted']) and empty($Block['li']['handler']['argument'])) + { + return null; + } + + $requiredIndent = ($Block['indent'] + strlen($Block['data']['marker'])); + + if ($Line['indent'] < $requiredIndent + and ( + ( + $Block['data']['type'] === 'ol' + and preg_match('/^[0-9]++'.$Block['data']['markerTypeRegex'].'(?:[ ]++(.*)|$)/', $Line['text'], $matches) + ) or ( + $Block['data']['type'] === 'ul' + and preg_match('/^'.$Block['data']['markerTypeRegex'].'(?:[ ]++(.*)|$)/', $Line['text'], $matches) + ) + ) + ) { + if (isset($Block['interrupted'])) + { + $Block['li']['handler']['argument'] []= ''; + + $Block['loose'] = true; + + unset($Block['interrupted']); + } + + unset($Block['li']); + + $text = isset($matches[1]) ? $matches[1] : ''; + + $Block['indent'] = $Line['indent']; + + $Block['li'] = array( + 'name' => 'li', + 'handler' => array( + 'function' => 'li', + 'argument' => array($text), + 'destination' => 'elements' + ) + ); + + $Block['element']['elements'] []= & $Block['li']; + + return $Block; + } + elseif ($Line['indent'] < $requiredIndent and $this->blockList($Line)) + { + return null; + } + + if ($Line['text'][0] === '[' and $this->blockReference($Line)) + { + return $Block; + } + + if ($Line['indent'] >= $requiredIndent) + { + if (isset($Block['interrupted'])) + { + $Block['li']['handler']['argument'] []= ''; + + $Block['loose'] = true; + + unset($Block['interrupted']); + } + + $text = substr($Line['body'], $requiredIndent); + + $Block['li']['handler']['argument'] []= $text; + + return $Block; + } + + if ( ! isset($Block['interrupted'])) + { + $text = preg_replace('/^[ ]{0,'.$requiredIndent.'}+/', '', $Line['body']); + + $Block['li']['handler']['argument'] []= $text; + + return $Block; + } + } + + protected function blockListComplete(array $Block) + { + if (isset($Block['loose'])) + { + foreach ($Block['element']['elements'] as &$li) + { + if (end($li['handler']['argument']) !== '') + { + $li['handler']['argument'] []= ''; + } + } + } + + return $Block; + } + + # + # Quote + + protected function blockQuote($Line) + { + if (preg_match('/^>[ ]?+(.*+)/', $Line['text'], $matches)) + { + $Block = array( + 'element' => array( + 'name' => 'blockquote', + 'handler' => array( + 'function' => 'linesElements', + 'argument' => (array) $matches[1], + 'destination' => 'elements', + ) + ), + ); + + return $Block; + } + } + + protected function blockQuoteContinue($Line, array $Block) + { + if (isset($Block['interrupted'])) + { + return; + } + + if ($Line['text'][0] === '>' and preg_match('/^>[ ]?+(.*+)/', $Line['text'], $matches)) + { + $Block['element']['handler']['argument'] []= $matches[1]; + + return $Block; + } + + if ( ! isset($Block['interrupted'])) + { + $Block['element']['handler']['argument'] []= $Line['text']; + + return $Block; + } + } + + # + # Rule + + protected function blockRule($Line) + { + $marker = $Line['text'][0]; + + if (substr_count($Line['text'], $marker) >= 3 and chop($Line['text'], " $marker") === '') + { + $Block = array( + 'element' => array( + 'name' => 'hr', + ), + ); + + return $Block; + } + } + + # + # Setext + + protected function blockSetextHeader($Line, ?array $Block = null) + { + if ( ! isset($Block) or $Block['type'] !== 'Paragraph' or isset($Block['interrupted'])) + { + return; + } + + if ($Line['indent'] < 4 and chop(chop($Line['text'], ' '), $Line['text'][0]) === '') + { + $Block['element']['name'] = $Line['text'][0] === '=' ? 'h1' : 'h2'; + + return $Block; + } + } + + # + # Markup + + protected function blockMarkup($Line) + { + if ($this->markupEscaped or $this->safeMode) + { + return; + } + + if (preg_match('/^<[\/]?+(\w*)(?:[ ]*+'.$this->regexHtmlAttribute.')*+[ ]*+(\/)?>/', $Line['text'], $matches)) + { + $element = strtolower($matches[1]); + + if (in_array($element, $this->textLevelElements)) + { + return; + } + + $Block = array( + 'name' => $matches[1], + 'element' => array( + 'rawHtml' => $Line['text'], + 'autobreak' => true, + ), + ); + + return $Block; + } + } + + protected function blockMarkupContinue($Line, array $Block) + { + if (isset($Block['closed']) or isset($Block['interrupted'])) + { + return; + } + + $Block['element']['rawHtml'] .= "\n" . $Line['body']; + + return $Block; + } + + # + # Reference + + protected function blockReference($Line) + { + if (strpos($Line['text'], ']') !== false + and preg_match('/^\[(.+?)\]:[ ]*+?(?:[ ]+["\'(](.+)["\')])?[ ]*+$/', $Line['text'], $matches) + ) { + $id = strtolower($matches[1]); + + $Data = array( + 'url' => $matches[2], + 'title' => isset($matches[3]) ? $matches[3] : null, + ); + + $this->DefinitionData['Reference'][$id] = $Data; + + $Block = array( + 'element' => array(), + ); + + return $Block; + } + } + + # + # Table + + protected function blockTable($Line, ?array $Block = null) + { + if ( ! isset($Block) or $Block['type'] !== 'Paragraph' or isset($Block['interrupted'])) + { + return; + } + + if ( + strpos($Block['element']['handler']['argument'], '|') === false + and strpos($Line['text'], '|') === false + and strpos($Line['text'], ':') === false + or strpos($Block['element']['handler']['argument'], "\n") !== false + ) { + return; + } + + if (chop($Line['text'], ' -:|') !== '') + { + return; + } + + $alignments = array(); + + $divider = $Line['text']; + + $divider = trim($divider); + $divider = trim($divider, '|'); + + $dividerCells = explode('|', $divider); + + foreach ($dividerCells as $dividerCell) + { + $dividerCell = trim($dividerCell); + + if ($dividerCell === '') + { + return; + } + + $alignment = null; + + if ($dividerCell[0] === ':') + { + $alignment = 'left'; + } + + if (substr($dividerCell, - 1) === ':') + { + $alignment = $alignment === 'left' ? 'center' : 'right'; + } + + $alignments []= $alignment; + } + + # ~ + + $HeaderElements = array(); + + $header = $Block['element']['handler']['argument']; + + $header = trim($header); + $header = trim($header, '|'); + + $headerCells = explode('|', $header); + + if (count($headerCells) !== count($alignments)) + { + return; + } + + foreach ($headerCells as $index => $headerCell) + { + $headerCell = trim($headerCell); + + $HeaderElement = array( + 'name' => 'th', + 'handler' => array( + 'function' => 'lineElements', + 'argument' => $headerCell, + 'destination' => 'elements', + ) + ); + + if (isset($alignments[$index])) + { + $alignment = $alignments[$index]; + + $HeaderElement['attributes'] = array( + 'style' => "text-align: $alignment;", + ); + } + + $HeaderElements []= $HeaderElement; + } + + # ~ + + $Block = array( + 'alignments' => $alignments, + 'identified' => true, + 'element' => array( + 'name' => 'table', + 'elements' => array(), + ), + ); + + $Block['element']['elements'] []= array( + 'name' => 'thead', + ); + + $Block['element']['elements'] []= array( + 'name' => 'tbody', + 'elements' => array(), + ); + + $Block['element']['elements'][0]['elements'] []= array( + 'name' => 'tr', + 'elements' => $HeaderElements, + ); + + return $Block; + } + + protected function blockTableContinue($Line, array $Block) + { + if (isset($Block['interrupted'])) + { + return; + } + + if (count($Block['alignments']) === 1 or $Line['text'][0] === '|' or strpos($Line['text'], '|')) + { + $Elements = array(); + + $row = $Line['text']; + + $row = trim($row); + $row = trim($row, '|'); + + preg_match_all('/(?:(\\\\[|])|[^|`]|`[^`]++`|`)++/', $row, $matches); + + $cells = array_slice($matches[0], 0, count($Block['alignments'])); + + foreach ($cells as $index => $cell) + { + $cell = trim($cell); + + $Element = array( + 'name' => 'td', + 'handler' => array( + 'function' => 'lineElements', + 'argument' => $cell, + 'destination' => 'elements', + ) + ); + + if (isset($Block['alignments'][$index])) + { + $Element['attributes'] = array( + 'style' => 'text-align: ' . $Block['alignments'][$index] . ';', + ); + } + + $Elements []= $Element; + } + + $Element = array( + 'name' => 'tr', + 'elements' => $Elements, + ); + + $Block['element']['elements'][1]['elements'] []= $Element; + + return $Block; + } + } + + # + # ~ + # + + protected function paragraph($Line) + { + return array( + 'type' => 'Paragraph', + 'element' => array( + 'name' => 'p', + 'handler' => array( + 'function' => 'lineElements', + 'argument' => $Line['text'], + 'destination' => 'elements', + ), + ), + ); + } + + protected function paragraphContinue($Line, array $Block) + { + if (isset($Block['interrupted'])) + { + return; + } + + $Block['element']['handler']['argument'] .= "\n".$Line['text']; + + return $Block; + } + + # + # Inline Elements + # + + protected $InlineTypes = array( + '!' => array('Image'), + '&' => array('SpecialCharacter'), + '*' => array('Emphasis'), + ':' => array('Url'), + '<' => array('UrlTag', 'EmailTag', 'Markup'), + '[' => array('Link'), + '_' => array('Emphasis'), + '`' => array('Code'), + '~' => array('Strikethrough'), + '\\' => array('EscapeSequence'), + ); + + # ~ + + protected $inlineMarkerList = '!*_&[:<`~\\'; + + # + # ~ + # + + public function line($text, $nonNestables = array()) + { + return $this->elements($this->lineElements($text, $nonNestables)); + } + + protected function lineElements($text, $nonNestables = array()) + { + # standardize line breaks + $text = str_replace(array("\r\n", "\r"), "\n", $text); + + $Elements = array(); + + $nonNestables = (empty($nonNestables) + ? array() + : array_combine($nonNestables, $nonNestables) + ); + + # $excerpt is based on the first occurrence of a marker + + while ($excerpt = strpbrk($text, $this->inlineMarkerList)) + { + $marker = $excerpt[0]; + + $markerPosition = strlen($text) - strlen($excerpt); + + $Excerpt = array('text' => $excerpt, 'context' => $text); + + foreach ($this->InlineTypes[$marker] as $inlineType) + { + # check to see if the current inline type is nestable in the current context + + if (isset($nonNestables[$inlineType])) + { + continue; + } + + $Inline = $this->{"inline$inlineType"}($Excerpt); + + if ( ! isset($Inline)) + { + continue; + } + + # makes sure that the inline belongs to "our" marker + + if (isset($Inline['position']) and $Inline['position'] > $markerPosition) + { + continue; + } + + # sets a default inline position + + if ( ! isset($Inline['position'])) + { + $Inline['position'] = $markerPosition; + } + + # cause the new element to 'inherit' our non nestables + + + $Inline['element']['nonNestables'] = isset($Inline['element']['nonNestables']) + ? array_merge($Inline['element']['nonNestables'], $nonNestables) + : $nonNestables + ; + + # the text that comes before the inline + $unmarkedText = substr($text, 0, $Inline['position']); + + # compile the unmarked text + $InlineText = $this->inlineText($unmarkedText); + $Elements[] = $InlineText['element']; + + # compile the inline + $Elements[] = $this->extractElement($Inline); + + # remove the examined text + $text = substr($text, $Inline['position'] + $Inline['extent']); + + continue 2; + } + + # the marker does not belong to an inline + + $unmarkedText = substr($text, 0, $markerPosition + 1); + + $InlineText = $this->inlineText($unmarkedText); + $Elements[] = $InlineText['element']; + + $text = substr($text, $markerPosition + 1); + } + + $InlineText = $this->inlineText($text); + $Elements[] = $InlineText['element']; + + foreach ($Elements as &$Element) + { + if ( ! isset($Element['autobreak'])) + { + $Element['autobreak'] = false; + } + } + + return $Elements; + } + + # + # ~ + # + + protected function inlineText($text) + { + $Inline = array( + 'extent' => strlen($text), + 'element' => array(), + ); + + $Inline['element']['elements'] = self::pregReplaceElements( + $this->breaksEnabled ? '/[ ]*+\n/' : '/(?:[ ]*+\\\\|[ ]{2,}+)\n/', + array( + array('name' => 'br'), + array('text' => "\n"), + ), + $text + ); + + return $Inline; + } + + protected function inlineCode($Excerpt) + { + $marker = $Excerpt['text'][0]; + + if (preg_match('/^(['.$marker.']++)[ ]*+(.+?)[ ]*+(? strlen($matches[0]), + 'element' => array( + 'name' => 'code', + 'text' => $text, + ), + ); + } + } + + protected function inlineEmailTag($Excerpt) + { + $hostnameLabel = '[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?'; + + $commonMarkEmail = '[a-zA-Z0-9.!#$%&\'*+\/=?^_`{|}~-]++@' + . $hostnameLabel . '(?:\.' . $hostnameLabel . ')*'; + + if (strpos($Excerpt['text'], '>') !== false + and preg_match("/^<((mailto:)?$commonMarkEmail)>/i", $Excerpt['text'], $matches) + ){ + $url = $matches[1]; + + if ( ! isset($matches[2])) + { + $url = "mailto:$url"; + } + + return array( + 'extent' => strlen($matches[0]), + 'element' => array( + 'name' => 'a', + 'text' => $matches[1], + 'attributes' => array( + 'href' => $url, + ), + ), + ); + } + } + + protected function inlineEmphasis($Excerpt) + { + if ( ! isset($Excerpt['text'][1])) + { + return; + } + + $marker = $Excerpt['text'][0]; + + if ($Excerpt['text'][1] === $marker and preg_match($this->StrongRegex[$marker], $Excerpt['text'], $matches)) + { + $emphasis = 'strong'; + } + elseif (preg_match($this->EmRegex[$marker], $Excerpt['text'], $matches)) + { + $emphasis = 'em'; + } + else + { + return; + } + + return array( + 'extent' => strlen($matches[0]), + 'element' => array( + 'name' => $emphasis, + 'handler' => array( + 'function' => 'lineElements', + 'argument' => $matches[1], + 'destination' => 'elements', + ) + ), + ); + } + + protected function inlineEscapeSequence($Excerpt) + { + if (isset($Excerpt['text'][1]) and in_array($Excerpt['text'][1], $this->specialCharacters)) + { + return array( + 'element' => array('rawHtml' => $Excerpt['text'][1]), + 'extent' => 2, + ); + } + } + + protected function inlineImage($Excerpt) + { + if ( ! isset($Excerpt['text'][1]) or $Excerpt['text'][1] !== '[') + { + return; + } + + $Excerpt['text']= substr($Excerpt['text'], 1); + + $Link = $this->inlineLink($Excerpt); + + if ($Link === null) + { + return; + } + + $Inline = array( + 'extent' => $Link['extent'] + 1, + 'element' => array( + 'name' => 'img', + 'attributes' => array( + 'src' => $Link['element']['attributes']['href'], + 'alt' => $Link['element']['handler']['argument'], + ), + 'autobreak' => true, + ), + ); + + $Inline['element']['attributes'] += $Link['element']['attributes']; + + unset($Inline['element']['attributes']['href']); + + return $Inline; + } + + protected function inlineLink($Excerpt) + { + $Element = array( + 'name' => 'a', + 'handler' => array( + 'function' => 'lineElements', + 'argument' => null, + 'destination' => 'elements', + ), + 'nonNestables' => array('Url', 'Link'), + 'attributes' => array( + 'href' => null, + 'title' => null, + ), + ); + + $extent = 0; + + $remainder = $Excerpt['text']; + + if (preg_match('/\[((?:[^][]++|(?R))*+)\]/', $remainder, $matches)) + { + $Element['handler']['argument'] = $matches[1]; + + $extent += strlen($matches[0]); + + $remainder = substr($remainder, $extent); + } + else + { + return; + } + + if (preg_match('/^[(]\s*+((?:[^ ()]++|[(][^ )]+[)])++)(?:[ ]+("[^"]*+"|\'[^\']*+\'))?\s*+[)]/', $remainder, $matches)) + { + $Element['attributes']['href'] = $matches[1]; + + if (isset($matches[2])) + { + $Element['attributes']['title'] = substr($matches[2], 1, - 1); + } + + $extent += strlen($matches[0]); + } + else + { + if (preg_match('/^\s*\[(.*?)\]/', $remainder, $matches)) + { + $definition = strlen($matches[1]) ? $matches[1] : $Element['handler']['argument']; + $definition = strtolower($definition); + + $extent += strlen($matches[0]); + } + else + { + $definition = strtolower($Element['handler']['argument']); + } + + if ( ! isset($this->DefinitionData['Reference'][$definition])) + { + return; + } + + $Definition = $this->DefinitionData['Reference'][$definition]; + + $Element['attributes']['href'] = $Definition['url']; + $Element['attributes']['title'] = $Definition['title']; + } + + return array( + 'extent' => $extent, + 'element' => $Element, + ); + } + + protected function inlineMarkup($Excerpt) + { + if ($this->markupEscaped or $this->safeMode or strpos($Excerpt['text'], '>') === false) + { + return; + } + + if ($Excerpt['text'][1] === '/' and preg_match('/^<\/\w[\w-]*+[ ]*+>/s', $Excerpt['text'], $matches)) + { + return array( + 'element' => array('rawHtml' => $matches[0]), + 'extent' => strlen($matches[0]), + ); + } + + if ($Excerpt['text'][1] === '!' and preg_match('/^/s', $Excerpt['text'], $matches)) + { + return array( + 'element' => array('rawHtml' => $matches[0]), + 'extent' => strlen($matches[0]), + ); + } + + if ($Excerpt['text'][1] !== ' ' and preg_match('/^<\w[\w-]*+(?:[ ]*+'.$this->regexHtmlAttribute.')*+[ ]*+\/?>/s', $Excerpt['text'], $matches)) + { + return array( + 'element' => array('rawHtml' => $matches[0]), + 'extent' => strlen($matches[0]), + ); + } + } + + protected function inlineSpecialCharacter($Excerpt) + { + if (substr($Excerpt['text'], 1, 1) !== ' ' and strpos($Excerpt['text'], ';') !== false + and preg_match('/^&(#?+[0-9a-zA-Z]++);/', $Excerpt['text'], $matches) + ) { + return array( + 'element' => array('rawHtml' => '&' . $matches[1] . ';'), + 'extent' => strlen($matches[0]), + ); + } + + return; + } + + protected function inlineStrikethrough($Excerpt) + { + if ( ! isset($Excerpt['text'][1])) + { + return; + } + + if ($Excerpt['text'][1] === '~' and preg_match('/^~~(?=\S)(.+?)(?<=\S)~~/', $Excerpt['text'], $matches)) + { + return array( + 'extent' => strlen($matches[0]), + 'element' => array( + 'name' => 'del', + 'handler' => array( + 'function' => 'lineElements', + 'argument' => $matches[1], + 'destination' => 'elements', + ) + ), + ); + } + } + + protected function inlineUrl($Excerpt) + { + if ($this->urlsLinked !== true or ! isset($Excerpt['text'][2]) or $Excerpt['text'][2] !== '/') + { + return; + } + + if (strpos($Excerpt['context'], 'http') !== false + and preg_match('/\bhttps?+:[\/]{2}[^\s<]+\b\/*+/ui', $Excerpt['context'], $matches, PREG_OFFSET_CAPTURE) + ) { + $url = $matches[0][0]; + + $Inline = array( + 'extent' => strlen($matches[0][0]), + 'position' => $matches[0][1], + 'element' => array( + 'name' => 'a', + 'text' => $url, + 'attributes' => array( + 'href' => $url, + ), + ), + ); + + return $Inline; + } + } + + protected function inlineUrlTag($Excerpt) + { + if (strpos($Excerpt['text'], '>') !== false and preg_match('/^<(\w++:\/{2}[^ >]++)>/i', $Excerpt['text'], $matches)) + { + $url = $matches[1]; + + return array( + 'extent' => strlen($matches[0]), + 'element' => array( + 'name' => 'a', + 'text' => $url, + 'attributes' => array( + 'href' => $url, + ), + ), + ); + } + } + + # ~ + + protected function unmarkedText($text) + { + $Inline = $this->inlineText($text); + return $this->element($Inline['element']); + } + + # + # Handlers + # + + protected function handle(array $Element) + { + if (isset($Element['handler'])) + { + if (!isset($Element['nonNestables'])) + { + $Element['nonNestables'] = array(); + } + + if (is_string($Element['handler'])) + { + $function = $Element['handler']; + $argument = $Element['text']; + unset($Element['text']); + $destination = 'rawHtml'; + } + else + { + $function = $Element['handler']['function']; + $argument = $Element['handler']['argument']; + $destination = $Element['handler']['destination']; + } + + $Element[$destination] = $this->{$function}($argument, $Element['nonNestables']); + + if ($destination === 'handler') + { + $Element = $this->handle($Element); + } + + unset($Element['handler']); + } + + return $Element; + } + + protected function handleElementRecursive(array $Element) + { + return $this->elementApplyRecursive(array($this, 'handle'), $Element); + } + + protected function handleElementsRecursive(array $Elements) + { + return $this->elementsApplyRecursive(array($this, 'handle'), $Elements); + } + + protected function elementApplyRecursive($closure, array $Element) + { + $Element = call_user_func($closure, $Element); + + if (isset($Element['elements'])) + { + $Element['elements'] = $this->elementsApplyRecursive($closure, $Element['elements']); + } + elseif (isset($Element['element'])) + { + $Element['element'] = $this->elementApplyRecursive($closure, $Element['element']); + } + + return $Element; + } + + protected function elementApplyRecursiveDepthFirst($closure, array $Element) + { + if (isset($Element['elements'])) + { + $Element['elements'] = $this->elementsApplyRecursiveDepthFirst($closure, $Element['elements']); + } + elseif (isset($Element['element'])) + { + $Element['element'] = $this->elementsApplyRecursiveDepthFirst($closure, $Element['element']); + } + + $Element = call_user_func($closure, $Element); + + return $Element; + } + + protected function elementsApplyRecursive($closure, array $Elements) + { + foreach ($Elements as &$Element) + { + $Element = $this->elementApplyRecursive($closure, $Element); + } + + return $Elements; + } + + protected function elementsApplyRecursiveDepthFirst($closure, array $Elements) + { + foreach ($Elements as &$Element) + { + $Element = $this->elementApplyRecursiveDepthFirst($closure, $Element); + } + + return $Elements; + } + + protected function element(array $Element) + { + if ($this->safeMode) + { + $Element = $this->sanitiseElement($Element); + } + + # identity map if element has no handler + $Element = $this->handle($Element); + + $hasName = isset($Element['name']); + + $markup = ''; + + if ($hasName) + { + $markup .= '<' . $Element['name']; + + if (isset($Element['attributes'])) + { + foreach ($Element['attributes'] as $name => $value) + { + if ($value === null) + { + continue; + } + + $markup .= " $name=\"".self::escape($value).'"'; + } + } + } + + $permitRawHtml = false; + + if (isset($Element['text'])) + { + $text = $Element['text']; + } + // very strongly consider an alternative if you're writing an + // extension + elseif (isset($Element['rawHtml'])) + { + $text = $Element['rawHtml']; + + $allowRawHtmlInSafeMode = isset($Element['allowRawHtmlInSafeMode']) && $Element['allowRawHtmlInSafeMode']; + $permitRawHtml = !$this->safeMode || $allowRawHtmlInSafeMode; + } + + $hasContent = isset($text) || isset($Element['element']) || isset($Element['elements']); + + if ($hasContent) + { + $markup .= $hasName ? '>' : ''; + + if (isset($Element['elements'])) + { + $markup .= $this->elements($Element['elements']); + } + elseif (isset($Element['element'])) + { + $markup .= $this->element($Element['element']); + } + else + { + if (!$permitRawHtml) + { + $markup .= self::escape($text, true); + } + else + { + $markup .= $text; + } + } + + $markup .= $hasName ? '' : ''; + } + elseif ($hasName) + { + $markup .= ' />'; + } + + return $markup; + } + + protected function elements(array $Elements) + { + $markup = ''; + + $autoBreak = true; + + foreach ($Elements as $Element) + { + if (empty($Element)) + { + continue; + } + + $autoBreakNext = (isset($Element['autobreak']) + ? $Element['autobreak'] : isset($Element['name']) + ); + // (autobreak === false) covers both sides of an element + $autoBreak = !$autoBreak ? $autoBreak : $autoBreakNext; + + $markup .= ($autoBreak ? "\n" : '') . $this->element($Element); + $autoBreak = $autoBreakNext; + } + + $markup .= $autoBreak ? "\n" : ''; + + return $markup; + } + + # ~ + + protected function li($lines) + { + $Elements = $this->linesElements($lines); + + if ( ! in_array('', $lines) + and isset($Elements[0]) and isset($Elements[0]['name']) + and $Elements[0]['name'] === 'p' + ) { + unset($Elements[0]['name']); + } + + return $Elements; + } + + # + # AST Convenience + # + + /** + * Replace occurrences $regexp with $Elements in $text. Return an array of + * elements representing the replacement. + */ + protected static function pregReplaceElements($regexp, $Elements, $text) + { + $newElements = array(); + + while (preg_match($regexp, $text, $matches, PREG_OFFSET_CAPTURE)) + { + $offset = $matches[0][1]; + $before = substr($text, 0, $offset); + $after = substr($text, $offset + strlen($matches[0][0])); + + $newElements[] = array('text' => $before); + + foreach ($Elements as $Element) + { + $newElements[] = $Element; + } + + $text = $after; + } + + $newElements[] = array('text' => $text); + + return $newElements; + } + + # + # Deprecated Methods + # + + function parse($text) + { + $markup = $this->text($text); + + return $markup; + } + + protected function sanitiseElement(array $Element) + { + static $goodAttribute = '/^[a-zA-Z0-9][a-zA-Z0-9-_]*+$/'; + static $safeUrlNameToAtt = array( + 'a' => 'href', + 'img' => 'src', + ); + + if ( ! isset($Element['name'])) + { + unset($Element['attributes']); + return $Element; + } + + if (isset($safeUrlNameToAtt[$Element['name']])) + { + $Element = $this->filterUnsafeUrlInAttribute($Element, $safeUrlNameToAtt[$Element['name']]); + } + + if ( ! empty($Element['attributes'])) + { + foreach ($Element['attributes'] as $att => $val) + { + # filter out badly parsed attribute + if ( ! preg_match($goodAttribute, $att)) + { + unset($Element['attributes'][$att]); + } + # dump onevent attribute + elseif (self::striAtStart($att, 'on')) + { + unset($Element['attributes'][$att]); + } + } + } + + return $Element; + } + + protected function filterUnsafeUrlInAttribute(array $Element, $attribute) + { + foreach ($this->safeLinksWhitelist as $scheme) + { + if (self::striAtStart($Element['attributes'][$attribute], $scheme)) + { + return $Element; + } + } + + $Element['attributes'][$attribute] = str_replace(':', '%3A', $Element['attributes'][$attribute]); + + return $Element; + } + + # + # Static Methods + # + + protected static function escape($text, $allowQuotes = false) + { + return htmlspecialchars($text, $allowQuotes ? ENT_NOQUOTES : ENT_QUOTES, 'UTF-8'); + } + + protected static function striAtStart($string, $needle) + { + $len = strlen($needle); + + if ($len > strlen($string)) + { + return false; + } + else + { + return strtolower(substr($string, 0, $len)) === strtolower($needle); + } + } + + static function instance($name = 'default') + { + if (isset(self::$instances[$name])) + { + return self::$instances[$name]; + } + + $instance = new static(); + + self::$instances[$name] = $instance; + + return $instance; + } + + private static $instances = array(); + + # + # Fields + # + + protected $DefinitionData; + + # + # Read-Only + + protected $specialCharacters = array( + '\\', '`', '*', '_', '{', '}', '[', ']', '(', ')', '>', '#', '+', '-', '.', '!', '|', '~' + ); + + protected $StrongRegex = array( + '*' => '/^[*]{2}((?:\\\\\*|[^*]|[*][^*]*+[*])+?)[*]{2}(?![*])/s', + '_' => '/^__((?:\\\\_|[^_]|_[^_]*+_)+?)__(?!_)/us', + ); + + protected $EmRegex = array( + '*' => '/^[*]((?:\\\\\*|[^*]|[*][*][^*]+?[*][*])+?)[*](?![*])/s', + '_' => '/^_((?:\\\\_|[^_]|__[^_]*__)+?)_(?!_)\b/us', + ); + + protected $regexHtmlAttribute = '[a-zA-Z_:][\w:.-]*+(?:\s*+=\s*+(?:[^"\'=<>`\s]+|"[^"]*+"|\'[^\']*+\'))?+'; + + protected $voidElements = array( + 'area', 'base', 'br', 'col', 'command', 'embed', 'hr', 'img', 'input', 'link', 'meta', 'param', 'source', + ); + + protected $textLevelElements = array( + 'a', 'br', 'bdo', 'abbr', 'blink', 'nextid', 'acronym', 'basefont', + 'b', 'em', 'big', 'cite', 'small', 'spacer', 'listing', + 'i', 'rp', 'del', 'code', 'strike', 'marquee', + 'q', 'rt', 'ins', 'font', 'strong', + 's', 'tt', 'kbd', 'mark', + 'u', 'xm', 'sub', 'nobr', + 'sup', 'ruby', + 'var', 'span', + 'wbr', 'time', + ); +} \ No newline at end of file diff --git a/includes/chatContent.php b/includes/chatContent.php new file mode 100644 index 0000000..d9e690b --- /dev/null +++ b/includes/chatContent.php @@ -0,0 +1,272 @@ +
owl | 30.08.2024 - 20:13
Heyy

+
owl | 30.08.2024 - 20:13
this is the new pl4tform chat!! CH4TFORM :P

+
owl | 30.08.2024 - 20:14
you can choose a nichname if you want !

+
owl | 30.08.2024 - 20:14
leave a message when you pass by here @_@

+
owl | 30.08.2024 - 20:17
*nickname

+
dale | 30.08.2024 - 20:28
OMG

+
anonym | 30.08.2024 - 20:28
incrr

+
laura | 30.08.2024 - 20:32
this is amazin

+
james | 30.08.2024 - 20:40
when is the next pl4tform newsletter coooming ????

+
anonym | 31.08.2024 - 11:20
huhu

+
windom | 31.08.2024 - 13:24
soooo happpy to eat chocolatines

+
jakoby | 31.08.2024 - 17:40
and canele ~.~

+
anonym | 01.09.2024 - 21:55
huhu worksing on the livestream rigtnow - don't wonder :P

+
anonym | 02.09.2024 - 11:00
:))

+
yaourt gentil | 02.09.2024 - 19:54
coucou je cherche la trolollot !!

+
melon | 02.09.2024 - 21:57
koukou

+
le-departement? | 02.09.2024 - 22:33
je crois que pour trollolot les enjeux du dur seront attendues ?!?!?!

+
lot.gouv | 03.09.2024 - 16:18
bonjour, après sollicitations, la trollolot change de département, nous vous attendons nombreuxes à Agen, dans le lot et garonne! Prevoyez vos maillots l'ambiance va etre caliente!

+
lot-et-garonne.gouv | 03.09.2024 - 16:19
Ravie de vous accueillir!

+
lot-et-garonne.gouv | 03.09.2024 - 16:19

+
chicha | 03.09.2024 - 16:37
OMG this is so intriguing

+
Lot.is.garonne | 03.09.2024 - 16:42
Le lot et la Garonne ne font plus qu'un.

+
perre quentin??? | 03.09.2024 - 17:31
toc toc qui est la?

+
6984596 | 03.09.2024 - 17:32
PQ tu es enfin la??

+
hihi ou c moi | 03.09.2024 - 17:32
{bruit de vomi de frigo}

+
anonym | 03.09.2024 - 20:56
yooouuhhouuu

+
S/\|-|/\ | 03.09.2024 - 20:58
yeaaah

+
5/\C|-|/\ | 03.09.2024 - 20:58
ok

+
P4bL0 | 03.09.2024 - 20:59
YOOooooooooooOOOOOOOOOOOOOOOOOOOooooooooooooooOOOOOOOOOOOO

+
P4bL0 | 03.09.2024 - 20:59
désolé :(

+
anonym | 03.09.2024 - 21:01
___,@ / < ,_ / \ _, ? \`/______\`/ ,_(_). |; (e e) ;| \___ \ \/\ 7 /\/ _\8/_ \/\ \'=='/ | /| /| \ \___)--(_______|//|//| \___ () _____/|/_|/_| / () \ `----' / () \ '-.______.-' jgs _ |_||_| _ (@____) || (____@) \______||______/

+
P4bl0 | 03.09.2024 - 21:02
j'aime manger des nems

+
P4bL0 | 03.09.2024 - 21:03
HAHAHHAHAHAHA kikoo !

+
P4bL0 | 03.09.2024 - 21:03
et un cookie

+
P4bL0 | 03.09.2024 - 21:04
___,@ / < ,_ / \ _, ? \`/______\`/ ,_(_). |; (e e) ;| \___ \ \/\ 7 /\/ _\8/_ \/\ \'=='/ | /| /| \ \___)--(_______|//|//| \___ () _____/|/_|/_| / () \ `----' / () \ '-.______.-' jgs _ |_||_| _ (@____) || (____@) \______||______/

+
P4bL0 | 03.09.2024 - 21:05
_ _[_]_ (") `--( : )--' ( : ) jgs ""`-...-'""

+
croutix | 03.09.2024 - 21:30
ça roll dwn direct bloup

+ +
NEWSLETTER | 04.09.2024 - 03:03
Huhuuu new NEWSLETTER is out ! everybody received it ??? xD @_@ if don't leave a message here !!

+
NEWSLETTER | 04.09.2024 - 03:05
and if yess leave message tooo 0.o

+
NOW - LIVE | 04.09.2024 - 14:03
now live from the studio of la cle des ondes: On the quest for the quintina

+
NOW - LIVE | 04.09.2024 - 14:06
with SINUS

+
lobbyscout | 04.09.2024 - 15:42
fiestaaa

+
anonym | 04.09.2024 - 17:31
lobbyscouttt *.* <3

+
klein schitzel | 04.09.2024 - 20:10
kusschen aus berlin

+
depuislacledesondes | 05.09.2024 - 11:32
dopamin-küsschen nach Berlin

+
anonym | 05.09.2024 - 13:47
OMG

+
anonym | 05.09.2024 - 13:47
UIII

+
LIVESTREAM | 05.09.2024 - 23:54
there is now a 24/24 7/7 pl4tform-radio-stream !! ==>>>> click on livestream to listen to it !! it's a mix between a database of songs we like and the archives of the pl4tform radio events and shows *___*

+
skyrock | 06.09.2024 - 09:36
wwwoow u rock

+
anonym | 07.09.2024 - 10:48
YOLOLOTE

+
anonym | 07.09.2024 - 13:14
aiii trop bien le tack sapo dibalo !! love it

+
letitbeeeey | 09.09.2024 - 13:22
listening from lot and Garonne ~~ on the way to a mystery

+
joallier du cringe | 13.09.2024 - 00:27
hheeeeeeeelllo

+
joallier du cringe | 13.09.2024 - 00:27
miss you les pl4tformistes

+
chiicha | 13.09.2024 - 02:08
miss u avec l'ovomaltiiine

+
bruxelles-admin.tv | 13.09.2024 - 10:02
uuuhuuu <3 ovomaltine @.@

+
canciara | 13.09.2024 - 10:35
we love to hang out and listen to the environment which we are

+
royaldeviation | 13.09.2024 - 12:12
ahhh ich auch !!

+
ohm torchon | 14.09.2024 - 18:57
cest nousss depuis cardannn

+
ohm torchon | 14.09.2024 - 18:57
lalala

+
anonym | 14.09.2024 - 19:01
I can't listen to the now live radioooo :(

+
anonym | 14.09.2024 - 22:48
oh nooo :((( that weird you tried to click on "now live" or on "livestream" ?? if not this link works for you? => https://pl4tform.org/stream

+
anonym | 14.09.2024 - 22:48
*if it dosn't works try the link ?!

+
bxlll.be | 14.09.2024 - 22:49
uhhh cardannnn hellooooo

+
anonym | 16.09.2024 - 09:50
olala juergen pappe wir fliegen so weit wie noch nie !! avouuuurite song !!!

+
anonym | 16.09.2024 - 09:51
ffffavourite

+
anonym | 16.09.2024 - 14:27
hello merci c trop chouettte. mettez des cables partout

+
Radio Buratinas | 16.09.2024 - 14:35
we are on the buratinas and we are live

+
frittenhaus | 16.09.2024 - 14:35
gluuuuuuuuck glouglou

+
Radio Buratinas | 16.09.2024 - 14:50
we have some technical bugs soundwise be pacents ;)

+
hugottteeee | 16.09.2024 - 14:57
bon nettoyage de canal !!

+
Radio Buratinas | 16.09.2024 - 15:17
is it working for you ??

+
anonym | 16.09.2024 - 15:19
Ca marche

+
anonym | 16.09.2024 - 15:19
Mais ça coupe très frequemment

+
Radio Buratinas | 16.09.2024 - 15:22
and now ??

+
Auditrice | 16.09.2024 - 15:27
J'ai l'impression que ça ne coupe plus

+
Auditrice | 16.09.2024 - 15:36
Y a l'autre son qui boucle par dessus

+
ed2 | 16.09.2024 - 15:42
hello from the boat

+
anonym | 16.09.2024 - 15:44
heello

+
peer | 16.09.2024 - 15:45
ça s'entend pas super fort les voix

+
frittenhaus | 16.09.2024 - 15:55
ça marche

+
yolol | 16.09.2024 - 15:58
ça marche plus

+
Auditrice | 16.09.2024 - 16:28
On t'entend pas assez

+
anonym | 16.09.2024 - 16:54
1312

+
anonym | 16.09.2024 - 17:37
zum geburtstag viel glück leooooo!!!

+
Radio Buratinas | 16.09.2024 - 17:43
wuhuuuuuuu dankkkkkkeeeee

+
chiffon chez chicha | 17.09.2024 - 00:01
leo, je te souhaite un tres joyeux anniversaire de tout coeur coeur coeur;;;;;;;;;;;;

+
schildou | 17.09.2024 - 01:18
ʕ•̮͡•ʔ joyouuuuuu (≚ᄌ≚)ℒℴѵℯ❤

+
bobintheboat | 17.09.2024 - 01:56
lovelovelovebegleeees<<333333

+
anonym | 19.09.2024 - 08:26
qq.e qui a amener son gillet jaune de son pere ou sa mere et qui a manifeste dans la cour xD tropppp classe pl4tform fm with lobby scout

+
blurp33 | 25.09.2024 - 10:00
cc pl4tfromage miss u so much kisssss from the 93

+
electro-harmonix | 25.09.2024 - 10:48
saaame ! foggy kiss from the north north north

+
bob sinclar | 25.09.2024 - 13:24
Hey Electro-Harmonix! Can i get a free sample pack plz? Big shout out to you!

+
la coloc | 27.09.2024 - 13:03
cc qui a laissé le melon pourri sur la table ?

+
stolenbiker | 27.09.2024 - 17:35
ct pass moiiii !!

+
Bob Geldof | 28.09.2024 - 17:14
viva pl4tform !

+
la coloc | 28.09.2024 - 17:49
heyyy les colocs la machine à laver ne marche plus quelqu'un.e a coincé des chaussettes dans le conduit, serait-ce un acte de sabotage ???!!!

+
KINDER COUNTRY | 29.09.2024 - 19:19
ALORS LA NORVEGE ET LE SPECTACLE JESPERE C TMAGUENIFIKK

+
bise | 02.10.2024 - 10:19
gros bise

+
bisou | 02.10.2024 - 10:20
gros bisou

+
biz | 02.10.2024 - 13:30
gros biz

+
MOOD | 02.10.2024 - 13:37
OMG c'est le mix de eaux vives a 14 heure !!! <3

+
sunnysunshineforsunnysouls | 03.10.2024 - 12:55
huhu october pl4tform newsletter is out ! if you didn't received it subscribe ==> click on news/agenda in the menu ==> subscribe to newsletter <333

+
gloubzzz | 03.10.2024 - 19:00
heyiiii i love pl4tform news omg these gifs are insane

+
toilettes seches | 05.10.2024 - 16:22
heyyyyyy!! got some new cd at home, who wants to come to the partyyyyyyyyyyyy!???

+
fanbase | 09.10.2024 - 08:32
omggg toilettes seches ur party seems so nice... is ur real name... CDJ ????

+
robert-la-crabbe | 09.10.2024 - 09:34
omg si hate d'ecouter le fish news !! meme si ca me soule que ca s'appelle tuojours comme ca meme si on n'est pas que des poissons qui vivent ici. mais bon, entout cas j'ai manipule ma antenne d'algue pour que je puisse capter les ondes humaines (je crois il disent FM) a 14 Heure !!

+
la-ligue-du-plancton | 09.10.2024 - 11:27
oui ça fait des années qu'on demande un changement de blaz pour l radio des fonds marins aussi mis bon weg guess le plancton c'est pas assez important pour fish newz... déçux mais pas des zik

+
KRUSTACEAN FORCE | 09.10.2024 - 11:28
allez signez la pétition !!!https://www.petitionenligne.fr/changeons_le_nom_de_fish_newz

+
robert-la-crabbe | 09.10.2024 - 12:11
ahh voila je savait que je suis pas le seul activist qui reste ici ! mettons ensemble nos forces ! signons la petition ! NOT ALL FISHES !

+
les coraux associés | 09.10.2024 - 15:02
ça c'est crabbement bien dit!!!

+
GROS POISSON DE MORT | 09.10.2024 - 17:34
LONGUE VIE AUX FISH MORT A TOUTES AUTRES CREATURES SANS ECAILLES!!!

+
GROS POISSON DE MORT | 09.10.2024 - 17:34
NI NAGEOIRES

+
GROS POISSON DE MORT | 09.10.2024 - 17:35
ENFIN PAS DES POISSONS QUOIIII

+
GROS POISSON DE MORT | 09.10.2024 - 17:35
!!!!!!

+
robert-la-crabbe | 09.10.2024 - 21:37
ah mais toi !! GROS POISSON DE MORT ! si j'ai un truc a dire ... c'est: VA ECOUTER L'EMISSION "PL4TFORM FM - VOL 45 NO SOUCY" ET VA DIRECT A LA MINUTE 50 ET 40 SECONDES ET PUISSE ECOUTE ! ECOUTE CE QUE VA T'ARRIVER !!! ECOUTE BIEN ! TU VA REGRETTER TES GROS MOTS ICI DEVANT TOUT LES HUMAIN ET AUTRES !

+
GROS POISSON DE MORT | 09.10.2024 - 22:26
RETOURNE GRAILLE TON SURIMI DE MORT ROBERT LA CRABBE

+
zzz | 10.10.2024 - 17:12
Yo design numérique

+
méenchon | 10.10.2024 - 17:42
salu asalu

+
méduzarg | 11.10.2024 - 10:44
quelle violencz !!!!!! mes tentacules s'en sont rétractés !!!!!!!! gros poisson de mort va gober du corail !!!!!

+
yiha | 16.10.2024 - 11:02
T T T TODAYYYYY NEXT T T T LIVE SH SH SH SHOWWWWWW PLFM ON THE SOUND WAVEZ Z Z Z

+
presby | 17.10.2024 - 21:24
interlude avec un mix de 4 bornes

+
presby | 17.10.2024 - 21:25
nest concert C_C

+
presby | 17.10.2024 - 21:29
next concert = C_C

+
lécheur-de-plat | 21.10.2024 - 17:25
punaiz en train d'écouter la selecta de lix et 4bourn c lourd!! tro hate de l'émission de scobiy quesque les semaines sont longues quand on doit attendre les émissions...

+
lécheur-de-plat | 21.10.2024 - 17:28
saluchlurp!! en train d'écouter le mix de lix et quatrebourde super selcta... hyper hate de l'émssion de scobiy, quesque les semaines sont longue quand on doit attendre les éissions ... 🤗

+
delire | 22.10.2024 - 17:36
yoyo ! en train d'ecouter le mix par lix et 4Bornes {0_0} troptrop oufff merci de fou pour cet selecta abusement bien @_@

+
Chichette | 23.10.2024 - 14:29
Yo Creazy cet émission ! Connecté depuis Bruxelles, les histoires d’euroatlantique me font des frissons ! Slimeslime merci les gloubs pour ces sons englobant et rafraîchissant !!! <3

+
nke tn | 27.10.2024 - 15:23
yo la z ca dit quoi?

+
nke tn | 27.10.2024 - 15:24
ya qq?

+
nke tn | 27.10.2024 - 15:24
yo les zins ya qqn?

+
nke tn | 27.10.2024 - 15:24
eh oh!!??

+
nke tn | 27.10.2024 - 15:28
vazy ya jamais personne ici la puree

+
la sportiwa | 27.10.2024 - 15:29
sisi trnq le s on est al

+
la sportiwa | 27.10.2024 - 15:30
fait pas trop de bruit ya le ptit qui dodo

+
nke tn | 27.10.2024 - 15:30
aight

+
nke tn | 27.10.2024 - 15:30
lourd mon couz

+
nke tn | 27.10.2024 - 15:30
sdk cet aprem?

+
cédric damien jo | 27.10.2024 - 15:35
wow dope selection here.. listening the livestream from ibiza, great vibes for my next set...

+
nke tn | 27.10.2024 - 19:06
yo cedric damien jo envoi une tite photo de toi a ibiza stpp

+
nke tn | 27.10.2024 - 19:07
gro manstre

+
nke tn | 28.10.2024 - 12:04
oh les sang ya qqn auj??

+
bob | 28.10.2024 - 15:50
de oufff

+
nke tn | 28.10.2024 - 15:56
oh bob aight cava ou quoi??

+
bob | 28.10.2024 - 16:28
aight carrement ! :)))

+
bob | 28.10.2024 - 16:28
et oit ?

+
nke tn | 28.10.2024 - 17:01
cava cava ca roule

+
nke tn | 28.10.2024 - 17:01
jsuis sur du php la a la cool

+
bob | 28.10.2024 - 18:25
ahh gave biengg

+
iffernet | 28.10.2024 - 21:57
bande de bandits !!!!

+
bob | 28.10.2024 - 22:29
OOMMMGGGG

+
nke tn | 08.11.2024 - 00:48
yo kikoo qui est la?

+
anonym | 08.11.2024 - 01:42
yoyo

+
tati | 09.11.2024 - 11:31
aiiiiight, lacoste ou quoi

+
zone_30 | 09.11.2024 - 12:50
peeerrryyyyy

+
jujulove | 09.11.2024 - 18:23
Coucouuuuu <3 <3 <3

+
zumbaz | 09.11.2024 - 18:30
prff zetes des manstres de diffuser narthex <33

+
Currywurst | 09.11.2024 - 18:48
Big love depuis Bremen en Allemagne <3 on vous écoute depuis le tram @_@ all the love de la terre de fou à la mif au café pomppppp et à bdx on vous aaaaimeee

+
Currywurst | 09.11.2024 - 18:50
Vous me manquez au fond du ballon ~~ loool <<33

+
Currywurst | 09.11.2024 - 18:52
Merciiii scoooobiii pour le stream !!

+
jujulove | 09.11.2024 - 19:00
vous êtes sur mes grosses enceintes à Amsterdaaaam

+
jujulove | 09.11.2024 - 19:01
fomo de ouf mes complices d'épopée fantastik <3 vous me manquezzz

+
anonym | 09.11.2024 - 19:16
la jujuuuud'amouuuur

+
narthokay | 09.11.2024 - 19:17
milliards de bissou cosmiik

+
narthokay | 09.11.2024 - 19:17
ohlalala looooooov maximaaal currrywurst

+
narthokay | 09.11.2024 - 19:19
viele Küsse mit süßem Senf

+
Bottle_of_mana | 09.11.2024 - 19:39
Gros looooveeeee

+
cidre breton | 10.11.2024 - 01:29
c la tooombola qui commmence

+
omgomgomgjpeps | 15.11.2024 - 03:11
Yoooohu da nuu websaidee is reeeddyyy

+
omgomgomgjpeps | 15.11.2024 - 03:12
codewise.... next week it will be filled with creazy content and selfmade maps !

+
ziqq | 15.11.2024 - 03:22
wow mega nice song playing right now: Rinde Eckert - Roomful of Teeth - Cesca's View

+
gloubi | 15.11.2024 - 10:35
les platformien.nes QUEL BOULOT !!!

+
bravo | 15.11.2024 - 10:59
boulga

+
hardcore preszido | 19.11.2024 - 18:41
abolish the livestream free the software

+
hardcore preszido | 19.11.2024 - 18:42
abolish the livestream free the software

+
plein tompete | 19.11.2024 - 21:10
sacha est un poisson dámour

+
anonym | 20.11.2024 - 08:39
omgggggg beautiful live yesterdayzzzzzzz listened to ufrom dijonwith love

+
anonym | 20.11.2024 - 11:21
fracxtiiiiion loooooooooooove

+
anonym | 21.11.2024 - 14:46
c quoi le bazar avec le nouveau site la on compends rien

+
residence secondaire | 21.11.2024 - 16:35
tranquille jtest des trucs

+
anonym | 21.11.2024 - 16:35
C clair c toooooo le bordel

+
anonym | 21.11.2024 - 17:37
notre proppppre eau de vieeee

+
anonym | 21.11.2024 - 17:37
WUAAA

+
anonym | 21.11.2024 - 20:41
damn

+
anonym | 21.11.2024 - 20:41
just cqnt choose ;y nickmame bruuu

+
anonym | 21.11.2024 - 20:44
miam miamnice website !!!

+
anonym | 21.11.2024 - 20:44
RAVISSANT LE GIF ADN JPP JE KIFFE

+
anonym | 21.11.2024 - 20:46
DELECTABLE CARTO LES AMIX !!!!!!!

+
anonym | 21.11.2024 - 20:46
ET SUBLIMES TYPOGRAPHIES !!!!

+
anonym | 21.11.2024 - 20:46
VOUS FAITES DES MERVEILLES

+
anonym | 21.11.2024 - 20:47
purée tu mank fraczouill!!!!

+
anonym | 21.11.2024 - 21:10
waaaaazaa le site pl4tfÔoorm en gros chantier, trop biennn trop hâte de voir sa nouvelle forme hivernale <333

+
anonym | 21.11.2024 - 21:58
GNIHAAA VOUS ME MANQUEZ OSSI TROP HATE DE VOUS REVOIR ET TELLEMENT BRAVO POUR TOUT VOTRE MERVEILLEUX ET NECESSAIRE TRAVAIL !!!!!

+
anonym | 21.11.2024 - 23:17
slt, la mapp c trop bien j'

+
anonym | 21.11.2024 - 23:18
ai hate de voir le suite

+
anonym | 21.11.2024 - 23:18
<3

+
anonym | 21.11.2024 - 23:50
<3333

+
mystérieux crapaud | 22.11.2024 - 15:38
croak groak

+
ammorale grenouille | 22.11.2024 - 15:39
kwig kwigggg

+
CCCCCCCCCCC | 23.11.2024 - 17:01
Pfffiouu hâte de voir cette carte!!

+
gloubi | 23.11.2024 - 17:38
what mais encore un new site hahaha c génial donnez énergie

+
anonym | 25.11.2024 - 11:52
<3

+
alix | 26.11.2024 - 14:30
on s'y sent bien..

+
superggggg | 27.11.2024 - 11:49
whoaaaaa magnifik site les amix

+
superggggg | 27.11.2024 - 11:49
pleinnnn de love sur vous

+
boob | 29.11.2024 - 10:27
<333

+
s,f | 02.12.2024 - 23:35
blablabla

+
nono | 03.12.2024 - 15:43
vous venez au CCC cette année ??

+
leo | 03.12.2024 - 17:29
olala nono ! <3 ouiii on viens a 3 !

+
leo | 03.12.2024 - 17:30
et toi ?

+
bloup | 03.12.2024 - 23:49
rggg j'ai trop envie de venir aussi !!!! c'est quand les dates ???

+
leo | 04.12.2024 - 00:14
vienssss !! du 27 au 30 decembre a hamburg !

+
leo | 04.12.2024 - 00:15
ca va etre dingo

+
leo | 04.12.2024 - 00:15
la thematique c'est les instuction illegal ......

+
Sacha | 05.12.2024 - 10:31
Hoooooooowwoooooaaaa

+
Sacha | 05.12.2024 - 10:31
lenouveausite!!!

+
Sacha | 05.12.2024 - 10:32
tiens-espace-ne-marche-pas-pour-moi-ici

+
leo | 05.12.2024 - 11:09
ah ouii merci j'ai trouve !

+
sentiment océanique | 06.12.2024 - 09:25
yo il est ou lafter?

+
sentiment océanique | 06.12.2024 - 09:25
en vrai 6mer c t morrtel hier

+
bibi | 06.12.2024 - 10:02
super émission sur le jardin éphémère waww <33

+
scoubi_dooo | 06.12.2024 - 15:16
<3 bibi

+
darklordoftheseaaa | 16.12.2024 - 11:35
bery nice show last week my dear friendz... can't wait to éouter ravissante émission de Torchong

+
darklordoftheseaaa | 16.12.2024 - 11:36
ps : gloubbb

+
anonym | 18.12.2024 - 14:30
omg j'adore que vous parler de clodo ici :O <3 merci scobiii

+
scobii | 21.12.2024 - 23:07
coooool :)))))) oué tavu

+
soup addict | 26.12.2024 - 12:56
soupeur votre recette de noel les zouzou, ça donne l'eau a la bouche avec ce froid 🤤

+
Mama Bob | 08.01.2025 - 13:26
test message: je vous suivra à 14 h

+
couration-permanence | 08.01.2025 - 13:44
yo les hackerz zetes bien en place a la clé tout est ok?

+
boooob | 08.01.2025 - 13:58
uiiiii on est pretttt !! et vouss ? <3333

+
av-net | 08.01.2025 - 13:59
yeeaahhh

+
couration - permanence | 08.01.2025 - 14:04
éh ouezz on est la hein 🖥️

+
boooob | 08.01.2025 - 14:06
yeeeehhhh

+
résidensedense | 08.01.2025 - 14:14
ah justement je cherche pleins de films introuvables c quoi le mail de sacha??

+
boooob | 08.01.2025 - 14:16
hehehehehehe je te l'envoie par des chemins des hackerzzzz

+
cider-addict | 08.01.2025 - 14:18
éh c'est quoi le site des 4voleurs des 4cidres?

+
boooob | 08.01.2025 - 14:20
yooo le lien du collective suive mais la deja le lien du video de la conference: https://media.ccc.de/v/38c3-bioterrorism-will-save-your-life-with-the-4-thieves-vinegar-collective#t=52

+
av-net | 08.01.2025 - 14:21
https://fourthievesvinegar.org/

+
av-net | 08.01.2025 - 14:24
pour la petite histoire : le vinaigre des quatres voleurs est un vinaigre que tu peux faire toi-meme avec une quinzaine de plantes et tu l'utilises pour booster ton systeme immunitaire

+
Sacha | 08.01.2025 - 14:30
https://darknetdiaries.com/

+
bob | 08.01.2025 - 14:56
si jamais ici ca va possiblement couper a 15:00 !! venez ecouter sur https://lacledesondes.fr/ !!!

+
av-net | 08.01.2025 - 14:59
merciiii pour le feedback CCC, je vois trop ce que vous avez vu/vécu

+
bob | 08.01.2025 - 14:59
<333

+
bob | 08.01.2025 - 14:59
trop bien te savoir ton oreille a l'autre bout des ondes !!

+
bob | 08.01.2025 - 15:00
viens sur la site de la cle des ondes pour ecouter !!

+
bob | 08.01.2025 - 15:00
https://lacledesondes.fr/

+
bob | 08.01.2025 - 15:14
vous allezz trouver ttoooout les liens ce soir ici dans l'index !!

+
wouya | 09.01.2025 - 10:17
wahouuuu merci géniale émission sur le CCC !!!!!! incroyable !

+
wouya | 09.01.2025 - 10:17
<3333

+
omg | 13.01.2025 - 10:46
wahou hyper intéressant et nécessaire "let's talk about the not talking about gaza

+
omg | 13.01.2025 - 10:46
merci de ce partage et de ces réflexions !!!!!!!!

+
omg | 13.01.2025 - 10:46
je vais de ce pas le partager à plein de monde!

+
kapuche | 15.01.2025 - 14:07
magnifique texte d'élodie petit c'est extrait de quel recueil?

+
booob | 22.01.2025 - 15:01
arrg je viens de reparer le chat !! <3 on etait la su les dernieres minutes depuis bruxelllles avec wallace <3333

+
trognon de bleu | 24.01.2025 - 10:35
fractiiiioooon quellle rrrrrrageance merveilllleuuuuse

+
trognon de bleu | 24.01.2025 - 10:35
vivement les prochaines je tréppiiigne de grrrrrrgggrrrrrr

+
PL | 24.01.2025 - 19:27
yo

+
Pl4tform | 24.01.2025 - 21:19
2P192QKFxE7uv3sh5h316hGdFXLEpjJyRDywhCdnpump

+
bob | 29.01.2025 - 14:11
O M G je vous ecouuuute depuis BXL <3<3<3<3

+
scobiii | 29.01.2025 - 14:16
boooooblove <33333333333333

+
Têtard | 29.01.2025 - 14:17
Et ça vous écoute aussi depuis un train vers Wolfsburg

+
scobiii | 29.01.2025 - 14:19
tetarrrrrd gros bissssou

+
Têtard | 29.01.2025 - 14:21
XoxoXooXoXoXooxoxo

+
FIVE MILES | 29.01.2025 - 14:24
en direk du 93 big lov<33333

+
Mari | 29.01.2025 - 14:28
Bravo Jul

+
scobiii | 29.01.2025 - 14:29
omgaaagad FIVE MILES !!! <3333

+
bob | 29.01.2025 - 14:56
<333333333

+
bob | 29.01.2025 - 15:02
yooo

+
nouckey | 29.01.2025 - 16:31
c'est quoi ici ?

+
nouckey | 29.01.2025 - 16:33
ça a l'air sympa

+
c moi | 31.01.2025 - 23:18
https://pl4tform.org/hotglue/content/start/shared/dance13.gif

diff --git a/includes/chatLoad.php b/includes/chatLoad.php new file mode 100644 index 0000000..142598d --- /dev/null +++ b/includes/chatLoad.php @@ -0,0 +1,79 @@ +format("m-d-Y H:i:s.u"); +$micro_date = microtime(); +$date_array = explode(" ",$micro_date); +$date = date("Y-m-d H:i:s",$date_array[1]); +$timestamp = "$date:" . $date_array[0]; +file_put_contents('lastTimecode.txt', $timestamp); +// echo "$timestamp"; + + +date_default_timezone_set('Europe/Amsterdam'); +// $date = date('m/d/Y h:i:s a', time()); +$date = date('d.m.Y - H:i', time()); + +// PUT A W IN PLACE OF THE A TO OVERRIDE FILE INSTEAD OF ADDING AT THE END !! +$chatFile = fopen("chatContent.php", "a") or die("Unable to open file!"); + +$message = $_POST['message']; +$chatName = $_POST['chatName']; + +$colors = array("antiquewhite","aqua","aquamarine","azure","beige","bisque","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","crimson","cyan","darkcyan","darkgoldenrod","darkgreen","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkturquoise","darkviolet","deeppink","deepskyblue","dodgerblue","firebrick","forestgreen","fuchsia","gainsboro","gold","goldenrod","green","hotpink","indianred","khaki","lawngreen","lightcoral","lightcyan"); + +$rand_colorIndex = array_rand($colors, 1); + +$rand_color = $colors[$rand_colorIndex]; + + + +$knownNames = array("leo"); +$personalColor = array("leo" => "green"); + +$knownNames = json_decode(file_get_contents('knownNames.txt'), true); + +$personalColor = json_decode(file_get_contents('personalColors.txt'), true); + + + +if ($chatName == ""){ + $chatName = "anonym"; + $name_color = "grey"; + +} + +else { + + if (in_array($chatName, $knownNames)) { + $name_color = $personalColor[$chatName]; + } + + else { + $name_color = $rand_color; + array_push($knownNames, $chatName); + $personalColor += [$chatName => $name_color]; + } + +} + + + +$insert = "
$chatName | $date
". $message ."

\n"; +fwrite($chatFile, $insert); +fclose($chatFile); + + + + + +file_put_contents('knownNames.txt', json_encode($knownNames)); + +file_put_contents('personalColors.txt', json_encode($personalColor)); + + + + + + +?> \ No newline at end of file diff --git a/includes/content.txt b/includes/content.txt new file mode 100644 index 0000000..4293ee7 --- /dev/null +++ b/includes/content.txt @@ -0,0 +1,2 @@ +John Doe +Jane Doe diff --git a/includes/file.txt b/includes/file.txt new file mode 100644 index 0000000..7d51fc3 --- /dev/null +++ b/includes/file.txt @@ -0,0 +1,6 @@ +Array +( + [0] => leo + [1] => bob + [2] => scobiya +) diff --git a/includes/item-title-split.php b/includes/item-title-split.php new file mode 100644 index 0000000..ae7c9c0 --- /dev/null +++ b/includes/item-title-split.php @@ -0,0 +1,37 @@ + + + + + +

+ Index
+ this a index of all pl4tform archives.
+ You can browse trought it by scrolling, searching, filtering.

+ If you are looking for a more visual way to explore the pl4tform-archive click here ! +

+
select a file or filter to start browsing the archive ==>
+ "; +} + +else { + + + +include 'nc-one-file-request.php'; + + +$file_info = getFileInfo($file_id); + + + + +// Überprüfen, ob die Datei existiert und Daten abgerufen wurden +if ($file_info !== null) { + // Zuweisung der Werte aus dem Array in eigene Variablen + $file_id = $file_info['file_id']; + $file_name = $file_info['file_name']; + $file_name = htmlentities($file_name); + $file_size = $file_info['file_size']; + $mimetype_name = $file_info['mimetype_name']; + $file_tags = $file_info['file_tags']; + $file_year = $file_info['file_year']; + $file_month = $file_info['file_month']; + $file_day = $file_info['file_day']; + $file_hour = $file_info['file_hour']; + $file_minute = $file_info['file_minute']; + $file_title = $file_info['file_title']; + $file_title = htmlentities($file_title); + + +} + + +$file_path_root = '/var/www/nextcloud/data/radio_admin/files/archive/'.$file_name; +$file_link = 'https://pl4tform.org/ncdata/'.$file_name; +$file_content = file_get_contents($file_path_root); +$file_content = str_replace(".attachments.", "/ncdata/.attachments.", $file_content); +// echo $Parsedown->text($file_content); + + + +if (str_contains($mimetype_name, 'image')) { + + echo ""; + +} + + +if (str_contains($mimetype_name, 'audio')) { + + + // $item = $SoundPlayItem; + include('soundfile_titleAnalyse.php'); + + if(str_contains($file_title, "---")) { + $file_title = str_replace("---", "
", $file_title); + }; + + + $soundInfosFormat = "

$file_title

$file_day.$file_month.$file_year - $file_hour:$file_minute H
"; + echo '
' . $soundInfosFormat . '
'; + + + + $soundPlayLink = 'https://pl4tform.org/ncdata/'.$file_name; + // $soundPlayLink = htmlentities($soundPlayLink); + echo ' '; + // echo ' '; =====>>> try to load audio by ID but java-maridb-request and php quest ... ! + echo ''; + + + echo '
'; + + // $discriptionItemPath = $filesPath.$itemBeforeAt.'.md'; + // include ("$discriptionItemPath"); + + #### discription file: + + // Datenbankverbindungsdaten + $servername = "localhost"; // oder der Hostname deines DB-Servers + $username = "***"; // Dein neuer MariaDB Benutzername + $password = "***"; // Dein Passwort für den neuen Benutzer + $dbname = "nextcloud"; // Der Name deiner Nextcloud-Datenbank + + // Verbindung zur MySQL-Datenbank aufbauen + $conn = new mysqli($servername, $username, $password, $dbname); + + // Verbindung prüfen + if ($conn->connect_error) { + die("Verbindung fehlgeschlagen: " . $conn->connect_error); + } + + // 1. Abfrage: Alle Dateien, deren Pfad '%files/archive/%' enthält + $sql1_desc = "SELECT fc.fileid, fc.name AS file_name, fc.path AS file_path, fc.size, fc.mimetype + FROM oc_filecache AS fc + WHERE (fc.path LIKE '%files/archive/%" . $file_year . $file_month . $file_day . "%" . $file_hour . $file_minute . "%.md%' + OR fc.path LIKE '%files/archive/%" . $file_year . $file_month . $file_day . "%" . $file_hour . $file_minute . "%.txt%') + ORDER BY fc.name DESC"; + + $result1_desc = $conn->query($sql1_desc); + $row_desc = $result1_desc->fetch_assoc(); + $file_id_desc = $row_desc['fileid']; + $file_name_desc = $row_desc['file_name']; + + // echo $file_name_desc; + + + if (str_contains($file_name_desc,".md")) { + $file_path_root_desc = '/var/www/nextcloud/data/radio_admin/files/archive/'.$file_name_desc; + $file_content_desc = file_get_contents($file_path_root_desc); + $file_content_desc = str_replace(".attachments.", "/ncdata/.attachments.", $file_content_desc); + echo $Parsedown->text($file_content_desc); + } + elseif (str_contains($file_name_desc,".txt")) { + $file_path_root_desc = '/var/www/nextcloud/data/radio_admin/files/archive/'.$file_name_desc; + $file_content_desc = file_get_contents($file_path_root_desc); + echo $file_content_desc; + } + + echo '
'; + + + +} + + +if (str_contains($mimetype_name, 'markdown')) { + + $file_path_root = '/var/www/nextcloud/data/radio_admin/files/archive/'.$file_name; + $file_content = file_get_contents($file_path_root); + $file_content = str_replace(".attachments.", "/ncdata/.attachments.", $file_content); + echo $Parsedown->text($file_content); + +} + +if (str_contains($mimetype_name, 'text/html') or str_contains($mimetype_name, 'text/plain')) { + + $file_path_root = '/var/www/nextcloud/data/radio_admin/files/archive/'.$file_name; + $file_content = file_get_contents($file_path_root); + echo $file_content; + +} + + +if (str_contains($mimetype_name, 'application/pdf')) { + + echo "

$file_title

====>>> Open in full-screen

"; + echo " "; + +} + + + + + + + +} + +?> + + + + diff --git a/includes/nc-data-request.php b/includes/nc-data-request.php new file mode 100644 index 0000000..5ea2cf3 --- /dev/null +++ b/includes/nc-data-request.php @@ -0,0 +1,68 @@ +connect_error) { + die("Verbindung fehlgeschlagen: " . $conn->connect_error); +} + +// 1. Abfrage: Alle Dateien, deren Pfad '%files/archive/%' enthält +$sql1 = "SELECT fc.fileid, fc.name AS file_name, fc.path AS file_path, fc.size, fc.mimetype + FROM oc_filecache AS fc + WHERE fc.path LIKE '%files/archive/%' + ORDER BY fc.name DESC"; + +$result1 = $conn->query($sql1); + +// 2. Abfrage: Alle Mimetypes und ihre IDs +$sql2 = "SELECT id, mimetype FROM oc_mimetypes"; +$result2 = $conn->query($sql2); + +// 3. Abfrage: Alle Tags im System +$sql3 = "SELECT id, name FROM oc_systemtag"; +$result3 = $conn->query($sql3); + +// 4. Abfrage: Verknüpfung zwischen Files und Tags (mit 'files' statt 'file') +$sql4 = "SELECT objectid, systemtagid + FROM oc_systemtag_object_mapping + WHERE objecttype = 'files'"; + +$result4 = $conn->query($sql4); + +// Alle Mimetypes in einem Array speichern +$mimetypes = []; +while ($row = $result2->fetch_assoc()) { + $mimetypes[$row['id']] = $row['mimetype']; +} + +// Alle Tags in einem Array speichern +$tags = []; +while ($row = $result3->fetch_assoc()) { + $tags[$row['id']] = $row['name']; +} + +// Tags mit Dateiinformationen verbinden +$fileTags = []; +while ($row = $result4->fetch_assoc()) { + $fileTags[$row['objectid']][] = $tags[$row['systemtagid']]; +} + + +// Füge den Tag "archive" zu jedem Eintrag in fileTags hinzu +// foreach ($fileTags as $fileId => $existingTags) { +// // Prüfen, ob der Tag "archive" bereits vorhanden ist +// if (!in_array('archive', $existingTags)) { +// // Füge den Tag "archive" hinzu (nur im Array, nicht in der DB) +// $fileTags[$fileId][] = 'archive'; +// } +// } + + diff --git a/includes/nc-one-file-request.php b/includes/nc-one-file-request.php new file mode 100644 index 0000000..49f48af --- /dev/null +++ b/includes/nc-one-file-request.php @@ -0,0 +1,140 @@ +connect_error) { + die("Verbindung fehlgeschlagen: " . $conn->connect_error); +} + + + +// Funktion zum Abrufen der Daten für eine einzelne Datei +function getFileInfo($file_id) { + global $conn; + + // 2. Abfrage: Alle Mimetypes und ihre IDs + $sql2 = "SELECT id, mimetype FROM oc_mimetypes"; + $result2 = $conn->query($sql2); + + // Alle Mimetypes in einem Array speichern + $mimetypes = []; + while ($row = $result2->fetch_assoc()) { + $mimetypes[$row['id']] = $row['mimetype']; + } + + // 3. Abfrage: Alle Tags im System + $sql3 = "SELECT id, name FROM oc_systemtag"; + $result3 = $conn->query($sql3); + + // Alle Tags in einem Array speichern + $tags = []; + while ($row = $result3->fetch_assoc()) { + $tags[$row['id']] = $row['name']; + } + + // 4. Abfrage: Verknüpfung zwischen Files und Tags (mit 'files' statt 'file') + $sql4 = "SELECT objectid, systemtagid + FROM oc_systemtag_object_mapping + WHERE objecttype = 'files'"; + $result4 = $conn->query($sql4); + + // Tags mit Dateiinformationen verbinden + $fileTags = []; + while ($row = $result4->fetch_assoc()) { + $fileTags[$row['objectid']][] = $tags[$row['systemtagid']]; + } + + // Füge den Tag "archive" zu jedem Eintrag in fileTags hinzu +// foreach ($fileTags as $fileId => $existingTags) { +// // Prüfen, ob der Tag "archive" bereits vorhanden ist +// if (!in_array('archive', $existingTags)) { +// // Füge den Tag "archive" hinzu (nur im Array, nicht in der DB) +// $fileTags[$fileId][] = 'archive'; +// } +// } + + + // Abfrage nach der Datei mit der gegebenen file_id + $sql = "SELECT fc.fileid, fc.name AS file_name, fc.path AS file_path, fc.size, fc.mimetype + FROM oc_filecache AS fc + WHERE fc.fileid = $file_id"; + + $result = $conn->query($sql); + + // Überprüfen, ob die Datei existiert + if ($result->num_rows > 0) { + $row = $result->fetch_assoc(); + + // Extrahiere die Dateidaten + $file_name = $row['file_name']; + $file_size = $row['size']; + $mimetype_id = $row['mimetype']; + $mimetype_name = isset($mimetypes[$mimetype_id]) ? $mimetypes[$mimetype_id] : 'Unknown'; + $file_tags = isset($fileTags[$file_id]) ? implode(', ', $fileTags[$file_id]) : 'No Tags'; + + // Prüfen, ob der Dateiname mit einem Datum im gewünschten Format beginnt (YYMMDD-HHMM oder YYMMDD_HHMM) + if (preg_match('/^(\d{2})(\d{2})(\d{2})[-_](\d{4})/', $file_name, $matches)) { + // Extrahiere Jahr, Monat, Tag, Stunde und Minute + $file_year = $matches[1]; // Jahr (z.B. "21" wird zu "2021") + $file_month = $matches[2]; // Monat + $file_day = $matches[3]; // Tag + $file_hour = substr($matches[4], 0, 2); // Stunde (erste zwei Zeichen) + $file_minute = substr($matches[4], 2, 2); // Minute (letzte zwei Zeichen) + + // Entferne Datum und Uhrzeit aus dem Dateinamen, also den Anfang + $file_title = substr($file_name, strlen($matches[0])); // Rest des Dateinamens nach Datum/Uhrzeit + + // Finde die Position des letzten Punktes im Dateinamen + $last_dot_position = strrpos($file_title, '.'); + + // Überprüfe, ob ein Punkt im Dateinamen existiert + if ($last_dot_position !== false) { + // Extrahiere den Dateinamen ohne die Erweiterung (alles vor dem letzten Punkt) + $file_title = substr($file_title, 0, $last_dot_position); + } + + // Entferne alles nach dem '@' (falls vorhanden) + $file_title = strtok($file_title, '@'); + + // Entferne einen führenden Unterstrich (falls vorhanden) + $file_title = ltrim($file_title, '_'); + } + + + // Rückgabe der Datei-Daten als Array + return [ + 'file_id' => $file_id, + 'file_name' => $file_name, + 'file_size' => $file_size, + 'mimetype_name' => $mimetype_name, + 'file_tags' => $file_tags, + 'file_year' => $file_year, + 'file_month' => $file_month, + 'file_day' => $file_day, + 'file_hour' => $file_hour, + 'file_minute' => $file_minute, + 'file_title' => $file_title + ]; + } else { + // Falls keine Datei gefunden wurde, null zurückgeben + return null; + } + + +} + + + + +?> diff --git a/includes/nowLive.js b/includes/nowLive.js new file mode 100644 index 0000000..f621a82 --- /dev/null +++ b/includes/nowLive.js @@ -0,0 +1,49 @@ + + +// // Funktion, die die Div alle 5 Sekunden aktualisiert +// function nowLive(){ +// $("#actualPlaying").load("includes/nowLive.php"); +// console.log('Nowlive updated'); +// } + +// // Intervall starten +// function startLiveUpdate() { +// liveInterval = setInterval(nowLive, 5000); // Intervall alle 5 Sekunden +// console.log('Live updates started'); +// } + +// // Intervall stoppen +// function stopLiveUpdate() { +// clearInterval(liveInterval); // Stoppt das Intervall +// console.log('Live updates stopped'); +// } + + + + + +let isUpdating = false; + +function nowLive() { + if (isUpdating = false) { + console.log('doesnt update beaucause isUpdating = '+isUpdating) + return;} // Verhindert gleichzeitige Updates + isUpdating = true; + $("#actualPlaying").load("includes/nowLive.php", function() { + isUpdating = false; // Update abgeschlossen + }); + console.log('Nowlive updated'); +} + +function startLiveUpdate() { + isUpdating = true; + nowLive(); + liveInterval = setInterval(nowLive, 5000); + console.log('Live updates started'); +} + +function stopLiveUpdate() { + isUpdating = false; + clearInterval(liveInterval); + console.log('Live updates stopped'); +} \ No newline at end of file diff --git a/includes/nowLive.php b/includes/nowLive.php new file mode 100644 index 0000000..3f64fd3 --- /dev/null +++ b/includes/nowLive.php @@ -0,0 +1,17 @@ +Now live: $title"; + +echo "$nowLive"; +?> \ No newline at end of file diff --git a/includes/personalColors.txt b/includes/personalColors.txt new file mode 100644 index 0000000..ca0b4de --- /dev/null +++ b/includes/personalColors.txt @@ -0,0 +1 @@ +{"leo":"green","leo2":"firebrick","leo22":"beige","leo24":"gainsboro","leo245":"antiquewhite","uhu":"antiquewhite","gzu":"goldenrod","yaourt gentil":"chartreuse","dale":"darkcyan","laura":"burlywood","james":"indianred","windom":"crimson","jakoby":"darkgreen","melon":"blueviolet","le-departement?":"lightcyan","lot.gouv":"darkviolet","lot-et-garonne.gouv":"darkgreen","chicha":"green","Lot.is.garonne":"antiquewhite","perre quentin???":"darkturquoise","6984596":"deepskyblue","hihi ou c moi":"blueviolet","S\/\\|-|\/\\":"darkseagreen","5\/\\C|-|\/\\":"aqua","P4bL0":"forestgreen","P4bl0":"lightcoral","croutix":"fuchsia","NEWSLETTER":"aquamarine","NOW - LIVE":"hotpink","lobbyscout":"darksalmon","klein schitzel":"bisque","depuislacledesondes":"darkorange","LIVESTREAM":"fuchsia","skyrock":"cyan","letitbeeeey":"cyan","joallier du cringe":"dodgerblue","chiicha":"deepskyblue","bruxelles-admin.tv":"burlywood","canciara":"cornflowerblue","royaldeviation":"chartreuse","ohm torchon":"darkorchid","bxlll.be":"aqua","Radio Buratinas":"darkred","frittenhaus":"aqua","hugottteeee":"bisque","Auditrice":"aquamarine","ed2":"khaki","peer":"gainsboro","yolol":"brown","chiffon chez chicha":"fuchsia","schildou":"darkgoldenrod","bobintheboat":"darkorange","blurp33":"darkkhaki","electro-harmonix":"bisque","bob sinclar":"antiquewhite","la coloc":"darkkhaki","stolenbiker":"gold","Bob Geldof":"blue","KINDER COUNTRY":"gold","bise":"darkviolet","bisou":"darkorange","biz":"antiquewhite","MOOD":"goldenrod","sunnysunshineforsunnysouls":"darkolivegreen","gloubzzz":"green","toilettes seches":"deepskyblue","fanbase":"chocolate","robert-la-crabbe":"lightcoral","la-ligue-du-plancton":"darkred","KRUSTACEAN FORCE ":"darksalmon","les coraux associ\u00e9s":"darkcyan","GROS POISSON DE MORT":"darkolivegreen","zzz":"deeppink","m\u00e9enchon":"dodgerblue","m\u00e9duzarg":"coral","yiha":"darkseagreen","presby":"gainsboro","l\u00e9cheur-de-plat":"lawngreen","delire":"gold","Chichette ":"aquamarine","nke tn":"cadetblue","la sportiwa":"lightcyan","c\u00e9dric damien jo":"coral","iffernet":"brown","nke tn ":"burlywood","tati":"brown","zone_30":"cyan","jujulove":"brown","zumbaz":"deeppink","Currywurst ":"chocolate","narthokay":"coral","Bottle_of_mana":"darkgreen","cidre breton":"brown","omgomgomgjpeps":"darkgoldenrod","ziqq":"darkgoldenrod","gloubi":"forestgreen","bravo":"dodgerblue","hardcore preszido":"deepskyblue","plein tompete":"darkorange","residence secondaire":"antiquewhite","myst\u00e9rieux crapaud":"cadetblue","ammorale grenouille":"bisque","CCCCCCCCCCC":"cyan","alix":"chartreuse","superggggg":"beige","boob":"gainsboro","s,f":"darkturquoise","nono":"firebrick","bloup":"bisque","Sacha":"dodgerblue","sentiment oc\u00e9anique":"coral","bibi":"dodgerblue","scoubi_dooo":"cornflowerblue","darklordoftheseaaa":"darkolivegreen","scobii":"hotpink","soup addict":"lawngreen","Mama Bob":"chartreuse","couration-permanence":"darkgreen","boooob":"khaki","av-net":"firebrick","couration - permanence ":"bisque","r\u00e9sidensedense":"darkorchid","cider-addict":"aquamarine","wouya":"cornflowerblue","omg":"indianred","kapuche":"lightcoral","booob":"hotpink","trognon de bleu":"forestgreen","PL":"darkgoldenrod","Pl4tform":"lawngreen","scobiii":"darksalmon","T\u00eatard":"fuchsia","FIVE MILES":"forestgreen","Mari":"darkolivegreen","nouckey":"darkmagenta","c moi":"deeppink"} \ No newline at end of file diff --git a/includes/soundItemTitleAnalyse.php b/includes/soundItemTitleAnalyse.php new file mode 100644 index 0000000..ac32dbb --- /dev/null +++ b/includes/soundItemTitleAnalyse.php @@ -0,0 +1,14 @@ + + diff --git a/includes/soundplay.js b/includes/soundplay.js new file mode 100644 index 0000000..5226d9d --- /dev/null +++ b/includes/soundplay.js @@ -0,0 +1,114 @@ +function audioPlay(data, title, itemIndex) { + + + + // alert('sorry, working on the player for some hours'); + + // // mysql Modul importieren + // const mysql = require('mysql'); + + // // Datenbankverbindungsdaten für MariaDB + // const connection = mysql.createConnection({ + // host: 'localhost', // oder der Hostname deines DB-Servers + // user: '***', // Dein MariaDB-Benutzername + // password: '***', // Dein Passwort für den neuen Benutzer + // database: 'nextcloud' // Der Name deiner Nextcloud-Datenbank + // }); + + // // Verbindung zur Datenbank herstellen + // connection.connect((err) => { + // if (err) { + // console.error('Verbindung zur Datenbank fehlgeschlagen: ' + err.stack); + // return; + // } + // console.log('Mit der Datenbank verbunden als id ' + connection.threadId); + // }); + + // // Abfrage nach der Datei mit der gegebenen file_id + // const file_id = 123; // Beispiel file_id (kann dynamisch gesetzt werden) + + // const query = ` + // SELECT fc.fileid, fc.name AS file_name, fc.path AS file_path, fc.size, fc.mimetype + // FROM oc_filecache AS fc + // WHERE fc.fileid = ? + // `; + + // connection.query(query, [file_id], (err, results) => { + // if (err) { + // console.error('Fehler bei der Abfrage: ' + err.stack); + // return; + // } + + // // Ergebnisse anzeigen + // console.log('Abfrageergebnisse:', results); + // }); + + // // Verbindung zur Datenbank schließen, wenn fertig + // connection.end(); + + + + + + + + + + + + + + + const soundPlayBtns = document.querySelectorAll('.soundPlayBtn'); + for (const soundPlayBtn of soundPlayBtns) { + soundPlayBtn.classList.remove('hidden'); + } + + if (title) { + document.getElementById('actualPlaying').innerHTML = ''; + document.getElementById('footer').style.bottom = '0px !important'; + } + + + + + + var source = document.getElementById('audioSource'); + + // try to dele cache du audioplayer buy setting the src = 0 and loading it + source.src = ""; + audio.load(); + + + source.src = data; + audio.load(); + audio.play(); + + + + + + if (title) { + document.getElementById('actualPlaying').innerHTML = title; + console.log('replace audio playing title'); + } + + if (data === "https://pl4tform.org/stream") { + console.log('click on livestream'); + startLiveUpdate(); + nowLive(); + } else { + console.log('not livestream played') + stopLiveUpdate(); + } + + + // $("#" + title).removeClass("visible"); + $("#playBtn"+itemIndex).addClass("hidden"); + + + + + +}; + diff --git a/includes/tagDiscription.php b/includes/tagDiscription.php new file mode 100644 index 0000000..7641195 --- /dev/null +++ b/includes/tagDiscription.php @@ -0,0 +1,65 @@ +connect_error) { + die("Verbindung fehlgeschlagen: " . $conn->connect_error); +} + +// 1. Abfrage: Alle Dateien, deren Pfad '%files/archive/%' enthält +$sql1 = "SELECT id FROM oc_systemtag where name like '$tag'"; + +$result1 = $conn->query($sql1); + +$row = $result1->fetch_assoc(); +$tag_id = $row["id"]; + +// echo "$tag hat die id:".$tag_id; + +$sql2 = "SELECT objectid FROM oc_systemtag_object_mapping WHERE systemtagid IN ($tag_id, 32) GROUP BY objectid HAVING COUNT(DISTINCT systemtagid) = 2"; + +$result2 = $conn->query($sql2); +$row2 = $result2->fetch_assoc(); +// print_r($row2); +$tagDiscriptionFile_id = $row2["objectid"]; + +// echo "
und die dazugehoerige datei ist: $tagDiscriptionFile_id"; + + +$sql3 = "select name from oc_filecache where fileid like '$tagDiscriptionFile_id'"; +$result3 = $conn->query($sql3); +$row3 = $result3->fetch_assoc(); +// print_r($row2); +$tagDiscriptionFile_name = $row3["name"]; + + + + + +if (isset($tagDiscriptionFile_name)) { + // echo $tagDiscriptionFile_name; + + $file_path_root_desc = '/var/www/nextcloud/data/radio_admin/files/archive/'.$tagDiscriptionFile_name; + $file_content_desc = file_get_contents($file_path_root_desc); + $file_content_desc = str_replace(".attachments.", "/ncdata/.attachments.", $file_content_desc); + // echo $file_content_desc; + echo $Parsedown->text($file_content_desc); + +} \ No newline at end of file diff --git a/index.php b/index.php new file mode 100644 index 0000000..aec5f6c --- /dev/null +++ b/index.php @@ -0,0 +1,1004 @@ + + +isFile()) { + $filename = $file->getFilename(); + // array_push($tutos, $filename); + } + }; +?> + + + + + + + + + + + PL4TFORM + + + + + + + + + + + + + + + + + + + + + +
WE ARE ACTUALLY WORKING ON THE MOBILE VERSION !! VISIT PL4TFORM.ORG ON A PC/LAPTOP ! <3

+NOUS TRAVAILLONS ACTUELLEMENT SUR LA VERSION MOBILE ! VISITE PL4TFORM.ORG SUR UN ORDINATEUR ! <3 +
+ +
+ We are working on a new website !
+ There might be some error and non really working stuff but be patient ! Soon ut will be creazy cool ! + ղεჯէ Lἶνε ʂհօω: Wednesday 𝟐𝟎/𝟏𝟏/𝟐𝟎𝟐𝟒 - 𝟏𝟒𝓱 _ Br4vebête

+ Click here to listen to the livestream !

+ And click here to access a very simple table of all archives.

+ Very soon there will be creazycool new stuff righttt here @_@ <3 +
+ + +
+ + + + + + + + + + + +
+ + + + + + + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + + + + + + + + + + + + + +
+ + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ +
+ +
+ + +
+ + + +
+ + + + + + + + + + + + + + + + +
+
+
+ + +
+ + + +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ + + + +
+
+
+
+ + + + + + + + + + + + + + + + + + + diff --git a/load.php b/load.php new file mode 100644 index 0000000..ea12daf --- /dev/null +++ b/load.php @@ -0,0 +1,267 @@ + + + + + + + + + + + +num_rows > 0) { + echo "
"; + while ($row = $result1->fetch_assoc()) { + $file_id = $row['fileid']; + $file_name = $row['file_name']; + $file_size = $row['size']; + $mimetype_id = $row['mimetype']; + $mimetype_name = isset($mimetypes[$mimetype_id]) ? $mimetypes[$mimetype_id] : 'Unknown'; + + // Hole die Tags für diese Datei + $file_tags = isset($fileTags[$file_id]) ? implode(' ', $fileTags[$file_id]) : 'No Tags'; + + // Prüfen, ob der Dateiname mit einem Datum im gewünschten Format beginnt (YYMMDD-HHMM oder YYMMDD_HHMM) + if (preg_match('/^(\d{2})(\d{2})(\d{2})[-_](\d{4})/', $file_name, $matches)) { + // Extrahiere Jahr, Monat, Tag, Stunde und Minute + $file_year = $matches[1]; // Jahr (z.B. "21" wird zu "2021") + $file_month = $matches[2]; // Monat + $file_day = $matches[3]; // Tag + $file_hour = substr($matches[4], 0, 2); // Stunde (erste zwei Zeichen) + $file_minute = substr($matches[4], 2, 2); // Minute (letzte zwei Zeichen) + + // Entferne Datum und Uhrzeit aus dem Dateinamen, also den Anfang + $file_title = substr($file_name, strlen($matches[0])); // Rest des Dateinamens nach Datum/Uhrzeit + + // Überprüfen, ob eine Dateiendung existiert + // if (pathinfo($file_title, PATHINFO_EXTENSION)) { + // // Entferne die Dateiendung, wenn sie existiert + // $file_title = pathinfo($file_title, PATHINFO_FILENAME); + // } + + // Finde die Position des letzten Punktes im Dateinamen + $last_dot_position = strrpos($file_title, '.'); + + // Überprüfe, ob ein Punkt im Dateinamen existiert + if ($last_dot_position !== false) { + // Extrahiere den Dateinamen ohne die Erweiterung (alles vor dem letzten Punkt) + $file_title = substr($file_title, 0, $last_dot_position); + } + + // Entferne alles nach dem '@' (falls vorhanden) + $file_title = strtok($file_title, '@'); + + + // Entferne einen führenden Unterstrich (falls vorhanden) + $file_title = ltrim($file_title, '_'); + + } else { + // Wenn das Format nicht stimmt, überspringen + continue; + } + + + + + + +////////////////// OUTPUT ////////////////// + + if (str_contains($file_tags, $cat)) { + + $file_path_root = '/var/www/nextcloud/data/radio_admin/files/archive/'.$file_name; + + $show = ""; + $about = ""; + + if ($cat == ""){ + if (str_contains($file_tags, "about")){ + $show = "noshow"; + } + if (str_contains($file_tags, "onlyincat")){ + $show = "noshow"; + } + } + + + ////////////////// IMAGE FILES ////////////////// + + + if (str_contains($mimetype_name, 'image')) { + + echo "
"; + + echo ""; + + echo "
"; + } + + + ////////////////// AUDIO FILES ////////////////// + + if (str_contains($mimetype_name, 'audio')) { + echo "
"; + + echo "
"; + $soundInfosFormat = "
$file_day.$file_month.20$file_year - $file_hour:$file_minute H

$file_title


"; + echo $soundInfosFormat; + echo '
'; + echo "
"; + + echo "
"; + } + + + ////////////////// MARKDOWN FILES ////////////////// + + if (str_contains($mimetype_name, 'markdown')) { + + + $item = $file_name; + $columnPath = "/var/www/pl4tform.org/website/data/files"; + $soundFiles = scandir($columnPath,1); + $discriptionFileWithOutEnd = substr($item, 0, strlen($item)-4); + + foreach($soundFiles as $soundFile){ + if (str_contains($soundFile, ".mp3")) { + if (str_contains($soundFile, $discriptionFileWithOutEnd)) { + $matchingSoundFile = "true"; + break; + } + else { + $matchingSoundFile = "false"; + } + } + } + if ($matchingSoundFile == "false") { + $about = ""; + $show = ""; + $long = ""; + if ($cat == ""){ + if (str_contains($file_tags, "about")){ + $show = "noshow"; + } + if (str_contains($file_tags, "onlyincat")){ + $show = "noshow"; + } + } + else { + $show = ""; + if (str_contains($file_tags, "about")){ + $about = "about"; + $long = "long"; + } + } + if (str_contains($file_tags, "long")){ + $long = "long"; + } + + echo "
"; + echo "
"; + $file_content = file_get_contents($file_path_root); + + // $file_content = str_replace(".attachments.", "https://pl4tform.org/data/mdtransformation/03_attatchements_imgs/.attachments.", $file_content); + $file_content = str_replace(".attachments.", "/ncdata/.attachments.", $file_content); + echo $Parsedown->text($file_content); + echo "
"; + } + + + } + ////////////////// TXT AND HTML FILES ////////////////// + + if (str_contains($mimetype_name, 'text/html') or str_contains($mimetype_name, 'text/plain')) { + echo "
"; + echo "
"; + $file_content = file_get_contents($file_path_root); + $file_content = str_replace(".attachments.", "/ncdata/.attachments.", $file_content); + echo $file_content; + echo "
"; + } + + ////////////////// PDF FILES ////////////////// + + if (str_contains($mimetype_name, 'application/pdf')) { + echo "
"; + echo "
"; + echo "

$file_title

"; + echo " "; + echo "
"; + } + + ////////////////// END ////////////////// + + + } + +////////////////// END OUTPUT ////////////////// + + + } + + + + echo "
"; +} + + + + + + + + + + +?> + + + + + + + + diff --git a/loadFocus.php b/loadFocus.php new file mode 100644 index 0000000..d0885c6 --- /dev/null +++ b/loadFocus.php @@ -0,0 +1,252 @@ + + + +"; + echo ""; + + echo "
"; + echo ""; +} + + +elseif(strlen($id > "1")) { + + // echo "hallo??"; + // Einbinden der getFileInfo.php Datei + include('includes/nc-one-file-request.php'); + + // Beispiel: Datei-ID, die du abfragen möchtest + $file_id = $id; + + // Abrufen der Datei-Informationen + $file_info = getFileInfo($file_id); + + // Überprüfen, ob die Datei gefunden wurde + if ($file_info) { + + $file_id = $file_info['file_id']; + $file_name = $file_info['file_name']; + $file_size = $file_info['file_size']; + $mimetype_name = $file_info['mimetype_name']; + $file_tags = $file_info['file_tags']; + + $itemPath = $filesPath.$file_name; + $itemLink = $filesLink.$file_name; + + // Prüfen, ob der Dateiname mit einem Datum im gewünschten Format beginnt (YYMMDD-HHMM oder YYMMDD_HHMM) + if (preg_match('/^(\d{2})(\d{2})(\d{2})[-_](\d{4})/', $file_name, $matches)) { + // Extrahiere Jahr, Monat, Tag, Stunde und Minute + $file_year = $matches[1]; // Jahr (z.B. "21" wird zu "2021") + $file_month = $matches[2]; // Monat + $file_day = $matches[3]; // Tag + $file_hour = substr($matches[4], 0, 2); // Stunde (erste zwei Zeichen) + $file_minute = substr($matches[4], 2, 2); // Minute (letzte zwei Zeichen) + + + // Entferne Datum und Uhrzeit aus dem Dateinamen, also den Anfang + $file_title = substr($file_name, strlen($matches[0])); // Rest des Dateinamens nach Datum/Uhrzeit + + // Finde die Position des letzten Punktes im Dateinamen + $last_dot_position = strrpos($file_title, '.'); + + // Überprüfe, ob ein Punkt im Dateinamen existiert + if ($last_dot_position !== false) { + // Extrahiere den Dateinamen ohne die Erweiterung (alles vor dem letzten Punkt) + $file_title = substr($file_title, 0, $last_dot_position); + } + + // Entferne alles nach dem '@' (falls vorhanden) + $file_title = strtok($file_title, '@'); + + + // Entferne einen führenden Unterstrich (falls vorhanden) + $file_title = ltrim($file_title, '_'); + + ###### EXTRA CLASSES FOR EXTRA TAGS + + // if (str_contains($file_tags, "full-page")) { + // $fullPage = "fullPage"; + // } + + + + + if (str_contains($mimetype_name, 'image')) { + echo "
"; + echo ""; + + // echo ""; + echo "
"; + echo "
"; + } + + if (str_contains($mimetype_name, 'audio')) { + + // soundfile + + echo "
"; + + // $item = $SoundPlayItem; + include('includes/soundfile_titleAnalyse.php'); + + if(str_contains($file_title, "---")) { + $file_title = str_replace("---", "
", $file_title); + }; + + + $soundInfosFormat = "

$file_title

$file_day.$file_month.$file_year - $file_hour:$file_minute H
"; + echo '
' . $soundInfosFormat . '
'; + + + + $soundPlayLink = 'https://pl4tform.org/ncdata/'.$file_name; + echo ' '; + echo ''; + + + echo '
'; + + // $discriptionItemPath = $filesPath.$itemBeforeAt.'.md'; + // include ("$discriptionItemPath"); + + #### discription file: + + // Datenbankverbindungsdaten + $servername = "localhost"; // oder der Hostname deines DB-Servers + $username = "nc-site_request"; // Dein neuer MariaDB Benutzername + $password = "***"; // Dein Passwort für den neuen Benutzer + $dbname = "nextcloud"; // Der Name deiner Nextcloud-Datenbank + + // Verbindung zur MySQL-Datenbank aufbauen + $conn = new mysqli($servername, $username, $password, $dbname); + + // Verbindung prüfen + if ($conn->connect_error) { + die("Verbindung fehlgeschlagen: " . $conn->connect_error); + } + + // 1. Abfrage: Alle Dateien, deren Pfad '%files/archive/%' enthält + $sql1_desc = "SELECT fc.fileid, fc.name AS file_name, fc.path AS file_path, fc.size, fc.mimetype + FROM oc_filecache AS fc + WHERE (fc.path LIKE '%files/archive/%" . $file_year . $file_month . $file_day . "%" . $file_hour . $file_minute . "%.md%' + OR fc.path LIKE '%files/archive/%" . $file_year . $file_month . $file_day . "%" . $file_hour . $file_minute . "%.txt%') + ORDER BY fc.name DESC"; + + $result1_desc = $conn->query($sql1_desc); + $row_desc = $result1_desc->fetch_assoc(); + $file_id_desc = $row_desc['fileid']; + $file_name_desc = $row_desc['file_name']; + + // echo $file_name_desc; + + + if (str_contains($file_name_desc,".md")) { + $file_path_root_desc = '/var/www/nextcloud/data/radio_admin/files/archive/'.$file_name_desc; + $file_content_desc = file_get_contents($file_path_root_desc); + $file_content_desc = str_replace(".attachments.", "/ncdata/.attachments.", $file_content_desc); + echo $Parsedown->text($file_content_desc); + } + elseif (str_contains($file_name_desc,".txt")) { + $file_path_root_desc = '/var/www/nextcloud/data/radio_admin/files/archive/'.$file_name_desc; + $file_content_desc = file_get_contents($file_path_root_desc); + echo $file_content_desc; + } + + + + echo '
'; + + + echo "
"; + + } + + + if (str_contains($mimetype_name, 'markdown')) { + echo "
"; + echo ""; + + $file_path_root = '/var/www/nextcloud/data/radio_admin/files/archive/'.$file_name; + $file_content = file_get_contents($file_path_root); + $file_content = str_replace(".attachments.", "/ncdata/.attachments.", $file_content); + echo $Parsedown->text($file_content); + + + // include ("$itemPath"); + echo "
"; + } + + if (str_contains($mimetype_name, 'text/html') or str_contains($mimetype_name, 'text/plain')) { + echo "
"; + echo ""; + + $file_path_root = '/var/www/nextcloud/data/radio_admin/files/archive/'.$file_name; + $file_content = file_get_contents($file_path_root); + echo $file_content; + + echo "
"; + } + + + if (str_contains($mimetype_name, 'application/pdf')) { + echo "
"; + echo ""; + + echo "

$file_title

====>>> Open in full-screen

"; + echo " "; + + echo "
"; + } + + + + + + + + + + + + } else { + echo "Die Datei mit der ID $file_id wurde nicht gefunden."; + } + + + + } + +} + + + + + +?> + + + \ No newline at end of file diff --git a/newmap.css b/newmap.css new file mode 100644 index 0000000..0e6618e --- /dev/null +++ b/newmap.css @@ -0,0 +1,2093 @@ + +@font-face { + font-family: "regular"; + src: url("https://pl4tform.org/database/utilities/DINdong/DINdong.woff") format("woff"); + } + + +a { + /* color: white; */ + text-decoration: underline red 2px; +} + +a:hover { + + font-style: italic; + font-weight: bold; +} + +#pl4tformBtn { + position: fixed; + z-index: 495; + width: 125px; + left: 20px; + top: 3px; +} + +#map1 #pl4tformBtn { + display: none; +} + +#pl4tformBtn:hover { + filter: invert(1); +} + + +.wipDesktop { + position: fixed; + background-color: yellow; + z-index: 30000; + rotate: -8deg; + left: 8%; + top: 30%; + #width: 84%; + font-size: 1em; + border: 3px solid darkmagenta; + border-radius: 20px; + padding: 14px; + display: none; + text-align: center; +} + + +.wipMobile { + display: none; +} + +#searchBarInputMobile { + direction: none !important;; +} + +#mobilesearchBar { + display: none +} + +body { + /*! overflow: hidden; */ + font-family: monospace; + /*! line-height: 1.5em; */ + /*! cursor: url(https://pl4tform.org/cursors/mapcursor.png), auto; */ + + overflow: hidden; + /*! height: 100vh; */ + + /* background-image: URL("data/main-page-image/img web mix echoique.jpeg"); */ + background-repeat: repeat; + background-size: 100vw; +} + +#mobilBtns { + display: none; +} + + +/* #actualImageBox { + position: fixed; + left: 50%; + top: 50%; + transform: translate(-50%, -53%); + background-image: URL('data/files/240703_1400_Narthex: a solstice journey.jpg'); + background-repeat: no-repeat; + background-position: center; + background-size: contain; + height: 83vh; + width: 70vw; + margin: auto; +} */ + +#actualImageBox { + /*! height: fit-content; */ + overflow: scroll; + height: 101vh; + position: fixed; + top: 0px; + left: 0px; +} + +#actualImage { + width: 100vw; + position: relative; + top: 0px; + left: 0px; + /*! display: none; */ + /*! overflow: scroll; */ +} + + +#hoverText { + position: fixed; + transition: transform 0.1s, opacity 0.3s; + -webkit-transition: transform 0.1s, opacity 0.3s; + pointer-events: none; + z-index: 2000; + border: 1px solid white; + background-color: #050505; + padding: 2px; + opacity: 0; + color: white; + font-family: monospace; +} + +#hoverText.visible { + opacity: 1; +} + + + + + +.radiobody { + #display: grid; + #grid-template-columns: 50% 50%; + #-webkit-transition: filter 600ms; + #transition: filter 600ms; + /* display: none; */ + + /*! overflow: hidden; */ + /*! height: 100vh; */ +} + +.background { + z-index: -5; + height: 100vh !important; + +} + +img#background{ + filter: blur(0) !important; + position: relative; +} + +#cadre { + display: none; +} + +#contentBG { + filter: blur(1.5rem); + size: fill; + position: absolute; + z-index: -1; +} + +#content { + display: none; +} + +#content.visible { + display: block; + + width: 30vw; + overflow: hidden; + /*! background-color: black; */ + position: fixed; + /*! border: 1px solid black; */ + backdrop-filter: blur(1); + /*! backdrop-filter: blur(1rem) opacity(1); */ + max-width: 488px; + top: 0px; + right: 0px; + z-index: 200; + padding-top: 20px; + /*! background-color: white; */ + min-width: 450px; + /*! backdrop-filter: blur(1); */ + \#background-color: #c8c1677d; +} + +#phpload { + + /*! height: 0px; */ + visibility: hidden; + opacity: 0; + /* transition: opacity 800ms, visibility 800ms; + -webkit-transition: opacity 800ms, visibility 800ms; */ + /*! z-index: 400; */ + position: relative; + overflow: scroll; + /*! width: 100%; */ + z-index: 420; + margin-top: 20px; + left: 0px; + top: 0px; +} + +#phpload.visible { + visibility: visible; + opacity: 1; + + /*! height: fit-content; */ + /*! width: 206px; */ + max-height: 96vh; + height: fit-content; +} + +.loadMapBtn, .loadCatBtn, img.focus, .hoverinvert, .loadLiveBtn { + transition: filter 0.4s, width 0.2s, height 0.2s; + -webkit-transition: filter 0.4s, width 0.2s, height 0.2s; + + cursor: url(https://pl4tform.org/cursors/loupev1.png), auto; + +} + +.loadMapBtn:hover, .loadCatBtn:hover, .focus:hover, .hoverinvert:hover, .loadLiveBtn:hover{ + filter: invert(1); + + /* width: 120% !important; + height: 120% !important; */ +} + +#map1 .loadMapBtn,#map1 .loadCatBtn,#map1 .focus{ + /* filter: contrast(10); */ + cursor: pointer; +} + +.map .text { + overflow: scroll; +} + +img.loadCatBtn { + #filter: blur(0.5rem); +} + +.footer { + #border-top: 1px solid black; + #background-color: #ffffff; + z-index: 510; +} + +.footer { + position: absolute; + left: 0; + #right: 50; + bottom: 0px; + width: 59%; + #background-color: rgb(214, 214, 214); + #color: white; + text-align: center; + transition: bottom 0.5s cubic-bezier(.64,.55,.36,1.57); + margin-left: 423px; + } + + +#actualPlaying { + background-color: #000; + width: fit-content; + margin: auto; + height: fit-content; + transition: height 0.5s, width 0.5s; + color: white; + border: #5cff00 1px solid; + padding-left: 5px; + padding-right: 5px; + border-bottom: 0px; +} + +#actualPlaying.visible { +} + + + + +audio { + border: #5cff00 1px solid; + width: 100%; +} + +.closeBtn { + position: fixed; + top: 2px; + left: 60vw; + margin-right: 20px; + font-size: 2em; + z-index: 240; +} + +img#seum { + /* transform: translateX(709px) !important; */ +} + + + +.discriptionBox { +background-color: blue; +font-size: 1.2em; +font-weight: bold; +color: white; +border: 3px solid violet; +#padding: 20px; +margin-bottom: 30px; +position: fixed; +top: 20px; +left: 72vw; +width: 23vw; +max-height: 80vh; +overflow: scroll; +} + +.discriptionBox a { + color:rgb(255, 111, 111); +} + +#catPlaceHolder { + width: 100%; + margin: auto; + text-align: center; +} + +#podcastList { + width: 100%; + margin: auto; + text-align: center; +} + +#zoneBackground { + #background-image: url(https://pl4tform.org/database/maps/map2.jpg); + #background-size: 105vw 105vh; + position: fixed; + height: 100vh; + width: 130vw; + top: 0px; + left: -100vw; + z-index: 419; + + transition: backdrop-filter 400ms; + -webkit-transition: backdrop-filter 400ms; + + backdrop-filter: blur(4rem) opacity(0); + -webkit-backdrop-filter: blur(4rem) opacity(0); + +} + +#zoneBackground.visible { + /*! backdrop-filter: blur(1rem) opacity(1); */ + -webkit-backdrop-filter: blur(1rem) opacity(1); + + /*! background-color: #00134c; */ + /*! background-image: url('https://pl4tform.org/data/map-backgrounds/empty.png'); */ + background-color: #91919187; + /*! display: none; */ + width: 100vw; + position: fixed; + top: 0px; + left: 0px; + background-size: 100vw 100vh; +} + + + + +#mapOverBackground { + /*! background-image: url(https://pl4tform.org/ive.jpg); */ + background-size: 100vw 100vh; + position: fixed; + height: 100%; + width: 100%; + top: 0px; + left: 0px; + \#backdrop-filter: blur(1rem); + -webkit-backdrop-filter: blur(1rem); + + + + /*! background-color: rebeccapurple; */ +} + +#map2Background.visible { + /* backdrop-filter: blur(1rem) opacity(1); */ + +} + +#map2Content { + /* visibility: hidden; + opacity: 0; + transition: opacity 800ms, visibility 800ms; */ +} + +#map2Content.visible { + /* visibility: visible; + opacity: 1; */ +} + + +#map1Background { + #background-image: url(https://pl4tform.org/data/map-backgrounds/start.jpg); + background-size: 105vw 105vh; + position: fixed; + height: 100vh; + width: 100vw; + top: 0px; + left: 0px; + z-index: -50; + #backdrop-filter: blur(1rem); + #-webkit-transition: filter 600ms; + #transition: filter 600ms; + filter: blur(0px); + /*! overflow: hidden; */ + /*! height: 100vh; */ +} + + +.contentColumn { + /*! max-height: 92vh; */ + /*! overflow: scroll; */ + /*! width: 100vw; */ + /*! margin: auto; */ + /*! padding: 23px; */ + + z-index: 450 !important; + /*! margin-bottom: 105px; */ + /*! grid-template-columns: repeat(5, 1fr); */ + /*! display: inline; */ + /*! max-width: 1026px; */ + /*! height: 100vh; */ + padding-top: 5px; + /*! position: fixed; */ + top: 0px; + /*! height: 100vh; */ + overflow: scroll; + /*! padding-bottom: 200px; */ + height: fit-content; + /*! margin: 100px; */ + position: relative; +} + + +.contentItemBox { + /*! height: 60px; */ + overflow: hidden; + border: 2px solid white; + /*! padding-left: 20px; */ + /*! padding-right: 20px; */ + margin-top: -1px; + background-color: #000; + margin-bottom: 15px; + color: white; + width: 85%; + /*! margin-left: 20px; */ + /*! margin-right: 20px; */ + margin-left: auto; + margin-right: auto; + cursor: pointer; +} + + +.contentItemBox a { + color: #00cfff; +} + +.contentItemBox .soundDiscription { + font-size: 0px; + display: none; +} + +.contentItemBox .textItem img { + width: 100%; +/*! margin-top: 20px; */ +} + +.contentItemBox .textItem { + font-size: 0px; + min-height: 51px; + padding-left: 20px; + padding-right: 20px; +} + +.contentItemBox .textItem.long { + font-size: 15px !important; +} + +.contentItemBox.about { + /* position: fixed; + top: 47px; + left: 129px; + width: 21vw; */ + background-color: darkblack; +} + +.contentItemBox.noshow { + display: none; +} + +.contentItemBox .textItem h1 { + font-size: 22px; +} + +.contentItemBox .textItem hr { + display: none;^ +} + +.contentItemBox .pdfembed { + width: 103%; + height: 500px; + margin-bottom: 20px; +} + +.contentItem { + #margin: 20px; +} + + +#imageColumn { + height: fit-content; +} + +#soundColumn { + #background-color: rgba(127, 231, 255, 0.74); + #border: 3px solid aliceblue; + /*! overflow: scroll; */ + /*! max-height: 80vh; */ + #min-width: 300px; + z-index: 200; + position: relative; + height: fit-content; + text-align: center; +} + +#textColumn { + height: fit-content; +} + +.imageItem { + position: relative; + /*! border: 3px solid violet; */ + width: 100%; + z-index: 250; + /*! margin-bottom: 15px; */ + min-height: 10vw; + display: block; + /*! height: 20px !important; */ + /*! max-width: inherit !important; */ + /*! border: 1px white solid; */ + /*! padding: 10px; */ + /*! margin-left: -5px; */ + width: 97%; + width: 100%; + /*! min-height: 0px !important; */ + /*! margin-top: 20px; */ +} + +.soundItem { + height: fit-content; + padding-left: 20px; + width: calc(100% - 40px); +} + +.soundItem.withDiscription { +} + +.soundTitle { + #font-size: 2em; + #line-height: 1.01em; +} + +.contentItemBox .soundTitle { + /*! background-color: #00000075; */ + /*! box-shadow: 0px 0px 17px 5px black; */ + /*! margin: 20px; */ +} + + +.soundDate { + position: relative; + top: 0px; + width: 110%; + left: -20px; + /*! display: none; */ + border-bottom: 1px solid black; +} + +.soundTitle:hover { + text-decoration: underline; +} + +.soundDiscription { +} + +.downloadLink { + #vertical-align: bottom; + display: ruby; +position: absolute; +right: 55px; +} + +.fa { + text-decoration: underline !important; +} + +.soundDiscription img { + display: none; +} + +.soundInfos { +} + +.soundInfos:hover, .item:hover { +/*! filter: invert(1); */ +} + +.textItem { + height: fit-content; + + + + + +} + + + +.textItem:before { + content:'read more'; + font-style: italic; + #font-size: 1em; + text-align: center; + /* color: white; */ + width:100%; + height:10vh; + position:absolute; + left:0; + top:231px; + #background:linear-gradient(transparent 10vh, rgba(255, 255, 255, 1)); + #background-color: red; + #backdrop-filter: blur(1rem); + z-index: 260; + /*! backdrop-filter: blur(4rem); */ + -webkit-backdrop-filter: blur(1rem); + #backdrop-filter: invert(0.7); + background-color: #191919; + display: none; + } + +.item { + + +} + + +#map { + #-webkit-transition: filter 600ms; + #transition: filter 600ms; + filter: blur(0px); +} + +.mapOver { + #display: none; + /* backdrop-filter: blur(1rem); */ + height: 0vh; + position: fixed; + top: 0px; + left: 0px; + transition: opacity 0.5s ease, height 0.5s, width 0.5s; + -webkit-transition: opacity 0.5s ease, height 0.5s, width 0.5s; + opacity: 0; + width: 0vw; + z-index: -100; + + /*! overflow: hidden; */ +} + +.mapOver.visible { + #display: block; + opacity: 1; + height: 100vh; + width: 100vw; + z-index: 99; + backdrop-filter: blur(5px); +} + +.soundItemBtn { + margin-left: 10px; + margin-right: 10px; + cursor: url(https://pl4tform.org/cursors/loupev1.png), auto; + + /*! background-color: white; */ +} + +.soundItemBtn:hover { + filter: invert(1); +} + +#soundDescriptionBtn { + +} + +.soundPlayBtn { + visibility: visible; + background-color: white; + border: 2px solid white; + /*! background-image: URL("data/btns/playBtn.png"); */ + background-size: 100% 100%; + width: 70px; + height: 50px; + /*! background-color: white; */ + + /*! display: none; */ + color: black; + font-weight: bold; + margin-bottom: 20px; +} + +.contentItemBox .soundPlayBtn { + /*! display: none; */ + height: 25px; + width: fit-content; +} + +.soundPlayBtn.hidden { + background-image: URL("data/btns/playingBtn.gif") !important; +} + + +.soundPauseBtn { +} + +.soundPlayBtn .soundPauseBtn { + +} + + + +/* FOCUS LOAD */ + +.focusBox { + position: relative; + top: 7vh; + margin: auto; + z-index: 500; + /* transition: opacity 800ms, visibility 800ms; + -webkit-transition: opacity 800ms, visibility 800ms; */ + visibility: hidden; + opacity: 0; +} + +.focusBox.full-page { + width: 100vw; + max-width: none; + margin: 0px; + position: fixed; + top: 0px !important; + left: 0px; + padding: 0; + height: 100vh !important; + overflow: scroll; + background-color: white; + color: black; +} + +.focusBox h1 { + /*! color: chartreuse; */ + } + +.focusBox hr { + color: rebeccapurple; + } + +.focusBox a { + color: white; +} + +.focusBox.visible { + visibility: visible; + opacity: 1; + /*! border: 1px solid black; */ +} + +.focusBoxText { + height: 70vh; + width: 85vw; + /*! box-shadow: 5px 5px 10px 2px rgba(0,0,0,.8); */ + overflow: scroll; + padding: 20px; + + padding: 10px; + background-color: black; + /*! border-radius: 4px; */ + color: white; + border: white 1px solid; + max-width: 692px; + /*! box-shadow: 0px 0px 70px 5px #2000ff; */ +} + +.focusBoxText img { + width: 100%; + /*! margin-top: 20px; */ + /*! margin-bottom: 20px; */ +} + +.focusBox .pdfembed { + width: 100%; + height: 603px; + margin-bottom: 20px; +} + +#focusBoxText { + /*! background: beige; */ + +} + +#focusBoxSoundDiscription { + /*! background: rgb(160, 241, 255); */ +} + +#focusBoxSoundDiscription .soundDiscriptionTitle { + font-weight: bold; + margin-bottom: 10px; +} + +#focusBoxSoundDiscription #soundPlayBtn { + margin-bottom: 20px; +} + + + + +#focusBoxImage { + +} + + +#focusImage { + background-repeat: no-repeat; + background-position: center; + background-size: contain; + height: 83vh; + width: 70vw; + margin: auto; +} + + +#phploadFocus { + /* display: none; */ +} + + +#focusLayer { + display: none; +} + +#focusLayer.visible { + display: block; +} + +#focusBackground { + width: 100vw; + height: 100vh; + #display: none; + position: fixed; + top: 0px; + left: 0px; + z-index: 490; + + transition: backdrop-filter 400ms; + -webkit-transition: backdrop-filter 400ms; + + backdrop-filter: blur(4rem) opacity(0); + -webkit-backdrop-filter: blur(4rem) opacity(0); + + /*! overflow: hidden; */ +} + +#focusBackground.visible { + backdrop-filter: blur(4rem) opacity(1); + -webkit-backdrop-filter: blur(4rem) opacity(1); +} + +.closeFocusBtn { + position: absolute; + top: -20px; + display: none; +} + +#closeFocusBtnText { + right: 2vw; +} + +#closeFocusBtnImage { + right: 20vw; +} + + + +/* POSITION BOX */ + +#positionBox { + position: fixed; + z-index: 2000; + #background-color: white; + height: 23px; + top: 0px; + right: 0px; + overflow: hidden; + backdrop-filter: blur(1rem); + -webkit-backdrop-filter: blur(1rem); + + color: white; + border: 1px solid black; + height: 28px; + #width: fit-content; + width: 180px; + background: black; + font-size: 20px; +} + +#positionBox { + -webkit-transition: height 600ms; + transition: height 600ms; + display: none; +} + +#positionBox:hover { + height: auto; + z-index: 2000; + background-color: rgba(255, 255, 255, 0.712); + width: fit-content !important; + color: black; +} + +#positionActual{ + /*! color: rgb(63, 63, 63); */ + /*! color: white; */ + font-family: monospace; + overflow: scroll; + height: 100vh; + text-align: right; +} + +#positionActual::first-line { + #font-weight: bold; + color: white; + background-color: black; +} + +#positionActual::first-line:hover { + color: black; +} + + +#positionActual::before { + text-align: right; + content: "Your roadmap =>"; +} + +.arrowUp { +} + +.arrowSymbol { + #font-size: 20px; +} + + + + + + + +/* //////////// NAVIGATION //////////// */ + +#navigationOpenBtn { +position: fixed; +z-index: 5000; +display: none; +} + +#navigation { + position: fixed; + z-index: 1000; + border-bottom: 2px solid white; + padding-bottom: 5px; + /*! padding-left: 353px; */ + /*! padding-right: 396px; */ + margin-left: auto; + margin-right: auto; + width: fit-content; + margin-bottom: -13px; + background-color: black; + /*! color: white; */ + top: 0px; + /*! text-align: center; */ + height: fit-content; + /*! text-align: center; */ + /*! top: 50%; */ + left: 50%; + transform: translate(-50%, -0%); + /*! display: flex; */ + text-align: center; + /*! max-width: 1201px; */ + width: 100vw; + display: none; +} + +#navigationMobil { + display: none; +} + +#navigation button { +} + +.navigationBtn { + display: inline; + /*! margin-left: 10px; */ + /*! margin-right: 10px; */ + #color: #fff0; + border: 0px; + background-size: 100% 100%; + /*! width: 100px; */ + /*! height: fit-content; */ + font-family: monospace; + text-decoration: underline; + font-size: 20px; + color: white; + background-color: black; + cursor: pointer; +} + +.navigationBtn:hover { + /*! filter: invert(0.5); */ + background-color: white !important; + color: black !important; +} + +.navigationBtnBox { + border-right: 1px solid black; + display: inline; + padding-left: 20px; + padding-right: 20px; +} + +#livestreamBtn { +} + +#searchBtn { + #background-image: URL("data/map-backgrounds/navigation_search2.png"); + +} + +#basemapBtn { + #background-image: URL("data/map-backgrounds/navigation_start2.png"); + +} + +#backBtn { + #background-image: URL("data/map-backgrounds/navigation_back2.png"); + + background-color: black; + color: white; + /*! text-decoration: snow; */ + position: fixed; + top: 0px; + left: 0px; + z-index: 5000; + font-size: 20px; + border: 2px solid white; + text-decoration: none; + height: 37px; + border-top: 0px; + border-left: 0px; + padding-right: 10px; + display: none; +} + +/* //////////// SEARCH //////////// */ + +#searchBar { + -webkit-transition: opacity 0.5s, visibility 0.5s, height 0.5s; + transition: opacity 0.5s, visibility 0.5s, height 0.5s; + + vertical-align: middle; + height: 100%; +} + +#searchBtn { + -webkit-transition: opacity 0.5s, visibility 0.5s, width 0.5s; + transition: opacity 0.5s, visibility 0.5s, width 0.5s; + z-index: 1000; +} + +#searchBarInput { + width: 80%; + border-radius: 1px; + + color: black; + height: 100%; + border: 0px; + background-color: transparent; + outline: none; + text-align: center; +} + +#searchBar.visible { + width: 100%; + height: 31px; + + position: fixed; + left: 14vw; +} + +#searchBtn.visible { + /*! width: 100px; */ + +} + + +#searchBar.visible, #searchBtn.visible { + opacity: 1; + visibility: visible; + #display: block; +} + +#searchBar.hidden, #searchBtn.hidden { + opacity: 0; + visibility: hidden; + #display: none; + width: 0%; + height: 0px; +} + + + +#ceasefirenow { + position: fixed; + right: 0px; + top: 0px; + width: 200px; +} + + + + + +/* CHAT */ + +.chat { + height: 100%; + /*! background-color: lightgray; */ + /*! color: white; */ + word-wrap: break-word; + width: 100%; + height: 100%; + display: grid; +} + +#chat h1 { + width: 100%; + border-bottom: 1px solid grey; + margin: 0px; + position: sticky; + top: 0px; + /*! background-color: white; */ +} + +#historyBox{ + overflow: scroll; + scroll-behavior: smooth; + /*! height: 132px; */ + overflow: scroll; +} + +#newMesInput { + width: 77%; + background-color: black; + color: white; + font-family: monospace; + border: 1px solid white; + position: relative; + bottom: 0px; + left: 0px; +} + +#sending { + position: relative; + bottom: 1px; + width: 100%; + /*! border-top: gray solid 1px; */ + padding-top: 3px; + /*! background-color: white; */ +} + +.message{ + /* border: 1px solid white; */ +} + +.chatName { + text-decoration: underline; + #color: darkorchid; + /*! background-color: black; */ +} + +.sendBtn { + background-color: black; + color: white; + border: 1px solid white; +} + +input#chatName { + background-color: black; + color: white; + font-family: monospace; + border: 1px solid white; +} + +.closeChat { + position: absolute; + top: -2px; + right: -1px; + background-color: black; + border: 2px solid white; + font-size: 2em; + height: 28px; + width: 28px; + text-align: center; + line-height: 1.5rem; + cursor: pointer; + display: none; +} + +#showChat { + font-size: 2em; + border: 5px dotted white; + position: fixed; + z-index: 10000; + bottom: 13px; + left: 13px; + color: white; + padding: 10px; + background-color: black; + display: none; + box-shadow: 0 1px 16px 0 rgba(32, 0, 255, 0.46),0 3px 20px 0 rgba(0, 183, 255, 0.37) !important; + cursor: pointer; +} + +.mesTime { + color: grey; +} + +#lastTimecode { + display: none; +} + + + + +#liveTEST { + display: none; +} + +#nowLiveSpan{ + color: black; + background: red; + margin-left: -5px; + padding-left: 5px; + animation: color-change-nowLive 5s infinite; +} + +@keyframes color-change-nowLive { + 0% { background-color: red; } + 50% { background-color: rgb(255, 230, 0); } + 100% { background-color: red; } +} + + + + +/* GRID HTML ACCUEIL HOME SITE */ + + +/* body { + padding: 0px; + margin: 0px; + height: 100vw; + overflow: hidden; + } */ + + .item1 { + grid-area: livestream; + font-size: 11px; + font-style: italic; + /* padding-left: 10px; */ + text-decoration: underline; + text-align: center; + display: grid; + } + .item2 {grid-area: nextlive; +overflow: scroll !important; +position: relative;} +.item13 {grid-area: nextlive2; + overflow: scroll !important; + position: relative;} + .item3 { grid-area: logo; + text-align: center;} + + .item4 { grid-area: search; + text-align: center; +background-color: #97ff00 !important; + } + .item5 { grid-area: about; + text-align: center;} + .item6 { grid-area: contact; + text-align: center; } + .item7 { grid-area: newsletter; + text-align: center; } + .item8 { grid-area: alliees; + text-align: center; + background-color: #c7fe86 !important; +} + .item9 { + grid-area: prog; + overflow: scroll; + + } + .item10 { grid-area: ch4tform; overflow: scroll !important;border: 2px solid blue !important;background-color: black !important;color: white;} + .item11 { grid-area: index; + text-align: center;} + .item12 { grid-area: carte; + text-align: center;} + + + .item9::-webkit-scrollbar { + display: none; + } + + /* Hide scrollbar for IE, Edge and Firefox */ + .item9 { + -ms-overflow-style: none; /* IE and Edge */ + scrollbar-width: none; /* Firefox */ + overflow: scroll !important; + } + + + .grid-container { + display: grid; + gap: 0px; + padding: 0px; + width: 50vw; + height: 100vh; + position: fixed; + top: 0px; + + } + + .grid-container#accueil { + grid-template-areas: + 'carte logo logo logo' + 'carte logo logo logo' + 'livestream nextlive nextlive nextlive' + 'livestream nextlive nextlive nextlive' + 'about prog prog prog' + 'contact prog prog prog' + 'newsletter prog prog prog' + 'alliees prog prog prog' + 'ch4tform ch4tform index index' + 'ch4tform ch4tform index index' + 'ch4tform ch4tform index index'; + left: 0px; + grid-template-rows: auto auto auto auto auto auto auto auto auto auto auto; + grid-template-columns: 25% 25% 25% 25%; + z-index: 1; + } + + .grid-container > div { + border: 1.5px solid grey; + overflow: hidden; + } + +.grid-container p {margin-top: 0px} + + + .grid-container img { + max-width: 100%; + max-height: 100%; + vertical-align: middle; + margin: auto; + } + + #carteImg, #indexImg { + width: 100% !important; + height: 100% !important; + } + + img#logo { + position: relative; + } + + .grid-container .helper { + display: inline-block; + height: 100%; + vertical-align: middle; + } + + .item2 img { + position: absolute; + top: 0px; + z-index: 5; + opacity: 0; + } + + .item2, .item9 { + font-size: 1.5em !important; + } + + + +/* ///////////////////// INDEX griddddddd */ + +.header { + grid-area: header; + /* display: flex; */ + text-align: center; +} + +.header:hover { + /* background-color: grey !important; */ +} + +.header p { + width: 90%; +} + +.searchIndex { + grid-area: searchIndex; + text-align: center; + /* background-color: #97ff00 !important; */ +} + +.searchIndex input { + background-color: transparent; + width: 100%; + text-align: center; + border: 0px; + color: white; +} + +.tags { + grid-area: tags; + overflow: scroll; +} + +#tagDiscription { + grid-area: tagDiscription; + overflow: scroll; +} + +#tagDiscription h1 { + margin-top: 0px; +} + +.archiveList { + grid-area: archiveList; + overflow-y: scroll !important; +} + +.grid-container#index { + grid-template-areas: + 'header header header header' + 'searchIndex searchIndex tags tags' + 'archiveList archiveList tags tags' + 'archiveList archiveList tagDiscription tagDiscription'; + right: 0px; + /* grid-template-rows: min-content 30px auto 30vh; */ + grid-template-rows: min-content 30px auto 30vh; + grid-template-columns: 25% 25% 25% 25%; + background-color: black; + color: white; + border-left: 1px solid #8875ad; + width: calc(50vw - 14px); + z-index: 1; + display: none; + padding-right: 8px; + } + +.grid-container#index.visible { + display: grid !important; + } + + .grid-container#index a { + color: white; + } + +#closeIndex { + /* position: fixed; + top: 4px; + right: 15px; */ +} + +/* tr.about { + display: none !important; +} */ + +tr[tags*="about"] { + display: none !important; +} + +tr.No.Tags { + display: none; +} + +#resetFilterButton { + background-color: gray !important; + width: fit-content; + border: 1px solid white; + margin: 5px; + padding: 2px; + transition: scale 0.5s; +} + +#resetFilterButton:active { + /* background: lightslategray !important; */ + /* scale: 0.9; */ +} + +.tagButton.about, .tagButton.No.Tags, .tagButton.onlyincat { + display: none !important; +} + +button[data-filter*="2030"], button[data-filter*="2026"], button[data-filter*="No Tags"], button[data-filter*="about"] { + display: none !important; +} + +.filterButton { + opacity: 0.3; +} + +.filterButton.intable { + opacity: 1 !important; +} + +.tagButton.selected, .yearButton.selected, .filterButton.selected { + /* background-color: rgb(255, 255, 255) !important; */ + /* color: rgb(0, 0, 0) !important; */ + border-radius: 13px; + filter: invert(1); +} + +.grid-container#index > div { + background-color: black; + border: white 1px solid; + box-shadow: 0px 0px; + } + +.grid-container#index button { + background-color: black; + color: white; + margin: 5px; + border: 1px solid white; + /* transition: opacity 0.5s , border-radius 0.5s, scale 0.2s, filter 1s; */ + transition: opacity 0.5s , border-radius 0.5s, scale 0.2s; + } + +.grid-container#index button:active { + background-color: rgb(255, 255, 255); + color: rgb(0, 0, 0); +} + +.grid-container#index .tags{ + /* padding: 5px; */ + overflow: scroll; +} + + +/* INDEXX TABLLLEEE */ + +#fileTable { + background-color: black; + color: white; + border-collapse: collapse; + width: 100% !important; +} + +.noshowcolumn { + display: none; +} + +table { + width: 100%; + border-collapse: collapse; + width: 300px !important; + display: flex; +} +table, th, td { + border: 1px solid black; + background-color: black !important; +} +tbody { + width: 100%; +} +td { + padding: 0px !important; + text-align: left; + border: 0px !important; + background-color: transparent !important; +} +tr { + background-color: black !important; + padding-bottom: 10px; + display: block; + border-top: 1px solid white; +} +tr:hover, #closeIndex:hover { + color: #00cfff; +} +tr:first-of-type { + border: 0px; +} + +th { + display: none; +} + +#fileTable_length { + display: none; +} + +#fileTable_filter, .dataTables_filter { + color: white; + text-align: left; + float: none; + display: none; +} + +#fileTable_filter input { + color: white; + border: 1px solid white; +} + +#fileTable_paginate { + display: none; +} + +#fileNameRow { + /* max-width: 50px; */ + display: none; +} + +tr.selected { + background-color: white !important; + color: black; + transition: background-color 0.5s; +} + + + + + +/* ///////////////////// FOCUSSSSSSSS griddddddd */ + +.grid-container#focusGrid { + grid-template-areas: + 'title' + 'content' + 'details'; + left: 0px; + grid-template-rows: min-content auto min-content; + grid-template-columns: 100%; + background-color: black; + color: white; + width: calc(50vw + 4px); + z-index: 1; + border: 0px !important; + padding-right: 5px; + display: none; + } + +.grid-container#focusGrid.visible { + display: grid; + } + +.grid-container#focusGrid > div { + background-color: black; + border: white 1px solid; + box-shadow: 0px 0px; +} + +.grid-container#focusGrid #focusItemIndexDetailsTitle { + grid-area: title; + text-align: center; +} + +.grid-container#focusGrid #focusItemIndexBack { + grid-area: backbtn; + display: none; +} + + + +.grid-container#focusGrid #focusItemIndexDetails { + grid-area: details; + display: block; +} + +.grid-container#focusGrid #focusItemIndexContent { + grid-area: content; + overflow-y: scroll !important; +} + +.grid-container#focusGrid #focusItemIndexContent #startAnnounce { + width: 60%; + margin: auto; + margin-top: 20vh; +} + +.grid-container#focusGrid #focusItemIndexContent #startAnnounce #selectafile { + position: relative; + top: 8vh; + left: 20px; +} + + + +.grid-container#focusGrid a { + color: white; + } + +#focusItemIndexImage { + max-width: 100%; + max-height: 100%; +} + + +/* DETTTTTTTTTTTTTTAILS GRIDDD */ + +#focusItemIndexDetails { + display: grid !important; + grid-template-areas: + 'date time format size id'; +} + +#focusItemIndexDetails > span { + border: 0px solid white; + text-align: center; +} + + +#focusItemIndexDetailsDate { + grid-area: date; + +} + +#focusItemIndexDetailsTime { + grid-area: time; + +} + +#focusItemIndexDetailsFormat { + grid-area: format; + +} + +#focusItemIndexDetailsSize { + grid-area: size; + +} + +#focusItemIndexDetailsId { + grid-area: id; +} + +#focusItemIndexDetailsId a { + text-decoration: none; +} + + + + + + + + + +@media (max-width: 60rem) { + + /* body { + background-image: URL("data/main-page-image/soso-mercredi-14.jpg"); + background-repeat: repeat; + background-size: 100vw; + } */ + + + #positionBox { + display: none; + } + + #focusBackground { + background-color: rgba(255, 255, 255, 0.521); + } + + #zoneBackground { + background-color: white; + } + + .focusBox { + top: 11vh; + } + + .focusBox.full-page { + height: 97vh !important; + } + + + .soundDiscription { + /*! display: none; */ + + } + + .soundItem.withDiscription { + + display: block !important; + width: calc(100% - 40px); + } + + .focusBox { + top: 38px !important; + } + + .focusBoxText { + height: 80vh !important; + } + + .textItem::before { + top: 226px !important; + } + + #navigation { + display: none; + } + + #navigationMobil { + position: fixed; + z-index: 1000; + border: 2px solid white; + padding-bottom: 5px; + padding-left: 10px; + padding-right: 10px; + margin-left: auto; + margin-right: auto; + margin-bottom: -13px; + background-color: black; + /*! color: white; */ + /*! text-align: center; */ + /*! text-align: center; */ + /*! top: 50%; */ + left: 50%; + transform: translate(-50%, -0%); + /*! display: flex; */ + text-align: center; + max-width: 800px; + width: min-content !important; + display: none;display: none; + left: 0px !important; + transform: translate(-1%)!important; + height: 80vh !important; + top: 46px !important; + padding: 9px; + box-shadow: 0px 0px 70px 5px #ff6000; + } + + + .navigationBtn { + text-align: left !important; + width: inherit !important; + } + + #backBtn { + display: none !important; + } + + #backBtnMobil { + position: fixed; + right: 10px; + z-index: 5000; + display: none; + } + + #mobilBtns { + display: inherit !important; + } + + #searchBar, #mobilesearchBar, .mobilesearchBar { + position: fixed !important; + top: 11px !important; + width: 50vw !important; + z-index: 5000 !important; + left: 50%; + transform: translate(-50%); + display: none; + } + + #mobilesearchBar.visible { + display: block; + } + + .contentColumn { + left: 0px !important; +position: fixed !important; +padding-top: 52px !important; + padding-left: 0px !important; + padding-right: 0px !important; + height: 94%; + overflow: scroll; + } + + .mobileMainBtns { + background: black; + color: white; + font-family: monospace; + font-size: 18px; + border: 2px solid white; + } + + .wipMobile { + position: fixed; + z-index: 499; + background: yellow; + top: 83px; + font-size: 25px; + display: none; + left: 0px; + #display: block !important; + width: 86%; + margin: 10px; + padding: 5px; + } + + #content.visible { + left: 0px !important; + width: 100% !important; + top: 0px !important; + max-width: 100% !important; + } + + #phpload.visible { + height: 100vh; + } + + .contentColumn { + width: 100%; + /*! top: -30px !important; */ + } + + .contentItemBox { + width: 80% !important; + /*! margin-left: 16px !important; */ + } + + #showChat { + display: none !important; + } + + .chat { + width: 100vw !important; + top: 0px; + height: 100vh !important; + padding: 0px !important; + padding-top: 30px !important; + border: 0px !important; + display: none ; + left: 0px; + } + + #chat h1 { + top: 29px; + } + + .closeChat { + display: none !important; + } + + #newMesInput { + margin-bottom: 20px; + } + + #map1 div.image { + width: 90vw !important; + left: 20px !important; + + } + + .wipDesktop { + display: none; + top: 40px; + font-size: 15px; + } + + #map1 .text { + max-width: 85vw !important; + height: fit-content !important; + left: 10px !important; + } + + + + .grid-container#accueil { + grid-template-areas: + 'logo ' + 'livestream' + 'nextlive ' + 'prog ' + 'about ' + 'contact ' + 'newsletter' + 'index ' + 'alliees '; + left: 0px; + grid-template-columns: 100%; + } + + .grid-container#index { + grid-template-areas: + 'header ' + 'searchIndex ' + 'tags ' + 'archiveList ' + 'tagDiscription'; + left: 0px; + grid-template-rows: min-content 30px 30vh auto auto; + grid-template-columns: 98%; + background-color: black; + color: white; + border-left: 1px solid #8875ad; + width: 100vw; + z-index: 1; + display: none; + padding-right: 8px; + overflow: hidden; + z-index: 5; + } + + .grid-container#focusGrid.mobileVisible { + z-index: 6; + } + + + .grid-container#focusGrid { + width: 100vw; + z-index: 0; + grid-template-areas: + 'backbtn title' + 'content content' + 'details details'; + grid-template-columns: 20% 79%; + + } + + + .radiobody { + display: none; + } + + .grid-container { + width: 99vw; + } + + .grid-container#focusGrid #focusItemIndexBack { + display: block; + } + + .footer { + position: absolute; + left: 0; + bottom: 0px; + width: 100%; + text-align: center; + transition: bottom 0.5s cubic-bezier(.64,.55,.36,1.57); + margin-left: 0%; + } +} diff --git a/phpinfo.php b/phpinfo.php new file mode 100644 index 0000000..cb9a0e7 --- /dev/null +++ b/phpinfo.php @@ -0,0 +1 @@ + diff --git a/player.js b/player.js new file mode 100644 index 0000000..08428a3 --- /dev/null +++ b/player.js @@ -0,0 +1,37 @@ +window.onload = function() { + let elements = document.getElementsByClassName("ecouterici"); + + for(let i = 0; i < elements.length; i++) { + elements[i].onclick = function (e) { + e.preventDefault(); + var elm = e.target; + var audio = document.getElementById('audio'); + + var source = document.getElementById('audioSource'); + source.src = elm.getAttribute('data-value'); + + audio.load(); //call this to just preload the audio without playing + audio.play(); //call this to play the song right away + + document.getElementById('listening-to').textContent= "Listening to: "; + + var title = elm.getAttribute('title'); + document.getElementById('play-title').textContent= "" + title; + + + + + + + + if (window.matchMedia("(max-width: 700px)").matches) { + document.getElementById('footer-text').style.display = "block"; + } else { + document.getElementById('footer-text').style.display = "block ruby"; + + } + + + } + } +}; diff --git a/rename-files.php b/rename-files.php new file mode 100644 index 0000000..280fd56 --- /dev/null +++ b/rename-files.php @@ -0,0 +1,49 @@ + $itemNew

"; + + + rename($item,$itemNew); + + rename("/var/www/pl4tform.org/website/data/files/240710_2200_test@pl4tform.txt", "/var/www/pl4tform.org/website/data/files/240710_2200_test@pl4tformmm.txt"); + + + } + } + + + + +}} + + +$itemIndex = $itemIndex + 1; + +}; \ No newline at end of file diff --git a/scripts/ARCHIVE_music_duration_output.txt b/scripts/ARCHIVE_music_duration_output.txt new file mode 100644 index 0000000..27e4331 --- /dev/null +++ b/scripts/ARCHIVE_music_duration_output.txt @@ -0,0 +1 @@ +dim. 08 sept. 2024 20:57:52 CEST : Total duration of Pl4tform-Archives: 9206 minutes / 153 Hours / 6 Days diff --git a/scripts/MUSIC_music_duration_output.txt b/scripts/MUSIC_music_duration_output.txt new file mode 100644 index 0000000..17ea932 --- /dev/null +++ b/scripts/MUSIC_music_duration_output.txt @@ -0,0 +1,2 @@ +dim. 08 sept. 2024 20:50:53 CEST : Total duration of Pl4tform-Music: 3483 minutes / 58 Hours / 2 Days +jeu. 03 oct. 2024 13:24:07 CEST : Total duration of Pl4tform-Music: 3819 minutes / 63 Hours / 2 Days diff --git a/scripts/find_files_without_md_and_update.sh b/scripts/find_files_without_md_and_update.sh new file mode 100644 index 0000000..8651b3b --- /dev/null +++ b/scripts/find_files_without_md_and_update.sh @@ -0,0 +1,22 @@ +#find /var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/leo_selecta/ -name "*.mp3" -exec id3v2 -l {} | grep "NO ID" \; + +#!/bin/bash + +# Verzeichnis angeben +VERZEICHNIS="/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/" + +# Durchlaufe alle MP3-Dateien im angegebenen Verzeichnis +find "$VERZEICHNIS" -type f -name "*.mp3" | while read -r datei; do + # Überprüfe, ob der "title"-Tag vorhanden ist + title=$(mediainfo --Inform="General;%Title%" "$datei") + #echo "$title" + if [ -z "$title" ]; then +# echo "KEIN TITEL $title für $datei" + # Extrahiere den Dateinamen ohne Erweiterung + dateiname=$(basename "$datei" .mp3) + # Setze den Dateinamen als "title"-Tag + sudo id3v2 -t "$dateiname" "$datei" + sudo id3v2 -a " " "$datei" + echo "Titel-Tag gesetzt auf: $dateiname für Datei: $datei" + fi +done diff --git a/scripts/music.m3u b/scripts/music.m3u new file mode 100644 index 0000000..1c19e17 --- /dev/null +++ b/scripts/music.m3u @@ -0,0 +1,127 @@ +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Deliverance Series No3 Shackleton [09 Jan 2015] rjbst/2 In Norwegen Ganz Verwegen Shackleton.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/wires-lauren-duffus.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Infancia TardÃa Finger Blas [11 Nov 2017] oj6tm/2 Sai Fai Drams To Moebius Finger Blas.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Infancia TardÃa Finger Blas [11 Nov 2017] oj6tm/1 Brtension Finger Blas.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/melodious-monk-hakuna-kulala.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Deliverance Series No3 Shackleton [09 Jan 2015] rjbst(1)/2 In Norwegen Ganz Verwegen Shackleton.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/L039aube Viendra Cheval De Trait [17 Feb 2024] f6ml0/2 J039ai FrÃlà Sa Main Cheval De Trait.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/L039aube Viendra Cheval De Trait [17 Feb 2024] f6ml0/1 El Lenn Cheval De Trait.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/El Drogado Tha Swamp Fam [02 Jun 2022] nzosa/2 Light It Lil Fry.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/El Drogado Tha Swamp Fam [02 Jun 2022] nzosa/1 Enter Da Swamp Swamp Wizard Da Regulator OG.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/She039s So Cool Wet Kiss [10 May 2022] s2k2c/2 Jerk Wet Kiss.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/She039s So Cool Wet Kiss [10 May 2022] s2k2c/1 Nobody Has To Know Wet Kiss.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/juergenpaape-so-weit-wie-noch-nie-dettinger-mix(1)_mp3.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/El Drogado Tha Swamp Fam [02 Jun 2022] nzosa(1)/2 Light It Lil Fry.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/El Drogado Tha Swamp Fam [02 Jun 2022] nzosa(1)/1 Enter Da Swamp Swamp Wizard Da Regulator OG.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Bulie Jordeaux Visions Bulie Jordeaux [05 Jul 2024] f3iwd/1 Vacarme Grande Rousse Disques.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Bulie Jordeaux Visions Bulie Jordeaux [05 Jul 2024] f3iwd/2 Le Volcan Grande Rousse Disques.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Legendo Lutto Lento [05 Feb 2021] 9ydwg/1 Intro Lutto Lento.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Legendo Lutto Lento [05 Feb 2021] 9ydwg/2 Mortal Fools Lutto Lento.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Inna Babalon John T Gast [20 Mar 2016] pubbj/1 Those Secluded Preferences John T Gast.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/1-of-3-kelly-lee-owens.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Mimi Dj Bobo1 [07 Jan 2020] uhxhj/1 Stubborn Sunshine Dj Bobo1.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Mimi Dj Bobo1 [07 Jan 2020] uhxhj/2 Botanic 2511 Dj Bobo1.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Tearless Amnesia Scanner [19 Jun 2020] 7u70w/2 As Tearless Feat Lalita Amnesia Scanner.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Tearless Amnesia Scanner [19 Jun 2020] 7u70w/1 As Enter Amnesia Scanner.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Future_Perfect_(youconvert.net).mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Tell Them That You Love Them Zoe Heselton [21 Jul 2023] 48aew/2 Introduction Salt Water Ritual Urin Gargarism Records.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Tell Them That You Love Them Zoe Heselton [21 Jul 2023] 48aew/1 Hello Urin Gargarism Records.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Folk Ultramarine [13 Nov 2020] 33kbg/1 Lobster Foam On A Wave.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Folk Ultramarine [13 Nov 2020] 33kbg/2 Antiseptic Foam On A Wave.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Fiesta En El VacÃo amp Helen Island Atarraya Helen Island [14 Jun 2024] 48xz0/1 Intro Helen Island.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Leoni Leoni Leoni Leoni [03 Jun 2022] 9omhz/2 Easyjet Leoni Leoni.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Leoni Leoni Leoni Leoni [03 Jun 2022] 9omhz/1 Figged Si Sich Frau Schluchter Leoni Leoni.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/More Than A Woman Kelly Lee Owens [07 Nov 2017] 6fsl9/2 More Than A Woman Klo Remix Kelly Lee Owens.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/More Than A Woman Kelly Lee Owens [07 Nov 2017] 6fsl9/1 More Than A Woman Kelly Lee Owens.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/They Are Textural Sha Ru [29 Feb 2024] gjj1p/1 Ona Sha Ru.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/They Are Textural Sha Ru [29 Feb 2024] gjj1p/2 Not Your Steps Sha Ru.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/leo_selecta/R Vincenzo - Haru.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/leo_selecta/Mawtini .mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/leo_selecta/Maibaum - Grande Albero Buono Magico Uoma.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/leo_selecta/Susobrino - SU/Susobrino, Dyce - SU - 02 Beberte.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/leo_selecta/Susobrino - SU/Susobrino, Lisandro Skar - SU - 03 Ha Muerto.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/leo_selecta/Susobrino - SU/Susobrino, Ngenko - SU - 01 Florecer.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/leo_selecta/helen island - fiesta en el vacio/helen island - fiesta en el vacío & helen island - ATARRAYA - 03 ATARRAYA.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/leo_selecta/helen island - fiesta en el vacio/helen island - fiesta en el vacío & helen island - ATARRAYA - 05 TU DONCELLA (INSTRU).mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/leo_selecta/helen island - fiesta en el vacio/helen island - fiesta en el vacío & helen island - ATARRAYA - 04 EN TI ES DE NOCHE.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/leo_selecta/helen island - fiesta en el vacio/helen island - fiesta en el vacío & helen island - ATARRAYA - 01 INTRO.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/leo_selecta/helen island - fiesta en el vacio/helen island - fiesta en el vacío & helen island - ATARRAYA - 02 TU DONCELLA.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/leo_selecta/My Blood is Palestinian Dami Falasteeni Translation.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/leo_selecta/Agazero - Kurone Baile.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/leo_selecta/06.FIESTA EN EL VACIO avec LASZLO - Trix.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/leo_selecta/Sunchaser - Witness.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/leo_selecta/Beatrix Weapons - NOT REAL LIFE IS MY REAL FRIEND.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/leo_selecta/Abu AMA - LAC.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/leo_selecta/helen island - lia$$e 2 MP3 320/helen island - lia$$e 2 - 06 no witness.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/leo_selecta/helen island - lia$$e 2 MP3 320/helen island - lia$$e 2 - 09 it's the end.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/leo_selecta/helen island - lia$$e 2 MP3 320/helen island - lia$$e 2 - 02 HOOD IN MAY.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/leo_selecta/helen island - lia$$e 2 MP3 320/helen island - lia$$e 2 - 05 the alarm guy.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/leo_selecta/helen island - lia$$e 2 MP3 320/helen island - lia$$e 2 - 07 My Bestie.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/leo_selecta/helen island - lia$$e 2 MP3 320/helen island - lia$$e 2 - 01 liass2 intro.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/leo_selecta/helen island - lia$$e 2 MP3 320/helen island - lia$$e 2 - 08 alice dj.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/leo_selecta/helen island - lia$$e 2 MP3 320/helen island - lia$$e 2 - 04 Hood in May 2.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/leo_selecta/helen island - lia$$e 2 MP3 320/helen island - lia$$e 2 - 03 i'd like to become a member.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/leo_selecta/aya - Lip Flip/aya - Lip Flip - 02 Leftenant Keith.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/leo_selecta/aya - Lip Flip/aya - Lip Flip - 03 Dexxy Is A Midnight Runner.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/leo_selecta/aya - Lip Flip/aya & Ecko Bazz - Lip Flip - 01 Essente!.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/leo_selecta/aya - Lip Flip/aya - Lip Flip - 04 Lip Flip (ft. LOFT).mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/leo_selecta/Sea Sick Lyric Video.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/leo_selecta/volquete - JAIJIU -v- Wachichorro - El triki triki por la cola.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/leo_selecta/Thomass Jackson - Alien Armando.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/leo_selecta/Amplify Palestine BDS Mixtape - Elder Ones - Dance of the Subaltern.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/leo_selecta/Fiesta en el Vacio - Serendip Lab 10 ans (SER011) - 71 L'Aspartame.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/leo_selecta/volquete - STRIDAH -v- McCaco - Bugutu.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/leo_selecta/Swordman Kitala & Tim Karbon - Dingidingi Dole.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/leo_selecta/Rosal - fiesta en el vacio/tmr045 - fiesta en el vacio - a4-mettez moi au travail.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/leo_selecta/Rosal - fiesta en el vacio/tmr045 - fiesta en el vacio - a5-la menina.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/leo_selecta/Rosal - fiesta en el vacio/tmr045 - fiesta en el vacio - a1-grido (antonia pozzi).mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/leo_selecta/Rosal - fiesta en el vacio/tmr045 - fiesta en el vacio - b2-falseta por seguiriya.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/leo_selecta/Rosal - fiesta en el vacio/tmr045 - fiesta en el vacio - b1-canto de ordeño.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/leo_selecta/Rosal - fiesta en el vacio/tmr045 - fiesta en el vacio - b4-avec dingue.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/leo_selecta/Rosal - fiesta en el vacio/tmr045 - fiesta en el vacio - a2-rosal.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/leo_selecta/Rosal - fiesta en el vacio/tmr045 - fiesta en el vacio - b5-le pont.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/leo_selecta/Rosal - fiesta en el vacio/tmr045 - fiesta en el vacio - a3-dimmi.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/leo_selecta/Rosal - fiesta en el vacio/tmr045 - fiesta en el vacio - b3-histoire du pourceau.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/leo_selecta/Bella Cuts - Until Everybody Is Free.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/leo_selecta/3-DIGITS - Sabaweli (Brodinski Remix).mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/leo_selecta/bukahara_320.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/leo_selecta/R Vincenzo - R Vincenzo & Dannyhell - Corridors of Time (MTG).mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/leo_selecta/Loto Retina - 2016 - sens/05_artefact parfumé.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/leo_selecta/Loto Retina - 2016 - sens/01_zoom gustatif.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/leo_selecta/Loto Retina - 2016 - sens/03_obsolescence auditive.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/leo_selecta/Loto Retina - 2016 - sens/02_vision flottante.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/leo_selecta/Loto Retina - 2016 - sens/04_évasion tactile.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/leo_selecta/La preyra - La Preyra/La preyra - La Preyra - 14 14 Mazurkas.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/leo_selecta/La preyra - La Preyra/La preyra - La Preyra - 07 07 Rossignolet sauvage.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/leo_selecta/La preyra - La Preyra/La preyra - La Preyra - 09 09 Cantiques (avec Simon Drouhin).mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/leo_selecta/La preyra - La Preyra/La preyra - La Preyra - 11 11 Frisson.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/leo_selecta/La preyra - La Preyra/La preyra - La Preyra - 05 05 La barca vira - Rigodon du Valgaudemar.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/leo_selecta/La preyra - La Preyra/La preyra - La Preyra - 04 04 Bourrée à la Dédée.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/leo_selecta/La preyra - La Preyra/La preyra - La Preyra - 06 06 Marguerite elle est malade (avec Clémence Cognet).mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/leo_selecta/La preyra - La Preyra/La preyra - La Preyra - 01 01 la badoise - Polka piquée.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/leo_selecta/La preyra - La Preyra/La preyra - La Preyra - 03 03 Le départ pour la Provence.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/leo_selecta/La preyra - La Preyra/La preyra - La Preyra - 10 10 Rigodon des quatre cordons.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/leo_selecta/La preyra - La Preyra/La preyra - La Preyra - 08 08 Bourrée d'Arthon - Bourrée à Fleuret.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/leo_selecta/La preyra - La Preyra/La preyra - La Preyra - 02 02 Mie Jeanneton.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/leo_selecta/La preyra - La Preyra/La preyra - La Preyra - 13 13 Les filles sont promises.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/leo_selecta/La preyra - La Preyra/La preyra - La Preyra - 12 12 Salut à la mariée.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/leo_selecta/Amplify Palestine BDS Mixtape - Dakn - difa3an 3an nafs.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/leo_selecta/V.A. - Don't Panic 2 - 04 Fiesta En El Vacio - No Sabes.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/leo_selecta/Palestine Will Rise.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/leo_selecta/Rajieen OFFICIAL MUSIC VIDEO.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/leo_selecta/11 - Fiesta en El Vacio - Mauricio.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/leo_selecta/01-maquis_son_sistem-cortegi_astral-z0ne.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/leo_selecta/Susobrino - Pocualeíto/Susobrino - Pocualeíto - 06 Killay.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/leo_selecta/Susobrino - Pocualeíto/Susobrino - Pocualeíto - 02 Jii - Tío Carbón.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/leo_selecta/Susobrino - Pocualeíto/Susobrino - Pocualeíto - 01 El Aguante.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/leo_selecta/Susobrino - Pocualeíto/Susobrino - Pocualeíto - 05 El Camino Refleja.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/leo_selecta/Susobrino - Pocualeíto/Susobrino - Pocualeíto - 03 Wasos Ft. Dengue Dengue Dengue.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/leo_selecta/Susobrino - Pocualeíto/Susobrino - Pocualeíto - 04 La Semilla.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/leo_selecta/Broosnica - Love on the Run.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/leo_selecta/[ACIWAX55] Musique Chienne - Acidebout - 2021/Musique Chienne - Acidebout - 07 - Une Drôle De Blague (Roy Of The Ravers Remix).mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/leo_selecta/[ACIWAX55] Musique Chienne - Acidebout - 2021/Musique Chienne - Acidebout - 05 - Grosse Pierre (Lesinge Remix).mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/leo_selecta/[ACIWAX55] Musique Chienne - Acidebout - 2021/Musique Chienne - Acidebout - 01 - Billy's House.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/leo_selecta/[ACIWAX55] Musique Chienne - Acidebout - 2021/Musique Chienne - Acidebout - 06 - Cocktail De Voix (Aftawerks Remix).mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/leo_selecta/[ACIWAX55] Musique Chienne - Acidebout - 2021/Musique Chienne - Acidebout - 03 - Une Drôle De Blague.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/leo_selecta/[ACIWAX55] Musique Chienne - Acidebout - 2021/Musique Chienne - Acidebout - 04 - Baka.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/leo_selecta/[ACIWAX55] Musique Chienne - Acidebout - 2021/Musique Chienne - Acidebout - 02 - Grosse Pierre.mp3 diff --git a/scripts/music.txt b/scripts/music.txt new file mode 100644 index 0000000..5dfeea9 --- /dev/null +++ b/scripts/music.txt @@ -0,0 +1,915 @@ +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Ylva Falk - Inner garden/Yōkai.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Ylva Falk - Inner garden/Mad Love.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Ylva Falk - Inner garden/Inner Garden.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Ylva Falk - Inner garden/Honey Bb Love.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Ylva Falk - Inner garden/Lost In Love.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Ylva Falk - Inner garden/Bodhi.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Ylva Falk - Inner garden/Calling.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Ylva Falk - Inner garden/Chill Pill.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Ylva Falk - Inner garden/Tänd Ett Ljus.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Ylva Falk - Inner garden/The Door.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Lambda/01 - Release +ϕ.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Deliverance Series No3 Shackleton [09 Jan 2015] rjbst/2 In Norwegen Ganz Verwegen Shackleton.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Naomie Klaus (2022) - A Story of a Global Disease/01 - Can I Be Your Geisha.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Naomie Klaus (2022) - A Story of a Global Disease/06 - Can You Tell Me What Is Micronet.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Naomie Klaus (2022) - A Story of a Global Disease/04 - Tourism Workers (Departure).mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Naomie Klaus (2022) - A Story of a Global Disease/05 - No More Mistakes With Drumkit.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Naomie Klaus (2022) - A Story of a Global Disease/07 - Walk With Your Romance (bonus track).mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Naomie Klaus (2022) - A Story of a Global Disease/03 - Tourism Workers (Arrival).mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Naomie Klaus (2022) - A Story of a Global Disease/02 - Crocodile Skin Shoes.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Kyyberwall-Dogs_Dont_Gossip-EP-WEB-2023-ENRiCH/02-kyyberwall-gil_boy_son-8f8af697.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Kyyberwall-Dogs_Dont_Gossip-EP-WEB-2023-ENRiCH/05-kyyberwall-underscore_____-c507985d.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Kyyberwall-Dogs_Dont_Gossip-EP-WEB-2023-ENRiCH/04-kyyberwall-dogs_dont_gossip-dd255f22.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Kyyberwall-Dogs_Dont_Gossip-EP-WEB-2023-ENRiCH/03-kyyberwall_susu_laroche-55ff-5362e9d7.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Kyyberwall-Dogs_Dont_Gossip-EP-WEB-2023-ENRiCH/01-kyyberwall-not_far_from_the_tree-96475129.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Kyyberwall-Dogs_Dont_Gossip-EP-WEB-2023-ENRiCH/06-kyyberwall-drone_drum_function-4a34059a.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/MALSJÖ - C_C.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Theophilus London - Whiplash (feat. Tame Impala).mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Rejjie snow ft king krule - So sick notes.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Janet Jackson - If (Kaytranada Remix) HD, Janet Jackson Kaytranada - If I was your Girl.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Flying Lotus - More (feat. Anderson .Paak) [Official Video].mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Crooked Colours - I'll Be There [Official Audio].mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Public Memory - Ecco.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/nevrland - nevrland2.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/George Benson The Ghetto.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Fever Ray 'Triangle Walks'.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Chaka Khan - Like Sugar (Official Video).mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Tristan Bründler - Claymore.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Pot de fer.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Roosevelt - Montreal (Official Video).mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Findlay - Off & On (Official Video).mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Ross From Friends - Talk To Me You'll Understand.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/KOKOROKO - Adwa.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Strawberry Blue.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Kalis - Montagnetagne.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/PAVANE - Pélléas.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Yaya Jalloux - Đêm Đông.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/David August - J.B.Y..mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Genesis Owusu drive slow.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/babywok - DO IT LIKE ME (prod. XXHYZ).mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Marie Davidson - 'So Right'.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Young Fathers - Toy (Official Video).mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Marina Herlop - abans abans.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Ekman - Antenna's Overture.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Jürgen Paape - Ausklang.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Doublscotch - Somos pacificos.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Le Frit - Pixel Soup [traverse].mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Dengue Dengue Dengue - Dubcharaca.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/waterfall.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Gospel Vibes - 말라기 42 Malachi 42 [HD].mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Yaya Jalloux - Silencio.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/ptite soeur - nepas cliquer.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Kai Whiston - HELL FOR OURSELVES STEMS 146BPM.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Inside Out.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/wires-lauren-duffus.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Decide Decide.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Moscoman - Devoue.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Eddy Woogy X Oster Lapwass - La Vache.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Agar Agar - Symbiose.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/eydn - red bones.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/CHAT GPT - LAST FLIGHT.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/DJ Assid - Amareto.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Curtis Mayfield - Move On Up.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Fever Ray - Mama's Hand (Official Audio).mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Geo Balasta - Coco's Dead.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Delicate Steve - Afria Talks To You.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Gaby Hernandez - Mangoes and Pears.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Fatima Yamaha - Half Moon Rising.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Gilberto Gil - Palco.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Sir Spyro - Topper Top ft. Teddy Bruckshot, Lady Chann and Killa P (Disaffected Bootleg).mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/alt-J - Hit Me Like That Snare (feat. Rejjie Snow) (Rejjie Snow Version) [Official Audio].mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/XOLOT - Resplandor.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/I-F Space Invaders - Are smoking Grass.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Eldorado 54.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Real J - One Love.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/sangkakala-malaikat-heith.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/angel hunt - Skulp Haunt.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/[Premiere] Agôn & Céline B - Drifted (out on Bait).mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/FARAH DANCING GIRLS.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/El Presidente Without You.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Dengue Dengue Dengue - Buscando.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Green Dollar Bills.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Coldcut - 'True Skool'.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Vessel - Red Sex.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Oppenheimer Analysis - The Devil's Dancers.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/LAVA LA RUE - LETRA (w Tariq Disu).mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/mula - COURAGE.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Somewhere - ML Buch.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/objectif blue - chaos discoideum.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Lukid - Drip.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/DJ RISH - I Won't Forget.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Genesis Owusu Goondocks CBR ZOO II (Sabretooth).mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/[Premiere] Sòn Du Maquís - Sidobre Caòs (out September 6th on Egregore).mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Wizaard - Mountain Of The Underground.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/chmura - Saba Flip.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Soundtrack (Song Credits) #5 Too Late to Turn Back Now BlacKkKlansman (2018) HQ.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Premiere_ Officium - Oiseaux Parleurs [TMR044].mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Kalis - La Chasse Aux Loups.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Trentemøller River In Me.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Boards of Canada - Dayvan Cowboy.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Mount Kimbie - Marilyn ft. Micachu.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Himera - Faint (Feat. Instupendo) (UNSLS006).mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Just Reach For The Stars.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/She Past Away - Rituel.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Lusine - Everything Under the Sun.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Peggy Gou - Starry Night.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Sampa The Great - Energy (feat. Nadeem Din-Gabisi).mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/GB - WORLD IN US.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Tinariwen (+IOI) - Ténéré Tàqqàl (what has become of the Ténéré).mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Jonquera - B5 Rouge De L'Ouest.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/The Knife - Got 2 Let U (Deep Cuts 12).mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/henri-salvador-et-des-mandolines-1974.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Glint - 2 times too.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/J'sais pas - Johan Papaconstantino.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/That Don't Make It Junk.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/dovecot - sobindo dub.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Genesis Owusu WUTD (Official Video).mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/melodious-monk-hakuna-kulala.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/The Comet Is Coming - Summon The Fire.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/DJ Startup - A Mon Jardin Croist La Fleur Souveraine.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Chesus - Special (Original Mix).mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Yoong - Joyride.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/12. Snoop Dogg - Gangbang Rookie feat. Pilot.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Rip Swirl n Ydegirl - Let's Make Out.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Detente & Nevrland - Always Stressed.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Photay - Illusion of Seclusion.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Mother - frederique sueur.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/LA CHICA - THE SEA.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Boe Strummer - Noise.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Lucy Sissy Miller - Winds Too.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Nighttime Stroll - E's Jammy Jams.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Jayda G - 'Stanley’s Get Down (No Parking on the DF)' (Official Video).mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Josman - Un Zder, Un Thé (Clip Officiel).mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Still Corners - The Trip.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Jazz Labeaux - Yesterday.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Grimes Genesis.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Ross From Friends - The Beginning.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Jonathan Bree - You're So Cool.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Axine M - grind3.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Out in Myself.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/A$AP Rocky - Praise The Lord (Da Shine) (Official Video) ft. Skepta.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Despina - City in Plastic [MK PREMIERE].mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/WPR069 - Sorrow - Dark Zone.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Jazz Lambeaux - Xmas Will Never Happen Again.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Coldcut - 'Only Heaven feat. Roots Manuva'.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Kikagaku Moyo - Dripping Sun.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Jazz Lambeaux - Lexus Waltz in B-Flat Major.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Human Pattern - La Demarrante (Création Originale).mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Népal - Rien d'Spécial #LaxVision.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Lava La Rue - Widdit A COLORS SHOW.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Yaeji - Guap (Official HD Video) [GODMODE].mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Evolution.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/mylene-farmer-california-megalo-mania-remix.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Cabaret Nocturne - Blood Walk (Original Mix).mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Amnesia Scanner & Freeka Tet - Ride (PAN 139).mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/aYia - Slow (Official Video).mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Avril - Velvet Blues (Nova Edit) out in 2002 on Fcom.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/juergenpaape-so-weit-wie-noch-nie-dettinger-mix(1)_mp3.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/LTJ Bukem - Atlantis (I Need You) (Original 12' Mix).mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/abel31 - 10 balles ft. H JeuneCrack.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Vince Staples - Norf Norf (Explicit) (Official Video).mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Tinariwen - Zawal (feat. Warren Ellis, Noura Mint Seymali, Jeiche Ould Chighaly).mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Coldcut - Timber.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Holding On.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/aigue morte - B4 - Choco Pie Shy.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Trendle Ring – Crèche (Total Forgiveness).mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/King Doudou - Chase The Red Lion.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/LAVA LA RUE - TWENNYFOUR.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/H369 x DJ Traytex - Sundance Chicken [RAWS4].mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Suuns - Arena.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/paolo-conte-sparring-partner.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Suuns - Pie IX (Official Video).mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Crumb - Locket [Official Video].mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/LIFELIKE Your Tiny Mind.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Nosaj Thing - Sister (Official Stream).mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/The Killing Moon.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/EARTHGANG - Monday ft. Mac Miller.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/abel31 - 94express ft. wasting shit (co-prod. by Vilhelm.).mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Delicate Steve- Butterfly.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/The Chemical Brothers - Got To Keep On (Official Video).mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Blondie - Heart Of Glass (Official Music Video).mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/John Maus - The Law (2003) - extended.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/bientôt jamais estragon.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Skepta - Shutdown (Disaffected Bootleg).mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Altın Gün - Süpürgesi Yoncadan.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Yoong - I Can Hear Music.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/MM PREMIERE 008 _ Fiesta En El Vacio - Dimmi [Teenage Menopause Rds].mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/chmura - Fingering The Trigger w_ Montycler [Headbang Society Premiere].mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Mr Oizo - Dolce Vita feat Phra (Lyrics Video).mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/A$AP Rocky - L$D (LOVE x $EX x DREAMS).mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/mr oizo - Nuque.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Beat Spacek - 'Alone In Da Sun'.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/belmont girl - Wild Horses.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/PREMIERE_ Formella - dripstep (Bait).mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/𝖕𝖗𝖊𝖒𝖎𝖊𝖗𝖊#208 📢 6.R.M.E - Broken Doll [EZ-rec].mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/A$AP Rocky - Fukk Sleep (Official Audio) ft. FKA twigs.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Buju Banton - Hills and valleys.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Vince Staples - Crabs In A Bucket (Official Audio).mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Basile3 & Deena Abdelwahed - Hyaluron [Taken from FREE RADICALS].mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Sébastien Forrester - Strife.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Deathpact - Danger.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Delicate Steve - Sugar splash.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/MATZO & PAULI - Matzo & Pauli EP A1 (Viewlexx V-012).mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Genesis Owusu Sideways (Official Video).mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Apparat - Dawan (Official).mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Moussa - Cabrioli (Clip Officiel).mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Deep Sea Mystery.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Bronski Beat - Smalltown Boy (Official Music Video).mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/(Premiere) Amor Fati - La Lueur de l'Aube.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/babywok - Club Goin Up ft. StavoDinero x OneEyeQ.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Flavien Berger - Contre-Temps.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/abel31 - 2031 ft. winnterzuko.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Little Simz - Venom A COLORS SHOW.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/WEEKEND WOLVES - ROOSTERS.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Farah - Law Of Life.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Migu - Moon Soul.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Molly Johnson - Melody (2002).mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/VIDEO DJ 916 - Walking.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/100gecs - Hand Crushed By A Mallet (VISLA Edit).mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Pusha T - If You Know You Know.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/𝖕𝖗𝖊𝖒𝖎𝖊𝖗𝖊#099 📢 Stacktrace - Meek A Chooce [Délices du Midi].mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Swordman Kitala & Tim Karbon - Highlandrum.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Hugg.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Midnight In A Perfect World @djsn3s #footwork.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Ori - Half Human.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Everytime I Hit Myself In The Head I Think I'm In Paris - Photay.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/SiR - D'Evils.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/La copine de flipper - Le vent.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Bracco - Stop Dancing.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/DWIG - Orange Evening Laut & Luise (LUL007).mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/dovecot - Balusters.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Oleic.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/winnterzuko - Heart (prod. by Neil).mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/DJ GÄP - Prada Edit (Raye).mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/The Knife - You Make Me Like Charity.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Damn It Feels Good (To Be a Gangster).mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Molly Johnson - Summertime.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/aigue morte - A1 - Rétroviseur.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/BAVOOG AVERS - PANNACOTTA.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/heading - Wire in the Cushion.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Josman - Dans le vide (Clip officiel).mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/DJ Startup - la taverne vide.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/A3 Tonito Yama - Ocytocine Aussitôt Fait.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Cry me a river - Julie London.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Alogon - Diogene.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Real Friends.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Rogergoon - hungry 4 Life.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/64couette - malone in the middle.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Mick Jenkins - What Am I To Do (Produced by Kaytranada) A COLORS SHOW.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Ross From Friends - 'Pale Blue Dot'.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/passinho.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Lusine - Two Dots.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Vince Staples - Blue Suede (Explicit).mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Kelly Lee Owens – Anxi (Official).mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/00 music without metadataas/Claptone - The Drums (Din Daa Daa) ft. George Kranz (Official Video).mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Ou du monde/02 Kid Island.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Ou du monde/01 Open Way Up High.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Ou du monde/03 Magic Fiesta.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Ou du monde/04 Summer's Always Coming.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Ou du monde/05 Ou du monde.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Ou du monde/06 Invisible Dolphins.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/An Island In The Moon/04 The Watchmaker.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/An Island In The Moon/02 Market Of The Lost Illusions.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/An Island In The Moon/07 Music In A Small Room.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/An Island In The Moon/06 The Voice Of An Ancient Bard.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/An Island In The Moon/01 An Island In The Moon.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/An Island In The Moon/03 Madjound.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/An Island In The Moon/05 Visions Of The Daughter Of Albion.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/DTW - Jardino/La Cambo.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/DTW - Jardino/Vaqui Lo Polit Mes De Mai.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/DTW - Jardino/La Pastorella.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/DTW - Jardino/Le Rossignol Il Chante.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/DTW - Jardino/Rossignolet Des Bois.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/DTW - Jardino/Canto Delle Lavandaie Del Vomero.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/DTW - Jardino/Canto Street.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/DTW - Jardino/Jardino.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/DTW - Jardino/Le Lundi.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/DTW - Jardino/Montagne.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/DTW - Jardino/Interlude De Note.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/DTW - Jardino/Interlude Rigotherapie.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/DTW - Jardino/Interlude Refilade.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Nearly God/10 Yoga.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Nearly God/11 Judas.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Nearly God/12 Children's Story.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Nearly God/05 I Be The Prophet.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Nearly God/03 Together Now.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Nearly God/09 I Sing For You.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Nearly God/06 Make A Change.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Nearly God/02 Poems.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Nearly God/07 Black Coffee.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Nearly God/08 Bubbles.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Nearly God/04 Keep Your Mouth Shut.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Nearly God/01 Tattoo.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/CLARA LE MEUR - Hier à la plage/CLARA LE MEUR - Hier à la plage - 07 B3 - L'hiver c'est un calvaire.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/CLARA LE MEUR - Hier à la plage/CLARA LE MEUR - Hier à la plage - 08 B4 - Le soleil chante à l'horizon.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/CLARA LE MEUR - Hier à la plage/CLARA LE MEUR - Hier à la plage - 02 A2 - T'as fait un glitch.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/CLARA LE MEUR - Hier à la plage/CLARA LE MEUR - Hier à la plage - 06 B2 - Bêta dans tes rêves.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/CLARA LE MEUR - Hier à la plage/CLARA LE MEUR - Hier à la plage - 04 A4 - La cadence des éléphants.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/CLARA LE MEUR - Hier à la plage/CLARA LE MEUR - Hier à la plage - 03 A3 - Le serveur du désert.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/CLARA LE MEUR - Hier à la plage/CLARA LE MEUR - Hier à la plage - 05 B1 - Postillons-.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/CLARA LE MEUR - Hier à la plage/CLARA LE MEUR - Hier à la plage - 01 A1 - Arrêter ce carnage.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Siu Mata & Amor Satyr Irie Steppaz/Flicker Riddim.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Siu Mata & Amor Satyr Irie Steppaz/High Grade.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Siu Mata & Amor Satyr Irie Steppaz/Twinkle.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Siu Mata & Amor Satyr Irie Steppaz/Kush Pressure.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Lamanauts - Lamanauts/Whale-Sharknado Variations.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Lamanauts - Lamanauts/Loxodon Oil Provisioners.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/13 Sleepline (New Dreams Ltd.)/19 Oceanus.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/13 Sleepline (New Dreams Ltd.)/15 No Stone.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/13 Sleepline (New Dreams Ltd.)/04 Theatré Virtua.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/13 Sleepline (New Dreams Ltd.)/07 Blue Earth.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/13 Sleepline (New Dreams Ltd.)/12 Nimbus Stage Select.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/13 Sleepline (New Dreams Ltd.)/10 Walled City.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/13 Sleepline (New Dreams Ltd.)/03 Muku Grid.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/13 Sleepline (New Dreams Ltd.)/20 Casino Virtua.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/13 Sleepline (New Dreams Ltd.)/14 Afterdawn.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/13 Sleepline (New Dreams Ltd.)/17 Dig Dream.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/13 Sleepline (New Dreams Ltd.)/01 All Day - Mindprison.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/13 Sleepline (New Dreams Ltd.)/13 Rapefear.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/13 Sleepline (New Dreams Ltd.)/06 Air.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/13 Sleepline (New Dreams Ltd.)/02 Nakano #18.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/13 Sleepline (New Dreams Ltd.)/11 Into the Light (Night).mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/13 Sleepline (New Dreams Ltd.)/05 Avalon Reverse.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/13 Sleepline (New Dreams Ltd.)/18 Diskloader.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/13 Sleepline (New Dreams Ltd.)/08 Surrounded.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/13 Sleepline (New Dreams Ltd.)/09 Sleepline (Sleepfear).mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/13 Sleepline (New Dreams Ltd.)/16 Seed of Life New Media.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Maquis Son Systèm - Santuari/Dread Mòdenc.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Maquis Son Systèm - Santuari/Santu Ri Dub.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Maquis Son Systèm - Santuari/Sentiers.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Maquis Son Systèm - Santuari/Nasse.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Infancia TardÃa Finger Blas [11 Nov 2017] oj6tm/2 Sai Fai Drams To Moebius Finger Blas.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Infancia TardÃa Finger Blas [11 Nov 2017] oj6tm/1 Brtension Finger Blas.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Gustave Retour - Cérémonie en vert/Aller Sans Retour.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Gustave Retour - Cérémonie en vert/Interlude (Seconde Peau).mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Gustave Retour - Cérémonie en vert/Les Plans De L'architecte.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Gustave Retour - Cérémonie en vert/L’eau Lavera Le Reste.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Gustave Retour - Cérémonie en vert/Métempsychose.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Gustave Retour - Cérémonie en vert/Nouvelles Croyances.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Gustave Retour - Cérémonie en vert/Étrange Savoir-Faire.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Gustave Retour - Cérémonie en vert/Les Battements Du Fleuve.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Gustave Retour - Cérémonie en vert/Le Bruit De Trop.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Gustave Retour - Cérémonie en vert/Cérémonie En Vert.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Organizatsiya/besoins premiers - A4. Organizatsiya - A Song For Marius.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Organizatsiya/besoins premiers - A1. Organizatsiya & Nikita von Tiraspol - Die Idee der Toleranz.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Organizatsiya/besoins premiers - B4. Organizatsiya - A shade of the Princess Z' Castel.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Organizatsiya/besoins premiers - A3. Organizatsiya - We cannot promise you privacy.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Organizatsiya/besoins premiers - B3. Organizatsiya - Sur la Digue.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Organizatsiya/besoins premiers - B2. Organizatsiya & Benoît B - Avatha Subumbra..mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Organizatsiya/besoins premiers - A2. Organizatsiya & Elen Huynh - Ophélia.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Organizatsiya/besoins premiers - B1. Organizatsiya & Jules Rouxel - Une comptine pour Jeanne.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/ACTE BONTÉ - Service de Nuit/ACTE BONTÉ - Service de Nuit - 03 A3 - Les fêtes.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/ACTE BONTÉ - Service de Nuit/ACTE BONTÉ - Service de Nuit - 01 A1 - Don't you ever.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/ACTE BONTÉ - Service de Nuit/ACTE BONTÉ - Service de Nuit - 04 A4 - Death is a long sleep (J.Haydn cover).mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/ACTE BONTÉ - Service de Nuit/ACTE BONTÉ - Service de Nuit - 06 B2 - Veux-tu.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/ACTE BONTÉ - Service de Nuit/ACTE BONTÉ - Service de Nuit - 02 A2 - Canal trop tard.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/ACTE BONTÉ - Service de Nuit/ACTE BONTÉ - Service de Nuit - 05 B1 - 梨の木な下.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/ACTE BONTÉ - Service de Nuit/ACTE BONTÉ - Service de Nuit - 08 B4 - La nuit j'occis.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/ACTE BONTÉ - Service de Nuit/ACTE BONTÉ - Service de Nuit - 07 B3 - Que tu es triste (feat. TG Gondard).mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/REGIS TURNER - Des fleurs séchées dans la résine/REGIS TURNER - Des fleurs séchées dans la résine - 03 A3 - rien.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/REGIS TURNER - Des fleurs séchées dans la résine/REGIS TURNER - Des fleurs séchées dans la résine - 01 A1 - labyrinthe miroir.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/REGIS TURNER - Des fleurs séchées dans la résine/REGIS TURNER - Des fleurs séchées dans la résine - 05 A5 - j'écoute rien.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/REGIS TURNER - Des fleurs séchées dans la résine/REGIS TURNER - Des fleurs séchées dans la résine - 06 A6 - petite mémoire.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/REGIS TURNER - Des fleurs séchées dans la résine/REGIS TURNER - Des fleurs séchées dans la résine - 04 A4 - tu me parles plus (avec Charlène Darling).mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/REGIS TURNER - Des fleurs séchées dans la résine/REGIS TURNER - Des fleurs séchées dans la résine - 02 A2 - le message.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/REGIS TURNER - Des fleurs séchées dans la résine/REGIS TURNER - Des fleurs séchées dans la résine - 08 B2 - des fleurs séchées dans la résine.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/REGIS TURNER - Des fleurs séchées dans la résine/REGIS TURNER - Des fleurs séchées dans la résine - 09 B3 - mémo vocal 20211114.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/REGIS TURNER - Des fleurs séchées dans la résine/REGIS TURNER - Des fleurs séchées dans la résine - 07 B1 - sur l'herbe coupée.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/REGIS TURNER - Des fleurs séchées dans la résine/REGIS TURNER - Des fleurs séchées dans la résine - 10 B4 - dernière génération.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Iwa gaaden (2020) (flac)/04 - Junes Snake.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Iwa gaaden (2020) (flac)/03 - Kang Kang Kang.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Iwa gaaden (2020) (flac)/01 - Anya.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Iwa gaaden (2020) (flac)/05 - Onibi.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Iwa gaaden (2020) (flac)/02 - Outrage.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Deliverance Series No3 Shackleton [09 Jan 2015] rjbst(1)/2 In Norwegen Ganz Verwegen Shackleton.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Simple Music Experience - SIMPLE MUSIC EXPERIENCE VOL.3/Simple Music Experience - SIMPLE MUSIC EXPERIENCE VOL.3 - 24 D1 United Assholes - Dub 9#.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Simple Music Experience - SIMPLE MUSIC EXPERIENCE VOL.3/Simple Music Experience - SIMPLE MUSIC EXPERIENCE VOL.3 - 22 C6 Simplists - Euromedication.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Simple Music Experience - SIMPLE MUSIC EXPERIENCE VOL.3/Simple Music Experience - SIMPLE MUSIC EXPERIENCE VOL.3 - 13 B6 Air LQD - 3D External Existence.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Simple Music Experience - SIMPLE MUSIC EXPERIENCE VOL.3/Simple Music Experience - SIMPLE MUSIC EXPERIENCE VOL.3 - 28 D5 panoptique - Amin.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Simple Music Experience - SIMPLE MUSIC EXPERIENCE VOL.3/Simple Music Experience - SIMPLE MUSIC EXPERIENCE VOL.3 - 06 A6 Simplists - Trespass Dans L'Espace.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Simple Music Experience - SIMPLE MUSIC EXPERIENCE VOL.3/Simple Music Experience - SIMPLE MUSIC EXPERIENCE VOL.3 - 20 C4 Sacher - La Messagère.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Simple Music Experience - SIMPLE MUSIC EXPERIENCE VOL.3/Simple Music Experience - SIMPLE MUSIC EXPERIENCE VOL.3 - 19 C3 Lostsoundbytes - Saw & Smoke.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Simple Music Experience - SIMPLE MUSIC EXPERIENCE VOL.3/Simple Music Experience - SIMPLE MUSIC EXPERIENCE VOL.3 - 26 D3 Tata Toto - Le Moment (Instrumental).mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Simple Music Experience - SIMPLE MUSIC EXPERIENCE VOL.3/Simple Music Experience - SIMPLE MUSIC EXPERIENCE VOL.3 - 31 D8 Tabula Nul - Radiante Bourbe.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Simple Music Experience - SIMPLE MUSIC EXPERIENCE VOL.3/Simple Music Experience - SIMPLE MUSIC EXPERIENCE VOL.3 - 09 B2 Bear Bones, Lay Low - Contrôler La Perle.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Simple Music Experience - SIMPLE MUSIC EXPERIENCE VOL.3/Simple Music Experience - SIMPLE MUSIC EXPERIENCE VOL.3 - 14 B7 Ventre De Biche - Adesso Dammi La Mano.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Simple Music Experience - SIMPLE MUSIC EXPERIENCE VOL.3/Simple Music Experience - SIMPLE MUSIC EXPERIENCE VOL.3 - 03 A3 Théorème - Les Gifles Du Pariétal.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Simple Music Experience - SIMPLE MUSIC EXPERIENCE VOL.3/Simple Music Experience - SIMPLE MUSIC EXPERIENCE VOL.3 - 02 A2 Pleasure Principle - Mariposa.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Simple Music Experience - SIMPLE MUSIC EXPERIENCE VOL.3/Simple Music Experience - SIMPLE MUSIC EXPERIENCE VOL.3 - 16 B9 Violent Quand On Aime - Locked Streets.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Simple Music Experience - SIMPLE MUSIC EXPERIENCE VOL.3/Simple Music Experience - SIMPLE MUSIC EXPERIENCE VOL.3 - 01 A1 Amadou K7 - Makistourn.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Simple Music Experience - SIMPLE MUSIC EXPERIENCE VOL.3/Simple Music Experience - SIMPLE MUSIC EXPERIENCE VOL.3 - 29 D6 roger mpr - City Market.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Simple Music Experience - SIMPLE MUSIC EXPERIENCE VOL.3/Simple Music Experience - SIMPLE MUSIC EXPERIENCE VOL.3 - 30 D7 Fiesta En El Vacio - Use Me As Your Spaniel.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Simple Music Experience - SIMPLE MUSIC EXPERIENCE VOL.3/Simple Music Experience - SIMPLE MUSIC EXPERIENCE VOL.3 - 15 B8 United Assholes & Tamara Goukassova - Untitled.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Simple Music Experience - SIMPLE MUSIC EXPERIENCE VOL.3/Simple Music Experience - SIMPLE MUSIC EXPERIENCE VOL.3 - 32 D9 Radiante Pourpre - Salon Stellaire 2013.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Simple Music Experience - SIMPLE MUSIC EXPERIENCE VOL.3/Simple Music Experience - SIMPLE MUSIC EXPERIENCE VOL.3 - 21 C5 Techno Thriller - Affrika.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Simple Music Experience - SIMPLE MUSIC EXPERIENCE VOL.3/Simple Music Experience - SIMPLE MUSIC EXPERIENCE VOL.3 - 04 A4 Simplists - Mister Guitar.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Simple Music Experience - SIMPLE MUSIC EXPERIENCE VOL.3/Simple Music Experience - SIMPLE MUSIC EXPERIENCE VOL.3 - 12 B5 René Couteau - Hémorragie Oisive.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Simple Music Experience - SIMPLE MUSIC EXPERIENCE VOL.3/Simple Music Experience - SIMPLE MUSIC EXPERIENCE VOL.3 - 05 A5 Acid Lecointre - Solitude Exotique.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Simple Music Experience - SIMPLE MUSIC EXPERIENCE VOL.3/Simple Music Experience - SIMPLE MUSIC EXPERIENCE VOL.3 - 11 B4 Vincent Ce Soir - I Hate My Soul.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Simple Music Experience - SIMPLE MUSIC EXPERIENCE VOL.3/Simple Music Experience - SIMPLE MUSIC EXPERIENCE VOL.3 - 10 B3 UVB76 - Saint-Clair.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Simple Music Experience - SIMPLE MUSIC EXPERIENCE VOL.3/Simple Music Experience - SIMPLE MUSIC EXPERIENCE VOL.3 - 08 B1 Axel Larsen - Cartoon Patterns.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Simple Music Experience - SIMPLE MUSIC EXPERIENCE VOL.3/Simple Music Experience - SIMPLE MUSIC EXPERIENCE VOL.3 - 25 D2 Haydée - Dub Trade Center.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Simple Music Experience - SIMPLE MUSIC EXPERIENCE VOL.3/Simple Music Experience - SIMPLE MUSIC EXPERIENCE VOL.3 - 27 D4 Le Matin - Ravale 2.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Simple Music Experience - SIMPLE MUSIC EXPERIENCE VOL.3/Simple Music Experience - SIMPLE MUSIC EXPERIENCE VOL.3 - 17 C1 Valerie Smith - Assi.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Simple Music Experience - SIMPLE MUSIC EXPERIENCE VOL.3/Simple Music Experience - SIMPLE MUSIC EXPERIENCE VOL.3 - 23 C7 Goat SImulator - Se Réenterrer.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Simple Music Experience - SIMPLE MUSIC EXPERIENCE VOL.3/Simple Music Experience - SIMPLE MUSIC EXPERIENCE VOL.3 - 07 A7 Tamara Goukassova - I Don't Want To Be The One.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Simple Music Experience - SIMPLE MUSIC EXPERIENCE VOL.3/Simple Music Experience - SIMPLE MUSIC EXPERIENCE VOL.3 - 18 C2 Maria Violenza - Je Pète Ton Plan.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/L039aube Viendra Cheval De Trait [17 Feb 2024] f6ml0/2 J039ai FrÃlà Sa Main Cheval De Trait.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/L039aube Viendra Cheval De Trait [17 Feb 2024] f6ml0/1 El Lenn Cheval De Trait.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/El Drogado Tha Swamp Fam [02 Jun 2022] nzosa/2 Light It Lil Fry.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/El Drogado Tha Swamp Fam [02 Jun 2022] nzosa/1 Enter Da Swamp Swamp Wizard Da Regulator OG.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Regis Turner - un rêve dans un rêve/Regis Turner - un rêve dans un rêve - 11 B5 - soledad (avec inès di folco).mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Regis Turner - un rêve dans un rêve/Regis Turner - un rêve dans un rêve - 08 B2 - un rêve dans un rêve.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Regis Turner - un rêve dans un rêve/Regis Turner - un rêve dans un rêve - 04 A4 - si je ferme les yeux.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Regis Turner - un rêve dans un rêve/Regis Turner - un rêve dans un rêve - 03 A3 - cachette secrète.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Regis Turner - un rêve dans un rêve/Regis Turner - un rêve dans un rêve - 05 A5 - fugue.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Regis Turner - un rêve dans un rêve/Regis Turner - un rêve dans un rêve - 02 A2 - combien.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Regis Turner - un rêve dans un rêve/Regis Turner - un rêve dans un rêve - 09 B3 - tournijaïre.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Regis Turner - un rêve dans un rêve/Regis Turner - un rêve dans un rêve - 10 B4 - je revois tout.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Regis Turner - un rêve dans un rêve/Regis Turner - un rêve dans un rêve - 07 B1 - mes mains (liquid dub version).mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Regis Turner - un rêve dans un rêve/Regis Turner - un rêve dans un rêve - 01 A1 - fouinte clinque.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Regis Turner - un rêve dans un rêve/Regis Turner - un rêve dans un rêve - 06 A6 - effet eclipse.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/1999 - Play/16 - Guitar Flute & String.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/1999 - Play/01 - Honey.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/1999 - Play/04 - Why Does My Heart Feel So Bad.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/1999 - Play/09 - Machete.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/1999 - Play/12 - Down Slow.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/1999 - Play/08 - Natural Blues.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/1999 - Play/10 - 7.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/1999 - Play/13 - If Things Were Perfect.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/1999 - Play/15 - Inside.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/1999 - Play/05 - South Side.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/1999 - Play/06 - Rushing.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/1999 - Play/07 - Bodyrock.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/1999 - Play/02 - Find My Baby.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/1999 - Play/18 - My Weakness.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/1999 - Play/11 - Run On.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/1999 - Play/17 - The Sky Is Broken.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/1999 - Play/03 - Porcelain.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/1999 - Play/14 - Everloving.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/A Strange Wedding - Black Magic Rituals 12'' (Worst, 2021)/A Strange Wedding - Black Magic Rituals - 03 Through The Black Hole - 4A - 125.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/A Strange Wedding - Black Magic Rituals 12'' (Worst, 2021)/A Strange Wedding - Black Magic Rituals - 06 Digital Bonus - Three Dimensional Layers Of Thoughts - 1A - 140.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/A Strange Wedding - Black Magic Rituals 12'' (Worst, 2021)/A Strange Wedding - Black Magic Rituals - 01 Black Magic Rituals - 8A - 87.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/A Strange Wedding - Black Magic Rituals 12'' (Worst, 2021)/A Strange Wedding - Black Magic Rituals - 02 Twenty four Hours Rotations - 6A - 115.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/A Strange Wedding - Black Magic Rituals 12'' (Worst, 2021)/A Strange Wedding - Black Magic Rituals - 04 The Super Slow Hyperspeed Fractals - 8A - 110.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/A Strange Wedding - Black Magic Rituals 12'' (Worst, 2021)/A Strange Wedding - Black Magic Rituals - 05 Digital Bonus - Isaias Thunder - 2A - 98.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/She039s So Cool Wet Kiss [10 May 2022] s2k2c/2 Jerk Wet Kiss.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/She039s So Cool Wet Kiss [10 May 2022] s2k2c/1 Nobody Has To Know Wet Kiss.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/ARKANAR - Les Cris de Mélusine/ARKANAR - Les Cris de Mélusine - 04 A4 - La Chasse Éternelle.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/ARKANAR - Les Cris de Mélusine/ARKANAR - Les Cris de Mélusine - 06 B1 - Et on recommence à zéro.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/ARKANAR - Les Cris de Mélusine/ARKANAR - Les Cris de Mélusine - 05 A5 - Boire le calice jusqu'à la lie.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/ARKANAR - Les Cris de Mélusine/ARKANAR - Les Cris de Mélusine - 01 A1 - Le Grand Souffle.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/ARKANAR - Les Cris de Mélusine/ARKANAR - Les Cris de Mélusine - 03 A3 - Le Lien Vassalique.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/ARKANAR - Les Cris de Mélusine/ARKANAR - Les Cris de Mélusine - 02 A2 - Hier En Rêve.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/ARKANAR - Les Cris de Mélusine/ARKANAR - Les Cris de Mélusine - 10 B5 - On y va, on verra.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/ARKANAR - Les Cris de Mélusine/ARKANAR - Les Cris de Mélusine - 09 B4 - Comme un saut.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/ARKANAR - Les Cris de Mélusine/ARKANAR - Les Cris de Mélusine - 07 B2 - Caché derrière tes cheveux.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/ARKANAR - Les Cris de Mélusine/ARKANAR - Les Cris de Mélusine - 08 B3 - Vague de toi.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/from here on it's all - repeated passages/from here on it's all - repeated passages - 01 A1 - decidi tu.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/from here on it's all - repeated passages/from here on it's all - repeated passages - 04 A4 - e poi dopo.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/from here on it's all - repeated passages/from here on it's all - repeated passages - 03 A3 - mano che scende.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/from here on it's all - repeated passages/from here on it's all - repeated passages - 02 A2 - adventure awaits.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/01 songs /Trentemøller Deceive (official video).mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/01 songs /1-of-3-kelly-lee-owens.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/01 songs /Future_Perfect_(youconvert.net).mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/El Drogado Tha Swamp Fam [02 Jun 2022] nzosa(1)/2 Light It Lil Fry.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/El Drogado Tha Swamp Fam [02 Jun 2022] nzosa(1)/1 Enter Da Swamp Swamp Wizard Da Regulator OG.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Bulie Jordeaux Visions Bulie Jordeaux [05 Jul 2024] f3iwd/1 Vacarme Grande Rousse Disques.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Bulie Jordeaux Visions Bulie Jordeaux [05 Jul 2024] f3iwd/2 Le Volcan Grande Rousse Disques.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Legendo Lutto Lento [05 Feb 2021] 9ydwg/1 Intro Lutto Lento.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Legendo Lutto Lento [05 Feb 2021] 9ydwg/2 Mortal Fools Lutto Lento.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/DANSE MUSIQUE RHONE-ALPES/Shit Forest/04 - Divination Par Les Brosses.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/DANSE MUSIQUE RHONE-ALPES/Shit Forest/10 - Spiritisme Et Nouvelles Technologies.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/DANSE MUSIQUE RHONE-ALPES/Shit Forest/02 - Shit Forest.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/DANSE MUSIQUE RHONE-ALPES/Shit Forest/07 - Prise Sur Maison-Mere.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/DANSE MUSIQUE RHONE-ALPES/Shit Forest/09 - All Noticeable Theories.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/DANSE MUSIQUE RHONE-ALPES/Shit Forest/01 - Ocarina Belt.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/DANSE MUSIQUE RHONE-ALPES/Shit Forest/08 - Croisillons.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/DANSE MUSIQUE RHONE-ALPES/Shit Forest/03 - Prise Sur Maison-Roche.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/DANSE MUSIQUE RHONE-ALPES/Shit Forest/06 - Ghoulio Stairtrap.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/DANSE MUSIQUE RHONE-ALPES/Shit Forest/05 - Soft Archery.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Martes Muerto - Apofenias/Martes Muerto - Apofenias - 08 Cuenta del Hecho.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Martes Muerto - Apofenias/Martes Muerto - Apofenias - 01 La Vía Perpleja.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Martes Muerto - Apofenias/Martes Muerto - Apofenias - 11 Vaivén de Plata.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Martes Muerto - Apofenias/Martes Muerto - Apofenias - 07 Eurídice en Flor.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Martes Muerto - Apofenias/Martes Muerto - Apofenias - 10 Gesto en Penumbras.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Martes Muerto - Apofenias/Martes Muerto - Apofenias - 14 Hilo de Ariadna.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Martes Muerto - Apofenias/Martes Muerto - Apofenias - 02 La Copa y la Lanza.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Martes Muerto - Apofenias/Martes Muerto - Apofenias - 04 Paso del Caracol.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Martes Muerto - Apofenias/Martes Muerto - Apofenias - 13 Un Sueño Perdido.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Martes Muerto - Apofenias/Martes Muerto - Apofenias - 12 Vigía Liminal.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Martes Muerto - Apofenias/Martes Muerto - Apofenias - 03 De Contrabando.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Martes Muerto - Apofenias/Martes Muerto - Apofenias - 09 Serpiente Emplumada.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Martes Muerto - Apofenias/Martes Muerto - Apofenias - 15 Entes Dentro del Traje.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Martes Muerto - Apofenias/Martes Muerto - Apofenias - 05 Los Planos.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Martes Muerto - Apofenias/Martes Muerto - Apofenias - 06 Verde Piedra Tibia.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/christian coiffure - lookbook 2021 - 2023/7. Action (Chaos Mix).mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/christian coiffure - lookbook 2021 - 2023/2. Meet Her Stage 2.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/christian coiffure - lookbook 2021 - 2023/3. Wish You Well.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/christian coiffure - lookbook 2021 - 2023/5. Action (Coherence Mix).mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/christian coiffure - lookbook 2021 - 2023/6. Truth Gate.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/christian coiffure - lookbook 2021 - 2023/8. Thorns of Reminder.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/christian coiffure - lookbook 2021 - 2023/4. 9th Mind (Space Version).mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/christian coiffure - lookbook 2021 - 2023/1. Prowler Dub.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Inna Babalon John T Gast [20 Mar 2016] pubbj/1 Those Secluded Preferences John T Gast.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Myths of the Crystal Plateau/02 The Erat Sphere.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Myths of the Crystal Plateau/03 Dance of The Owl People.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Myths of the Crystal Plateau/05 A Secret Equinox Ceremony.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Myths of the Crystal Plateau/01 The K_holori Tal_a_ and Her Snakes.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Myths of the Crystal Plateau/Lala &ce 67, Low Jack - Baiser Mortel (2022)/04. Lala &ce 67, Low Jack, Rad Cartier, Le Diouck - Elle.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Myths of the Crystal Plateau/Lala &ce 67, Low Jack - Baiser Mortel (2022)/10. Le Diouck, Low Jack - Superficielle.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Myths of the Crystal Plateau/Lala &ce 67, Low Jack - Baiser Mortel (2022)/13. Lala &ce 67, Low Jack - Top.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Myths of the Crystal Plateau/Lala &ce 67, Low Jack - Baiser Mortel (2022)/06. Lala &ce 67, Low Jack, Rad Cartier, Le Diouck - Gelati.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Myths of the Crystal Plateau/Lala &ce 67, Low Jack - Baiser Mortel (2022)/11. Lala &ce 67, Low Jack - Prisonnière.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Myths of the Crystal Plateau/Lala &ce 67, Low Jack - Baiser Mortel (2022)/02. Lala &ce 67, Low Jack, BabySolo33, Rad Cartier - Rose.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Myths of the Crystal Plateau/Lala &ce 67, Low Jack - Baiser Mortel (2022)/05. Low Jack - Intro Gelati.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Myths of the Crystal Plateau/Lala &ce 67, Low Jack - Baiser Mortel (2022)/03. Jäde, Lala &ce 67, Low Jack - Bulles.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Myths of the Crystal Plateau/Lala &ce 67, Low Jack - Baiser Mortel (2022)/07. BabySolo33, Low Jack - Lune.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Myths of the Crystal Plateau/Lala &ce 67, Low Jack - Baiser Mortel (2022)/01. Lala &ce 67, Low Jack - Goûter.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Myths of the Crystal Plateau/Lala &ce 67, Low Jack - Baiser Mortel (2022)/09. Lala &ce 67, Jäde , Low Jack - Debout.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Myths of the Crystal Plateau/Lala &ce 67, Low Jack - Baiser Mortel (2022)/12. Jäde, Bamao Yendé, Low Jack - Étoiles.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Myths of the Crystal Plateau/Lala &ce 67, Low Jack - Baiser Mortel (2022)/08. Lala &ce 67, Low Jack - Aidée.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Myths of the Crystal Plateau/04 Earthquake Dreams and The Owl Q_ej.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Myths of the Crystal Plateau/06 The Pentagram Language.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Myths of the Crystal Plateau/07 Pre-Dawn Jam Drunk On Alteberra Nectar.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Lala &ce 67, Low Jack - Baiser Mortel (2022)/04. Lala &ce 67, Low Jack, Rad Cartier, Le Diouck - Elle.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Lala &ce 67, Low Jack - Baiser Mortel (2022)/10. Le Diouck, Low Jack - Superficielle.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Lala &ce 67, Low Jack - Baiser Mortel (2022)/13. Lala &ce 67, Low Jack - Top.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Lala &ce 67, Low Jack - Baiser Mortel (2022)/06. Lala &ce 67, Low Jack, Rad Cartier, Le Diouck - Gelati.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Lala &ce 67, Low Jack - Baiser Mortel (2022)/11. Lala &ce 67, Low Jack - Prisonnière.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Lala &ce 67, Low Jack - Baiser Mortel (2022)/02. Lala &ce 67, Low Jack, BabySolo33, Rad Cartier - Rose.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Lala &ce 67, Low Jack - Baiser Mortel (2022)/05. Low Jack - Intro Gelati.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Lala &ce 67, Low Jack - Baiser Mortel (2022)/03. Jäde, Lala &ce 67, Low Jack - Bulles.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Lala &ce 67, Low Jack - Baiser Mortel (2022)/07. BabySolo33, Low Jack - Lune.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Lala &ce 67, Low Jack - Baiser Mortel (2022)/01. Lala &ce 67, Low Jack - Goûter.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Lala &ce 67, Low Jack - Baiser Mortel (2022)/09. Lala &ce 67, Jäde , Low Jack - Debout.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Lala &ce 67, Low Jack - Baiser Mortel (2022)/12. Jäde, Bamao Yendé, Low Jack - Étoiles.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Lala &ce 67, Low Jack - Baiser Mortel (2022)/08. Lala &ce 67, Low Jack - Aidée.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Organizatsiya - Organizatsiya - Strane Lezioni/Organizatsiya - Organizatsiya - Strane Lezioni - 02 Luzia orgua.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Organizatsiya - Organizatsiya - Strane Lezioni/Organizatsiya - Organizatsiya - Strane Lezioni - 04 Tandem.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Organizatsiya - Organizatsiya - Strane Lezioni/Organizatsiya - Organizatsiya - Strane Lezioni - 03 Hic et Nunc.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Organizatsiya - Organizatsiya - Strane Lezioni/Organizatsiya - Organizatsiya - Strane Lezioni - 01 Atrium.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Scoop - Nucleus/Scoop - Thrill.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Scoop - Nucleus/Scoop - Jeopardy.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Scoop - Nucleus/Scoop - Games.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Scoop - Nucleus/Scoop - Growth.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Scoop - Nucleus/Scoop - Remembrances.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Scoop - Nucleus/Scoop - Nervous System.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Scoop - Nucleus/Scoop - Work.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Scoop - Nucleus/Scoop - Data.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Jessica Moss - Pools Of Light (2017)/04-Entire Populations (Pt 4).mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Jessica Moss - Pools Of Light (2017)/08-Glaciers (Pt 4).mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Jessica Moss - Pools Of Light (2017)/03-Entire Populations (Pt 3).mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Jessica Moss - Pools Of Light (2017)/05-Glaciers (Pt 1).mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Jessica Moss - Pools Of Light (2017)/01-Entire Populations (Pt 1).mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Jessica Moss - Pools Of Light (2017)/07-Glaciers (Pt 3).mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Jessica Moss - Pools Of Light (2017)/02-Entire Populations (Pt 2).mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Jessica Moss - Pools Of Light (2017)/06-Glaciers (Pt 2).mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Mimi Dj Bobo1 [07 Jan 2020] uhxhj/1 Stubborn Sunshine Dj Bobo1.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Mimi Dj Bobo1 [07 Jan 2020] uhxhj/2 Botanic 2511 Dj Bobo1.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Ahrre - Ambu/Ultramar Ulloa.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Ahrre - Ambu/El Bote.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Ahrre - Ambu/La Sequía.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Ahrre - Ambu/Ahrre.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Ahrre - Ambu/La Zona.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Ahrre - Ambu/Camposuyo.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Ahrre - Ambu/Barro.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Ahrre - Ambu/Posada Martino.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Ahrre - Ambu/Hueso Redondo.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Ahrre - Ambu/Viento Congelado.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Ahrre - Ambu/Pajal.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Ahrre - Ambu/Cañón Andino.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Ahrre - Ambu/Ruta 14.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Tearless Amnesia Scanner [19 Jun 2020] 7u70w/2 As Tearless Feat Lalita Amnesia Scanner.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Tearless Amnesia Scanner [19 Jun 2020] 7u70w/1 As Enter Amnesia Scanner.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Le Marais - le marais/Le Marais - A5. In Vitro.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Le Marais - le marais/Le Marais - A3. La Complainte des Blousons Noirs.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Le Marais - le marais/Le Marais - B3. La Ronde des Secondes.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Le Marais - le marais/Le Marais - B2. Nothing to Fear.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Le Marais - le marais/Le Marais - A2. Journey in the Gardens.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Le Marais - le marais/Le Marais - B4. L'Appel de la Forêt.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Le Marais - le marais/Le Marais - A4. Interludus Maximus Pecten.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Le Marais - le marais/Le Marais - A6. Drain the Swamp.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Le Marais - le marais/Le Marais - A1. Ogre Hunter.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Le Marais - le marais/Le Marais - B1. The Lordship of Dulac.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Seta Loto - Earth-Related system/Surroundings.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Seta Loto - Earth-Related system/Earth-Related System.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Seta Loto - Earth-Related system/Pivotal Scape.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Seta Loto - Earth-Related system/Indistinct Chattering.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Seta Loto - Earth-Related system/L5 S1.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Tell Them That You Love Them Zoe Heselton [21 Jul 2023] 48aew/2 Introduction Salt Water Ritual Urin Gargarism Records.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Tell Them That You Love Them Zoe Heselton [21 Jul 2023] 48aew/1 Hello Urin Gargarism Records.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/The Fantastic world of Grykë Pyje/11_In Search Of Rapture.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/The Fantastic world of Grykë Pyje/02_Home Brewed Bewitchment .mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/The Fantastic world of Grykë Pyje/23_Chosen Ones.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/The Fantastic world of Grykë Pyje/14_Distant Reflections.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/The Fantastic world of Grykë Pyje/19_Elemental Waveshore.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/The Fantastic world of Grykë Pyje/13_Through the Timehole.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/The Fantastic world of Grykë Pyje/16_The Turning Point.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/The Fantastic world of Grykë Pyje/12_Reaching For The Invisible.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/The Fantastic world of Grykë Pyje/22_Return of the Mystic Channeler.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/The Fantastic world of Grykë Pyje/20_Glittering Embalming.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/The Fantastic world of Grykë Pyje/28_New Dawn – Return.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/The Fantastic world of Grykë Pyje/03_Collision And Coalescence.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/The Fantastic world of Grykë Pyje/07_Spirits Arise From The Swamp.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/The Fantastic world of Grykë Pyje/04_Shrunken Friends From Tiny Dens.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/The Fantastic world of Grykë Pyje/09_My Introverted Sea Horse Friend.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/The Fantastic world of Grykë Pyje/24_The Field of Draflinis.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/The Fantastic world of Grykë Pyje/01_ Landing on sacred ground.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/The Fantastic world of Grykë Pyje/17_Mutated Perception.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/The Fantastic world of Grykë Pyje/26_Cavern of Morphing Stones.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/The Fantastic world of Grykë Pyje/15_Tribal Call.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/The Fantastic world of Grykë Pyje/05_A Glitch In The Jungle.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/The Fantastic world of Grykë Pyje/27_Hovering Over the Magnetic Ground .mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/The Fantastic world of Grykë Pyje/06_Ancestors Waving.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/The Fantastic world of Grykë Pyje/08_Ways Through The Thicket.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/The Fantastic world of Grykë Pyje/21_Squirlich Stroll.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/The Fantastic world of Grykë Pyje/25_Forgotten Valley.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/The Fantastic world of Grykë Pyje/18_Untrodden Resonance .mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/The Fantastic world of Grykë Pyje/10_The Cloud Of Secret Pleasures.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Stefan Dub - Continuum/Skank.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Stefan Dub - Continuum/Bandit Queen.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Stefan Dub - Continuum/Arrouxza (Mss Fujara Mix).mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Stefan Dub - Continuum/Wbble Lkage.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Premiers rayons - Besoins premiers/Zoé couppé - troisieme jour de voyage.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Premiers rayons - Besoins premiers/Jonnnah - Broken Promises.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Premiers rayons - Besoins premiers/Hajj - Rage Of Empire.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Premiers rayons - Besoins premiers/Women In The Royal Court - Drum A Queen (Ft. Clara!).mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Premiers rayons - Besoins premiers/Lucy Liyou - Gentle Method.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Premiers rayons - Besoins premiers/K I A - Slavery Of Mortality.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Premiers rayons - Besoins premiers/_Mass - Dxscord.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Premiers rayons - Besoins premiers/Golce - Bydefinition.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Premiers rayons - Besoins premiers/Caïn و Muchi - Shining.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Premiers rayons - Besoins premiers/Jonnnah & Salma Rosa - Every Clouds Has A Silver Lin….mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Folk Ultramarine [13 Nov 2020] 33kbg/1 Lobster Foam On A Wave.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Folk Ultramarine [13 Nov 2020] 33kbg/2 Antiseptic Foam On A Wave.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Fiesta En El VacÃo amp Helen Island Atarraya Helen Island [14 Jun 2024] 48xz0/1 Intro Helen Island.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Leoni Leoni Leoni Leoni [03 Jun 2022] 9omhz/2 Easyjet Leoni Leoni.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/Leoni Leoni Leoni Leoni [03 Jun 2022] 9omhz/1 Figged Si Sich Frau Schluchter Leoni Leoni.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/More Than A Woman Kelly Lee Owens [07 Nov 2017] 6fsl9/2 More Than A Woman Klo Remix Kelly Lee Owens.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/More Than A Woman Kelly Lee Owens [07 Nov 2017] 6fsl9/1 More Than A Woman Kelly Lee Owens.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/They Are Textural Sha Ru [29 Feb 2024] gjj1p/1 Ona Sha Ru.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/nat-selecta/They Are Textural Sha Ru [29 Feb 2024] gjj1p/2 Not Your Steps Sha Ru.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/scobi-selecta/SOPHIE/PRODUCT/03 LEMONADE.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/scobi-selecta/SOPHIE/PRODUCT/06 VYZEE.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/scobi-selecta/SOPHIE/PRODUCT/04 HARD.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/scobi-selecta/Lechuga Zafiro/Testigo/03 Agua y Puerta.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/scobi-selecta/Lechuga Zafiro/Testigo/04 Sapo Diablo.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/scobi-selecta/BAZOGA - الحجر.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/scobi-selecta/Aaron Cartier Best Dog/1-02 BANANAS.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/scobi-selecta/Aaron Cartier Best Dog/1-11 SHINE (feat. TYMMI).mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/scobi-selecta/we-found-love-jules-du-coeur.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/Torchon_selecta/caroline Shaw/01 Caroline Shaw - 4 Pieces_ No. 4. Passacaglia.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/Torchon_selecta/caroline Shaw/09 Caroline Shaw - 4 Pieces_ No. 1. Allemande.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/Torchon_selecta/caroline Shaw/02 William Brittelle - Amid the Minotaurs.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/Torchon_selecta/caroline Shaw/07 Sarah Kirkland Snider - The Orchard.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/Torchon_selecta/caroline Shaw/06 Judd Greenstein - A E I O U.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/Torchon_selecta/caroline Shaw/08 Rinde Eckert - Cesca's View.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/Torchon_selecta/caroline Shaw/04 Caleb Burhans - No.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/Torchon_selecta/caroline Shaw/03 Judd Greenstein - Montmartre.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/Torchon_selecta/caroline Shaw/13 Merrill Garbus - Ansa ya.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/Torchon_selecta/caroline Shaw/10 Merrill Garbus - Quizassa.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/Torchon_selecta/caroline Shaw/05 Caroline Shaw - 4 Pieces_ No. 3. Courante.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/Torchon_selecta/Iva Bittova/09_cina.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/Torchon_selecta/Iva Bittova/10_plesupiru.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/Torchon_selecta/Iva Bittova/01_hralkdosinahoboj.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/Torchon_selecta/Iva Bittova/02_divnaslecinka.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/Torchon_selecta/Iva Bittova/12_proudemmleka.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/Torchon_selecta/Iva Bittova/14_jednasestrabratramela.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/Torchon_selecta/Iva Bittova/08_viola.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/Torchon_selecta/Iva Bittova/05_drivnez.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/Torchon_selecta/Iva Bittova/03_plivamzplevpyru.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/Torchon_selecta/Iva Bittova/13_vzemineorane.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/Torchon_selecta/Iva Bittova/04_banjo.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/Torchon_selecta/Iva Bittova/07_adventni.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/Torchon_selecta/Iva Bittova/06_dedecek.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/Torchon_selecta/Iva Bittova/11_vimnevim.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/Torchon_selecta/musiquefemme/Zorba - Violente.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/Torchon_selecta/musiquefemme/Joan La Barbara - Klee Alee.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/Torchon_selecta/musiquefemme/Joan La Barbara - Opening.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/Torchon_selecta/musiquefemme/Melissa Weikart - Sorry (Live).mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/Torchon_selecta/musiquefemme/Joan La Barbara - Erin.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/Torchon_selecta/musiquefemme/Joan La Barbara - Circular Song.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/Torchon_selecta/musiquefemme/Mi-Volto-e-Mi-Rivolt-2.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/Torchon_selecta/musiquefemme/06 Neva.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/Torchon_selecta/musiquefemme/Laura Perrudin - The Sick Rose (live).mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/Torchon_selecta/musiquefemme/Tirzah - F22.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/Torchon_selecta/musiquefemme/Melissa Weikart - VoiceCrooked (Live).mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/Torchon_selecta/musiquefemme/F22.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/Torchon_selecta/musiquefemme/Madison McFerrin - God Herself (Official Video).mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/Torchon_selecta/musiquefemme/Radio Hito - La Notte.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/Torchon_selecta/musiquefemme/Mi-Volto-e-Mi-Rivolt-7.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/Torchon_selecta/musiquefemme/Anna Melato Canzone arrabbiata ( canzonissima 73 ).mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/Torchon_selecta/musiquefemme/Soap&skin Me and the Devil.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/Torchon_selecta/musiquefemme/Zoé Heselton Maybe It Is 3 A.M. (live) • Zoe Heselton & Inès R..mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/Torchon_selecta/musiquefemme/Zoe Heselton A Song is a Being.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/Torchon_selecta/musiquefemme/Tirzah - their Love (Official Audio).mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/Torchon_selecta/musiquefemme/Mi-Volto-e-Mi-Rivolt-13.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/Torchon_selecta/musiquefemme/OXYTOCINE - Les Baisers Volés.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/Torchon_selecta/musiquefemme/Melissa Weikart - Humans (Live).mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/Torchon_selecta/musiquefemme/Zoe Heselton & Merve Salgar - Day By Day - Strasbourg Sessions #10.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/Torchon_selecta/musiquefemme/Radio Hito -Pour Ne Pas Dormir.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/Torchon_selecta/musiquefemme/Melissa Weikart - The Line (Live).mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/Torchon_selecta/musiquefemme/Holding On.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/Torchon_selecta/musiquefemme/Melissa Weikart - Coffee (Live).mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/Torchon_selecta/musiquefemme/Madison McFerrin - Goodnight.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/Torchon_selecta/musiquefemme/Soap&Skin - The Sun.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/Torchon_selecta/musiquefemme/Soap$Skin - Goodbye Elbphilharmonie LIVE.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/Torchon_selecta/musiquefemme/Radio Hito - Ascoltami.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/Torchon_selecta/musiquefemme/Melissa Weikart - Lately (Live).mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/Torchon_selecta/musiquefemme/Zoe Heselton & Lise Barkas - There Are Other Ways To Love • .mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/Torchon_selecta/musiquefemme/Melissa Weikart - Around (Live).mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/Torchon_selecta/musiquefemme/MOLAR - GANG DE MEUFS (RONCES).mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/Torchon_selecta/musiquefemme/Beka - Benda.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/Torchon_selecta/musiquefemme/Mi-Volto-e-Mi-Rivolt-12.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/Torchon_selecta/musiquefemme/Radio Hito - Sempre Due.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/Torchon_selecta/musiquefemme/Radio Hito - Una Pausa.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/Torchon_selecta/musiquefemme/Madison McFerrin - TRY A COLORS SHOW.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/Torchon_selecta/musiquefemme/Tirzah - Holding On.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/Torchon_selecta/musiquefemme/Mi-Volto-e-Mi-Rivolt-8.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/Torchon_selecta/musiquefemme/Soap&Skin - Janitor of Lunacy.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/Torchon_selecta/musiquefemme/Mi-Volto-e-Mi-Rivolt-4.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/Torchon_selecta/musiquefemme/02 Op Stilte.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/Torchon_selecta/musiquefemme/Laura Perrudin - Inks (feat. The Ghost Orchestra) .mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/Torchon_selecta/musiquefemme/Radio Hito -Io Scrivo.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/Torchon_selecta/musiquefemme/Laura Perrudin - Light Players.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/Torchon_selecta/musiquefemme/Opening.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/Torchon_selecta/Ammar 808/Ammar 808_Sofiane Saidi - Degdega my-free-mp3s.com.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/Torchon_selecta/Ammar 808/Ammar 808 featuring Cheb Hassen Tej - Essoug Rsam my-free-mp3s.com.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/Torchon_selecta/Ammar 808/Ammar 808, Mehdi Nassouli - Layli my-free-mp3s.com.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/Torchon_selecta/Ammar 808/Ammar 808 feat. Cheb Hassen Tej - Zawali Fitness Club my-free-mp3s.com.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/Torchon_selecta/Ammar 808/Ammar 808, Cheb Hassen Tej - Ain essouda my-free-mp3s.com.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/Torchon_selecta/Ammar 808/Ammar 808, Mehdi Nassouli - Boganga & sandia my-free-mp3s.com.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/Torchon_selecta/Ammar 808/Ammar 808, Sofiane Saidi - Zine ezzine my-free-mp3s.com.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/Torchon_selecta/Ammar 808/Ammar 808, Mehdi Nassouli - Sidi kommi my-free-mp3s.com.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/Ghost_Lemurs-Wombs_And_Alien_Spirits-WEB-2024-ENRiCH/06-ghost_lemurs-hmmm-4f0bdc9b.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/Ghost_Lemurs-Wombs_And_Alien_Spirits-WEB-2024-ENRiCH/01-ghost_lemurs-bios-98eb891a.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/Ghost_Lemurs-Wombs_And_Alien_Spirits-WEB-2024-ENRiCH/02-ghost_lemurs-hypha-67e84a68.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/Ghost_Lemurs-Wombs_And_Alien_Spirits-WEB-2024-ENRiCH/08-ghost_lemurs-soma_cell-563b3c9a.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/Ghost_Lemurs-Wombs_And_Alien_Spirits-WEB-2024-ENRiCH/03-ghost_lemurs-filter_feeders-73b7573c.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/Ghost_Lemurs-Wombs_And_Alien_Spirits-WEB-2024-ENRiCH/04-ghost_lemurs-libya_loop-2954027d.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/Ghost_Lemurs-Wombs_And_Alien_Spirits-WEB-2024-ENRiCH/05-ghost_lemurs-aton-90627251.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/Ghost_Lemurs-Wombs_And_Alien_Spirits-WEB-2024-ENRiCH/07-ghost_lemurs-codex-82fb3338.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/Ghost_Lemurs-Wombs_And_Alien_Spirits-WEB-2024-ENRiCH/09-ghost_lemurs-wombs_and_alien_spirits-92d80582.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/Ghost_Lemurs-Wombs_And_Alien_Spirits-WEB-2024-ENRiCH/10-ghost_lemurs-molecular_repair-ff5c5cda.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/Susobrino - SU/Susobrino, Dyce - SU - 02 Beberte.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/Susobrino - SU/Susobrino, Lisandro Skar - SU - 03 Ha Muerto.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/Susobrino - SU/Susobrino, Ngenko - SU - 01 Florecer.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/helen island - fiesta en el vacio/helen island - fiesta en el vacío & helen island - ATARRAYA - 03 ATARRAYA.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/helen island - fiesta en el vacio/helen island - fiesta en el vacío & helen island - ATARRAYA - 05 TU DONCELLA (INSTRU).mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/helen island - fiesta en el vacio/helen island - fiesta en el vacío & helen island - ATARRAYA - 04 EN TI ES DE NOCHE.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/helen island - fiesta en el vacio/helen island - fiesta en el vacío & helen island - ATARRAYA - 01 INTRO.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/helen island - fiesta en el vacio/helen island - fiesta en el vacío & helen island - ATARRAYA - 02 TU DONCELLA.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/[PAG026] La Preyra – OR OS (2020)/11 - La chasse - La Preyra – OR OS (2020).mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/[PAG026] La Preyra – OR OS (2020)/12 - Mâre, maria mè c't an - La Preyra – OR OS (2020).mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/[PAG026] La Preyra – OR OS (2020)/06 - J’ai fait une maîtresse - La Preyra – OR OS (2020).mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/[PAG026] La Preyra – OR OS (2020)/01 - Les transformations - La Preyra – OR OS (2020).mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/[PAG026] La Preyra – OR OS (2020)/02 - Pastorel - La Preyra – OR OS (2020).mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/[PAG026] La Preyra – OR OS (2020)/04 - Réveillez-vous fidèles voici le temps - La Preyra – OR OS (2020).mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/[PAG026] La Preyra – OR OS (2020)/08 - Le jardin des amours - La Preyra – OR OS (2020).mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/[PAG026] La Preyra – OR OS (2020)/07 - La délaissée - La Preyra – OR OS (2020).mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/[PAG026] La Preyra – OR OS (2020)/09 - ... - La Preyra – OR OS (2020).mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/[PAG026] La Preyra – OR OS (2020)/03 - Allons mignonne - La Preyra – OR OS (2020).mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/[PAG026] La Preyra – OR OS (2020)/10 - Camille à la ville - La Preyra – OR OS (2020).mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/[PAG026] La Preyra – OR OS (2020)/05 - ... - La Preyra – OR OS (2020).mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/Jonquera--DARKOS_LP-BSLP001-WEB-2020-BABAS/02-jonquera--darkos-dd862fa3.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/Jonquera--DARKOS_LP-BSLP001-WEB-2020-BABAS/11-jonquera--odsives-45f80870.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/Jonquera--DARKOS_LP-BSLP001-WEB-2020-BABAS/08-jonquera--beutson_ardent-be566b28.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/Jonquera--DARKOS_LP-BSLP001-WEB-2020-BABAS/10-jonquera--veurtsio-f2365ebb.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/Jonquera--DARKOS_LP-BSLP001-WEB-2020-BABAS/13-jonquera--verat-f9d2299d.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/Jonquera--DARKOS_LP-BSLP001-WEB-2020-BABAS/04-jonquera--saint_cotson-151e4523.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/Jonquera--DARKOS_LP-BSLP001-WEB-2020-BABAS/05-jonquera--pouir-bad8a464.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/Jonquera--DARKOS_LP-BSLP001-WEB-2020-BABAS/14-jonquera--grand_deuc-1e637f31.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/Jonquera--DARKOS_LP-BSLP001-WEB-2020-BABAS/09-jonquera--pont_de_djabe-842a5efc.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/Jonquera--DARKOS_LP-BSLP001-WEB-2020-BABAS/01-jonquera--couvent_dos_cordelieus-3f952483.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/Jonquera--DARKOS_LP-BSLP001-WEB-2020-BABAS/06-jonquera--clotses-6c533f64.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/Jonquera--DARKOS_LP-BSLP001-WEB-2020-BABAS/12-jonquera--feune_de_dmain-b14660bf.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/Jonquera--DARKOS_LP-BSLP001-WEB-2020-BABAS/03-jonquera--benedictin-0b882f33.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/Jonquera--DARKOS_LP-BSLP001-WEB-2020-BABAS/07-jonquera--don_bosco-ea18e567.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/00 SONGS/R Vincenzo - Haru.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/00 SONGS/Mawtini .mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/00 SONGS/Maibaum - Grande Albero Buono Magico Uoma.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/00 SONGS/My Blood is Palestinian Dami Falasteeni Translation.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/00 SONGS/Agazero - Kurone Baile.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/00 SONGS/06.FIESTA EN EL VACIO avec LASZLO - Trix.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/00 SONGS/Sunchaser - Witness.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/00 SONGS/Beatrix Weapons - NOT REAL LIFE IS MY REAL FRIEND.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/00 SONGS/Abu AMA - LAC.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/00 SONGS/Sea Sick Lyric Video.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/00 SONGS/volquete - JAIJIU -v- Wachichorro - El triki triki por la cola.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/00 SONGS/Thomass Jackson - Alien Armando.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/00 SONGS/Amplify Palestine BDS Mixtape - Elder Ones - Dance of the Subaltern.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/00 SONGS/Fiesta en el Vacio - Serendip Lab 10 ans (SER011) - 71 L'Aspartame.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/00 SONGS/volquete - STRIDAH -v- McCaco - Bugutu.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/00 SONGS/Swordman Kitala & Tim Karbon - Dingidingi Dole.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/00 SONGS/Bella Cuts - Until Everybody Is Free.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/00 SONGS/3-DIGITS - Sabaweli (Brodinski Remix).mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/00 SONGS/bukahara_320.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/00 SONGS/R Vincenzo - R Vincenzo & Dannyhell - Corridors of Time (MTG).mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/00 SONGS/Amplify Palestine BDS Mixtape - Dakn - difa3an 3an nafs.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/00 SONGS/V.A. - Don't Panic 2 - 04 Fiesta En El Vacio - No Sabes.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/00 SONGS/Palestine Will Rise.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/00 SONGS/Rajieen OFFICIAL MUSIC VIDEO.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/00 SONGS/11 - Fiesta en El Vacio - Mauricio.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/00 SONGS/01-maquis_son_sistem-cortegi_astral-z0ne.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/00 SONGS/Broosnica - Love on the Run.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/helen island - lia$$e 2 MP3 320/helen island - lia$$e 2 - 06 no witness.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/helen island - lia$$e 2 MP3 320/helen island - lia$$e 2 - 09 it's the end.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/helen island - lia$$e 2 MP3 320/helen island - lia$$e 2 - 02 HOOD IN MAY.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/helen island - lia$$e 2 MP3 320/helen island - lia$$e 2 - 05 the alarm guy.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/helen island - lia$$e 2 MP3 320/helen island - lia$$e 2 - 07 My Bestie.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/helen island - lia$$e 2 MP3 320/helen island - lia$$e 2 - 01 liass2 intro.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/helen island - lia$$e 2 MP3 320/helen island - lia$$e 2 - 08 alice dj.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/helen island - lia$$e 2 MP3 320/helen island - lia$$e 2 - 04 Hood in May 2.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/helen island - lia$$e 2 MP3 320/helen island - lia$$e 2 - 03 i'd like to become a member.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/aya - Lip Flip/aya - Lip Flip - 02 Leftenant Keith.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/aya - Lip Flip/aya - Lip Flip - 03 Dexxy Is A Midnight Runner.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/aya - Lip Flip/aya & Ecko Bazz - Lip Flip - 01 Essente!.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/aya - Lip Flip/aya - Lip Flip - 04 Lip Flip (ft. LOFT).mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/Wolf Müller & Niklas Wandt - Instrumentalmusik Von Der Mitte Der World - (2018)/07 - Traum 4.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/Wolf Müller & Niklas Wandt - Instrumentalmusik Von Der Mitte Der World - (2018)/04 - Aufloesung.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/Wolf Müller & Niklas Wandt - Instrumentalmusik Von Der Mitte Der World - (2018)/01 - Der Mitte Der World.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/Wolf Müller & Niklas Wandt - Instrumentalmusik Von Der Mitte Der World - (2018)/05 - Welcome Zum Paradies.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/Wolf Müller & Niklas Wandt - Instrumentalmusik Von Der Mitte Der World - (2018)/09 - Ahu.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/Wolf Müller & Niklas Wandt - Instrumentalmusik Von Der Mitte Der World - (2018)/12 - Ein Afrikadelle Danke.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/Wolf Müller & Niklas Wandt - Instrumentalmusik Von Der Mitte Der World - (2018)/10 - Aus Versehen Angetoernt.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/Wolf Müller & Niklas Wandt - Instrumentalmusik Von Der Mitte Der World - (2018)/03 - Expedition.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/Wolf Müller & Niklas Wandt - Instrumentalmusik Von Der Mitte Der World - (2018)/02 - Lockerina.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/Wolf Müller & Niklas Wandt - Instrumentalmusik Von Der Mitte Der World - (2018)/11 - Weltraumsandalen.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/Wolf Müller & Niklas Wandt - Instrumentalmusik Von Der Mitte Der World - (2018)/06 - Kleiner Trommelbaum.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/Wolf Müller & Niklas Wandt - Instrumentalmusik Von Der Mitte Der World - (2018)/08 - Kurzgedichte.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/Rosal - fiesta en el vacio/tmr045 - fiesta en el vacio - a4-mettez moi au travail.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/Rosal - fiesta en el vacio/tmr045 - fiesta en el vacio - a5-la menina.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/Rosal - fiesta en el vacio/tmr045 - fiesta en el vacio - a1-grido (antonia pozzi).mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/Rosal - fiesta en el vacio/tmr045 - fiesta en el vacio - b2-falseta por seguiriya.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/Rosal - fiesta en el vacio/tmr045 - fiesta en el vacio - b1-canto de ordeño.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/Rosal - fiesta en el vacio/tmr045 - fiesta en el vacio - b4-avec dingue.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/Rosal - fiesta en el vacio/tmr045 - fiesta en el vacio - a2-rosal.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/Rosal - fiesta en el vacio/tmr045 - fiesta en el vacio - b5-le pont.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/Rosal - fiesta en el vacio/tmr045 - fiesta en el vacio - a3-dimmi.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/Rosal - fiesta en el vacio/tmr045 - fiesta en el vacio - b3-histoire du pourceau.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/Loto Retina - 2016 - sens/05_artefact parfumé.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/Loto Retina - 2016 - sens/01_zoom gustatif.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/Loto Retina - 2016 - sens/03_obsolescence auditive.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/Loto Retina - 2016 - sens/02_vision flottante.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/Loto Retina - 2016 - sens/04_évasion tactile.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/La preyra - La Preyra/La preyra - La Preyra - 14 14 Mazurkas.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/La preyra - La Preyra/La preyra - La Preyra - 07 07 Rossignolet sauvage.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/La preyra - La Preyra/La preyra - La Preyra - 09 09 Cantiques (avec Simon Drouhin).mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/La preyra - La Preyra/La preyra - La Preyra - 11 11 Frisson.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/La preyra - La Preyra/La preyra - La Preyra - 05 05 La barca vira - Rigodon du Valgaudemar.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/La preyra - La Preyra/La preyra - La Preyra - 04 04 Bourrée à la Dédée.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/La preyra - La Preyra/La preyra - La Preyra - 06 06 Marguerite elle est malade (avec Clémence Cognet).mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/La preyra - La Preyra/La preyra - La Preyra - 01 01 la badoise - Polka piquée.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/La preyra - La Preyra/La preyra - La Preyra - 03 03 Le départ pour la Provence.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/La preyra - La Preyra/La preyra - La Preyra - 10 10 Rigodon des quatre cordons.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/La preyra - La Preyra/La preyra - La Preyra - 08 08 Bourrée d'Arthon - Bourrée à Fleuret.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/La preyra - La Preyra/La preyra - La Preyra - 02 02 Mie Jeanneton.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/La preyra - La Preyra/La preyra - La Preyra - 13 13 Les filles sont promises.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/La preyra - La Preyra/La preyra - La Preyra - 12 12 Salut à la mariée.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/Susobrino - Pocualeíto/Susobrino - Pocualeíto - 06 Killay.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/Susobrino - Pocualeíto/Susobrino - Pocualeíto - 02 Jii - Tío Carbón.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/Susobrino - Pocualeíto/Susobrino - Pocualeíto - 01 El Aguante.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/Susobrino - Pocualeíto/Susobrino - Pocualeíto - 05 El Camino Refleja.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/Susobrino - Pocualeíto/Susobrino - Pocualeíto - 03 Wasos Ft. Dengue Dengue Dengue.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/Susobrino - Pocualeíto/Susobrino - Pocualeíto - 04 La Semilla.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/[ACIWAX55] Musique Chienne - Acidebout - 2021/Musique Chienne - Acidebout - 07 - Une Drôle De Blague (Roy Of The Ravers Remix).mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/[ACIWAX55] Musique Chienne - Acidebout - 2021/Musique Chienne - Acidebout - 05 - Grosse Pierre (Lesinge Remix).mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/[ACIWAX55] Musique Chienne - Acidebout - 2021/Musique Chienne - Acidebout - 01 - Billy's House.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/[ACIWAX55] Musique Chienne - Acidebout - 2021/Musique Chienne - Acidebout - 06 - Cocktail De Voix (Aftawerks Remix).mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/[ACIWAX55] Musique Chienne - Acidebout - 2021/Musique Chienne - Acidebout - 03 - Une Drôle De Blague.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/[ACIWAX55] Musique Chienne - Acidebout - 2021/Musique Chienne - Acidebout - 04 - Baka.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/[ACIWAX55] Musique Chienne - Acidebout - 2021/Musique Chienne - Acidebout - 02 - Grosse Pierre.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/VA- Forever (Haunter Records, 2019)/13. Tadleeh - Ruba Meta.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/VA- Forever (Haunter Records, 2019)/28. Glochids - Running Fence.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/VA- Forever (Haunter Records, 2019)/32. Julien Andreas - Pump.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/VA- Forever (Haunter Records, 2019)/10. Heith - Suspicious Activities.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/VA- Forever (Haunter Records, 2019)/22. Noumeno & Sense Fracture - Words Are only Places To Hide, And I No Longer Intend To Hide.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/VA- Forever (Haunter Records, 2019)/08. Ausschuss - Loose Unit.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/VA- Forever (Haunter Records, 2019)/23. Nick James Scavo - Vorsch (Threnody).mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/VA- Forever (Haunter Records, 2019)/21. Lutto Lento - Angels.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/VA- Forever (Haunter Records, 2019)/04. Weightausend - Ceaseless Collateral.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/VA- Forever (Haunter Records, 2019)/31. Renick Bell - Seek Your Own Error And Learn.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/VA- Forever (Haunter Records, 2019)/18. Lag Os - Not Alone (In The Forest Edit).mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/VA- Forever (Haunter Records, 2019)/02. Ghost Lemurs Of Madagascar - Fauno.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/VA- Forever (Haunter Records, 2019)/14. Celyn June - Perndfgich001.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/VA- Forever (Haunter Records, 2019)/30. Somec - Ra 1.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/VA- Forever (Haunter Records, 2019)/16. Sense Fracture - Crime As Poetry.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/VA- Forever (Haunter Records, 2019)/25. S S S S - Dualistic Dead Ends.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/VA- Forever (Haunter Records, 2019)/07. Cube - Latency.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/VA- Forever (Haunter Records, 2019)/15. Oxhy - Santoor.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/VA- Forever (Haunter Records, 2019)/03. Maxwell Sterling - DESIGNER DIRGE.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/VA- Forever (Haunter Records, 2019)/06. ZULI & Broshuda - Vector Cloak.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/VA- Forever (Haunter Records, 2019)/05. Ssaliva - Why Me.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/VA- Forever (Haunter Records, 2019)/19. Kinlaw - Port Tropiq.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/VA- Forever (Haunter Records, 2019)/20. Heith & Weightausend - The Wheel.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/VA- Forever (Haunter Records, 2019)/12. Helm - Permanent Mute.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/VA- Forever (Haunter Records, 2019)/27. Alex Zhang Hungtai - LA River Practice.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/VA- Forever (Haunter Records, 2019)/11. Sol Ring - Shadow Heart.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/VA- Forever (Haunter Records, 2019)/24. XIII - explo_er.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/VA- Forever (Haunter Records, 2019)/17. ADVANCED AUDIO RESEARCH - Panzerism.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/VA- Forever (Haunter Records, 2019)/09. Elvin Brandhi - HAUNT.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/VA- Forever (Haunter Records, 2019)/01. VISIO - Landslide.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/VA- Forever (Haunter Records, 2019)/29. C0bweaver;Seed - ii + iii Tightened.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/VA- Forever (Haunter Records, 2019)/26. Katatonic Silentio - Eerie.mp3 +/var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/bob_selecta/VA- Forever (Haunter Records, 2019)/33. Ossia - Theresa.mp3 diff --git a/scripts/nextcloud-sync-md-transform.sh b/scripts/nextcloud-sync-md-transform.sh new file mode 100644 index 0000000..73a06d8 --- /dev/null +++ b/scripts/nextcloud-sync-md-transform.sh @@ -0,0 +1,36 @@ +sudo rm /var/www/pl4tform.org/website/data/mdtransformation/02_md-txt/* + +sudo rm /var/www/pl4tform.org/website/data/mdtransformation/02_txt-with-attatchements/* + +sudo rsync -avu --include="*.md" --exclude="*" /var/www/nextcloud/data/radio_admin/files/archive/. /var/www/pl4tform.org/website/data/mdtransformation/01_md-sync --delete-after; + +#sudo rsync -avu --include="*.txt" --exclude="*" /var/www/nextcloud/data/radio_admin/files/archive/. /var/www/pl4tform.org/website/data/files --delete-after; + +#sudo rsync -avu --include="*.jpg" --exclude="*" /var/www/nextcloud/data/radio_admin/files/archive/*/. /var/www/pl4tform.org/website/data/mdtransformation/03_attatchements_imgs --delete-after; + +sudo rsync -avu --include="*.jpg" --exclude="*" /var/www/nextcloud/data/radio_admin/files/archive/. /var/www/pl4tform.org/website/data/files --delete-after; + +sudo rsync -avu /var/www/nextcloud/data/radio_admin/files/archive/.attachments.* /var/www/pl4tform.org/website/data/mdtransformation/03_attatchements_imgs --delete-after + +sudo ln -s /var/www/nextcloud/data/radio_admin/files/archive/*.mp3 /var/www/pl4tform.org/website/data/files/ + +sudo python3 /var/www/pl4tform.org/script-md-test.py + +sudo find /var/www/pl4tform.org/website/data/files/ -xtype l -delete + +#sudo ln -s /var/www/pl4tform.org/website/data/mdtransformation/02_txt-with-attatchements/* /var/www/pl4tform.org/website/data/files/ + +sudo rsync -avu --include="*.txt" --exclude="*" /var/www/pl4tform.org/website/data/mdtransformation/02_txt-with-attatchements/. /var/www/pl4tform.org/website/data/files --delete-after; + +sudo ln -s /var/www/nextcloud/data/radio_admin/files/archive/*.txt /var/www/pl4tform.org/website/data/files/ + +#sudo rsync -avu --include="*.jpg" --exclude="*" /var/www/nextcloud/data/radio_admin/files/archive/main-page-image/. /var/www/pl4tform.org/website/data/main-page-image/main-page-image2.jpg --delete-after; +#sudo rsync -avu --exclude="old" /var/www/nextcloud/data/radio_admin/files/archive/main-page-image/* /var/www/pl4tform.org/website/data/main-page-image/main-page-image.jpg --delete-after; +#sudo rsync -avu --exclude="old" /var/www/nextcloud/data/radio_admin/files/archive/main-page-image/* /var/www/pl4tform.org/website/data/main-page-image/ --delete-after; +sudo rsync -avh --exclude="old" /var/www/nextcloud/data/radio_admin/files/archive/main-page-image/ /var/www/pl4tform.org/website/data/main-page-image/ --delete + +### RADIO PLAYLIST FILE UPDATE +#sudo find /var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music -name "*.mp3" >>./music.txt + + +echo "hoho fini le script" diff --git a/scripts/total-minutes-of-music-in-archive.sh b/scripts/total-minutes-of-music-in-archive.sh new file mode 100644 index 0000000..ccc2cfb --- /dev/null +++ b/scripts/total-minutes-of-music-in-archive.sh @@ -0,0 +1,31 @@ +#!/bin/bash + +join() { + local IFS="$1" + shift + echo "$*" +} + + +#### ARCHIVE +readarray -t durations < <( + find /var/www/nextcloud/data/radio_admin/files/archive/. -type f \( -iname '*.mp3' -o -iname '*.wav' -o -iname '*.m3u' -o \ + -iname '*.m4[ab]' -o -iname '*.mpga' -o -iname '*.opus' \) \ + -exec ffprobe {} -show_format -loglevel -8 \; | + sed -nE 's/^duration=([0-9\.]+)$/\1/p') + +# add + between all durations: +expression=$(join + ${durations[@]}) + +# calculate the total, including subseconds, round to whole minutes: +totM=$(bc -q <<< "scale=0;($expression)/60") +totH=$(bc -q <<< "scale=0;($totM)/60") +totJ=$(bc -q <<< "scale=0;($totH)/24") + + + +timestamp=$(date) + +echo "$timestamp : Total duration of Pl4tform-Archives: $totM minutes / $totH Hours / $totJ Days" >> ./ARCHIVE_music_duration_output.txt + + diff --git a/scripts/total-minutes-of-music-in-music.sh b/scripts/total-minutes-of-music-in-music.sh new file mode 100644 index 0000000..cf877a2 --- /dev/null +++ b/scripts/total-minutes-of-music-in-music.sh @@ -0,0 +1,29 @@ +#!/bin/bash + +join() { + local IFS="$1" + shift + echo "$*" +} + + +#### ARCHIVE +readarray -t durations < <( + find /var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music/. -type f \( -iname '*.mp3' -o -iname '*.wav' -o -iname '*.m3u' -o \ + -iname '*.m4[ab]' -o -iname '*.mpga' -o -iname '*.opus' \) \ + -exec ffprobe {} -show_format -loglevel -8 \; | + sed -nE 's/^duration=([0-9\.]+)$/\1/p') + +# add + between all durations: +expression=$(join + ${durations[@]}) + +# calculate the total, including subseconds, round to whole minutes: +totM=$(bc -q <<< "scale=0;($expression)/60") +totH=$(bc -q <<< "scale=0;($totM)/60") +totJ=$(bc -q <<< "scale=0;($totH)/24") + +timestamp=$(date) + +echo "$timestamp : Total duration of Pl4tform-Music: $totM minutes / $totH Hours / $totJ Days" >> ./MUSIC_music_duration_output.txt + +echo "$timestamp was done" diff --git a/scripts/update-music-playlist.sh b/scripts/update-music-playlist.sh new file mode 100644 index 0000000..e1d098c --- /dev/null +++ b/scripts/update-music-playlist.sh @@ -0,0 +1,3 @@ +#sudo rm /var/www/pl4tform.org/website/scripts/music.txt +find /var/www/nextcloud/data/radio_admin/files/radio_music_and_jingles/music -name "*.mp3" > /var/www/pl4tform.org/website/scripts/music.txt +echo "music playlist updated" diff --git a/testgrid.php b/testgrid.php new file mode 100644 index 0000000..7d0eb0a --- /dev/null +++ b/testgrid.php @@ -0,0 +1,737 @@ +connect_error) { + die("Verbindung fehlgeschlagen: " . $conn->connect_error); + } + + // 1. Abfrage: Alle Dateien, deren Pfad '%files/archive/%' enthält + $sql1 = "SELECT fc.fileid, fc.name AS file_name, fc.path AS file_path, fc.size, fc.mimetype + FROM oc_filecache AS fc + WHERE fc.path LIKE '%files/archive/%' + ORDER BY fc.name DESC"; + + $result1 = $conn->query($sql1); + + + + // 2. Abfrage: Alle Mimetypes und ihre IDs + $sql2 = "SELECT id, mimetype FROM oc_mimetypes"; + $result2 = $conn->query($sql2); + + // 3. Abfrage: Alle Tags im System + $sql3 = "SELECT id, name FROM oc_systemtag"; + $result3 = $conn->query($sql3); + + // 4. Abfrage: Verknüpfung zwischen Files und Tags (mit 'files' statt 'file') + $sql4 = "SELECT objectid, systemtagid + FROM oc_systemtag_object_mapping + WHERE objecttype = 'files'"; + + $result4 = $conn->query($sql4); + + // Alle Mimetypes in einem Array speichern + $mimetypes = []; + while ($row = $result2->fetch_assoc()) { + $mimetypes[$row['id']] = $row['mimetype']; + } + + // Alle Tags in einem Array speichern + $tags = []; + while ($row = $result3->fetch_assoc()) { + $tags[$row['id']] = $row['name']; + } + + // Tags mit Dateiinformationen verbinden + $fileTags = []; + while ($row = $result4->fetch_assoc()) { + $fileTags[$row['objectid']][] = $tags[$row['systemtagid']]; + } + +?> + + + + + + + + + + + + + + + + + + + +
+
+ + "; + echo "
" . $Parsedown->text($file_content) . "
"; + ?> + +
+ +
+ text($file_content); + $file_content_html = str_replace('src=".attachments.', 'class="" id="nextliveImg" onclick="focusItem(\''.$imgLink.'\')" src="ncdataaccueil/.attachments.', $file_content_html); + + echo "
$file_content_html
"; + ?> +
+ +
";?>
+ + + +
";?>
+ +
";?>
+ +
";?>
+ +
";?>
+ +
text($file_content); + ?> +
+ +
+ +
";?>
+ +
";?>
+ + + + +
+ + + + + + + + + + + +
+ +
+
close index [x]
+
+ +
+ +
+ + +
+ +
+ + + + + + + + + File Information + + + + + + + + "; + + + + + + + echo " + + + + + + + + + + + + + + + + "; + + + // Array zum Speichern der fileids + $fileids = array(); + + if ($result1->num_rows > 0) { + while ($row = $result1->fetch_assoc()) { + $file_id = $row['fileid']; + $file_name = $row['file_name']; + $file_size = $row['size']; + $file_size_in_mb = number_format($file_size / (1024 * 1024), 2); + $mimetype_id = $row['mimetype']; + $mimetype_name = isset($mimetypes[$mimetype_id]) ? $mimetypes[$mimetype_id] : 'Unknown'; + + + // Hole die Tags für diese Datei + $file_tags = isset($fileTags[$file_id]) ? implode(', ', $fileTags[$file_id]) : 'No Tags'; + + // Prüfen, ob der Dateiname mit einem Datum im gewünschten Format beginnt (DDMMYY-HHMM oder DDMMYY_HHMM) + if (!preg_match('/^\d{6}[-_]\d{4}/', $file_name)) { + continue; // Diese Datei überspringen, wenn der Dateiname nicht mit dem gewünschten Format beginnt + } + + $fileids[] = $row['fileid']; + + // TO NOT SHOW THE DESCRIPTION FILES !! + // if (str_contains($file_tags, 'Tags')) { + // continue; + // } + + include 'includes/item-title-split.php'; + + // Generiere die URL für die Datei + $file_url = "https://pl4tform.org/ncdata/{$file_name}"; + $file_url = str_replace(" ","%20",$file_url); + + $file_date = "$file_day.$file_month.$file_year"; + $file_time = "$file_hour:$file_minute"; + + $mimetype_name = explode('/', $mimetype_name)[0]; + + // Zeile in die Tabelle einfügen und Dateinamen als Link formatieren + // echo " + echo " + + + + + + + + + + + + + "; + } + } else { + echo ""; + } + + echo " +
File Name
$file_id$file_name$file_title$file_tags$file_date$file_time$mimetype_name$file_size_in_mb20$file_year$file_month"; + echo "mimetype: $mimetype_name, link: $file_url"; + // ACTIVER POUR QUE LES RECHERCHE PRENNENT AUSSI COMPTE DES CONTENUES DES FICHIER !!! ===>> problem avec les fichier de discription son parce qu'il ont le display = none + if (str_contains($mimetype_name, 'text') AND !str_contains($file_tags, 'No Tags')) { + $file_content = file_get_contents($file_url); + echo $file_content; + } + echo "
No data found
+ + "; + + $conn->close(); + ?> + + + + +
+ + + 0) { + // $random_fileid = $fileids[array_rand($fileids)]; + // } else {} + + $fileids_js_array = json_encode($fileids); + ?> + + + + + +
+ +
+
+
+
+
+
+
+ +
+ + + + + + + + + +
+
+
+
+
+
+
+ +
+
+
+
+ + + +
+ + + + + + + + + + + + + + + diff --git a/url.php b/url.php new file mode 100644 index 0000000..e1f0ce2 --- /dev/null +++ b/url.php @@ -0,0 +1,6 @@ + \ No newline at end of file