From 66beabaa145db04eef0fbf66f983088b761f4602 Mon Sep 17 00:00:00 2001 From: AmrutaJayanti <142327526+AmrutaJayanti@users.noreply.github.com> Date: Sun, 2 Jun 2024 22:09:44 +0530 Subject: [PATCH 01/16] Create Readme.md --- .../Advanced/Markdown-Previewer/Readme.md | 80 +++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 Vanilla-JS-Projects/Advanced/Markdown-Previewer/Readme.md diff --git a/Vanilla-JS-Projects/Advanced/Markdown-Previewer/Readme.md b/Vanilla-JS-Projects/Advanced/Markdown-Previewer/Readme.md new file mode 100644 index 00000000..4e24e660 --- /dev/null +++ b/Vanilla-JS-Projects/Advanced/Markdown-Previewer/Readme.md @@ -0,0 +1,80 @@ +

đŸ’Ĩ Markdown Previewer đŸ’Ĩ

+ + + +

Tech Stack Used 🎮

+ + +
+ + ![HTML5](https://img.shields.io/badge/html5-%23E34F26.svg?style=for-the-badge&logo=html5&logoColor=white) + ![CSS3](https://img.shields.io/badge/css3-%231572B6.svg?style=for-the-badge&logo=css3&logoColor=white) + ![JavaScript](https://img.shields.io/badge/javascript-%23323330.svg?style=for-the-badge&logo=javascript&logoColor=%23F7DF1E) + + + + + + + + + + + +
+ + +![Line](https://github.com/Avdhesh-Varshney/WebMasterLog/assets/114330097/4b78510f-a941-45f8-a9d5-80ed0705e847) + + + +## :zap: Description 📃 + +
+ +

Build a web application where users can write Markdown text in a textarea, and see the rendered HTML preview live as they type

+
+ + + + +## :zap: How to run it? 🕹ī¸ + + +

To run this project locally, follow these steps: + +- Fork this repository. +- Clone the forked repository. +- Open index.html in your web browser to start your culinary exploration. + +

+ + + + +## :zap: Screenshots 📸 + + +![FoodRecipe](https://raw.githubusercontent.com/AmrutaJayanti/WebMasterLog/main/Vanilla-JS-Projects/Basic/Food-Recipe-Finder/screenshot.webp) + + + + + +![Line](https://github.com/Avdhesh-Varshney/WebMasterLog/assets/114330097/4b78510f-a941-45f8-a9d5-80ed0705e847) + + + +

Developed By Amruta Jayanti đŸ‘Ļ

+

+ + + + + + +

+ +

Happy Coding 🧑‍đŸ’ģ

+ +

Show some  â¤ī¸  by  đŸŒŸ  this repository!

From adc7338771547defd2b58078f57ce57f027eca9f Mon Sep 17 00:00:00 2001 From: AmrutaJayanti <142327526+AmrutaJayanti@users.noreply.github.com> Date: Sun, 2 Jun 2024 22:12:55 +0530 Subject: [PATCH 02/16] Add files via upload --- .../Markdown-Previewer/Screenshot.webp | Bin 0 -> 6836 bytes .../Advanced/Markdown-Previewer/index.html | 21 ++++++++++++ .../Advanced/Markdown-Previewer/script.js | 30 +++++++++++++++++ .../Advanced/Markdown-Previewer/styles.css | 31 ++++++++++++++++++ 4 files changed, 82 insertions(+) create mode 100644 Vanilla-JS-Projects/Advanced/Markdown-Previewer/Screenshot.webp create mode 100644 Vanilla-JS-Projects/Advanced/Markdown-Previewer/index.html create mode 100644 Vanilla-JS-Projects/Advanced/Markdown-Previewer/script.js create mode 100644 Vanilla-JS-Projects/Advanced/Markdown-Previewer/styles.css diff --git a/Vanilla-JS-Projects/Advanced/Markdown-Previewer/Screenshot.webp b/Vanilla-JS-Projects/Advanced/Markdown-Previewer/Screenshot.webp new file mode 100644 index 0000000000000000000000000000000000000000..4304c7ef1043c7cb4ecb5a91f6501f09590a273d GIT binary patch literal 6836 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 kl}ttHL%_`I)alA + + + + + + Markdown Previewer + + + +
+ +
+
+ + + + + + + diff --git a/Vanilla-JS-Projects/Advanced/Markdown-Previewer/script.js b/Vanilla-JS-Projects/Advanced/Markdown-Previewer/script.js new file mode 100644 index 00000000..0e5cda65 --- /dev/null +++ b/Vanilla-JS-Projects/Advanced/Markdown-Previewer/script.js @@ -0,0 +1,30 @@ +document.addEventListener('DOMContentLoaded', function() { + const markdownInput = document.getElementById('markdown-input'); + const preview = document.getElementById('preview'); + + + function renderMarkdown(markdown) { +const lines = markdown.split('\n'); +let html = ''; +lines.forEach(line => { + const match = line.match(/^#+\s*(.*)$/); + if (match) { + const level = match[0].split('#').length - 1; + const text = match[1].trim(); + + html += `${text}`; + } +}); + +return html; +} + + + + +function updatePreview() +{ + preview.innerHTML = renderMarkdown(markdownInput.value); +} + markdownInput.addEventListener('input', updatePreview); + }); \ No newline at end of file diff --git a/Vanilla-JS-Projects/Advanced/Markdown-Previewer/styles.css b/Vanilla-JS-Projects/Advanced/Markdown-Previewer/styles.css new file mode 100644 index 00000000..b22b865b --- /dev/null +++ b/Vanilla-JS-Projects/Advanced/Markdown-Previewer/styles.css @@ -0,0 +1,31 @@ +body { + font-family: Arial, sans-serif; + margin: 0; + padding: 0; +} + +.container { + display: flex; + justify-content: space-around; + align-items: flex-start; + margin-top: 50px; +} + +textarea { + width: 45%; + height: 400px; + padding: 10px; + font-size: 16px; + border: 1px solid #ccc; + border-radius: 5px; +} + +#preview { + width: 45%; + height: 400px; + padding: 10px; + font-size: 16px; + border: 1px solid #ccc; + border-radius: 5px; + overflow-y: auto; +} \ No newline at end of file From f2da5b1aaed9bacb8c0674d39296094232a96507 Mon Sep 17 00:00:00 2001 From: AmrutaJayanti <142327526+AmrutaJayanti@users.noreply.github.com> Date: Sun, 2 Jun 2024 22:14:30 +0530 Subject: [PATCH 03/16] Update Readme.md --- Vanilla-JS-Projects/Advanced/Markdown-Previewer/Readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Vanilla-JS-Projects/Advanced/Markdown-Previewer/Readme.md b/Vanilla-JS-Projects/Advanced/Markdown-Previewer/Readme.md index 4e24e660..dca33b07 100644 --- a/Vanilla-JS-Projects/Advanced/Markdown-Previewer/Readme.md +++ b/Vanilla-JS-Projects/Advanced/Markdown-Previewer/Readme.md @@ -55,7 +55,7 @@ ## :zap: Screenshots 📸 -![FoodRecipe](https://raw.githubusercontent.com/AmrutaJayanti/WebMasterLog/main/Vanilla-JS-Projects/Basic/Food-Recipe-Finder/screenshot.webp) +![MarkdownPreviewer](https://raw.githubusercontent.com/AmrutaJayanti/WebMasterLog/MarkDown/Vanilla-JS-Projects/Advanced/Markdown-Previewer/Screenshot.webp) From a360cf05fa70c34f4886b16d36c09f5d24cc3d70 Mon Sep 17 00:00:00 2001 From: AmrutaJayanti <142327526+AmrutaJayanti@users.noreply.github.com> Date: Mon, 3 Jun 2024 12:21:32 +0530 Subject: [PATCH 04/16] Update index.html --- Vanilla-JS-Projects/Advanced/Markdown-Previewer/index.html | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Vanilla-JS-Projects/Advanced/Markdown-Previewer/index.html b/Vanilla-JS-Projects/Advanced/Markdown-Previewer/index.html index 9ee813a1..1812b572 100644 --- a/Vanilla-JS-Projects/Advanced/Markdown-Previewer/index.html +++ b/Vanilla-JS-Projects/Advanced/Markdown-Previewer/index.html @@ -5,6 +5,8 @@ Markdown Previewer + + From 856e45ecab053e951f154e468d7de32353774057 Mon Sep 17 00:00:00 2001 From: AmrutaJayanti <142327526+AmrutaJayanti@users.noreply.github.com> Date: Mon, 3 Jun 2024 12:21:57 +0530 Subject: [PATCH 05/16] Update script.js --- .../Advanced/Markdown-Previewer/script.js | 35 +++++-------------- 1 file changed, 9 insertions(+), 26 deletions(-) diff --git a/Vanilla-JS-Projects/Advanced/Markdown-Previewer/script.js b/Vanilla-JS-Projects/Advanced/Markdown-Previewer/script.js index 0e5cda65..a8f388d2 100644 --- a/Vanilla-JS-Projects/Advanced/Markdown-Previewer/script.js +++ b/Vanilla-JS-Projects/Advanced/Markdown-Previewer/script.js @@ -1,30 +1,13 @@ + document.addEventListener('DOMContentLoaded', function() { - const markdownInput = document.getElementById('markdown-input'); - const preview = document.getElementById('preview'); + const markdownInput = document.getElementById('markdown-input'); + const preview = document.getElementById('preview'); - - function renderMarkdown(markdown) { -const lines = markdown.split('\n'); -let html = ''; -lines.forEach(line => { - const match = line.match(/^#+\s*(.*)$/); - if (match) { - const level = match[0].split('#').length - 1; - const text = match[1].trim(); - - html += `${text}`; + function updatePreview() { + // Sanitize and render markdown + const sanitizedHtml = DOMPurify.sanitize(marked.parse(markdownInput.value)); + preview.innerHTML = sanitizedHtml; } -}); - -return html; -} - - - -function updatePreview() -{ - preview.innerHTML = renderMarkdown(markdownInput.value); -} - markdownInput.addEventListener('input', updatePreview); - }); \ No newline at end of file + markdownInput.addEventListener('input', updatePreview); +}); From c658e73792d5211776e0b432ff9d8bce1904ccb9 Mon Sep 17 00:00:00 2001 From: AmrutaJayanti <142327526+AmrutaJayanti@users.noreply.github.com> Date: Mon, 3 Jun 2024 12:22:56 +0530 Subject: [PATCH 06/16] Rename Screenshot.webp to screenshot.webp --- .../{Screenshot.webp => screenshot.webp} | Bin 1 file changed, 0 insertions(+), 0 deletions(-) rename Vanilla-JS-Projects/Advanced/Markdown-Previewer/{Screenshot.webp => screenshot.webp} (100%) diff --git a/Vanilla-JS-Projects/Advanced/Markdown-Previewer/Screenshot.webp b/Vanilla-JS-Projects/Advanced/Markdown-Previewer/screenshot.webp similarity index 100% rename from Vanilla-JS-Projects/Advanced/Markdown-Previewer/Screenshot.webp rename to Vanilla-JS-Projects/Advanced/Markdown-Previewer/screenshot.webp From 707db9e9be57f3456c89f45f0a2d8fd5637b3934 Mon Sep 17 00:00:00 2001 From: Saimanjari777 Date: Mon, 3 Jun 2024 16:56:41 +0530 Subject: [PATCH 07/16] QR Code Generator I have added QR code generator --- .../Advanced/Qr-Code-Generator/.eslintrc.cjs | 21 ++++ .../Advanced/Qr-Code-Generator/README.md | 69 +++++++++++++ .../Advanced/Qr-Code-Generator/index.html | 13 +++ .../Advanced/Qr-Code-Generator/package.json | 26 +++++ .../Qr-Code-Generator/screenshot.webp | Bin 0 -> 12156 bytes .../Advanced/Qr-Code-Generator/src/App.css | 54 ++++++++++ .../Advanced/Qr-Code-Generator/src/App.jsx | 96 ++++++++++++++++++ .../Advanced/Qr-Code-Generator/src/main.jsx | 9 ++ .../Advanced/Qr-Code-Generator/vite.config.js | 7 ++ React-JS-Projects/README.md | 1 + database/react.json | 5 + 11 files changed, 301 insertions(+) create mode 100644 React-JS-Projects/Advanced/Qr-Code-Generator/.eslintrc.cjs create mode 100644 React-JS-Projects/Advanced/Qr-Code-Generator/README.md create mode 100644 React-JS-Projects/Advanced/Qr-Code-Generator/index.html create mode 100644 React-JS-Projects/Advanced/Qr-Code-Generator/package.json create mode 100644 React-JS-Projects/Advanced/Qr-Code-Generator/screenshot.webp create mode 100644 React-JS-Projects/Advanced/Qr-Code-Generator/src/App.css create mode 100644 React-JS-Projects/Advanced/Qr-Code-Generator/src/App.jsx create mode 100644 React-JS-Projects/Advanced/Qr-Code-Generator/src/main.jsx create mode 100644 React-JS-Projects/Advanced/Qr-Code-Generator/vite.config.js diff --git a/React-JS-Projects/Advanced/Qr-Code-Generator/.eslintrc.cjs b/React-JS-Projects/Advanced/Qr-Code-Generator/.eslintrc.cjs new file mode 100644 index 00000000..3e212e1d --- /dev/null +++ b/React-JS-Projects/Advanced/Qr-Code-Generator/.eslintrc.cjs @@ -0,0 +1,21 @@ +module.exports = { + root: true, + env: { browser: true, es2020: true }, + extends: [ + 'eslint:recommended', + 'plugin:react/recommended', + 'plugin:react/jsx-runtime', + 'plugin:react-hooks/recommended', + ], + ignorePatterns: ['dist', '.eslintrc.cjs'], + parserOptions: { ecmaVersion: 'latest', sourceType: 'module' }, + settings: { react: { version: '18.2' } }, + plugins: ['react-refresh'], + rules: { + 'react/jsx-no-target-blank': 'off', + 'react-refresh/only-export-components': [ + 'warn', + { allowConstantExport: true }, + ], + }, +} diff --git a/React-JS-Projects/Advanced/Qr-Code-Generator/README.md b/React-JS-Projects/Advanced/Qr-Code-Generator/README.md new file mode 100644 index 00000000..44028301 --- /dev/null +++ b/React-JS-Projects/Advanced/Qr-Code-Generator/README.md @@ -0,0 +1,69 @@ +

đŸ’Ĩ QR CODE GENERATOR đŸ’Ĩ

+ + + +

Tech Stack Used 🎮

+ + +
+ + ![HTML5](https://img.shields.io/badge/html5-%23E34F26.svg?style=for-the-badge&logo=html5&logoColor=white) + ![CSS3](https://img.shields.io/badge/css3-%231572B6.svg?style=for-the-badge&logo=css3&logoColor=white) + ![JavaScript](https://img.shields.io/badge/javascript-%23323330.svg?style=for-the-badge&logo=javascript&logoColor=%23F7DF1E) + ![React](https://img.shields.io/badge/react-%2320232a.svg?style=for-the-badge&logo=react&logoColor=%2361DAFB) +
+ + +![Line](https://github.com/Avdhesh-Varshney/WebMasterLog/assets/114330097/4b78510f-a941-45f8-a9d5-80ed0705e847) + + + +## :zap: Description 📃 + +
+ +

This project is a react.js project that generates QR code which can be downloaded when an URL of a website is entered.

+
+ + + + +## :zap: How to run it? 🕹ī¸ + + +To run this project locally, follow these steps: + +1. Fork the repository. + +2. Clone the repository to your local computer: + git clone https://github.com/your-username/Qr-Code-Generator-Clone.git + +3. Open the project folder in your preferred code editor, now you can view website in live. + + + + + +## :zap: Screenshots 📸 + + + + + +![Line](https://github.com/Avdhesh-Varshney/WebMasterLog/assets/114330097/4b78510f-a941-45f8-a9d5-80ed0705e847) + + + +

Developed By Sai Manjari 👧

+

+ + + + + + +

+ +

Happy Coding 🧑‍đŸ’ģ

+ +

Show some  â¤ī¸  by  đŸŒŸ  this repository!

\ No newline at end of file diff --git a/React-JS-Projects/Advanced/Qr-Code-Generator/index.html b/React-JS-Projects/Advanced/Qr-Code-Generator/index.html new file mode 100644 index 00000000..0c589ecc --- /dev/null +++ b/React-JS-Projects/Advanced/Qr-Code-Generator/index.html @@ -0,0 +1,13 @@ + + + + + + + Vite + React + + +
+ + + diff --git a/React-JS-Projects/Advanced/Qr-Code-Generator/package.json b/React-JS-Projects/Advanced/Qr-Code-Generator/package.json new file mode 100644 index 00000000..137c6ab4 --- /dev/null +++ b/React-JS-Projects/Advanced/Qr-Code-Generator/package.json @@ -0,0 +1,26 @@ +{ + "name": "qr-code-generator", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "vite build", + "lint": "eslint . --ext js,jsx --report-unused-disable-directives --max-warnings 0", + "preview": "vite preview" + }, + "dependencies": { + "react": "^18.2.0", + "react-dom": "^18.2.0" + }, + "devDependencies": { + "@types/react": "^18.2.66", + "@types/react-dom": "^18.2.22", + "@vitejs/plugin-react": "^4.2.1", + "eslint": "^8.57.0", + "eslint-plugin-react": "^7.34.1", + "eslint-plugin-react-hooks": "^4.6.0", + "eslint-plugin-react-refresh": "^0.4.6", + "vite": "^5.2.0" + } +} diff --git a/React-JS-Projects/Advanced/Qr-Code-Generator/screenshot.webp b/React-JS-Projects/Advanced/Qr-Code-Generator/screenshot.webp new file mode 100644 index 0000000000000000000000000000000000000000..927b64764e135dae6d3cb50e6a6a0c475dc0c5a6 GIT binary patch literal 12156 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 { + setQrCode(`http://api.qrserver.com/v1/create-qr-code/?data=${encodeURIComponent(url)}&size=${size}x${size}&bgcolor=${bgColor}`); + }, [url, size, bgColor]); + + // Function to handle input change and validate URL + function handleInputChange(event) { + setTemp(event.target.value); + } + + // Function to handle URL submission + function handleSubmit(event) { + event.preventDefault(); + if (isValidUrl(temp)) { + setUrl(temp); + setShowDownloadButton(true); // Show the download button + } else { + alert("Invalid URL. Please enter a valid URL."); + } + } + + // Function to check if a string is a valid URL + function isValidUrl(string) { + try { + new URL(string); + return true; + } catch (_) { + return false; + } + } + + // Function to handle QR code download + function handleDownload() { + const downloadLink = document.createElement('a'); + downloadLink.href = qrCode; + downloadLink.download = 'qrcode.png'; + document.body.appendChild(downloadLink); + downloadLink.click(); + document.body.removeChild(downloadLink); + } + + return ( +
+

QR Code Generator

+
+
+
+ + +
+
+
Background Color:
+ { setBgColor(e.target.value.substring(1)) }} + /> +
Dimension:
+ { setSize(e.target.value) }} + /> +
+
+
+
+ + {showDownloadButton && qrCode && ( // Conditionally render the download button + + )} +
+
+ ); +} + +export default App; diff --git a/React-JS-Projects/Advanced/Qr-Code-Generator/src/main.jsx b/React-JS-Projects/Advanced/Qr-Code-Generator/src/main.jsx new file mode 100644 index 00000000..51a8c582 --- /dev/null +++ b/React-JS-Projects/Advanced/Qr-Code-Generator/src/main.jsx @@ -0,0 +1,9 @@ +import React from 'react' +import ReactDOM from 'react-dom/client' +import App from './App.jsx' + +ReactDOM.createRoot(document.getElementById('root')).render( + + + , +) diff --git a/React-JS-Projects/Advanced/Qr-Code-Generator/vite.config.js b/React-JS-Projects/Advanced/Qr-Code-Generator/vite.config.js new file mode 100644 index 00000000..5a33944a --- /dev/null +++ b/React-JS-Projects/Advanced/Qr-Code-Generator/vite.config.js @@ -0,0 +1,7 @@ +import { defineConfig } from 'vite' +import react from '@vitejs/plugin-react' + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [react()], +}) diff --git a/React-JS-Projects/README.md b/React-JS-Projects/README.md index 5e185633..e2e20b9f 100644 --- a/React-JS-Projects/README.md +++ b/React-JS-Projects/README.md @@ -29,6 +29,7 @@ | 2 | [To Do List](./Basic/ToDo-List) | ![Basic](https://img.shields.io/badge/Basic-00FF00?style=for-the-badge) | | 3 | [Weather App](./Basic/Weather-App) | ![Basic](https://img.shields.io/badge/Basic-00FF00?style=for-the-badge) | | 4 | [Cryptocurrency Finder](./Intermediate/Cryptocurrency-Finder/) | ![Intermediate](https://img.shields.io/badge/Intermediate-FFD700?style=for-the-badge) | +| 5 | [QR Code Generator](./Advanced/Qr-Code-Generator/) | ![Advanced](https://img.shields.io/badge/Advanced-FF0000?style=for-the-badge) | diff --git a/database/react.json b/database/react.json index f54b8c39..f9406e5b 100644 --- a/database/react.json +++ b/database/react.json @@ -4,6 +4,11 @@ "title": "Cryptocurrency Finder", "description": "Cryptocurrency Finder is a React-JS project which displays different crypto coins using API." }, + { + "tag": "Advanced", + "title": "QR Code Generator", + "description": "This is React JS project which generates QR code to open the website when url is entered and also it can be downloaded." + }, { "tag": "Basic", "title": "To Do List", From a46dbb6bf9bd6c2b7adba6b26cc86a3f430fcf73 Mon Sep 17 00:00:00 2001 From: Aryan Date: Mon, 3 Jun 2024 17:26:46 +0530 Subject: [PATCH 08/16] cards corrected to be visible --- src/App.css | 24 +++++++++ src/App.jsx | 16 +++--- src/components/Cards/ProjectCards.jsx | 35 +++++++------ src/components/Cards/card.css | 74 +++++++++++++++------------ src/components/Footer/Footer.css | 13 ++--- src/components/Pages/MainPage.jsx | 6 +-- src/components/Sidebar/sidebar.css | 8 +-- 7 files changed, 110 insertions(+), 66 deletions(-) diff --git a/src/App.css b/src/App.css index e69de29b..a98f40ca 100644 --- a/src/App.css +++ b/src/App.css @@ -0,0 +1,24 @@ +html, body { + height: 100%; + margin: 0; + padding: 0; + display: flex; + flex-direction: column; +} + +/* The app-container takes full height minus the footer height */ +.app-container { + display: flex; + flex-direction: column; + min-height: 100vh; +} + +/* Main content will take the remaining space */ +.main-content { + flex: 1; + padding: 20px; /* Optional: Add padding to the main content */ +} + +.main-page{ + display: flex; +} \ No newline at end of file diff --git a/src/App.jsx b/src/App.jsx index 049f9f02..ede80924 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -15,20 +15,22 @@ function App() { const [progress, setProgress] = useState(0); return ( -
+
+
- - {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`}

@@ -81,7 +81,6 @@ const MainPage = (props) => {
-
- + +
); }; 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 🎮

+ +
+ HTML5 + CSS3 + JavaScript + NodeJS + Express.js +
+ + + +![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


+
+
+ + +
+
+ + + + 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 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%0D{v}b4K(OF^fr3d6(m?z(D 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 z%0A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 EU%tAB0ssI2 literal 0 HcmV?d00001 diff --git a/Node-JS-Projects/Intermediate/YouTube-Video-Downloader/server/package-lock.json b/Node-JS-Projects/Intermediate/YouTube-Video-Downloader/server/package-lock.json new file mode 100644 index 00000000..5cb5a7b7 --- /dev/null +++ b/Node-JS-Projects/Intermediate/YouTube-Video-Downloader/server/package-lock.json @@ -0,0 +1,750 @@ +{ + "name": "YouTube Video Downloader", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "dependencies": { + "cors": "^2.8.5", + "express": "^4.19.2", + "ytdl-core": "^4.11.5" + } + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" + }, + "node_modules/body-parser": { + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", + "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.5", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.2", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" + }, + "node_modules/cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "dependencies": { + "object-assign": "^4", + "vary": "^1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/express": { + "version": "4.19.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz", + "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==", + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.2", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.6.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/m3u8stream": { + "version": "0.8.6", + "resolved": "https://registry.npmjs.org/m3u8stream/-/m3u8stream-0.8.6.tgz", + "integrity": "sha512-LZj8kIVf9KCphiHmH7sbFQTVe4tOemb202fWwvJwR9W5ENW/1hxJN6ksAWGhQgSBSa3jyWhnjKU1Fw1GaOdbyA==", + "dependencies": { + "miniget": "^4.2.2", + "sax": "^1.2.4" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/miniget": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/miniget/-/miniget-4.2.3.tgz", + "integrity": "sha512-SjbDPDICJ1zT+ZvQwK0hUcRY4wxlhhNpHL9nJOB2MEAXRGagTljsO8MEDzQMTFf0Q8g4QNi8P9lEm/g7e+qgzA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "node_modules/sax": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.3.0.tgz", + "integrity": "sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==" + }, + "node_modules/send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + }, + "node_modules/side-channel": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/ytdl-core": { + "version": "4.11.5", + "resolved": "https://registry.npmjs.org/ytdl-core/-/ytdl-core-4.11.5.tgz", + "integrity": "sha512-27LwsW4n4nyNviRCO1hmr8Wr5J1wLLMawHCQvH8Fk0hiRqrxuIu028WzbJetiYH28K8XDbeinYW4/wcHQD1EXA==", + "dependencies": { + "m3u8stream": "^0.8.6", + "miniget": "^4.2.2", + "sax": "^1.1.3" + }, + "engines": { + "node": ">=12" + } + } + } +} diff --git a/Node-JS-Projects/Intermediate/YouTube-Video-Downloader/server/package.json b/Node-JS-Projects/Intermediate/YouTube-Video-Downloader/server/package.json new file mode 100644 index 00000000..c98258b8 --- /dev/null +++ b/Node-JS-Projects/Intermediate/YouTube-Video-Downloader/server/package.json @@ -0,0 +1,7 @@ +{ + "dependencies": { + "cors": "^2.8.5", + "express": "^4.19.2", + "ytdl-core": "^4.11.5" + } +} diff --git a/Node-JS-Projects/Intermediate/YouTube-Video-Downloader/server/server.js b/Node-JS-Projects/Intermediate/YouTube-Video-Downloader/server/server.js new file mode 100644 index 00000000..df224d2c --- /dev/null +++ b/Node-JS-Projects/Intermediate/YouTube-Video-Downloader/server/server.js @@ -0,0 +1,51 @@ +const express = require('express'); +const ytdl = require('ytdl-core'); +const cors = require('cors'); +const app = express(); +const port = 3000; + +app.use(cors()); + +app.get('/', (req, res) => { + res.send('Hello World!'); +}); + +app.get('/download', async (req, res) => { + try { + const videoId = req.query.videoId; + const quality = req.query.quality || '1080p'; // Default quality set to 1080p + + // Validate videoId format + if (!isValidVideoIdFormat(videoId)) { + return res.status(400).send('Invalid video ID format'); + } + + const url = `https://www.youtube.com/watch?v=${videoId}`; + const info = await ytdl.getInfo(url); + + // Check if the requested quality is available + const availableQualities = ['144p', '240p', '360p', '480p', '720p', '1080p', '1440p']; + if (!availableQualities.includes(quality)) { + return res.status(400).send(`Requested quality (${quality}) is not available. Available qualities: ${availableQualities.join(', ')}`); + } + + // Find the format with the desired quality + const format = info.formats.find(format => format.qualityLabel === quality); + + res.header('Content-Disposition', 'attachment; filename="video.mp4"'); + ytdl(url, { format }).pipe(res); + } catch (error) { + console.error('Error downloading the video:', error); + res.status(500).send('Error downloading the video'); + } +}); + + + +app.listen(port, () => { + console.log(`Server is running on http://localhost:${port}`); +}); + +function isValidVideoIdFormat(videoId) { + return /^[a-zA-Z0-9-_]{11}$/.test(videoId); +} From 6b4b91bc2f3780281d5d8c5f809e6ba12cf85cf9 Mon Sep 17 00:00:00 2001 From: Siddheya Kulkarni <115717746+Asymtode712@users.noreply.github.com> Date: Mon, 3 Jun 2024 20:01:18 +0530 Subject: [PATCH 11/16] Update README.md --- Node-JS-Projects/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/Node-JS-Projects/README.md b/Node-JS-Projects/README.md index daf928b8..99239c6d 100644 --- a/Node-JS-Projects/README.md +++ b/Node-JS-Projects/README.md @@ -28,6 +28,7 @@ | 1 | [JWT Authenticator With Roles](./Intermediate/JWT-Authenticator-With-Roles) | ![Intermediate](https://img.shields.io/badge/Intermediate-FFD700?style=for-the-badge) | | 2 | [Infinite Scrolling](./Basic/Infinite-Scrolling) | ![Basic](https://img.shields.io/badge/Basic-00FF00?style=for-the-badge) | | 3 | [CRUD Operations](./Basic/Crud-Operations) | ![Basic](https://img.shields.io/badge/Basic-00FF00?style=for-the-badge) | +| 4 | [YouTube Video Downloader](./Intermediate/YouTube-Video-Downloader) | ![Intermediate](https://img.shields.io/badge/Intermediate-FFD700?style=for-the-badge) |

From 074a03852949bd96f6808a7e094ce3b9e3bbbb45 Mon Sep 17 00:00:00 2001 From: AmrutaJayanti <142327526+AmrutaJayanti@users.noreply.github.com> Date: Wed, 5 Jun 2024 12:52:21 +0530 Subject: [PATCH 12/16] Create Readme.md --- .../Basic/RGB-Color-Slider/Readme.md | 74 +++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 Vanilla-JS-Projects/Basic/RGB-Color-Slider/Readme.md diff --git a/Vanilla-JS-Projects/Basic/RGB-Color-Slider/Readme.md b/Vanilla-JS-Projects/Basic/RGB-Color-Slider/Readme.md new file mode 100644 index 00000000..6432624a --- /dev/null +++ b/Vanilla-JS-Projects/Basic/RGB-Color-Slider/Readme.md @@ -0,0 +1,74 @@ +

đŸ’Ĩ RGB Color Slider đŸ’Ĩ

+ + + +

Tech Stack Used 🎮

+ + +
+ + ![HTML5](https://img.shields.io/badge/html5-%23E34F26.svg?style=for-the-badge&logo=html5&logoColor=white) + ![CSS3](https://img.shields.io/badge/css3-%231572B6.svg?style=for-the-badge&logo=css3&logoColor=white) + ![Bootstrap](https://img.shields.io/badge/bootstrap-%238511FA.svg?style=for-the-badge&logo=bootstrap&logoColor=white) + ![JavaScript](https://img.shields.io/badge/javascript-%23323330.svg?style=for-the-badge&logo=javascript&logoColor=%23F7DF1E) + + + + + + + + + + + +
+ + +![Line](https://github.com/Avdhesh-Varshney/WebMasterLog/assets/114330097/4b78510f-a941-45f8-a9d5-80ed0705e847) + + + +## :zap: Description 📃 + +
+

RGB Color Slider takes your input and then renders that respective color!

+ +
+ + + + +## :zap: How to run it? 🕹ī¸ + +- Fork this repository. +- Clone the forked repository. +- Open index.html in your web browser to start your culinary exploration. + + + + + +## :zap: Screenshots 📸 + + + + + +![Line](https://github.com/Avdhesh-Varshney/WebMasterLog/assets/114330097/4b78510f-a941-45f8-a9d5-80ed0705e847) + + + +

Developed By Amruta Jayanti đŸ‘Ļ

+

+ + + + + + +

+ +

Happy Coding 🧑‍đŸ’ģ

+ +

Show some  â¤ī¸  by  đŸŒŸ  this repository!

From 5028e815c90073e3cbb1ded7394c4832d5a85556 Mon Sep 17 00:00:00 2001 From: AmrutaJayanti <142327526+AmrutaJayanti@users.noreply.github.com> Date: Wed, 5 Jun 2024 12:53:53 +0530 Subject: [PATCH 13/16] Add files via upload --- .../Basic/RGB-Color-Slider/index.html | 52 ++++++++++++++++++ .../Basic/RGB-Color-Slider/screenshot.webp | Bin 0 -> 9190 bytes .../Basic/RGB-Color-Slider/script.js | 40 ++++++++++++++ .../Basic/RGB-Color-Slider/style.css | 16 ++++++ 4 files changed, 108 insertions(+) create mode 100644 Vanilla-JS-Projects/Basic/RGB-Color-Slider/index.html create mode 100644 Vanilla-JS-Projects/Basic/RGB-Color-Slider/screenshot.webp create mode 100644 Vanilla-JS-Projects/Basic/RGB-Color-Slider/script.js create mode 100644 Vanilla-JS-Projects/Basic/RGB-Color-Slider/style.css diff --git a/Vanilla-JS-Projects/Basic/RGB-Color-Slider/index.html b/Vanilla-JS-Projects/Basic/RGB-Color-Slider/index.html new file mode 100644 index 00000000..d090e2dc --- /dev/null +++ b/Vanilla-JS-Projects/Basic/RGB-Color-Slider/index.html @@ -0,0 +1,52 @@ + + + + + + + + RGB Color Slider + + +
+
+

RGB Color Slider

+
+
+

Adjust Your Values

+
+ +
+
+

R

+
+
+ +
+
+
+ +
+
+

G

+
+
+ +
+
+
+ +
+
+

B

+
+
+ +
+
+
+
+
+ + + diff --git a/Vanilla-JS-Projects/Basic/RGB-Color-Slider/screenshot.webp b/Vanilla-JS-Projects/Basic/RGB-Color-Slider/screenshot.webp new file mode 100644 index 0000000000000000000000000000000000000000..d0e4f64f203a9b81cfebd7e389472d959f04fd38 GIT binary patch literal 9190 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 Date: Wed, 5 Jun 2024 12:54:59 +0530 Subject: [PATCH 14/16] Update Readme.md --- Vanilla-JS-Projects/Basic/RGB-Color-Slider/Readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Vanilla-JS-Projects/Basic/RGB-Color-Slider/Readme.md b/Vanilla-JS-Projects/Basic/RGB-Color-Slider/Readme.md index 6432624a..0f921d21 100644 --- a/Vanilla-JS-Projects/Basic/RGB-Color-Slider/Readme.md +++ b/Vanilla-JS-Projects/Basic/RGB-Color-Slider/Readme.md @@ -52,7 +52,7 @@ ## :zap: Screenshots 📸 - +![RGBColor](https://raw.githubusercontent.com/AmrutaJayanti/WebMasterLog/main/Vanilla-JS-Projects/Basic/RGB-Color-Slider/screenshot.webp) ![Line](https://github.com/Avdhesh-Varshney/WebMasterLog/assets/114330097/4b78510f-a941-45f8-a9d5-80ed0705e847) From 12e5796946b68104fff9c62da02da78f3fdfa72d Mon Sep 17 00:00:00 2001 From: AmrutaJayanti <142327526+AmrutaJayanti@users.noreply.github.com> Date: Wed, 5 Jun 2024 22:07:28 +0530 Subject: [PATCH 15/16] Update README.md --- Vanilla-JS-Projects/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/Vanilla-JS-Projects/README.md b/Vanilla-JS-Projects/README.md index 08b778a1..d8497b32 100644 --- a/Vanilla-JS-Projects/README.md +++ b/Vanilla-JS-Projects/README.md @@ -53,6 +53,7 @@ | 26 | [Email-Subscription-form-with-google-sheet](./Intermediate/Email-Subscription-form-with-google-sheet/) | ![Intermediate](https://img.shields.io/badge/Intermediate-FFD700?style=for-the-badge) | | 27 | [Dictonary-App](./Basic/Dictonary-App/) | ![Basic](https://img.shields.io/badge/Basic-00FF00?style=for-the-badge) | | 28 | [Typing-Test](./Advanced/Typing-Test/) | ![Advanced](https://img.shields.io/badge/Advanced-FF0000?style=for-the-badge) | +| 29 | [RGB-Color-Slider](./Basic/RGB-Color-Slider/) | ![Basic](https://img.shields.io/badge/Basic-00FF00?style=for-the-badge) | From ef09683d11efda32b008ac95c8fc4ed2249a947a Mon Sep 17 00:00:00 2001 From: AmrutaJayanti <142327526+AmrutaJayanti@users.noreply.github.com> Date: Wed, 5 Jun 2024 22:10:50 +0530 Subject: [PATCH 16/16] Update vanilla.json --- database/vanilla.json | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/database/vanilla.json b/database/vanilla.json index 83ada765..bffe9a4d 100644 --- a/database/vanilla.json +++ b/database/vanilla.json @@ -93,5 +93,10 @@ "tag": "Basic", "title": "Stopwatch", "description": "The project is a sleek and efficient stopwatch application built using HTML, CSS, and JavaScript." + }, + { + "tag": "Basic", + "title": "RGB-Color-Slider", + "description" :"RGB Color Slider takes the input from the user and renders the color" } ]