Skip to content

Commit

Permalink
Fixed title extraction logic & Improved index page & Updated README
Browse files Browse the repository at this point in the history
  • Loading branch information
Ambratolm authored and Ambratolm committed Feb 26, 2022
1 parent c762ab8 commit 9217443
Show file tree
Hide file tree
Showing 179 changed files with 123 additions and 40 deletions.
38 changes: 33 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,42 @@
[![Web](https://img.shields.io/badge/web-blue?logo=w3c)](https://github.com/topics/web)
[![PHP](https://img.shields.io/badge/php-blue?logo=php)](https://github.com/topics/php)

A Web application that responds with a random image on every HTTP request.
HTTP Web API that responds with a random [image](https://ambratolm.cf).

[**🌐 View Live**](https://random-artwork.herokuapp.com)

## Content
## 📂 Endpoints

- **📂 dir** : Pick random image from **Local Directory**.
- **📂 rss** : Pick random image from **RSS Feed**.
### 📁 Directory Endpoint

**GET** random image from **Local Directory** (`./dir/images`).

- **`🌐 ./dir`** : returns **Image File**.
- **`🌐 ./dir?json`** : returns **JSON File** with this data:
- `title` : friendly image title (ex: `"Wracurd"`)
- `name` : image file name with extension (ex: `"wracurd_paint_p_ft.jpg"`).
- `type` : image file full url (example: `"https://random-image.com/dir/images/wracurd_paint_p_ft.jpg"`).
- `url` : image file mime type (example: `"image/jpeg"`).

### 📁 RSS Endpoint

**GET** random image from [**RSS Feed**](https://feeds.feedburner.com/ambratolm-cf).

- **`🌐 ./rss`** : returns **Image File**.

## JSON Generation

The JSON file data is **fully based** on the **image file**.

- `title` is extracted from the image file name following this method:
- If the name contains an underscore `_`, only the part that preceeds the underscore `_` is taken. Else, the full name is taken.
- The hyphens `-` in the name are replaced with spaces.
- The first word is capitalized.
- `title` extraction example:
- `quest in-the-City_paint_p_ft`
-`quest in-the-City`
-`quest in the City`
-`Quest in the City`

## 🚀 Development

Expand All @@ -25,4 +53,4 @@ A Web application that responds with a random image on every HTTP request.

## 📄 License

© Ambratolm 2022
© Ambratolm 2022
Binary file removed dir/images/Alarm_skt_racr_g_ft.jpg
Binary file not shown.
Binary file removed dir/images/Ascension Storm_001_paint_p_ft.jpg
Binary file not shown.
Binary file removed dir/images/Ascension Storm_002_paint_p_ft.jpg
Binary file not shown.
Binary file removed dir/images/Ascension Storm_003_paint_p_ft.jpg
Binary file not shown.
Binary file removed dir/images/Ascension Storm_004_paint_p_ft.jpg
Binary file not shown.
Binary file removed dir/images/Ascension Storm_005_paint_p_ft.jpg
Binary file not shown.
Binary file removed dir/images/Betrayal_paint_p_FT.jpg
Binary file not shown.
Binary file removed dir/images/Capital_skt_racr_g_ft.jpg
Binary file not shown.
Binary file removed dir/images/Charkia and Westy (1).jpg
Binary file not shown.
Binary file removed dir/images/Charkia and Westy (2).jpg
Binary file not shown.
Binary file removed dir/images/Charkia and Westy (3).jpg
Binary file not shown.
Binary file removed dir/images/Charkia and Westy (4).jpg
Binary file not shown.
Binary file removed dir/images/Charkia and Westy (5).jpg
Binary file not shown.
Binary file removed dir/images/Charkia and Westy (6).jpg
Binary file not shown.
Binary file removed dir/images/Charkia_Wendy_clg.jpg
Binary file not shown.
Binary file removed dir/images/Charkia_paint_p_ft2.jpg
Binary file not shown.
Binary file removed dir/images/Collapse_001_painting_p_FT2.jpg
Binary file not shown.
File renamed without changes
File renamed without changes
Binary file added dir/images/Collection BGM 1_clg.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added dir/images/Collection BGM 2_clg.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added dir/images/Collection BGM 3_clg.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
File renamed without changes
File renamed without changes
File renamed without changes
File renamed without changes
File renamed without changes
File renamed without changes
File renamed without changes
Binary file removed dir/images/Concord_paint_p_ft.jpg
Diff not rendered.
Binary file removed dir/images/Confession_001_paint_p_FT.jpg
Diff not rendered.
Binary file removed dir/images/Culprit_skt_racr_g_ft.jpg
Diff not rendered.
Binary file removed dir/images/Culprit_skt_racr_g_ft_clg.jpg
Diff not rendered.
Binary file removed dir/images/Dark Flower_001_crt_p_ft.jpg
Diff not rendered.
Binary file removed dir/images/Dark Flower_001_painting_p_FT.jpg
Diff not rendered.
Binary file removed dir/images/Dawn Radiance_paint_p_ft.jpg
Diff not rendered.
Binary file removed dir/images/Deadly Mistress_001_painting_p_FT.jpg
Diff not rendered.
Binary file removed dir/images/Departure_racr_clg.jpg
Diff not rendered.
Binary file removed dir/images/Diligence_skt_racr_g_ft.jpg
Diff not rendered.
Binary file removed dir/images/Diligence_skt_racr_g_ft_clg.jpg
Diff not rendered.
Binary file removed dir/images/Discreet Call_skt_racr_g_ft.jpg
Diff not rendered.
Binary file removed dir/images/Discussion_paint_p_ft2.jpg
Diff not rendered.
Binary file removed dir/images/Dose_crt_acr.jpg
Diff not rendered.
Binary file removed dir/images/Entreaty_paint_p_ft.jpg
Diff not rendered.
Binary file removed dir/images/Escape_skt_acr_g_ft.jpg
Diff not rendered.
Binary file removed dir/images/Etheric Control_paint_p_ft.jpg
Diff not rendered.
Binary file removed dir/images/Extreme Delusion_paint_p_ft1.jpg
Diff not rendered.
Binary file removed dir/images/Extreme Delusion_paint_p_ft2.jpg
Diff not rendered.
Binary file removed dir/images/Fade_paint_p_ft.jpg
Diff not rendered.
Binary file removed dir/images/Familiar Guide_paint_p_ft.jpg
Diff not rendered.
Binary file removed dir/images/Farewell_paint_p_FT.jpg
Diff not rendered.
Binary file removed dir/images/Fire Rider_paint_FT_RAW.jpg
Diff not rendered.
Binary file removed dir/images/Focus_paint_p_ft2.jpg
Diff not rendered.
Binary file removed dir/images/Freedom_001_painting_p_FT.jpg
Diff not rendered.
Binary file removed dir/images/Freedom_paint_p_ft.jpg
Diff not rendered.
Binary file removed dir/images/Global Vision_skt_racr_g_ft.jpg
Diff not rendered.
Binary file removed dir/images/Global Vision_skt_racr_g_ft_clg.jpg
Diff not rendered.
Binary file removed dir/images/Gloom Wind_skt_racr_g_ft.jpg
Diff not rendered.
Binary file removed dir/images/Gloom Wind_skt_racr_g_ft_clg.jpg
Diff not rendered.
Binary file removed dir/images/Hang-Up_001_paint_p_FT.jpg
Diff not rendered.
Binary file removed dir/images/Home in Ruins_skt_racr_g_ft.jpg
Diff not rendered.
Binary file removed dir/images/Home in Ruins_skt_racr_g_ft_clg.jpg
Diff not rendered.
Binary file removed dir/images/Homecoming_skt_racr_b_ft.jpg
Diff not rendered.
Binary file removed dir/images/Homecoming_skt_racr_b_ft_clg.jpg
Diff not rendered.
Binary file removed dir/images/Homeland_skt_racr_g_ft.jpg
Diff not rendered.
Binary file removed dir/images/Homeland_skt_racr_g_ft_clg.jpg
Diff not rendered.
Binary file removed dir/images/Hope_racr_g_ft.jpg
Diff not rendered.
Binary file removed dir/images/Inception_paint_p_ft2.jpg
Diff not rendered.
Binary file removed dir/images/Inceptive Rush_paint_p_ft.jpg
Diff not rendered.
Binary file removed dir/images/Ingress_skt_racr_g_ft.jpg
Diff not rendered.
Binary file removed dir/images/Ingress_skt_racr_g_ft_clg.jpg
Diff not rendered.
Binary file removed dir/images/Intense Feelings_001_painting_p_FT.jpg
Diff not rendered.
Binary file removed dir/images/Inveterate Presence_skt_racr_g_ft.jpg
Diff not rendered.
Binary file removed dir/images/Inveterate Presence_skt_racr_g_ft_clg.jpg
Diff not rendered.
Binary file removed dir/images/Irritated Heart_skt_racr_b_ft.jpg
Diff not rendered.
Binary file removed dir/images/Irritated Heart_skt_racr_b_ft_clg.jpg
Diff not rendered.
Binary file removed dir/images/Knowledge is Power.jpg
Diff not rendered.
Binary file removed dir/images/Knowledge_skt_racr_g_ft.jpg
Diff not rendered.
Binary file removed dir/images/Knowledge_skt_racr_g_ft_clg.jpg
Diff not rendered.
Binary file removed dir/images/Last Preliminaries_001_painting_p_FT.jpg
Diff not rendered.
Binary file removed dir/images/Last Whisper_skt_racr_g_ft.jpg
Diff not rendered.
Binary file removed dir/images/Lonely Flower_paint_p_FT.jpg
Diff not rendered.
Binary file removed dir/images/Memories-ft.jpg
Diff not rendered.
Binary file removed dir/images/Moonshine_001_acr_p_ft.jpg
Diff not rendered.
Binary file removed dir/images/Night Breeze_paint_p_ft.jpg
Diff not rendered.
Binary file removed dir/images/Night Hug_skt_racr_g_ft.jpg
Diff not rendered.
Binary file removed dir/images/Night Hug_skt_racr_g_ft_clg.jpg
Diff not rendered.
Binary file removed dir/images/Obedience_paint_p_FT2.jpg
Diff not rendered.
Binary file removed dir/images/Opposition_paint_acr_p_ft.jpg
Diff not rendered.
Binary file removed dir/images/Our Love_FT.jpg
Diff not rendered.
Binary file removed dir/images/Our Love_FT_CLG.jpg
Diff not rendered.
Binary file removed dir/images/Pacific Power_paint_p_ft.jpg
Diff not rendered.
Binary file removed dir/images/Pompous Limous_skt_racr_g_ft.jpg
Diff not rendered.
Binary file removed dir/images/Pray Moment_skt_racr_g_ft.jpg
Diff not rendered.
Binary file removed dir/images/Pray Moment_skt_racr_g_ft_clg.jpg
Diff not rendered.
Binary file removed dir/images/Quarrel_skt_racr_g_ft.jpg
Diff not rendered.
Binary file removed dir/images/Raid_paint_p_ft.jpg
Diff not rendered.
Binary file removed dir/images/Raised Flaps_paint_p_ft.jpg
Diff not rendered.
Binary file removed dir/images/Ranged Blow_paint_acr_p_ft.jpg
Diff not rendered.
Binary file removed dir/images/Ranged Watch_paint_p_ft.jpg
Diff not rendered.
Binary file removed dir/images/Remanent Harmony_paint_acr_p_ft.jpg
Diff not rendered.
Binary file removed dir/images/Response_paint_p_ft2.jpg
Diff not rendered.
Binary file removed dir/images/Reverence_paint_p_ft2.jpg
Diff not rendered.
Binary file removed dir/images/Rise_001_painting_p_FT2.jpg
Diff not rendered.
Binary file removed dir/images/Seed_001_painting_p_FT.jpg
Diff not rendered.
Binary file removed dir/images/Sensual Despair_skt_racr_g_ft.jpg
Diff not rendered.
Binary file removed dir/images/Serious Matter_001_painting_p_FT.jpg
Diff not rendered.
Binary file removed dir/images/Shelter_skt_racr_g_ft.jpg
Diff not rendered.
Binary file removed dir/images/Sketch_003_pen_p_ft.jpg
Diff not rendered.
Binary file removed dir/images/Spirit Session_ink_acr_b_ft.jpg
Diff not rendered.
Binary file removed dir/images/Spirit Session_ink_acr_b_ft_clg.jpg
Diff not rendered.
Binary file removed dir/images/Splash_paint_FT_RAW.jpg
Diff not rendered.
Binary file removed dir/images/Spring Beauty 2_paint_p_ft.jpg
Diff not rendered.
Binary file removed dir/images/Spring Beauty 3_paint_p_ft.jpg
Diff not rendered.
Binary file removed dir/images/Spring Beauty 4_paint_p_ft.jpg
Diff not rendered.
Binary file removed dir/images/Spring Beauty 5_paint_p_ft.jpg
Diff not rendered.
Binary file removed dir/images/Spring Beauty 6_paint_p_ft.jpg
Diff not rendered.
Binary file removed dir/images/Spring Beauty 7_paint_p_ft.jpg
Diff not rendered.
Binary file removed dir/images/Spring Beauty_paint_p_ft.jpg
Diff not rendered.
Binary file removed dir/images/Spring Beauty_x3_clg.jpg
Diff not rendered.
Binary file removed dir/images/Spring Beauty_x5_clg1.jpg
Diff not rendered.
Binary file removed dir/images/Spring Beauty_x5_clg2.jpg
Diff not rendered.
Binary file removed dir/images/Spring Beauty_x7_clg.jpg
Diff not rendered.
Binary file removed dir/images/Submission_paint_p_ft.jpg
Diff not rendered.
Binary file removed dir/images/Supreme Unit_skt_racr_g_ft_clg.jpg
Diff not rendered.
Binary file removed dir/images/Swordman_dpaint_FT_RAW.jpg
Diff not rendered.
Binary file removed dir/images/Swordsman2_001_pencil_p_ft.jpg
Diff not rendered.
Binary file removed dir/images/The Blue Power_001_painting_p_FT_ACR.jpg
Diff not rendered.
Binary file removed dir/images/The Last Night_skt_racr_g_ft.jpg
Diff not rendered.
Binary file removed dir/images/Titanic Warrior_001_painting_p_FT.jpg
Diff not rendered.
Binary file removed dir/images/Troop Infiltration_paint_g_ft.jpg
Diff not rendered.
Binary file removed dir/images/Truthful Growth_skt_racr_g_ft_wp.jpg
Diff not rendered.
Binary file removed dir/images/Turmoil_paint_p_ft.jpg
Diff not rendered.
Diff not rendered.
Binary file removed dir/images/Unpunctual Decision_acr_p_ft.jpg
Diff not rendered.
Binary file removed dir/images/Water Beneath_paint_p_ft.jpg
Diff not rendered.
Binary file removed dir/images/Westy_paint_p_ft2.jpg
Diff not rendered.
Binary file removed dir/images/Wistful Longing_skt_racr_g_ft.jpg
Diff not rendered.
Binary file removed dir/images/Witch 2_001_dp_Ft.jpg
Diff not rendered.
Binary file removed dir/images/Witch_dpaint_FT_RAW.jpg
Diff not rendered.
Binary file removed dir/images/Wracurd-clg-545.jpg
Diff not rendered.
Binary file removed dir/images/Wracurd_001_painting_p_FT.jpg
Diff not rendered.
Binary file removed dir/images/Wracurd_001_painting_p_FT_AcryR.jpg
Diff not rendered.
Binary file removed dir/images/Wracurd_ALBM.jpg
Diff not rendered.
Binary file removed dir/images/Wracurd_ALBM_Lite.jpg
Diff not rendered.
Binary file removed dir/images/Wracurd_Loce_Couple_Collage.jpg
Diff not rendered.
Binary file removed dir/images/Wracurd_assassin_clg.jpg
Diff not rendered.
Binary file removed dir/images/Wracurd_clg_rivals.jpg
Diff not rendered.
Binary file removed dir/images/Wracurd_clg_ruined_memories.jpg
Diff not rendered.
Binary file removed dir/images/Wracurd_clg_thing_vs_girl.jpg
Diff not rendered.
Binary file removed dir/images/Youth Headship_paint_p_ft2.jpg
Diff not rendered.
Binary file removed dir/images/_paint_p_ft.jpg
Diff not rendered.
Binary file removed dir/images/artworks_collage.jpg
Diff not rendered.
Binary file removed dir/images/artworks_flower_girl_clg.jpg
Diff not rendered.
Binary file removed dir/images/artworks_warrior_wracurd_clg.jpg
Diff not rendered.
Binary file removed dir/images/dark_flower_new_ft.jpg
Diff not rendered.
Binary file removed dir/images/fighter_new_ft.jpg
Diff not rendered.
Binary file removed dir/images/flower_comp4545.jpg
Diff not rendered.
Binary file removed dir/images/fwr_0.jpg
Diff not rendered.
Binary file removed dir/images/girl in sight.jpg
Diff not rendered.
Binary file removed dir/images/newFighter1_paint_p_ft.jpg
Diff not rendered.
Binary file removed dir/images/newFighter2_paint_p_ft.jpg
Diff not rendered.
Binary file removed dir/images/newFighter3_paint_p_ft2.jpg
Diff not rendered.
Binary file removed dir/images/newFighter4_paint_p_ft2.jpg
Diff not rendered.
Binary file removed dir/images/video_thumbnail.jpg
Diff not rendered.
Binary file removed dir/images/wr_paint_p_ft.jpg
Diff not rendered.
Binary file removed dir/images/wracurd_parts_ft.jpg
Diff not rendered.
Binary file removed dir/images/wracurd_reborn.jpg
Diff not rendered.
Binary file removed dir/images/wracurd_show_1.jpg
Diff not rendered.
Binary file removed dir/images/wracurd_show_2.jpg
Diff not rendered.
Binary file removed dir/images/wracurd_show_3.jpg
Diff not rendered.
Binary file removed dir/images/x2_pen_ft.jpg
Diff not rendered.
7 changes: 5 additions & 2 deletions dir/index.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,10 @@

// Get All Images in Directory
$dir_path = "./images/";
$images_paths = glob($dir_path . "/*.{jpg,png,gif}", GLOB_BRACE);
$images_paths = glob(
$dir_path . "/*.{jpg,jpeg,jpe,jfif,png,gif,bmp,dib,tif,tiff}", GLOB_BRACE
);
if (empty($images_paths)) exit;

// Get Random Image from Images in Directory
$image_path = $images_paths[array_rand($images_paths)];
Expand All @@ -18,7 +21,7 @@
exit;
}

// Send Image to Browser
// Send Image Directly to Browser
header("Content-Type: " . mime_content_type($image_path));
header("Content-Length: " . filesize($image_path));
readfile($image_path);
Expand Down
12 changes: 6 additions & 6 deletions dir/json.php
Original file line number Diff line number Diff line change
@@ -1,19 +1,19 @@
<?php
function image_json($image_path) {
$image_path_infos = pathinfo($image_path);
$image = new stdClass();
$image->name = basename($image_path);
$image->title = image_title($image->name);
$image->name = $image_path_infos["basename"];
$image->title = image_title($image_path_infos["filename"]);
$image->url = image_url($image_path);
$image->type = mime_content_type($image_path);
return json_encode($image);
}

function image_title($image_name) {
$title = substr($image_name, 0, strpos($image_name, "_"));
if ($title === null || trim($title) === "") {
$title = $image_name;
}
return $title;
if (empty(trim($title))) $title = $image_name;
$title = str_replace("-", " ", $title);
return ucfirst(trim($title));
}

function image_url($image_path) {
Expand Down
97 changes: 72 additions & 25 deletions index.php
Original file line number Diff line number Diff line change
@@ -1,37 +1,84 @@
<?php
$dirs = glob("*", GLOB_ONLYDIR);
if (($key = array_search("vendor", $dirs)) !== false) {
unset($dirs[$key]);
}
$dirs = glob("*", GLOB_ONLYDIR);
if (($key = array_search("vendor", $dirs)) !== false) {
unset($dirs[$key]);
}
?>
<!DOCTYPE html>
<html lang="en">
<html lang="en" data-theme="dark">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>🎲 Random Image by Ambratolm</title>
<link rel="stylesheet" href="./pico.min.css">
</head>
<style>
body {
font-family: "Courier New", sans-serif;
font-size: 150%;
background: silver;
}
li {
list-style: none;
}
</style>
<body>
<h1>🎲 Random Image</h1>
<p>
Pick a random image made by
<a href="https://ambratolm.cf" target="_blank">Ambratolm</a>.
</p>
<ul>
<?php foreach($dirs as $dir): ?>
<li>📂 <a href="./<?= $dir ?>" target="_blank"><?= $dir ?></a></li>
<?php endforeach; ?>
</ul>

<div class="hero">
<nav class="container-fluid">
<ul>
<li>
<a href="./" class="contrast" onclick="event.preventDefault()">
<img src="./logo.png" alt="logo"> <strong>Ambratolm</strong>
</a>
</li>
</ul>
<ul>
<li>
<a href="https://www.ambratolm.cf/p/links.html"
target="_blank"
class="contrast"
>
✉ Contact
</a>
</li>
</ul>
</nav>
<header class="container">
<hgroup>
<h4>🎲 Random Image</h4>
<h5>
Pick a random image made by
<a href="" target="_blank" class="contrast">🎨 Ambratolm</a>
</h5>
</hgroup>
<article>
<header>
📂 Endpoints
</header>
<aside>
<nav>
<ul>
<?php foreach ($dirs as $dir): ?>
<li>
<a href="./<?= $dir ?>" target="_blank" class="contrast">
📁 <?= $dir ?>
</a>
<ul>
<li>
<a href="./<?= $dir ?>?json" target="_blank" class="contrast">
🔍 <?= $dir ?>?json
</a>
</li>
</ul>
</li>
<?php endforeach; ?>
</ul>
</nav>
</aside>
<footer></footer>
</article>
</header>
</div>
<footer class="container">
&copy; <?= date("Y"); ?>
<a href="https://github.com/Ambratolm" target="_blank" class="contrast">
Ambratolm
</a>
</footer>
</body>
</html>
<script>

</script>
</html>
Binary file added logo.png
5 changes: 5 additions & 0 deletions pico.min.css

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions rss/index.php
Original file line number Diff line number Diff line change
Expand Up @@ -28,5 +28,5 @@
header("Content-Type: " . $headers["Content-Type"]);
header("Content-Length: " . $headers["Content-Length"]);
readfile($src);
exit;
?>
exit();
?>

0 comments on commit 9217443

Please sign in to comment.