+
+
-
- {categories.map((category) => {
- return } />;
- })}
-
+
+ {categories.map((category) => {
+ return } />;
+ })}
+
+
-
+ {/*
*/}
);
}
diff --git a/src/components/Cards/ProjectCards.jsx b/src/components/Cards/ProjectCards.jsx
index bb4821ce..96f098e5 100644
--- a/src/components/Cards/ProjectCards.jsx
+++ b/src/components/Cards/ProjectCards.jsx
@@ -1,26 +1,31 @@
-import React from 'react'
-import Card from './Card'
-import './card.css'
+import React from 'react';
+import Card from './Card';
+import './card.css';
+import Footer from '../Footer/Footer';
const ProjectCards = (props) => {
- const { projectsData, tech } = props;
- const truncateDescription = (description, limit) => {
+ const { projectsData, tech } = props;
+
+ const truncateDescription = (description, limit) => {
const words = description.split(' ');
if (words.length > limit) {
return words.slice(0, limit).join(' ') + '...';
}
return description;
};
- return (
-
- {projectsData.map((data, index) => (
-
{/* Set a minimum width */}
-
-
- ))}
-
- )
+ return (
+
+
+ {projectsData.map((data, index) => (
+
+
+
+ ))}
+
+
+
+ );
}
-export default ProjectCards
+export default ProjectCards;
diff --git a/src/components/Cards/card.css b/src/components/Cards/card.css
index 6c71a145..77ab5e0f 100644
--- a/src/components/Cards/card.css
+++ b/src/components/Cards/card.css
@@ -1,50 +1,60 @@
-.projectsCard {
+.projects-container {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ margin: 0 auto;
+ padding-top: 1rem;
+ }
+
+ .projectsCard {
max-width: 1300px;
transition: all 0.3s;
-
-}
-
-/* Card Styles */
-.card {
+ display: flex;
+ flex-wrap: wrap;
+ justify-content: center;
+ }
+
+ /* Card Styles */
+ .card {
border-radius: 30px;
border: 8px solid transparent;
box-sizing: border-box;
transition: border-color 0.3s ease, box-shadow 0.3s ease, transform 0.3s ease;
- margin-bottom:3px;
-}
-
-/* Card Image */
-.card-img-top {
+ margin-bottom: 3px;
+ }
+
+ /* Card Image */
+ .card-img-top {
object-fit: cover;
border-top-left-radius: 30px;
border-top-right-radius: 30px;
-}
-
-/* Card Body */
-.card-body {
+ }
+
+ /* Card Body */
+ .card-body {
padding: 20px;
-}
-
-.card:hover {
+ }
+
+ .card:hover {
border-color: white;
transform: scale(1.05);
-}
-
-
-@media (max-width: 1400px) {
+ }
+
+ @media (max-width: 1400px) {
.projectsCard {
- max-width: 88%;
+ max-width: 88%;
}
-}
-
-@media (max-width: 1000px) {
+ }
+
+ @media (max-width: 1000px) {
.projectsCard {
- max-width: 75%;
+ max-width: 75%;
}
-}
-
-@media (max-width: 800px) {
+ }
+
+ @media (max-width: 800px) {
.projectsCard {
- max-width: 65%;
+ max-width: 65%;
}
-}
+ }
+
\ No newline at end of file
diff --git a/src/components/Footer/Footer.css b/src/components/Footer/Footer.css
index 4d79d508..adcacfec 100644
--- a/src/components/Footer/Footer.css
+++ b/src/components/Footer/Footer.css
@@ -1,14 +1,12 @@
footer {
- position: fixed;
+ display: block;
background-color: rgb(15, 15, 17);
- bottom: 0;
- left: 0;
- right: 0;
width: 100%;
- padding: 16px;
+ padding-top: 10px;
text-align: center;
border-top: 1px solid silver;
+ /* height: 25%; */
}
.foot-left h1{
color: rgb(162, 112, 208);
@@ -26,7 +24,7 @@ p{
text-align: justify;
}
.social{
- margin-top: 80px;
+ margin-top: 50px;
}
.social-section{
margin-top: 20px;
@@ -40,6 +38,9 @@ p{
}
.row-flex {
text-align: right;
+ display: inline-block;
+ position: inherit;
+ right: 20px;
}
input[type="email"] {
padding: 8px;
diff --git a/src/components/Pages/MainPage.jsx b/src/components/Pages/MainPage.jsx
index e1a58a9c..db60a07d 100644
--- a/src/components/Pages/MainPage.jsx
+++ b/src/components/Pages/MainPage.jsx
@@ -72,7 +72,7 @@ const MainPage = (props) => {
}, [tag]);
return (
- <>
+
{`${getName(category)} Projects`}
handleTagClick('Basic')}>Easy
@@ -81,7 +81,6 @@ const MainPage = (props) => {
handleTagClick('All')}>All
-
{
All
- >
+
+
);
};
diff --git a/src/components/Sidebar/sidebar.css b/src/components/Sidebar/sidebar.css
index ebad3de2..803044ae 100644
--- a/src/components/Sidebar/sidebar.css
+++ b/src/components/Sidebar/sidebar.css
@@ -11,9 +11,11 @@
}
.sidebar {
+ display: block;
+ height: 100vh;
background: #12151e;
color: #6c7293;
- height: 100%;
+ padding: 10px 0;
overflow-y: auto;
}
@@ -56,10 +58,10 @@
}
.routes {
- margin-top: 15px;
+ margin-top: 30px;
display: flex;
flex-direction: column;
- gap: 5px;
+ gap: 15px;
}
.link {
From d79180ef2981b927ec2faeced0db7e3a9736791f Mon Sep 17 00:00:00 2001
From: AmrutaJayanti <142327526+AmrutaJayanti@users.noreply.github.com>
Date: Mon, 3 Jun 2024 19:29:43 +0530
Subject: [PATCH 09/16] Update Readme.md
---
Vanilla-JS-Projects/Advanced/Markdown-Previewer/Readme.md | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/Vanilla-JS-Projects/Advanced/Markdown-Previewer/Readme.md b/Vanilla-JS-Projects/Advanced/Markdown-Previewer/Readme.md
index dca33b07..596c649c 100644
--- a/Vanilla-JS-Projects/Advanced/Markdown-Previewer/Readme.md
+++ b/Vanilla-JS-Projects/Advanced/Markdown-Previewer/Readme.md
@@ -55,8 +55,7 @@
## :zap: Screenshots đ¸
-![MarkdownPreviewer](https://raw.githubusercontent.com/AmrutaJayanti/WebMasterLog/MarkDown/Vanilla-JS-Projects/Advanced/Markdown-Previewer/Screenshot.webp)
-
+![MarkdownPreviewer](https://raw.githubusercontent.com/AmrutaJayanti/WebMasterLog/MarkDown/Vanilla-JS-Projects/Advanced/Markdown-Previewer/screenshot.webp)
From 786e1cc51ca8223d653c704e70439bb10f8220d7 Mon Sep 17 00:00:00 2001
From: Siddheya Kulkarni <115717746+Asymtode712@users.noreply.github.com>
Date: Mon, 3 Jun 2024 19:58:31 +0530
Subject: [PATCH 10/16] added yt-video-downloader
---
.../YouTube-Video-Downloader/README.md | 80 ++
.../client/index.html | 29 +
.../YouTube-Video-Downloader/client/index.js | 68 ++
.../client/styles.css | 85 ++
.../YouTube-Video-Downloader/screenshot.webp | Bin 0 -> 319640 bytes
.../server/package-lock.json | 750 ++++++++++++++++++
.../server/package.json | 7 +
.../YouTube-Video-Downloader/server/server.js | 51 ++
8 files changed, 1070 insertions(+)
create mode 100644 Node-JS-Projects/Intermediate/YouTube-Video-Downloader/README.md
create mode 100644 Node-JS-Projects/Intermediate/YouTube-Video-Downloader/client/index.html
create mode 100644 Node-JS-Projects/Intermediate/YouTube-Video-Downloader/client/index.js
create mode 100644 Node-JS-Projects/Intermediate/YouTube-Video-Downloader/client/styles.css
create mode 100644 Node-JS-Projects/Intermediate/YouTube-Video-Downloader/screenshot.webp
create mode 100644 Node-JS-Projects/Intermediate/YouTube-Video-Downloader/server/package-lock.json
create mode 100644 Node-JS-Projects/Intermediate/YouTube-Video-Downloader/server/package.json
create mode 100644 Node-JS-Projects/Intermediate/YouTube-Video-Downloader/server/server.js
diff --git a/Node-JS-Projects/Intermediate/YouTube-Video-Downloader/README.md b/Node-JS-Projects/Intermediate/YouTube-Video-Downloader/README.md
new file mode 100644
index 00000000..891381b9
--- /dev/null
+++ b/Node-JS-Projects/Intermediate/YouTube-Video-Downloader/README.md
@@ -0,0 +1,80 @@
+
đĨ Youtube Video Downloader đĨ
+
+
+
+
Tech Stack Used đŽ
+
+
+
+
+
+![Line](https://github.com/Avdhesh-Varshney/WebMasterLog/assets/114330097/4b78510f-a941-45f8-a9d5-80ed0705e847)
+
+
+
+## :zap: Description đ
+
+
+
+
+ Download your favorite YouTube videos effortlessly with our YouTube Video Downloader. Built using HTML, CSS, JavaScript, and Node.js, this tool provides a simple and user-friendly interface for quick and easy video downloads.
+
+
+
+
+
+
+## :zap: How to run it? đšī¸
+
+
+- Clone the repository into your local machine
+ ```
+ git clone https://github.com/Avdhesh-Varshney/WebMasterLog.git
+ ```
+- Go to the `Youtube-Video-Downloader` directory
+- Go to the `server` folder and install Dependencies
+ ```
+ npm install
+ ```
+- Run the server
+ ```
+ nodemon server.js
+ ```
+- Go to the `client` folder and run `index.html`
+
+
+
+## :zap: Screenshots đ¸
+
+![img](./screenshot.webp)
+
+
+
+
+
+
+
+
+![Line](https://github.com/Avdhesh-Varshney/WebMasterLog/assets/114330097/4b78510f-a941-45f8-a9d5-80ed0705e847)
+
+
+
+
Developed By Siddheya Kulkarni đĻ
+
+
+
+
+
+
+
+
+
+
Happy Coding đĻ
+
+
Show some â¤ī¸ by đ this repository!
diff --git a/Node-JS-Projects/Intermediate/YouTube-Video-Downloader/client/index.html b/Node-JS-Projects/Intermediate/YouTube-Video-Downloader/client/index.html
new file mode 100644
index 00000000..64a9a109
--- /dev/null
+++ b/Node-JS-Projects/Intermediate/YouTube-Video-Downloader/client/index.html
@@ -0,0 +1,29 @@
+
+
+
+
+
YouTube Video Downloader
+
+
+
+
+
YouTube Video Downloader
+
+
+ Select Quality
+ 144p
+ 240p
+ 360p
+ 480p
+ 720p
+ 1080p
+ 1440p
+
+
Download
+
+
+
+
+
+
+
diff --git a/Node-JS-Projects/Intermediate/YouTube-Video-Downloader/client/index.js b/Node-JS-Projects/Intermediate/YouTube-Video-Downloader/client/index.js
new file mode 100644
index 00000000..356851d0
--- /dev/null
+++ b/Node-JS-Projects/Intermediate/YouTube-Video-Downloader/client/index.js
@@ -0,0 +1,68 @@
+document.querySelector('#downloadBtn').addEventListener('click', handleVideoDownload);
+
+async function handleVideoDownload() {
+ const videoLink = document.querySelector('#videoUrl').value;
+ const videoQuality = document.querySelector('#quality').value;
+
+ if (!validateYouTubeUrl(videoLink)) {
+ alert('Please enter a valid YouTube video URL.');
+ return;
+ }
+
+ const vidId = getVideoIdFromUrl(videoLink);
+
+ try {
+ displayMessage('Downloading...');
+
+ console.log(`Requesting video from: http://localhost:3000/download?videoId=${vidId}&quality=${videoQuality}`);
+ const response = await fetch(`http://localhost:3000/download?videoId=${vidId}&quality=${videoQuality}`);
+
+ if (!response.ok) {
+ const errorText = await response.text();
+ throw new Error(`Network response was not ok: ${response.statusText}. Error message: ${errorText}`);
+ }
+
+ const videoBlob = await response.blob();
+ const downloadUrl = URL.createObjectURL(videoBlob);
+
+ const anchorElement = document.createElement('a');
+ anchorElement.style.display = 'none';
+ anchorElement.href = downloadUrl;
+ anchorElement.download = 'video.mp4';
+ document.body.appendChild(anchorElement);
+ anchorElement.click();
+ URL.revokeObjectURL(downloadUrl);
+
+ displayMessage('Download completed.');
+ } catch (error) {
+ console.error('Error downloading the video:', error);
+ displayMessage('Error downloading the video.');
+ }
+}
+
+function validateYouTubeUrl(url) {
+ const regex = /^(http(s)?:\/\/)?((w){3}.)?youtu(be|.be)?(\.com)?\/.+/i;
+ return regex.test(url);
+}
+
+function getVideoIdFromUrl(url) {
+ let vidId = '';
+ const urlSearchParams = new URLSearchParams(new URL(url).search);
+ if (url.includes('youtube.com') && urlSearchParams.has('v')) {
+ vidId = urlSearchParams.get('v');
+ } else if (url.includes('youtu.be')) {
+ vidId = new URL(url).pathname.slice(1);
+ }
+
+ const idRegex = /^[a-zA-Z0-9-_]{11}$/;
+ if (!idRegex.test(vidId)) {
+ throw new Error(`Invalid video ID: ${vidId}`);
+ }
+
+ return vidId;
+}
+
+function displayMessage(msg) {
+ const msgDiv = document.querySelector('#message');
+ msgDiv.innerText = msg;
+}
diff --git a/Node-JS-Projects/Intermediate/YouTube-Video-Downloader/client/styles.css b/Node-JS-Projects/Intermediate/YouTube-Video-Downloader/client/styles.css
new file mode 100644
index 00000000..12499102
--- /dev/null
+++ b/Node-JS-Projects/Intermediate/YouTube-Video-Downloader/client/styles.css
@@ -0,0 +1,85 @@
+body {
+ font-family: Arial, sans-serif;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ background-image: linear-gradient( to right, #FEB692 10%, #EA5455 100%);
+}
+
+.container {
+ margin-top: 200px;
+ width: 450px;
+ height: 300px;
+ padding: 20px;
+ box-shadow: 0 2px 10px rgba(0, 0, 0, 0.8);
+ background-color: #fff;
+ border-radius: 8px;
+ text-align: center;
+}
+
+h1 {
+ font-size: 1.8em;
+ margin-bottom: 20px;
+ color: #ff0000;
+}
+
+input[type="text"] {
+ width: 250px;
+ padding: 10px;
+ margin-bottom: 20px;
+ border: 1px solid #ccc;
+ border-radius: 4px;
+ transition: border-color 0.3s ease;
+}
+
+input[type="text"]:focus {
+ border-color: #ff0000;
+ outline: none;
+}
+
+select {
+ width: 150px;
+ padding: 10px;
+ margin-bottom: 20px;
+ border: 1px solid #ccc;
+ border-radius: 4px;
+ background-color: #fff;
+ color: #000;
+}
+
+button {
+ padding: 10px 20px;
+ background-color: #ff0000;
+ color: #fff;
+ border: none;
+ border-radius: 4px;
+ cursor: pointer;
+ transition: background-color 0.3s ease;
+}
+
+button:hover {
+ background-color: #cc0000;
+}
+
+#downloadLinks {
+ margin-top: 20px;
+ text-align: left;
+}
+
+#downloadLinks a {
+ display: block;
+ margin-bottom: 10px;
+ color: #ff0000;
+ text-decoration: none;
+ transition: color 0.3s ease;
+}
+
+#downloadLinks a:hover {
+ color: #cc0000;
+}
+
+#message {
+ margin-top: 20px;
+ color: #555;
+ font-size: 1.2em;
+}
diff --git a/Node-JS-Projects/Intermediate/YouTube-Video-Downloader/screenshot.webp b/Node-JS-Projects/Intermediate/YouTube-Video-Downloader/screenshot.webp
new file mode 100644
index 0000000000000000000000000000000000000000..8932efa5d43a2783ad1e88eddc4d8a64575c2053
GIT binary patch
literal 319640
zcmeFacTiK&+xSV5AYed6X`xv`I*5cORRKkc3X0MN6r@Wtw16}bX(~;66G0?Fks1j_
z1ZkltAiakedgvwD8}$3W`^WxfXJ>b2-`%;HQOAVg=H7FjexBzOX{fIaW#(a~p`n3Z
z)46hshK7NQhK4TpFa&tV`;*N%;2&C#TiO~lC7rwk;6H~Rsq3lJ(3Hlq>{&Aa|7UX3
zx#vMc!`evwL)+~7-j;@jl7H=ry3tdM`Kk%;vkEL_Rb%^
|_by
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%0D{v}b4K(OF^fr3d6(m?z(D
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 Oc}tYL7G(y0bw!t)1&pdYEw!k9BO
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