Compare commits

...

78 Commits

Author SHA1 Message Date
Carneiro 7e6fff40f4 fix thumb path
SSH Build / Deploy (push) Successful in 15s Details
2024-08-06 15:22:00 -03:00
Carneiro 814114aaca remove faulty bit 2024-08-06 15:16:16 -03:00
Carneiro ad87e0caf4 remove faulty bit 2024-08-06 15:15:20 -03:00
Carneiro 7e35e454d6 script update 2024-08-06 15:09:55 -03:00
Carneiro d7a5cac778 update form 2024-08-06 11:37:35 -03:00
Carneiro ed11bb72ac remove make from action since build watch is running 2024-08-06 11:27:44 -03:00
Carneiro fae634488e update upload form 2024-08-06 11:25:31 -03:00
Carneiro cda0c33a5d add json db to php 2024-08-06 10:42:22 -03:00
Carneiro 5a75e8eadc fix slug 2024-08-06 00:04:30 -03:00
Carneiro c196f7545b fix video link 2024-08-06 00:02:31 -03:00
Carneiro af62838881 fix thumb in home 2024-08-05 22:37:05 -03:00
Carneiro 2351d96b53 add missing thumbs, fix script thumb path 2024-08-05 22:36:03 -03:00
Carneiro 7a3f7c66ea fix php 2024-08-05 22:11:27 -03:00
Carneiro ae12864588 add permalinks to dashboard 2024-08-05 22:06:49 -03:00
Carneiro a644469897 move php to own dir 2024-08-05 21:58:17 -03:00
Carneiro 2232ce74de remove lock 2024-08-05 21:55:22 -03:00
Carneiro fb7601f256 cleanup 2024-08-05 21:54:00 -03:00
Carneiro 6db98e3010 update makefile for deploy 2024-08-05 21:36:36 -03:00
Carneiro e05c833784 remove aulas collection in favor of using plugin 2024-08-05 21:27:49 -03:00
Carneiro b4b9aa1816 remove echo 2024-08-05 17:58:37 -03:00
Carneiro 2841bcdb0a fix php chato 2024-08-05 17:57:26 -03:00
Carneiro 5479f2a877 fix php link 2024-08-05 17:54:28 -03:00
Carneiro 854faa68e0 fix makefile cp 2024-08-05 17:52:22 -03:00
Carneiro c21b68e717 update 2024-08-05 17:40:09 -03:00
Carneiro 9e8d193e47 update 2024-08-05 17:37:08 -03:00
emerson 7ceddb3842 add dashboard collection 2024-08-05 17:21:28 -03:00
emerson e358f7cb2d add missing file 2024-08-05 17:21:28 -03:00
emerson da4687dd3c add dashboard 2024-08-05 17:21:28 -03:00
www-data d8ef20a55b remove videos 2024-08-05 17:17:06 -03:00
Carneiro 4bd0a16555 remove checkout in deploy 2024-08-05 17:11:06 -03:00
Carneiro f7c95183ad remove chmod from deploy in make 2024-08-05 17:10:29 -03:00
Carneiro 115ad48457 update workflows 2024-08-05 17:02:36 -03:00
Carneiro ad9d441ccc add deploy watch to make 2024-08-05 15:25:04 -03:00
emerson e15e347131 update 2024-08-05 15:22:52 -03:00
Carneiro 1c617adf2c update makefile to use cp instead of install 2024-08-05 14:59:22 -03:00
Carneiro 8894e7fd6f add public html to makefile 2024-08-05 14:55:32 -03:00
emerson 187522f97b modified: dashboard.php 2024-08-04 22:37:17 -03:00
emerson 1930061562 modified: dashboard.php 2024-08-04 22:34:03 -03:00
emerson 4d76b0ef91 modified: dashboard.php 2024-08-04 22:30:22 -03:00
emerson ee18a2203b Testando o dashboard 2024-08-04 22:20:42 -03:00
emerson 61b6f3178d Fiz o ultimo teste errado. 2024-08-04 22:12:33 -03:00
emerson c1d216bcc6 Testando coisas no PHP LDAP 2024-08-04 22:08:03 -03:00
emerson 72304750b0 Novo AliceClash em progresso 2024-08-04 21:52:05 -03:00
Carneiro 35a62466ef add user to md and change video url 2024-08-01 17:52:14 -03:00
Carneiro 368072837e add php upload form 2024-08-01 17:31:21 -03:00
www-data 195e88a079 update 2024-08-01 17:20:52 -03:00
emerson d1138fa87e forms 2024-08-01 17:10:18 -03:00
Carneiro fa6faf1752 remove minima to make a point 2024-07-17 11:42:43 -03:00
Carneiro c675316688 Update _config.yml 2024-07-17 11:39:25 -03:00
Carneiro 84adb521d5 Update _config.yml 2024-07-17 11:19:36 -03:00
Carneiro 2f662a9785 change to 775 2024-07-17 10:30:10 -03:00
Carneiro 77c5b57dfd Update _config.yml 2024-07-17 10:05:05 -03:00
EmersonJSC 228f4a860a Mudanças 2024-07-12 22:18:34 -03:00
EmersonJSC 2307728c43 deploy 2024-07-10 17:40:20 -03:00
EmersonJSC f6b1f927fb deploy 2024-07-10 17:32:10 -03:00
EmersonJSC 7c50ee0454 deploy 2024-07-10 17:29:35 -03:00
EmersonJSC 0f58c693fd Arrumando script é visual 2024-07-10 17:27:31 -03:00
EmersonJSC d14f43a2cc Modificações de organização é de localização! 2024-07-10 15:26:42 -03:00
Alice 6f8e8cc31f Update .gitea/workflows/deploy.yml 2024-07-10 14:57:24 -03:00
EmersonJSC ffbc33c0b9 Modificações Flavio 2024-07-10 14:19:15 -03:00
EmersonJSC fefb18d133 Reorganizando aulas, e script rodando! 2024-07-09 16:34:17 -03:00
EmersonJSC 1c0a0ae837 Lançando o curso do Mixxx 2024-07-09 16:05:44 -03:00
EmersonJSC fac8464835 Adicionando a aula do lmms 2024-07-09 15:52:22 -03:00
Alice effe610f49 Update .gitea/workflows/deploy.yml 2024-07-08 21:11:13 -03:00
Alice 2d037fc356 Update .gitea/workflows/deploy.yml 2024-07-08 21:07:13 -03:00
Alice ce252540da Update .gitea/workflows/deploy.yml 2024-07-08 20:10:04 -03:00
Alice a1232668f3 Update .gitea/workflows/deploy.yml 2024-07-08 20:07:05 -03:00
Alice d28e8497e9 Update .gitea/workflows/deploy.yml 2024-07-08 20:06:40 -03:00
Alice ff946edb60 Update .gitea/workflows/deploy.yml 2024-07-08 20:06:07 -03:00
Alice 2810d8fccc Update .gitea/workflows/deploy.yml 2024-07-08 20:05:49 -03:00
Alice 866f302c66 Update .gitea/workflows/deploy.yml 2024-07-08 17:49:57 -03:00
Alice b5b85c0843 Update .gitea/workflows/deploy.yml 2024-07-08 17:38:29 -03:00
EmersonJSC 37f6f527db Falso 2024-07-04 17:20:34 -03:00
EmersonJSC 3eca7f7a80 Actions 2024-07-04 17:18:46 -03:00
EmersonJSC a605ee1de1 Mentira, deixa o bundle 2024-07-04 17:08:08 -03:00
EmersonJSC add88a22f9 Remover o bundle 2024-07-04 17:07:19 -03:00
EmersonJSC f7259c16b9 GitIgnore 2024-07-04 17:05:12 -03:00
EmersonJSC 7420c7f54b Fist Commit in AliceHub 2024-05-23 01:23:48 -03:00
91 changed files with 3386 additions and 499 deletions

2
.bundle/config Executable file
View File

@ -0,0 +1,2 @@
---
BUNDLE_PATH: "vendor/bundle"

View File

@ -0,0 +1,43 @@
name: Gitea Actions Demo
run-name: ${{ gitea.actor }} is testing out Gitea Actions 🚀
on: [workflow_dispatch]
jobs:
Deploy:
runs-on: ubuntu-latest
steps:
- run: echo "🎉 The job was automatically triggered by a ${{ gitea.event_name }} event."
- run: echo "🐧 This job is now running on a ${{ runner.os }} server hosted by Gitea!"
- run: echo "🔎 The name of your branch is ${{ gitea.ref }} and your repository is ${{ gitea.repository }}."
- name: Check out repository code
uses: RouxAntoine/checkout@v3.5.4
- run: echo "💡 The ${{ gitea.repository }} repository has been cloned to the runner."
- run: echo "🖥️ The workflow is now ready to test your code on the runner."
- name: Setup env
run: |
sudo apt update -y
sudo apt install bundler -y
#
# baixar imagemagick
- run: cd ${{ gitea.workspace }}
#- name: Video script
# run: ./script/script.sh
- name: Setup bundle deps
run: bundle install
- name: Build
run: bundle exec jekyll build
- run: echo "🍏 This job's status is ${{ job.status }}."
- name: Deploy to alice
run: |
echo "${{ secrets.SCP_KEY_ALICE }}" > /tmp/ssh_private_key
chmod 600 /tmp/ssh_private_key
mv _site aliceclass
scp -o "StrictHostKeyChecking no" -i /tmp/ssh_private_key -P ${{ secrets.SSH_PORT_ALICE }} -r aliceclass act_runner@alice.ufsj.edu.br:/var/www/html
- run: echo "🍏 This job's status is ${{ job.status }}."

27
.gitea/workflows/ssh_build.yml Executable file
View File

@ -0,0 +1,27 @@
name: SSH Build
run-name: ${{ gitea.actor }} is testing out Gitea Actions 🚀
on: [push,workflow_dispatch]
jobs:
Deploy:
runs-on: ubuntu-latest
steps:
- run: echo "🎉 The job was automatically triggered by a ${{ gitea.event_name }} event."
- run: echo "🐧 This job is now running on a ${{ runner.os }} server hosted by Gitea!"
- run: echo "🔎 The name of your branch is ${{ gitea.ref }} and your repository is ${{ gitea.repository }}."
# - name: Check out repository code
# uses: RouxAntoine/checkout@v3.5.4
- run: echo "💡 The ${{ gitea.repository }} repository has been cloned to the runner."
- run: echo "🖥️ The workflow is now ready to test your code on the runner."
- name: Deploy to Server
run: |
echo "${{ secrets.SCP_KEY_ALICE }}" > /tmp/ssh_private_key
chmod 600 /tmp/ssh_private_key
ssh -o "StrictHostKeyChecking no" -i /tmp/ssh_private_key act_runner@alice.ufsj.edu.br -p ${{ secrets.SSH_PORT_ALICE }} << 'EOF'
cd /var/www/src/AliceClass
git pull origin main
bundle install
EOF
- run: echo "🍏 This job's status is ${{ job.status }}."

0
.gitignore vendored Normal file → Executable file
View File

0
404.html Normal file → Executable file
View File

20
Gemfile Normal file → Executable file
View File

@ -7,27 +7,19 @@ source "https://rubygems.org"
# #
# This will help ensure the proper Jekyll version is running. # This will help ensure the proper Jekyll version is running.
# Happy Jekylling! # Happy Jekylling!
gem "jekyll", "~> 4.3.2" gem "jekyll"
# This is the default theme for new Jekyll sites. You may change this to anything you like. # This is the default theme for new Jekyll sites. You may change this to anything you like.
gem "minima", "~> 2.5" # gem "minima", "~> 2.5"
# If you want to use GitHub Pages, remove the "gem "jekyll"" above and # If you want to use GitHub Pages, remove the "gem "jekyll"" above and
# uncomment the line below. To upgrade, run `bundle update github-pages`. # uncomment the line below. To upgrade, run `bundle update github-pages`.
# gem "github-pages", group: :jekyll_plugins # gem "github-pages", group: :jekyll_plugins
# If you have any plugins, put them here! # If you have any plugins, put them here!
group :jekyll_plugins do group :jekyll_plugins do
gem "jekyll-feed", "~> 0.12" gem "jekyll-feed"
gem "jekyll-datapage-generator"
gem "jekyll-archives"
end end
# Windows and JRuby does not include zoneinfo files, so bundle the tzinfo-data gem
# and associated library.
platforms :mingw, :x64_mingw, :mswin, :jruby do
gem "tzinfo", ">= 1", "< 3"
gem "tzinfo-data"
end
# Performance-booster for watching directories on Windows
gem "wdm", "~> 0.1.1", :platforms => [:mingw, :x64_mingw, :mswin]
# Lock `http_parser.rb` gem to `v0.6.x` on JRuby builds since newer versions of the gem # Lock `http_parser.rb` gem to `v0.6.x` on JRuby builds since newer versions of the gem
# do not have a Java counterpart. # do not have a Java counterpart.
gem "http_parser.rb", "~> 0.6.0", :platforms => [:jruby] # gem "http_parser.rb", "~> 0.6.0", :platforms => [:jruby]

View File

@ -1,86 +0,0 @@
GEM
remote: https://rubygems.org/
specs:
addressable (2.8.5)
public_suffix (>= 2.0.2, < 6.0)
colorator (1.1.0)
concurrent-ruby (1.2.2)
em-websocket (0.5.3)
eventmachine (>= 0.12.9)
http_parser.rb (~> 0)
eventmachine (1.2.7)
ffi (1.16.3)
forwardable-extended (2.6.0)
google-protobuf (3.24.4-x86_64-linux)
http_parser.rb (0.8.0)
i18n (1.14.1)
concurrent-ruby (~> 1.0)
jekyll (4.3.2)
addressable (~> 2.4)
colorator (~> 1.0)
em-websocket (~> 0.5)
i18n (~> 1.0)
jekyll-sass-converter (>= 2.0, < 4.0)
jekyll-watch (~> 2.0)
kramdown (~> 2.3, >= 2.3.1)
kramdown-parser-gfm (~> 1.0)
liquid (~> 4.0)
mercenary (>= 0.3.6, < 0.5)
pathutil (~> 0.9)
rouge (>= 3.0, < 5.0)
safe_yaml (~> 1.0)
terminal-table (>= 1.8, < 4.0)
webrick (~> 1.7)
jekyll-feed (0.17.0)
jekyll (>= 3.7, < 5.0)
jekyll-sass-converter (3.0.0)
sass-embedded (~> 1.54)
jekyll-seo-tag (2.8.0)
jekyll (>= 3.8, < 5.0)
jekyll-watch (2.2.1)
listen (~> 3.0)
kramdown (2.4.0)
rexml
kramdown-parser-gfm (1.1.0)
kramdown (~> 2.0)
liquid (4.0.4)
listen (3.8.0)
rb-fsevent (~> 0.10, >= 0.10.3)
rb-inotify (~> 0.9, >= 0.9.10)
mercenary (0.4.0)
minima (2.5.1)
jekyll (>= 3.5, < 5.0)
jekyll-feed (~> 0.9)
jekyll-seo-tag (~> 2.1)
pathutil (0.16.2)
forwardable-extended (~> 2.6)
public_suffix (5.0.3)
rake (13.0.6)
rb-fsevent (0.11.2)
rb-inotify (0.10.1)
ffi (~> 1.0)
rexml (3.2.6)
rouge (4.1.3)
safe_yaml (1.0.5)
sass-embedded (1.69.3)
google-protobuf (~> 3.23)
rake (>= 13.0.0)
terminal-table (3.0.2)
unicode-display_width (>= 1.1.1, < 3)
unicode-display_width (2.5.0)
webrick (1.8.1)
PLATFORMS
x86_64-linux
DEPENDENCIES
http_parser.rb (~> 0.6.0)
jekyll (~> 4.3.2)
jekyll-feed (~> 0.12)
minima (~> 2.5)
tzinfo (>= 1, < 3)
tzinfo-data
wdm (~> 0.1.1)
BUNDLED WITH
2.4.20

0
index.html → README.md Normal file → Executable file
View File

111
_config.yml Normal file → Executable file
View File

@ -18,45 +18,96 @@
# You can create any custom variable you would like, and they will be accessible # You can create any custom variable you would like, and they will be accessible
# in the templates via {{ site.myvariable }}. # in the templates via {{ site.myvariable }}.
title: Your awesome title title: ALICE CAST
email: your-email@example.com
description: >- # this means to ignore newlines until "baseurl:" description: >- # this means to ignore newlines until "baseurl:"
Write an awesome description for your new site here. You can edit this Bem vindo ao sensacional site de cursos do Alice.
line in _config.yml. It will appear in your document head meta (for # baseurl: /~carneiro/aliceclass # the subpath of your site, e.g. /blog
Google search results) and in your feed.xml site description. url: "https://cast.alice.ufsj.edu.br" # the base hostname & protocol for your site, e.g. http://example.com
baseurl: /alice_cast # the subpath of your site, e.g. /blog
url: "" # the base hostname & protocol for your site, e.g. http://example.com
twitter_username: jekyllrb
github_username: jekyll
# Build settings # Build settings
theme: minima #theme: minima
plugins: plugins:
- jekyll-feed - jekyll-feed
- jekyll-datapage-generator
collections_dir: collections
header_pages:
- pages/index.html
- pages/about.html
- pages/aulas.html
- pages/cursos.html
- pages/podcasts.html
- pages/software.html
# collections
collections: collections:
# aulas:
# output: true
# permalink: /:collection/:path
software:
output: true
permalink: /:collection/:path
autores:
output: true
permalink: /:collection/:path
cursos: cursos:
output: true output: true
permalink: /cursos/:path/ permalink: /:collection/:path
dashboard:
output: true
permalink: /:collection/:name
page_gen-dirs: true
page_gen:
- data: aulas
template: aulas
dir: aulas
index_files: false
name: title
debug: false
# collection default setup
defaults:
# -
# scope:
# path: "_aulas"
# type: aulas
# values:
# layout: "aula"
# author: "ALICE"
-
scope:
path: "_autores"
type: autores
values:
layout: "author"
-
scope:
path: "_software"
type: software
values:
layout: "software"
-
scope:
path: "_cursos"
type: cursos
values:
layout: "curso"
# config lang
default_lang: pt
languages:
- en
- pt
# Exclude from processing. exclude:
# The following items will not be processed, by default. - makefile
# Any item listed under the `exclude:` key here will be automatically added to - Gemfile
# the internal "default list". - Gemfile.lock
# - script
# Excluded items can be processed by explicitly listing the directories or - _aulas/*.mkv
# their entries' file path in the `include:` list.
#
# exclude:
# - .sass-cache/
# - .jekyll-cache/
# - gemfiles/
# - Gemfile
# - Gemfile.lock
# - node_modules/
# - vendor/bundle/
# - vendor/cache/
# - vendor/gems/
# - vendor/ruby/

View File

@ -1,10 +0,0 @@
---
layout: curso
categoria: Sequencer
lang: pt
title: Curso de LMMS
autor: Emerson Junio
description: Curso de Linux Multimedia Studio
---
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Est placerat in egestas erat imperdiet sed. Magna fermentum iaculis eu non diam. Blandit cursus risus at ultrices. Urna et pharetra pharetra massa massa. Mi bibendum neque egestas congue quisque egestas diam in arcu. Arcu risus quis varius quam quisque. Etiam dignissim diam quis enim lobortis scelerisque fermentum. Bibendum neque egestas congue quisque egestas. Tristique senectus et netus et malesuada fames ac turpis. Quam elementum pulvinar etiam non quam lacus suspendisse. Ac tincidunt vitae semper quis lectus nulla at. Tincidunt lobortis feugiat vivamus at augue eget arcu dictum. Faucibus scelerisque eleifend donec pretium vulputate sapien nec sagittis aliquam.

View File

@ -1,10 +0,0 @@
---
layout: curso
categoria: Linguagem de Programação Musical
lang: pt
title: Curso de Pure Data
autor: Flávio Schiavoni
description: Curso de Pure Data
---
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Est placerat in egestas erat imperdiet sed. Magna fermentum iaculis eu non diam. Blandit cursus risus at ultrices. Urna et pharetra pharetra massa massa. Mi bibendum neque egestas congue quisque egestas diam in arcu. Arcu risus quis varius quam quisque. Etiam dignissim diam quis enim lobortis scelerisque fermentum. Bibendum neque egestas congue quisque egestas. Tristique senectus et netus et malesuada fames ac turpis. Quam elementum pulvinar etiam non quam lacus suspendisse. Ac tincidunt vitae semper quis lectus nulla at. Tincidunt lobortis feugiat vivamus at augue eget arcu dictum. Faucibus scelerisque eleifend donec pretium vulputate sapien nec sagittis aliquam.

View File

@ -1,9 +0,0 @@
---
layout: curso
categoria: Aula
lang: pt
title: aula-teste
description: Uma breve descrição do seu site.
---
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Est placerat in egestas erat imperdiet sed. Magna fermentum iaculis eu non diam. Blandit cursus risus at ultrices. Urna et pharetra pharetra massa massa. Mi bibendum neque egestas congue quisque egestas diam in arcu. Arcu risus quis varius quam quisque. Etiam dignissim diam quis enim lobortis scelerisque fermentum. Bibendum neque egestas congue quisque egestas. Tristique senectus et netus et malesuada fames ac turpis. Quam elementum pulvinar etiam non quam lacus suspendisse. Ac tincidunt vitae semper quis lectus nulla at. Tincidunt lobortis feugiat vivamus at augue eget arcu dictum. Faucibus scelerisque eleifend donec pretium vulputate sapien nec sagittis aliquam.

21
_data/aulas.json Normal file
View File

@ -0,0 +1,21 @@
[
{
"title": "Introdução ao LMMS",
"user": "fls",
"nome": "Flávio Luiz Schiavoni",
"description": "Bem-vindo ao curso de LMMS, uma ferramenta poderosa e gratuita para produção de música digital! Aqui, você aprenderá desde os conceitos básicos até técnicas avançadas para criar suas próprias músicas e beats.",
"date": "9/07/2024",
"software": ["lmms"],
"level": "Basico"
},
{
"title": "Introdução ao Mixxx",
"user": "fls",
"author": "Flávio Luiz Schiavoni",
"description": "Bem-vindos ao curso de Mixxx, um software de DJ gratuito e de código aberto que permite que você crie sets incríveis e faça mixagens profissionais. Este curso é ideal para quem deseja começar na arte da discotecagem ou para DJs experientes que querem explorar uma nova ferramenta.",
"date": "09/07/2024",
"software": ["mixxx"],
"level": "Basico",
"layout": "aulas"
}
]

7
_data/lang/pt.md Executable file
View File

@ -0,0 +1,7 @@
---
menu:
home: "Home"
about: "Sobre"
classes: "Aulas"
authors: "Autores"
---

76
_includes/SideBar.html Executable file
View File

@ -0,0 +1,76 @@
<div class="SideBar full background is-flex is-flex-direction-column">
<div class="top-sidebar is-flex">
<img
src="{{ site.baseurl }}/assets/images/AliceClassIcon.png"
class="image logo"
/>
</div>
<aside class="menu">
<ul class="menu-list">
<a class="item-menu" href="{{ site.baseurl }}/">
<li>
<span class="menu-txt">Inicio</span>
<i class="fa-solid fa-house mx-4"></i>
</li>
</a>
<a class="item-menu" href="{{ site.baseurl }}/aulas">
<li>
<span class="menu-txt">Aulas</span>
<i class="fa-solid fa-house mx-4"></i>
</li>
</a>
<a class="item-menu" href="{{ site.baseurl }}/cursos">
<li>
<span class="menu-txt">Cursos</span>
<i class="fa-solid fa-house mx-4"></i>
</li>
</a>
<a class="item-menu" href="{{ site.baseurl }}/podcasts">
<li>
<span class="menu-txt">Podcasts</span>
<i class="fa-solid fa-house mx-4"></i>
</li>
</a>
<a class="item-menu" href="{{ site.baseurl }}/autores">
<li>
<span class="menu-txt">Autores</span>
<i class="fa-solid fa-house mx-4"></i>
</li>
</a>
<a class="item-menu" href="{{ site.baseurl }}/software">
<li>
<span class="menu-txt">Software</span>
<i class="fa-solid fa-house mx-4"></i>
</li>
</a>
<a class="item-menu" href="{{ site.baseurl }}/about">
<li>
<span class="menu-txt">Sobre</span>
<i class="fa-solid fa-house mx-4"></i>
</li>
</a>
</ul>
</aside>
<div class="button-sidebar">
<ul>
<li>
<a class="" href="{{ site.baseurl }}/dashboard">
<span class="menu-txt">Dashboard</span>
<i class="fa-solid fa-house mx-4"></i>
</a>
</li>
</ul>
</div>
</div>

20
_includes/TopBar.html Executable file
View File

@ -0,0 +1,20 @@
<nav class="is-flex" style="width: 100%; height: 8vh;">
<div class="nav-item is-flex is-flex-grow-1 is-align-items-center ml-6">
<!-- <h5 class="is-size-1-mobile"><a class=" LinkName mr-2"></a>/<a class="ml-2">STREAM</a></h5> -->
<!-- <input class="input ml-6 mr-6" placeholder="Pesquisar" /> -->
</div>
<!-- <div class="nav-item is-flex is-flex-grow-1 is-align-items-center is-justify-content-flex-end mr-6">
<h4 class="usuario is-size-6 mr-4">Bem vindo</h4>
<figure class="image is-32x32 ">
<img
class="is-rounded"
src="https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQFqZMMWnIwg5s5uicldr-MVKpmu_2e1KWaIm2wNzp-Oqs4uyaqRGY8TFhBHIdWOMFMYPs&usqp=CAU"
/>
</figure>
</div> -->
</nav>
<style type="text/css">
</style>

46
_includes/chat.html Executable file
View File

@ -0,0 +1,46 @@
<script>
// Seleciona o campo de entrada e o botão de envio
const messageInput = document.getElementById("messageInput");
const sendButton = document.getElementById("sendButton");
// Adiciona um ouvinte de evento ao botão de envio
sendButton.addEventListener("click", function() {
// Obtém o texto digitado
const messageText = messageInput.value;
// Verifica se o texto não está vazio
if (messageText.trim() !== "") {
// Cria um novo elemento de mensagem enviada
const sentMessage = document.createElement("div");
sentMessage.classList.add("message", "sent");
sentMessage.innerHTML = `
<span class="sent-name">Você</span>
<p>${messageText}</p>
`;
// Adiciona a nova mensagem à caixa de mensagens
const chatContainer = document.querySelector(".chat-container");
chatContainer.appendChild(sentMessage);
// Limpa o campo de entrada
messageInput.value = "";
}
});
</script>
<div class="chat-container chat-background">
<div class="message received">
<span class="received-name">NOME_USUARIO</span>
<p>Olá! Como vai?</p>
</div>
<!-- <div class="chat-line"></div> -->
<div class="message sent">
<span class="sent-name">Você</span>
<p>Olá! Tudo bem, e você?</p>
</div>
<!-- Mais mensagens aqui -->
</div>
<div class="chat-container is-flex is-flex-direction-row" style="height: 100%;">
<input id="messageInput" class="input is-info" type="text" placeholder="Info input">
<button id="sendButton" class="button ml-2 is-link">Enviar</button>
</div>

View File

@ -1,39 +0,0 @@
<ul>
{% for curso in site.cursos %}
<li>
<a href='{{ site.baseurl }}{{ curso.url }}' >
<div class="card mx-1 my-1">
<div class="card-image">
<figure class="image is-1by1">
<img src="../assets/cursos/{{ curso.title }}/header.jpeg">
</figure>
</div>
<div class="card-content">
<div class="content my-2">
<h1 class="title is-size-4">{{ curso.title }}</h1>
<h3 class="subtitle is-size-6">{{ curso.description }}</h3>
</div>
</div>
</div>
</a>
</li>
{% endfor %}
</ul>
<style type="text/css">
.card{
width: 100%;
height: auto;
}
ul{
list-style: none;
padding: 0;
display: flex;
}
li {
margin-right: 20px; /* Espaçamento entre os itens */
}
/* */
</style>

View File

@ -1,78 +0,0 @@
<div class="SideBar full background is-flex is-flex-direction-column">
<div>
<div class="top-sidebar is-flex is-justify-content-center is-align-items-center">
<img
src="{{ site.baseurl }}/assets/images/AliceCastRed.png"
class="image logo"
/>
</div>
</div>
<div>
<aside class="menu">
<ul class="menu-list">
<li>
<a class="item-menu has-text-white-ter" href="{{ site.baseurl }}{{ site.baseurl }}/index.html">
<span class="menu-txt">Home</span>
<i class="fa-solid fa-house mx-4"></i>
</a>
</li>
<li>
<a class="item-menu has-text-white-ter" href="{{ site.baseurl }}{{ site.baseurl }}/cursos.html">
<span class="menu-txt">Cursos</span>
<i class="fa-solid fa-house mx-4"></i>
</a>
</li>
</ul>
</aside>
</div>
</div>
<style type="text/css">
@media only screen and (min-width: 720px) {
.SideBar {
/* background-color: black; */
height: 100%;
width: 200px;
z-index: 1000;
overflow: hidden;
padding-top: 10px;
}
}
@media screen and (max-width: 1080px) {
.SideBar {
/* background-color: black; */
height: 100vh;
width: 70px;
z-index: 1000;
overflow: hidden;
padding-top: 40px;
}
.menu-txt{
display: none;
}
}
.menu{
margin-top: 20px;
}
.top-sidebar {
/* height: 10px; */
width: 100%;
}
.item-menu:hover {
background-color: #b4f2ff;
}
.active {
background-color: #5ce1f4;
}
.background {
background-color: #0b1a33;
}
.logo{
width: 50%;
/* margin-top: 80px; */
}
</style>

View File

@ -1,60 +0,0 @@
<nav class="is-flex">
<div class="nav-item is-flex is-flex-grow-1 is-align-items-center ml-6">
<h5 class="is-size-1-mobile"><a class=" LinkName mr-2"></a>/<a class="ml-2">STREAM</a></h5>
<input class="input ml-6 mr-6" placeholder="Pesquisar" />
</div>
<div class="nav-item is-flex is-flex-grow-1 is-align-items-center is-justify-content-flex-end mr-6">
<h4 class="usuario is-size-6 mr-4">Bem vindo</h4>
<figure class="image is-32x32 ">
<img
class="is-rounded"
src="https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQFqZMMWnIwg5s5uicldr-MVKpmu_2e1KWaIm2wNzp-Oqs4uyaqRGY8TFhBHIdWOMFMYPs&usqp=CAU"
/>
</figure>
</div>
</nav>
<style type="text/css">
@media only screen and (min-width: 720px) {
nav{
height: 100px;
/* width: 101rem; */
background-color: #0b1a33;
}
}
@media screen and (max-width: 1080px) {
nav{
height: 100px;
/* width: 101rem; */
background-color: #0b1a33;
}
}
input{
width: 300px;
/* height: 40px; */
background-color: #0b1a33;
border-color: #5ce1f4;
color: #fff;
font-family: 'Roboto', sans-serif;
}
input::placeholder{
color: #fff;
font-family: 'Roboto', sans-serif;
}
.nav-item h5 a{
color: #fff;
}
.LinkName{
color: #5ce1f4 !important;
}
.visible{
display: none;
}
.usuario{
color: #fff;
font-family: 'Roboto', sans-serif;
}
</style>

43
_layouts/aulas.html Executable file
View File

@ -0,0 +1,43 @@
---
layout: default
lang: pt
---
<div class="is-flex">
<div class="is-flex-grow-5 is-flex is-flex-direction-column" >
<main>
<div class="aula-title pt-6 pb-6">
<div class="detals-aula is is-flex is-flex-direction-row">
<div class="detals-aula is is-flex is-flex-direction-column is-flex-grow-1">
<h1 class="aula-title">{{ page.title }}</h1>
<h2 class="aula-name">{{ page.software }} - {{ page.level }}</h2>
<h3 class="aula-name">{{ page.author }}</h3>
<h3 class="aula-name">{{ page.date | date: "%d/%m/%Y" }}</h3>
</div>
<div class="download aula is-flex is-flex-grow-1 is-justify-content-flex-end mr-6">
{% assign aula_name = page.name | replace: '.md', '' %}
{% assign zip_file = 'aulas/' | append: aula_name | append: '.zip' %}
<a class="button is-success is-large" href="{{ site.baseurl }}{{ zip_file }}" download>
Download
</a>
</div>
</div>
</div>
<div class=" is-flex is-justify-content-center is-align-content-center mt-3">
{% assign aula_slug = page.title %}
{% assign video_aula = '' | append: aula_slug | append: '.mp4' %}
<video controls class="aula-video">
<source src="{{ site.baseurl }}/videos/{{ page.user }}/dest/{{ video_aula }}" type="video/mp4">
Seu navegador não suporta o elemento de vídeo.
</video>
</div>
<div class="content-aula mt-3 pt-2 pb-2">
</div>
</main>
</div>
</div>

23
_layouts/autores.html Executable file
View File

@ -0,0 +1,23 @@
---
layout: default
lang: pt
---
<div class="is-flex">
<div class="is-flex-grow-5 is-flex is-flex-direction-column" >
{% include TopBar.html %}
<main class="mt-6">
<h1 class="author-title">Detalhes do Autor</h1>
<div class="is-flex is-flex-direction-row author-container">
{% assign author_slug = page.name | replace: '.md', '' %}
{% assign imagem_author = 'autores/' | append: author_slug | append: '.jpg' %}
<img src="{{ site.baseurl }}/{{ imagem_author }}" alt="Imagem do Autor" class="author-img">
<div class="author-info mx-6">
<h2 class="user-title">{{ page.title }}</h2>
<p class="user-details">{{ page.content }}</p>
</div>
</div>
</main>
</div>
</div>

View File

@ -1,102 +0,0 @@
<!DOCTYPE html>
<html lang="pt-BR">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta charset="utf-8">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bulma@0.9.4/css/bulma.min.css">
<title>
{% if page.title %}{{ page.title | escape }}{% else %}{{ site.title | escape }}{% endif %}
</title>
<body>
</body>
</head>
<div class="is-flex is-flex-direction-row fullheight">
<div class="is-flex-grow-0">
{% include layout/SideBar.html %}
</div>
<div class="is-flex-grow-5 is-flex is-flex-direction-column">
{% include layout/TopBar.html %}
<div class="path has-text-primary-light spacing-page">
<h1 class="is-size-6 has-text-grey">INICIO/{{ page.categoria | upcase }}/{{ page.title | upcase }}</h1>
</div>
<div class="content spacing-page">
<div class="category">
<h1 class="is-size-7 has-text-grey-darker mx-1">{{ page.categoria | upcase }}</h1>
</div>
<div class="title">
<h1 class="title has-text-grey-darker is-size-1">{{page.title | upcase}}</h1>
<br />
<h2> {{ page.autor }}</h2>
</div>
<!-- <div>
<a class="box is-flex is-justify-content-center is-align-items-center my-4" href={`${Assets}/documents/doc.zip`}>
<i class="fa-solid fa-download fa-xl mx-3"></i>
<h1 class="is-size-5">Baixar arquivos do curso</h1>
</a>
</div> -->
<div class="conteudo">
<p>
{{ content }}
</p>
</div>
<div class="player my-3">
<video
class="player"
controls
muted
poster="https://th.bing.com/th/id/OIG.CmLs7pBcHDlZ32VQ5Oa8?pid=ImgGn">
<source src="/assets/cursos/{{ page.title }}/aula.mp4" type="video/mp4">
</video>
</div>
</div>
</div>
</div>
<style>
.fullheight{
height: 100vh;
}
.body{
margin: 0;
padding: 0;
}
.path{
font-weight: 100;
letter-spacing: 3px;
}
.content{
}
.spacing-page{
margin: 2% 10% 0px 10%;
}
.category{
}
.box{
height: auto;
width: 300px;
}
.player{
background-color: aliceblue;
width: 100%;
height: 600px;
object-fit: cover;
}
.player video{
width: 100%;
height: 100%;
}
</style>

128
_layouts/cursos.html Executable file
View File

@ -0,0 +1,128 @@
<!DOCTYPE html>
<html lang="pt-BR">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta charset="utf-8">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bulma@0.9.4/css/bulma.min.css">
<link rel="stylesheet" href="{{ site.baseurl }}/assets/css/stylesheet.css">
<!-- Google Fonts -->
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@24,400,0,0" />
{% if page.styles %}{{ page.styles }}{% endif %}
<title>
{% if page.title %}{{ page.title | escape }}{% else %}{{ site.title | escape }}{% endif %}
</title>
{% assign aulas = site.data.aulas | sort: 'date' | reverse %}
<script>
const switchGrind = () =>{
var grad = document.getElementById("grad");
var list = document.getElementById("list");
list.classList.add("is-hidden");
grad.classList.remove("is-hidden");
}
const switchList = () =>{
var grad = document.getElementById("grad");
var list = document.getElementById("list");
grad.classList.add("is-hidden");
list.classList.remove("is-hidden");
}
</script>
</head>
<body>
<div class="is-flex is-flex-direction-row is-full-width">
<div class="is-flex">
{% include SideBar.html %}
</div>
<div class="is-flex">
<div class="is-flex-grow-5 is-flex is-flex-direction-column">
{% include TopBar.html %}
<main class="">
<div class="aula-title pt-6 pb-6">
<div class="detals-aula is is-flex is-flex-direction-row">
<div class="detals-aula is is-flex is-flex-direction-column is-flex-grow-1">
<h1 class="aula-title">{{ page.title }}</h1>
<h2 class="aula-name">{{ page.software }} - {{ page.level }}</h2>
<h3 class="aula-name">{{ page.author }}</h2>
<h3 class="aula-name">{{ page.date | date: "%d/%m/%Y" }}</h2>
</div>
</div>
</div>
<div class="is-flex is-flex-direction-row is-align-items-center ">
<h1 class="title pt-6 pb6 pl-6 is-flex-grow-3">Explore as Aulas deste Curso: Descubra o que Está por Vir!</h1>
<div class="is-flex-grow-1 mt-5 ">
<span class="material-symbols-outlined" onclick="switchGrind()" style="cursor: pointer;" >grid_view</span>
<span class="material-symbols-outlined" onclick="switchList()" style="cursor: pointer;" >more_vert</span>
</div>
</div>
<div id="grad" class=" is-flex is-justify-content-center is-align-content-center">
{% assign aulas = site.data.aulas | sort: 'date' | reverse %}
<div class="columns is-multiline">
{% for aula in aulas %}
{% assign nome = aula.name | replace: ".md","" %}
{% for aulaContent in page.aulas %}
{% if nome == aulaContent %}
<div class="column is-one-third">
<a href='{{ site.baseurl }}{{ aula.url }}.html' class="card-link">
<div class="card">
<div class="card-image">
<figure class="image is-4by3">
<img src="{{ site.baseurl }}/thumbs/{{ nome }}.jpg">
</figure>
</div>
<div class="card-content">
<div class="content my-2">
<h1 class="title is-size-4">{{ aula.title }}</h1>
<h3 class="subtitle is-size-6">{{ aula.level }}</h3>
<h3 class="is-size-6">{{ aula.description }}</h3>
<div class="is-flex is-flex-direction-row is-align-items-center ">
<span class="is-size-6 is-flex-grow-4 blue-text">{{ aula.author }}</span>
<span class="is-size-7">{{ aula.date | date: "%d-%m-%y"}}</span>
</div>
</div>
</div>
</div>
</a>
</div>
{% endif %}
{% endfor %}
{% endfor %}
</div>
</div>
<div id="list" class=" is-flex is-flex-direction-column is-justify-content-center is-align-content-center mt-5 is-hidden">
{% for aulaContent in page.aulas %}
{% assign aula_slug = aulaContent | replace: '.md', '' %}
{% assign video_aula = site.baseurl | append: '/aulas/' | append: aula_slug | append: '.mp4' %}
<div class="title-Background px-6">
<h1>{{ aulaContent }}</h1>
</div>
<div class="video-curso">
<video controls class="aula-video">
<source src="{{ video_aula }}" type="video/mp4">
Seu navegador não suporta o elemento de vídeo.
</video>
</div>
{% endfor %}
</div>
</main>
</div>
</div>
</div>
<footer>
<!-- Conteúdo do rodapé -->
</footer>
</body>
</html>

51
_layouts/dashboard.php Executable file
View File

@ -0,0 +1,51 @@
---
layout: default
lang: pt
---
<?php
// Autenticação básica HTTP para obter o nome de usuário
$username = $_SERVER['PHP_AUTH_USER'];
//$username = "fls";
$target_dir = "/var/www/html/aliceclass_videos/" . $username;
# check if user dir exists
if (!file_exists($target_dir)) {
# if not, create it
if (mkdir($target_dir, 0775, true)) {
// echo "Directory created successfully.";
}
if (mkdir($target_dir . "/src", 0775, true)) {
// echo "Directory created successfully.";
}
if (mkdir($target_dir . "/dest", 0775, true)) {
// echo "Directory created successfully.";
}
}
// Verifica se o diretório existe
if (is_dir($target_dir)) {
// Obtém a lista de arquivos
$files = scandir($target_dir . "/dest");
// Remove os elementos '.' e '..' da lista de arquivos
$files = array_diff($files, array('.', '..'));
// Conta a quantidade de arquivos restantes
$file_count = count($files);
}
?>
<div class="dashboard-content">
<div class="banner">
<h1>Bem vindo <?php echo $username; ?> </h1>
</div>
<div class="menu">
<a class="button" href="{{ site.baseurl }}/dashboard" >Início</a>
<a class="button" href="{{ site.baseurl }}/dashboard/upload.php" >Criar aula</a>
</div>
{{ content }}
</div>

39
_layouts/default.html Normal file → Executable file
View File

@ -4,34 +4,23 @@
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="viewport" content="width=device-width, initial-scale=1">
<meta charset="utf-8"> <meta charset="utf-8">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bulma@0.9.4/css/bulma.min.css"> <!-- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bulma@0.9.4/css/bulma.min.css"> -->
<link rel="stylesheet" href="{{ site.baseurl }}/assets/css/stylesheet.css">
{% if page.styles %}{{ page.styles }}{% endif %}
<title> <title>
{% if page.title %}{{ page.title | escape }}{% else %}{{ site.title | escape }}{% endif %} {% if page.title %}{{ page.title | escape }}{% else %}{{ site.title | escape }}{% endif %}
</title> </title>
<body>
</body>
</head> </head>
<div class="is-flex is-flex-direction-row fullheight"> <body>
<div class="is-flex-grow-0"> <div class="main-content">
{% include layout/SideBar.html %} <div class="page-sidebar">
</div> {% include SideBar.html %}
</div>
<div class="is-flex-grow-5 is-flex is-flex-direction-column"> <div class="page-content">
{% include layout/TopBar.html %} {{content}}
{{ content }} </div>
</div> </div>
</div> </body>
</html>
<style>
.fullheight{
height: 100vh;
}
.body{
margin: 0;
padding: 0;
}
</style>

16
_layouts/software.html Executable file
View File

@ -0,0 +1,16 @@
---
layout: default
lang: pt
---
<div class="is-flex">
<div class="is-flex-grow-5 is-flex is-flex-direction-column" >
{% include TopBar.html %}
<main class="mt-6">
{{ content }}
</main>
</div>
</div>

View File

@ -1,18 +0,0 @@
---
layout: page
title: About
permalink: /about/
---
This is the base Jekyll theme. You can find out more info about customizing your Jekyll theme, as well as basic Jekyll usage documentation at [jekyllrb.com](https://jekyllrb.com/)
You can find the source code for Minima at GitHub:
[jekyll][jekyll-organization] /
[minima](https://github.com/jekyll/minima)
You can find the source code for Jekyll at GitHub:
[jekyll][jekyll-organization] /
[jekyll](https://github.com/jekyll/jekyll)
[jekyll-organization]: https://github.com/jekyll

View File

@ -1,6 +0,0 @@
---
layout: default
lang: pt
---
{% include components/card.html %}

570
assets/css/stylesheet.css Executable file
View File

@ -0,0 +1,570 @@
/* ================================================================================================================================== */
/* Variables */
:root {
/* Paleta de cors */
--midnight-blue: #0B1A33;
--cornflower-blue: #4B90F8;
--goldenrod: #D6A419;
--caribbean-green: #00C6BE;
--deep-ruby: #623A40;
--ivory: #F1F1E6;
--alice-blue: #F4F9FF;
--charcoal-blue: #35405D;
--slate-gray: #616B8B;
--light-slate-gray: #909ABB;
--periwinkle: #2d2e31;
/* Informaçoes da paleta de cores */
--primary-color: var(--midnight-blue);
--secondary-color: var(--cornflower-blue);
--tertiary-color: var(--periwinkle);
--gradient-backfround: linear-gradient(90deg, rgba(255,255,255,0) 0%, rgba(75,144,248,1) 19%, rgba(97,157,246,1) 85%, rgba(241,241,230,0) 100%);
--accent-color: var(--goldenrod);
--background-color: var(--charcoal-blue);
--text-color: var( --alice-blue);
--secondary-text-color: var(--slate-gray);
--border-color: var(--deep-ruby);
--highlight-color: var(--caribbean-green);
--error-color: var(--slate-gray);
--success-color: var(--light-slate-gray);
--warning-color: var(--periwinkle);
--info-color: var(--ivory);
--font-family: 'Roboto', sans-serif;
--heading-color: var(--alice-blue);
--heading-margin: 0 0 20px;
}
/* ================================================================================================================================== */
/* Reset and Base Styles */
*,
*::before,
*::after {
box-sizing: border-box;
margin: 0;
padding: 0;
/* background-color: var(--background-color); */
}
/* ================================================================================================================================== */
/* Body */
body {
/* background-color: var(--background-color); */
color: var(--heading-color);
background-color: var(--background-color);
scroll-behavior: smooth;
}
/* ================================================================================================================================== */
/* Estilos básicos para todos os cabeçalhos */
h1, h2, h3, h4, h5, h6 {
font-family: var(--font-family);
color: var(--heading-color);
}
/* ================================================================================================================================== */
/* CSS do Layout Default da pagina _layout/default.html */
.main-content{
width: 100%;
display: flex;
flex-direction: row;
padding: 30px 25px;
}
.page-sidebar{
width: 100px;
flex-grow: 1;
margin: 0 25px;
}
.page-content{
width: 100px;
background-color: var(--tertiary-color);
flex-grow: 10;
margin: 0 25px;
border-radius: 30px;
box-shadow: -10px 5px 15px var(--primary-color);
}
/* ================================================================================================================================== */
/* SideBar _include/SideBar.html */
.SideBar{
display: flex;
flex-direction: column;
height: 90vh;
position: fixed;
}
.SideBar .top-sidebar{
flex-grow: 1;
display: flex;
align-items: end;
justify-content: start;
}
.SideBar aside{
flex-grow: 6;
}
.SideBar .button-sidebar{
flex-grow: 1;
display: flex;
align-items: end;
justify-content: start;
}
.SideBar .image{
width: 90%;
height: auto;
margin: 30px 0px;
}
.menu{
color: var(--text-color);
}
.menu li{
list-style: none;
font-family: var(--font-family);
padding: 15px 10px;
}
.menu li:hover{
/* background: linear-gradient(90deg, rgba(255,255,255,0) 0%, rgba(75,144,248,1) 19%, rgba(97,157,246,1) 85%, rgba(241,241,230,0) 100%); */
padding: 15px 15px;
cursor: pointer;
}
.menu a{
color: var(--text-color);
text-decoration: none;
}
.menu a:hover{
color: var(--secondary-text-color);
}
/* --- */
.button-sidebar li{
list-style: none;
font-family: var(--font-family);
padding: 15px 10px;
}
.button-sidebar li a{
color: var(--text-color);
text-decoration: none;
}
/* ================================================================================================================================== */
/* CSS do index da pagina _content/Pages/index.html */
.home-content {
width: 100%;
border-radius: 30px 30px 0px 0;
}
.home-content .banner{
height: 500px;
width: 100%;
background: url('/assets/images/background.svg') ;
background-size: cover;
background-position: center;
border-radius: 30px;
padding: 0 25px;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
}
.lasted{
display: flex;
flex-direction: column;
padding: 0 35px;
border-radius: 30px;
}
.lasted .title-section{
height: 80px;
width: 100%;
margin: 25px 0;
display: flex;
align-items: center;
justify-content: center;
}
.lasted .title{
font-weight: 300;
}
.lasted .content-box{
width: 100%;
margin: 25px 0;
display: flex;
align-items: center;
justify-content: center;
}
.lasted .content-box .box{
height: 500px;
width: 400px;
display: flex;
flex-direction: column;
background-color: var(--background-color);
box-shadow: -10px 5px 5px var(--primary-color);
margin: 0 25px;
}
.box .box-top{
display: flex;
background-color: #623A40;
flex-grow: 1;
}
.box .box-top figure img{
width: 100%;
height: 100%;
}
.box .box-info{
display: flex;
flex-direction: column;
flex-grow: 1;
margin: 15px;
}
.box .box-info h1{
width: 100%;
margin: 25px 0;
font-size: 24px;
}
.box .box-info p{
font-size: 18px;
}
/* ================================================================================================================================== */
/* CSS da pagina Aulas localizada em _content/Pages/index.html */
.aulas-content{
width: 100%;
padding: 15px;
}
.aulas-content .title-content{
width: 100%;
display: flex;
flex-direction: row;
padding: 15px;
}
.aulas-content .title-content > :nth-child(1){
flex-grow: 5; /* Este elemento crescerá 5 partes */
}
.aulas-content .title-content > :nth-child(1){
flex-grow: 2; /* Este elemento crescerá 5 partes */
}
.aulas-content .title-content .button{
font-family: var(--font-family);
font-weight: 500;
display: inline-block;
font-weight: 400;
text-align: center;
vertical-align: middle;
cursor: pointer;
user-select: none;
background-color: var(--success-color); /* Cor de fundo padrão (Bulma: primary color) */
border: 1px solid transparent;
border-radius: 4px;
color: #fff; /* Cor do texto */
padding: 0.5rem 1rem; /* Espaçamento interno */
font-size: 1rem;
line-height: 1.5;
transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
}
.aulas-content .content{
display: flex;
flex-direction: row;
justify-content: center;
align-items: center;
width: 100%;
flex-wrap: wrap;
/* height: 100px; */
}
.aulas-content .content .box{
height: 500px;
width: 400px;
display: flex;
flex-direction: column;
background-color: var(--background-color);
box-shadow: -5px 5px 15px var(--primary-color);
margin: 25px 25px;
}
/* ================================================================================================================================== */
/* CSS da pagina autores localizada em _content/Pages/autores.html */
.autores-content{
width: 100%;
padding: 15px;
}
.autores-content .title-content{
width: 100%;
display: flex;
flex-direction: row;
padding: 15px;
}
.autores-content .title-content > :nth-child(1){
flex-grow: 5; /* Este elemento crescerá 5 partes */
}
.autores-content .title-content > :nth-child(1){
flex-grow: 2; /* Este elemento crescerá 5 partes */
}
.autores-content .title-content .button{
font-family: var(--font-family);
font-weight: 500;
display: inline-block;
font-weight: 400;
text-align: center;
vertical-align: middle;
cursor: pointer;
user-select: none;
background-color: var(--success-color); /* Cor de fundo padrão (Bulma: primary color) */
border: 1px solid transparent;
border-radius: 4px;
color: #fff; /* Cor do texto */
padding: 0.5rem 1rem; /* Espaçamento interno */
font-size: 1rem;
line-height: 1.5;
transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
}
.autores-content .content{
display: flex;
flex-direction: row;
justify-content: center;
align-items: center;
width: 100%;
flex-wrap: wrap;
/* height: 100px; */
}
.autores-content .content .box{
height: 600px;
width: 400px;
display: flex;
flex-direction: column;
background-color: var(--background-color);
box-shadow: -5px 5px 15px var(--primary-color);
margin: 25px 25px;
}
/* ================================================================================================================================== */
/* CSS da pagina autores localizada em _includes/formularios/envAula.html */
.envArquivo h1{
font-family: var(--font-family);
margin: 30px ;
}
.envArquivo{
display: flex;
align-items: start;
justify-content: start;
flex-direction: column;
margin: 0 30px;
}
/*
.envArquivo .field{
height: 30%;
width: 100%;
margin: 0 30px;
}
.envArquivo .field .label{
font-family: var(--font-family);
font-weight: 400;
}
.envArquivo .field .input {
height: 30px;
width: 200px;
border-radius: 10px;
}
.envArquivo .field-row{
display: flex;
flex-direction: row;
} */
.input.input {
-webkit-appearance: none;
-moz-appearance: none;
appearance: none;
display: block;
width: 100%;
height: 2.5em;
padding: 0.5em 0.75em;
font-size: 1em;
line-height: 1.5;
color: #363636;
background-color: #fff;
background-clip: padding-box;
border: 1px solid #dbdbdb;
border-radius: 4px;
box-shadow: inset 0 1px 2px rgba(10, 10, 10, 0.1);
transition: border-color 0.2s ease, box-shadow 0.2s ease;
}
/* Placeholder */
input.input::placeholder {
color: #b5b5b5;
}
/* Focus */
input.input:focus {
border-color: #3273dc;
box-shadow: 0 0 0 0.125em rgba(50, 115, 220, 0.25);
outline: none;
}
/* Modificações personalizadas */
input.input.custom {
border-radius: 8px; /* Arredondar mais os cantos */
border-color: #ff3860; /* Cor de borda personalizada */
background-color: #f9f9f9; /* Cor de fundo personalizada */
}
input.input.custom:focus {
border-color: #ff79b0;
box-shadow: 0 0 0 0.125em rgba(255, 56, 96, 0.25);
}
/* Estados de erro */
input.input.custom.is-danger {
border-color: #ff3860;
box-shadow: 0 0 0 0.125em rgba(255, 56, 96, 0.25);
}
/* Estados de sucesso */
input.input.custom.is-success {
border-color: #23d160;
box-shadow: 0 0 0 0.125em rgba(35, 209, 96, 0.25);
}
/* ================================================================================================================================== */
/* CSS da pagina dashboard localizada em _includes/layouts/dashboard.php */
.dashboard-content{
width: 100%;
border-radius: 30px 30px 0px 0;
display: flex;
justify-content: center;
align-items: center;
flex-direction: column;
}
.dashboard-content .banner{
height: 300px;
width: 100%;
background: url('/assets/images/background.svg') ;
background-size: cover;
background-position: center;
border-radius: 30px;
padding: 0 25px;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
}
.index-dashboard{
display: flex;
flex-direction: row;
justify-content: center;
}
.index-dashboard .box-info{
min-height: 100px;
min-width: 400px;
display: flex;
flex-direction: column;
background-color: var(--primary-color);
border-radius: 15px;
margin: 15px;
justify-content: center;
align-items: center;
}
.dashboard-content .menu{
height: 100%;
min-width: 20%;
display: flex;
flex-direction: row;
align-items: center;
justify-content: center;
border-radius: 0 0 30px 30px;
background-color: var(--background-color);
}
.dashboard-content a{
text-decoration: none;
color: var(--text-color);
margin: 15px;
}

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 192 KiB

View File

@ -0,0 +1,18 @@
---
layout: default
title: Enviar Material
lang: pt
---
<div class="mt-3 mx-6">
<h1 class="title">Envie seu material</h1>
<form>
<label>Titulo</label>
<input type="text" class="input" placeholder="Titulo do conteudo"> </input>
<label>Titulo</label>
<input type="text" class="input" placeholder="Titulo do conteudo"> </input>
</form>
</div>

View File

@ -1,7 +1,5 @@
--- ---
layout: default layout: default
title: Criar Podcast
lang: pt lang: pt
--- ---
<h1>Hello Wold</h1>

0
assets/images/AliceCastRed.png Normal file → Executable file
View File

Before

Width:  |  Height:  |  Size: 195 KiB

After

Width:  |  Height:  |  Size: 195 KiB

BIN
assets/images/AliceClassIcon.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

1
assets/images/_background.svg Executable file
View File

@ -0,0 +1 @@
<svg id="visual" viewBox="0 0 900 600" width="900" height="600" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1"><defs><filter id="blur1" x="-10%" y="-10%" width="120%" height="120%"><feFlood flood-opacity="0" result="BackgroundImageFix"></feFlood><feBlend mode="normal" in="SourceGraphic" in2="BackgroundImageFix" result="shape"></feBlend><feGaussianBlur stdDeviation="161" result="effect1_foregroundBlur"></feGaussianBlur></filter></defs><rect width="900" height="600" fill="#0B1A33"></rect><g filter="url(#blur1)"><circle cx="744" cy="298" fill="#00C6BE" r="357"></circle><circle cx="844" cy="26" fill="#0B1A33" r="357"></circle><circle cx="51" cy="224" fill="#00C6BE" r="357"></circle><circle cx="495" cy="84" fill="#00C6BE" r="357"></circle><circle cx="233" cy="12" fill="#0B1A33" r="357"></circle><circle cx="371" cy="566" fill="#00C6BE" r="357"></circle></g></svg>

After

Width:  |  Height:  |  Size: 914 B

BIN
assets/images/about-image.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 433 KiB

1
assets/images/background.svg Executable file
View File

@ -0,0 +1 @@
<svg id="visual" viewBox="0 0 900 600" width="900" height="600" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1"><defs><filter id="blur1" x="-10%" y="-10%" width="120%" height="120%"><feFlood flood-opacity="0" result="BackgroundImageFix"></feFlood><feBlend mode="normal" in="SourceGraphic" in2="BackgroundImageFix" result="shape"></feBlend><feGaussianBlur stdDeviation="161" result="effect1_foregroundBlur"></feGaussianBlur></filter></defs><rect width="900" height="600" fill="#4B90F8"></rect><g filter="url(#blur1)"><circle cx="194" cy="271" fill="#0B1A33" r="357"></circle><circle cx="895" cy="29" fill="#4B90F8" r="357"></circle><circle cx="434" cy="572" fill="#0B1A33" r="357"></circle><circle cx="632" cy="511" fill="#0B1A33" r="357"></circle><circle cx="673" cy="300" fill="#4B90F8" r="357"></circle><circle cx="870" cy="414" fill="#0B1A33" r="357"></circle></g></svg>

After

Width:  |  Height:  |  Size: 917 B

24
assets/svg/background_1.svg Executable file
View File

@ -0,0 +1,24 @@
<svg
id="visual"
viewBox="0 0 900 600"
width="1920"
height="1080"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
version="1.1">
<rect x="0" y="0" width="1920" height="1080" fill="#ffffff"></rect>
<path d="M588 0L633 0L633 26L504 26L504 52L605 52L605 78L601 78L601 104L583 104L583 130L541 130L541 157L614 157L614 183L664 183L664 209L619 209L619 235L670 235L670 261L607 261L607 287L683 287L683 313L521 313L521 339L628 339L628 365L520 365L520 391L620 391L620 417L527 417L527 443L575 443L575 470L513 470L513 496L518 496L518 522L603 522L603 548L589 548L589 574L536 574L536 600L0 600L0 574L0 574L0 548L0 548L0 522L0 522L0 496L0 496L0 470L0 470L0 443L0 443L0 417L0 417L0 391L0 391L0 365L0 365L0 339L0 339L0 313L0 313L0 287L0 287L0 261L0 261L0 235L0 235L0 209L0 209L0 183L0 183L0 157L0 157L0 130L0 130L0 104L0 104L0 78L0 78L0 52L0 52L0 26L0 26L0 0L0 0Z" fill="#ffffff"></path>
<path d="M576 0L641 0L641 26L646 26L646 52L527 52L527 78L554 78L554 104L597 104L597 130L535 130L535 157L628 157L628 183L663 183L663 209L587 209L587 235L650 235L650 261L553 261L553 287L544 287L544 313L589 313L589 339L542 339L542 365L518 365L518 391L524 391L524 417L509 417L509 443L449 443L449 470L614 470L614 496L478 496L478 522L603 522L603 548L500 548L500 574L504 574L504 600L0 600L0 574L0 574L0 548L0 548L0 522L0 522L0 496L0 496L0 470L0 470L0 443L0 443L0 417L0 417L0 391L0 391L0 365L0 365L0 339L0 339L0 313L0 313L0 287L0 287L0 261L0 261L0 235L0 235L0 209L0 209L0 183L0 183L0 157L0 157L0 130L0 130L0 104L0 104L0 78L0 78L0 52L0 52L0 26L0 26L0 0L0 0Z" fill="#e6e7eb"></path>
<path d="M590 0L608 0L608 26L549 26L549 52L446 52L446 78L500 78L500 104L447 104L447 130L594 130L594 157L490 157L490 183L564 183L564 209L521 209L521 235L580 235L580 261L442 261L442 287L600 287L600 313L598 313L598 339L506 339L506 365L539 365L539 391L546 391L546 417L425 417L425 443L554 443L554 470L509 470L509 496L579 496L579 522L527 522L527 548L437 548L437 574L488 574L488 600L0 600L0 574L0 574L0 548L0 548L0 522L0 522L0 496L0 496L0 470L0 470L0 443L0 443L0 417L0 417L0 391L0 391L0 365L0 365L0 339L0 339L0 313L0 313L0 287L0 287L0 261L0 261L0 235L0 235L0 209L0 209L0 183L0 183L0 157L0 157L0 130L0 130L0 104L0 104L0 78L0 78L0 52L0 52L0 26L0 26L0 0L0 0Z" fill="#ced0d7"></path>
<path d="M445 0L502 0L502 26L490 26L490 52L531 52L531 78L460 78L460 104L507 104L507 130L467 130L467 157L520 157L520 183L425 183L425 209L512 209L512 235L471 235L471 261L396 261L396 287L490 287L490 313L522 313L522 339L396 339L396 365L544 365L544 391L392 391L392 417L410 417L410 443L434 443L434 470L498 470L498 496L525 496L525 522L511 522L511 548L447 548L447 574L545 574L545 600L0 600L0 574L0 574L0 548L0 548L0 522L0 522L0 496L0 496L0 470L0 470L0 443L0 443L0 417L0 417L0 391L0 391L0 365L0 365L0 339L0 339L0 313L0 313L0 287L0 287L0 261L0 261L0 235L0 235L0 209L0 209L0 183L0 183L0 157L0 157L0 130L0 130L0 104L0 104L0 78L0 78L0 52L0 52L0 26L0 26L0 0L0 0Z" fill="#b7b9c3"></path>
<path d="M343 0L330 0L330 26L469 26L469 52L437 52L437 78L441 78L441 104L487 104L487 130L416 130L416 157L436 157L436 183L351 183L351 209L491 209L491 235L432 235L432 261L396 261L396 287L391 287L391 313L325 313L325 339L413 339L413 365L390 365L390 391L454 391L454 417L366 417L366 443L386 443L386 470L402 470L402 496L392 496L392 522L367 522L367 548L385 548L385 574L494 574L494 600L0 600L0 574L0 574L0 548L0 548L0 522L0 522L0 496L0 496L0 470L0 470L0 443L0 443L0 417L0 417L0 391L0 391L0 365L0 365L0 339L0 339L0 313L0 313L0 287L0 287L0 261L0 261L0 235L0 235L0 209L0 209L0 183L0 183L0 157L0 157L0 130L0 130L0 104L0 104L0 78L0 78L0 52L0 52L0 26L0 26L0 0L0 0Z" fill="#a0a3af"></path>
<path d="M320 0L388 0L388 26L395 26L395 52L335 52L335 78L403 78L403 104L415 104L415 130L402 130L402 157L334 157L334 183L391 183L391 209L345 209L345 235L329 235L329 261L295 261L295 287L386 287L386 313L351 313L351 339L394 339L394 365L354 365L354 391L374 391L374 417L287 417L287 443L331 443L331 470L422 470L422 496L314 496L314 522L382 522L382 548L286 548L286 574L322 574L322 600L0 600L0 574L0 574L0 548L0 548L0 522L0 522L0 496L0 496L0 470L0 470L0 443L0 443L0 417L0 417L0 391L0 391L0 365L0 365L0 339L0 339L0 313L0 313L0 287L0 287L0 261L0 261L0 235L0 235L0 209L0 209L0 183L0 183L0 157L0 157L0 130L0 130L0 104L0 104L0 78L0 78L0 52L0 52L0 26L0 26L0 0L0 0Z" fill="#898d9c"></path>
<path d="M359 0L327 0L327 26L287 26L287 52L316 52L316 78L331 78L331 104L268 104L268 130L247 130L247 157L369 157L369 183L264 183L264 209L344 209L344 235L353 235L353 261L353 261L353 287L304 287L304 313L368 313L368 339L367 339L367 365L343 365L343 391L362 391L362 417L316 417L316 443L260 443L260 470L341 470L341 496L316 496L316 522L299 522L299 548L287 548L287 574L317 574L317 600L0 600L0 574L0 574L0 548L0 548L0 522L0 522L0 496L0 496L0 470L0 470L0 443L0 443L0 417L0 417L0 391L0 391L0 365L0 365L0 339L0 339L0 313L0 313L0 287L0 287L0 261L0 261L0 235L0 235L0 209L0 209L0 183L0 183L0 157L0 157L0 130L0 130L0 104L0 104L0 78L0 78L0 52L0 52L0 26L0 26L0 0L0 0Z" fill="#73788a"></path>
<path d="M218 0L212 0L212 26L235 26L235 52L284 52L284 78L234 78L234 104L211 104L211 130L281 130L281 157L222 157L222 183L270 183L270 209L295 209L295 235L287 235L287 261L241 261L241 287L275 287L275 313L221 313L221 339L266 339L266 365L318 365L318 391L298 391L298 417L263 417L263 443L317 443L317 470L213 470L213 496L303 496L303 522L321 522L321 548L234 548L234 574L297 574L297 600L0 600L0 574L0 574L0 548L0 548L0 522L0 522L0 496L0 496L0 470L0 470L0 443L0 443L0 417L0 417L0 391L0 391L0 365L0 365L0 339L0 339L0 313L0 313L0 287L0 287L0 261L0 261L0 235L0 235L0 209L0 209L0 183L0 183L0 157L0 157L0 130L0 130L0 104L0 104L0 78L0 78L0 52L0 52L0 26L0 26L0 0L0 0Z" fill="#5e6377"></path>
<path d="M245 0L253 0L253 26L199 26L199 52L253 52L253 78L239 78L239 104L254 104L254 130L251 130L251 157L238 157L238 183L220 183L220 209L267 209L267 235L168 235L168 261L187 261L187 287L165 287L165 313L177 313L177 339L250 339L250 365L195 365L195 391L262 391L262 417L176 417L176 443L173 443L173 470L209 470L209 496L240 496L240 522L266 522L266 548L262 548L262 574L252 574L252 600L0 600L0 574L0 574L0 548L0 548L0 522L0 522L0 496L0 496L0 470L0 470L0 443L0 443L0 417L0 417L0 391L0 391L0 365L0 365L0 339L0 339L0 313L0 313L0 287L0 287L0 261L0 261L0 235L0 235L0 209L0 209L0 183L0 183L0 157L0 157L0 130L0 130L0 104L0 104L0 78L0 78L0 52L0 52L0 26L0 26L0 0L0 0Z" fill="#494f65"></path>
<path d="M159 0L131 0L131 26L150 26L150 52L149 52L149 78L178 78L178 104L194 104L194 130L142 130L142 157L126 157L126 183L136 183L136 209L174 209L174 235L133 235L133 261L154 261L154 287L178 287L178 313L144 313L144 339L176 339L176 365L199 365L199 391L148 391L148 417L173 417L173 443L160 443L160 470L169 470L169 496L126 496L126 522L161 522L161 548L125 548L125 574L130 574L130 600L0 600L0 574L0 574L0 548L0 548L0 522L0 522L0 496L0 496L0 470L0 470L0 443L0 443L0 417L0 417L0 391L0 391L0 365L0 365L0 339L0 339L0 313L0 313L0 287L0 287L0 261L0 261L0 235L0 235L0 209L0 209L0 183L0 183L0 157L0 157L0 130L0 130L0 104L0 104L0 78L0 78L0 52L0 52L0 26L0 26L0 0L0 0Z" fill="#353d54"></path>
<path d="M118 0L84 0L84 26L118 26L118 52L94 52L94 78L117 78L117 104L83 104L83 130L110 130L110 157L99 157L99 183L138 183L138 209L85 209L85 235L139 235L139 261L94 261L94 287L145 287L145 313L145 313L145 339L103 339L103 365L137 365L137 391L83 391L83 417L100 417L100 443L90 443L90 470L112 470L112 496L135 496L135 522L136 522L136 548L115 548L115 574L137 574L137 600L0 600L0 574L0 574L0 548L0 548L0 522L0 522L0 496L0 496L0 470L0 470L0 443L0 443L0 417L0 417L0 391L0 391L0 365L0 365L0 339L0 339L0 313L0 313L0 287L0 287L0 261L0 261L0 235L0 235L0 209L0 209L0 183L0 183L0 157L0 157L0 130L0 130L0 104L0 104L0 78L0 78L0 52L0 52L0 26L0 26L0 0L0 0Z" fill="#202b43"></path>
<path d="M89 0L67 0L67 26L78 26L78 52L60 52L60 78L52 78L52 104L97 104L97 130L71 130L71 157L94 157L94 183L70 183L70 209L54 209L54 235L76 235L76 261L90 261L90 287L89 287L89 313L73 313L73 339L90 339L90 365L74 365L74 391L61 391L61 417L85 417L85 443L97 443L97 470L97 470L97 496L53 496L53 522L60 522L60 548L81 548L81 574L86 574L86 600L0 600L0 574L0 574L0 548L0 548L0 522L0 522L0 496L0 496L0 470L0 470L0 443L0 443L0 417L0 417L0 391L0 391L0 365L0 365L0 339L0 339L0 313L0 313L0 287L0 287L0 261L0 261L0 235L0 235L0 209L0 209L0 183L0 183L0 157L0 157L0 130L0 130L0 104L0 104L0 78L0 78L0 52L0 52L0 26L0 26L0 0L0 0Z" fill="#0b1a33"></path>
</svg>

After

Width:  |  Height:  |  Size: 8.1 KiB

1
assets/svg/background_2.svg Executable file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 8.0 KiB

1
assets/svg/background_3.svg Executable file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 8.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 538 KiB

View File

@ -0,0 +1,6 @@
---
github: https://github.com/carlosbolin
lattes: http://lattes.cnpq.br/6697316832233182
layout: autores
---
Pessoa da Música. DJ.

Binary file not shown.

After

Width:  |  Height:  |  Size: 366 KiB

View File

@ -0,0 +1,6 @@
---
github: https://github.com/R1nBa
lattes: http://lattes.cnpq.br/4966869639421090
layout: autores
---
Pessoa da computação. Toca violão.

Binary file not shown.

After

Width:  |  Height:  |  Size: 69 KiB

View File

@ -0,0 +1,6 @@
---
github: https://github.com/EmersonJSC/
lattes: http://lattes.cnpq.br/8494846056894900
layout: autores
---
Pessoa da computação. Manja HTML.

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

View File

@ -0,0 +1,7 @@
---
github: https://github.com/flschiavoni
lattes: http://lattes.cnpq.br/1259591090948385
layout: autores
---
Professor da computação com cara de professor da filosofia, papo de professor da música.

Binary file not shown.

After

Width:  |  Height:  |  Size: 108 KiB

View File

@ -0,0 +1,6 @@
---
github: https://github.com/gbr-cdc
lattes: http://lattes.cnpq.br/93125671276598013
layout: autores
---
Pessoa da computaçao. Joga malabares.

Binary file not shown.

After

Width:  |  Height:  |  Size: 109 KiB

View File

@ -0,0 +1,6 @@
---
github: https://github.com/theRealCarneiro
lattes: http://lattes.cnpq.br/2090658657681256
layout: autores
---
Pessoa da computação, especialista em Linux.

Binary file not shown.

After

Width:  |  Height:  |  Size: 351 KiB

View File

@ -0,0 +1,5 @@
---
lattes: http://lattes.cnpq.br/2626209451689208
layout: autores
---
Pessoa da música. Toca tambor.

Binary file not shown.

After

Width:  |  Height:  |  Size: 171 KiB

View File

@ -0,0 +1,6 @@
---
github: https://github.com/JotaChina
lattes: http://lattes.cnpq.br/0724666760175162
layout: autores
---
Pessoa do Hip Hop.

Binary file not shown.

After

Width:  |  Height:  |  Size: 130 KiB

View File

@ -0,0 +1,6 @@
---
github: https://github.com/MatheusJordao03/
lattes: http://lattes.cnpq.br/9330669827537598
layout: autores
---
Pessoa da música. Toca violão.

9
collections/_cursos/LMMS.md Executable file
View File

@ -0,0 +1,9 @@
---
layout: cursos
author: Matheus De Bomfim Rodrigues Jordão
description: Introdução ao Hydrogen
date: 2023/10/01
aulas:
- lmms
---
Veja que maneiro é este curso de LMMS

View File

@ -0,0 +1,12 @@
---
layout: dashboard
lang: pt
---
<div class="index-dashboard">
<div class="box-info">
<h4>Numero de Aulas enviadas</h4>
<p><?php echo $file_count; ?></p>
</div>
</div>

View File

@ -0,0 +1,62 @@
---
layout: dashboard
lang: pt
---
<div class="envArquivo">
<h1> Enviar Aula</h1>
<form action="/php/upload.php" method="post" enctype="multipart/form-data">
<div class="field-row">
<!-- Nome da Aula -->
<div class="field">
<label class="label" for="class_name">Nome da Aula</label>
<div class="control">
<input class="input" type="text" id="videoTitle" name="videoTitle" required>
</div>
</div>
<!-- Nível -->
<div class="field">
<label class="label" for="level">Nível</label>
<div class="control">
<div class="select">
<select id="level" name="level" required>
<option value="basico">Básico</option>
<option value="intermediario">Intermediário</option>
<option value="avancado">Avançado</option>
</select>
</div>
</div>
</div>
</div>
<!-- Descrição -->
<div class="field">
<label class="label" for="description">Descrição</label>
<div class="control">
<textarea class="textarea" id="videoDescription" name="videoDescription" rows="4" required></textarea>
</div>
</div>
<!-- Software Usado -->
<div class="field">
<label class="label" for="software">Software Usado</label>
<div class="control">
<input class="input" type="text" id="software" name="software" required>
</div>
</div>
<div class="field">
<input type="file" name="fileToUpload" id="fileToUpload">
</div>
<!-- Botão de Enviar -->
<div class="field">
<div class="control">
<button class="button is-primary" name="submit" type="submit">Enviar</button>
</div>
</div>
</form>
</div>

View File

@ -0,0 +1,6 @@
---
site: default
layout: software
---
O Pure Data é uma ferramenta muito legal. Vcs precisam conhecer!

4
collections/_software/LMMS.md Executable file
View File

@ -0,0 +1,4 @@
---
site: default
---
O LMMS é uma ferramenta muito legal. Vcs precisam conhecer!

View File

@ -0,0 +1,4 @@
---
site: default
---
O Pure Data é uma ferramenta muito legal. Vcs precisam conhecer!

View File

@ -0,0 +1,4 @@
---
site: default
---
O Sooper Looper é uma ferramenta muito legal. Vcs precisam conhecer!

View File

@ -0,0 +1,4 @@
---
site: default
---
O ZynAddSub é uma ferramenta muito legal. Vcs precisam conhecer!

48
makefile Normal file → Executable file
View File

@ -1,9 +1,43 @@
command = env LANG=\"pt_BR.UTF-8\" /usr/bin/bundle exec /usr/local/bin/jekyll build --incremental --trace --destination=/var/www/html/alice_cast --source=/var/www/src/Alice_JK 2>&1 #command = env LANG=\"pt_BR.UTF-8\" /usr/bin/bundle exec /usr/local/bin/jekyll build --incremental --trace --destination=/var/www/html/alice_cast --source=/var/www/src/Alice_JK 2>&1
#command = script/script.sh && /usr/bin/bundle exec /usr/local/bin/jekyll build --trace --destination=/var/www/html/alice_cast --source=/var/www/src/Alice_JK 2>&1
all: JEKYLL_CMD = bundle exec jekyll
# /usr/bin/sg www-data -c "$(command)"
$(command)
reboot: SRC_PATH = /var/www/src/Alice_JK
rm -rf /var/www/html/alice_cast/* DEST_PATH = /var/www/html/aliceclass
$(command) LOG_PATH = /tmp/alicecast-jekyll.log
DEST_DIR_FLAGS = --destination=${DEST_PATH}
SRC_DIR_FLAGS = --source=${SRC_PATH}
BUILD_FLAGS = --trace --incremental
SERVE_FLAGS = -H 0.0.0.0 -P 33002
all: build
deploy:
# sg www-data -c "cp -RTv _site ${DEST_PATH}"
sg www-data -c "${JEKYLL_CMD} build ${$BUILD_FLAGS} ${DEST_DIR_FLAGS}"
build:
${JEKYLL_CMD} build --trace
# Executa o build toda vez que muda um arquivo
# Rodando como serviço do systemd em /etc/systemd/system/alicecast-build-watch.service
# examplo: sg www-data -c 'make watch'
deploy_watch:
sg www-data -c "${JEKYLL_CMD} build --trace ${DEST_DIR_FLAGS} -w"
watch:
${JEKYLL_CMD} build ${BUILD_FLAGS} ${DEST_DIR_FLAGS} -w
serve:
${JEKYLL_CMD} serve ${SRC_DIR_FLAGS} ${SERVE_FLAGS}
public_html:
${JEKYLL_CMD} build {BUILD_FLAGS} --destination=~/public_html/aliceclass -w
clean:
rm -rf _site
# rm -rf ${DEST_PATH}/*

42
pages/about.md Executable file
View File

@ -0,0 +1,42 @@
---
layout: default
title: About
permalink: /about/
lang: pt
---
<h1 class="mt-5">Sobre</h1>
<h2></h2>
## Como criar página de autores:
O nome do autor é definido pelo nome do arquivo .md do mesmo e sua foto é definida com o mesmo nome .jpg.
Um autor deve ter:
``` liquid
---
github: https://github.com/flschiavoni
lattes: http://lattes.cnpq.br/1259591090948385
---
```
## Como criar página de aulas:
O nome da aula é definido pelo nome do arquivo .md da mesma, caso a aula tenha arquivos, os mesmos devem estar em um arquivo zip com o mesmo nome e o vídeo da aula em um arquivo mkv com o mesmo nome. Exemplo:
- Aula Teste para o site.md
- Aula Teste para o site.zip
- Aula Teste para o site.mkv
Uma aula deve ter:
``` liquid
---
author: Flávio Luiz Schiavoni
description: Introdução ao Sooper Looper
date: 2023/12/09
software: [Sooper Looper]
level: Básico | Intermediário | Avançado
---
```

31
pages/aulas.html Executable file
View File

@ -0,0 +1,31 @@
---
layout: default
permalink: /aulas/
lang: pt
---
<div class="aulas-content">
<div class="title-content">
<h1>Aulas</h1>
</div>
<div class="content">
{% assign aulas = site.data.aulas | sort: 'date' | reverse %}
{% assign max_aulas = 6 %}
{% for aula in aulas %}
<div class="box">
<div class="box-top">
<figure>
<img src="{{ site.baseurl }}/videos/{{ aula.user }}/thumbs/{{ aula.title }}.jpg">
</figure>
</div>
<div class="box-info">
<h1><a href='{{ site.baseurl }}/aulas/{{ aula.title | slugify: "latin" }}.html' >{{ aula.title }}</a></h1>
<p>{{ aula.description }}</p>
</div>
</div>
{% endfor %}
</div>
</div>

32
pages/autores.html Executable file
View File

@ -0,0 +1,32 @@
---
layout: default
permalink: /autores/
lang: pt
---
<div class="autores-content">
<div class="title-content">
<h1>Autores</h1>
<a class="button" href="{{ site.baseurl }}/forms/Aulas/enviarAulas.html" >Criar aula</a>
</div>
<div class="content">
{% assign autores = site.autores %}
{% for autor in autores %}
{% assign nome = autor.name | replace: ".md","" %}
<div class="box">
<div class="box-top">
<figure>
<img src="{{ site.baseurl }}/autores/{{ nome }}.jpg">
</figure>
</div>
<div class="box-info">
<h1>{{ autor.title }}</h1>
<p>{{ autor.content }}</p>
</div>
</div>
{% endfor %}
</div>
</div>

5
pages/chat.md Executable file
View File

@ -0,0 +1,5 @@
---
layout: default
---
{% include chat.html %}

40
pages/cursos.html Executable file
View File

@ -0,0 +1,40 @@
---
layout: default
permalink: /cursos/
lang: pt
---
<div class="is-flex is-flex-direction-row mt-6 mx-6 ">
<h1 class="title is-flex-grow-1">Cursos</h1>
<button class="button is-link" id="NovoPodcast">Criar curso</button>
</div>
<div class="mx-6 mt-6">
{% assign cursos = site.cursos | sort: 'date' | reverse %}
<div class="columns is-multiline">
{% for curso in cursos %}
{% assign nome = curso.name | replace: ".md","" %}
<div class="column is-one-third">
<a href='{{ site.baseurl }}{{ curso.url }}.html' class="card-link">
<div class="card">
<div class="card-image">
<figure class="image is-4by3">
<img src="{{ site.baseurl }}/thumbs/{{ nome }}.jpg">
</figure>
</div>
<div class="card-content">
<div class="content my-2">
<h1 class="title is-size-4">{{ curso.title }}</h1>
{% for aula in curso.aulas %}
<span class="tag is-link">{{ aula }}</span>
{% endfor %}
<h3 class="subtitle is-size-6">{{ curso.description }}</h3>
<h3 class="subtitle is-size-6">{{ curso.author }}</h3>
</div>
</div>
</div>
</a>
</div>
{% endfor %}
</div>
</div>

41
pages/index.html Executable file
View File

@ -0,0 +1,41 @@
---
layout: default
permalink: /
---
<div class="home-content">
<div class="banner">
<h1>Bem vindo ao Alice Class</h1>
<h3>Participe de uma comunidade colaborativa para criar e compartilhar cursos e materiais educativos.</h3>
</div>
<div class="lasted">
<div class="title-section">
<h1 class="title">Ultimas aulas</h1>
</div>
<div class="content-box">
{% assign aulas = site.data.aulas | sort: 'date' | reverse %}
{% assign max_aulas = 3 %}
{% assign count = 0 %}
{% for aula in aulas %}
{% if count < max_aulas %}
{% assign nome = aula.name | replace: ".md","" %}
<div class="box">
<div class="box-top">
<figure>
<img src="{{ site.baseurl }}/videos/{{ aula.user }}/thumbs/{{ aula.title }}.jpg">
</figure>
</div>
<div class="box-info">
<h1><a href='{{ site.baseurl }}/aulas/{{ aula.title | slugify: "latin" }}.html' >{{ aula.title }}</a></h1>
<p>{{ aula.description }}</p>
</div>
</div>
{% endif %}
{% endfor %}
</div>
</div>
</div>

20
pages/podcasts.html Executable file
View File

@ -0,0 +1,20 @@
---
layout: default
title: Podcasts
permalink: /podcasts/
lang: pt
---
<div class="is-flex is-flex-direction-row mt-6 mx-6 ">
<h1 class="title is-flex-grow-1">Podcasts</h1>
<button class="button is-link" id="NovoPodcast">Criar um novo podcast</button>
</div>
<script>
const createPodcastButton = document.getElementById('NovoPodcast');
createPodcastButton.addEventListener('click', function() {
window.location.href = '{{ site.baseurl }}/assets/extend/podcasts/criarPodcast.html'; // Replace with your actual target URL
});
</script>

25
pages/software.html Executable file
View File

@ -0,0 +1,25 @@
---
layout: default
permalink: /software/
lang: pt
---
<div class="is-flex is-flex-direction-row mt-6 mx-6 ">
<h1 class="title is-flex-grow-1">Software</h1>
<button class="button is-link" id="NovoPodcast">Cadastrar software</button>
</div>
<div class="mx-6 mt-6">
<div id="archives">
<div class="archive-group is-flex is-justify-content-center">
{% for software in site.software %}
{% assign name = software.name | replace: ".md", "" %}
<a href='{{ site.baseurl }}{{ software.url }}.html' class="mx-2" >
<div class="tags are-large">
<h1 class="title is-size-4 tag is-link">{{ name }}</h1>
</div>
</a>
{% endfor %}
</div>
</div>
</div>

View File

@ -0,0 +1,158 @@
<?php
/***
* DB
* A simple json db class
*/
class DB
{
private $path = '';
private $db = [];
/**
* CONSTRUCTOR
*
* @param $path: string (default 'db.json')
*/
public function __construct($path = "db.json"){
$this->path = $path;
if(!file_exists($path)){
// If the .json extension is not provided, append it
if(strpos($path, '.json') === false){ $path .= '.json'; }
$fp = fopen($path,"wb");
fwrite($fp, "{}");
fclose($fp);
}
// Get the contect of the current path
$this->db = json_decode(file_get_contents($path), false, 512, JSON_UNESCAPED_UNICODE);
}
/**
* SAVE
* Save the new db
*/
private function save(){
$json = ($this->db === "{}") ? $this->db : json_encode($this->db, JSON_UNESCAPED_UNICODE);
file_put_contents($this->path, $json);
}
/**
* INSERT
*
* @param $data: array
* @param $key: string (optional)
*
* @return DB
*/
public function insert($data, $key = ""){
if($key !== "")
$this->db[$key] = $data;
else
$this->db[] = $data;
$this->save();
return $this;
}
/**
* UPDATE
*
* @param $data: array
* @param $key: string
*
* @return DB
*/
public function update($data, $key){
if($key !== "")
$update = array_merge($this->db[$key], $data);
$this->db[$key] = $update;
$this->save();
return $this;
}
/**
* DELETE
*
* @param $key: string
*
* @return DB
*/
public function delete($key){
unset($this->db[$key]);
$this->save();
return $this;
}
/**
* GET SINGLE
*
* @param $key: string
*
* @return array
*/
public function getSingle($key){
return $this->db[$key] ?? null;
}
/**
* GET LIST
*
* @param $conditions: array (optional)
* @param $orderBy: array (optional)
*
* @return array
*/
public function getList($conditions = [], $orderBy = []){
$result = [];
if(empty($conditions)){
$result = $this->db;
}else{
foreach($this->db as $key => $value){
$requirements = true;
foreach($conditions as $k => $v){
if($value[$k] !== $v){
$requirements = false;
}
}
if($requirements) $result[$key] = $value;
}
}
if($orderBy['on'] !== '' && $orderBy['order'] !== ''){
usort($result, function($first, $second) use($orderBy){
if($orderBy['order'] === "ASC"){
return strcmp($first[$orderBy['on']], $second[$orderBy['on']]) > 0;
}else{
return strcmp($first[$orderBy['on']], $second[$orderBy['on']]) < 0;
}
});
}
return $result;
}
/**
* CLEAR
*
* @return DB
*/
public function clear(){
$this->db = "{}";
$this->save();
return $this;
}
}
?>

102
php/upload.php Executable file
View File

@ -0,0 +1,102 @@
<?php
// Cria as pastas do usuário
function create_user_dir($target_dir) {
$paths = array('', '/src', '/dest', '/thumbs');
foreach($paths as $path) {
file_exists($target_dir . $path) || mkdir($target_dir . $path, 0775, true);
}
}
// Checa a extensão do arquivo
function check_file_extension($target_file) {
$fileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));
if ($fileType != '.mkv') {
echo "Apenas arquivos .mkv são aceitos. ";
exit(1);
}
return 1;
}
// Checa se o arquivo existe
function check_file_exists($brute_file) {
if (file_exists($brute_file)) {
echo "Sorry, file already exists.";
return 0;
}
return 1;
}
// Move uploaded file to correct dir
function upload($orig_file, $brute_file) {
if (!move_uploaded_file($orig_file, $brute_file)) {
echo "Houve um problema com o upload do arquivo.";
return 0;
}
return 1;
}
// Processa o vídeo com o script do flavio
function process_file($username, $title, $input_file, $output_file) {
$SCRIPT_PATH = '/var/www/src/AliceClass/script/script.sh';
$cmd = sprintf('%s "%s" "%s" "%s" "%s" "%s"',
$SCRIPT_PATH, $title, $username, $input_file, '', $output_file);
$output = shell_exec($cmd);
return 1;
}
function insert_into_db($username, $title, $desc, $level, $software, $date) {
include("library/json-db.class.php");
$db = new DB('/var/www/src/AliceClass/_data/aulas.json');
$data = array(
"title" => $title,
"user" => $username,
"nome" => $username,
"description" => $desc,
"date" => $date,
"software" => $software,
"level" => $level
);
$db->insert($data);
return 1;
}
function push_to_git() {
// $git_cmd = '-c user.name="www-data" -c user.email="no-replay@example.org"'
// shell_exec('cd /var/www/src/AliceClass;' . $git_cmd . 'add _data/aulas.json;' . $git_cmd . 'commit -m "update data";' . $git_cmd . 'push');
}
$username = $_SERVER['PHP_AUTH_USER'];
$video_title = $_POST["videoTitle"];
$video_desc = $_POST["videoDescription"];
$video_level = $_POST["level"];
$video_software = $_POST["software"];
$video_date = date('d/m/Y');
$orig_file = $_FILES["fileToUpload"]["tmp_name"];
$target_dir = "/var/www/html/aliceclass_videos/" . $username;
$brute_file = $target_dir . "/src/" . $video_title . '.mkv';
$target_file = $target_dir . "/dest/" . $video_title . '.mp4';
create_user_dir($target_dir); //|| echo error && exit;
// check_file_extension($_FILES["fileToUpload"]["tmp_name"]); // || echo error && exit;
// !check_file_exists($brute_file) || echo error && exit;
upload($orig_file, $brute_file); //|| echo error && exit;
process_file($username, $video_title, $brute_file, $target_file); // || echo error && exit;
insert_into_db($username, $video_title, $video_desc, $video_level, $video_software, $video_date);
echo "The file ". htmlspecialchars(basename($orig_file)). " has been uploaded.";
?>

23
script/README Executable file
View File

@ -0,0 +1,23 @@
Script para automação de edição de vídeos do nosso canal.
Desenvolvido por Flávio Schiavoni em Dezembro de 2023.
Este script contém os seguintes arquivos:
- README - Este arquivo.
- data.md - Arquivo com os meta dados do curso.
- intro.mmpz - Arquivo do LMMS com a trilha da abertura do vídeo.
- intro.wav - Arquivo com a trilha da abertura do vídeo.
- intro.svg - Desenho vetorial com os dados da abertura do vídeo.
- teste2.mkv - Arquivo de vídeo que seria o curso em si.
- logo.png - Logo a ser usada como marca d'água do vídeo.
- watermark.svg - Desenho vetorial com o GC do autor.
- credits.svg - Desenho vetorial com os créditos para o final do vídeo.
- credits.wav - Arquivo com a trilha dos créditos.
- script.sh - Arquivo que faz isso tudo de modo automático usando os comandos ffmpeg e sed.
Explicando passo a passo o script:
- O script pega os meta-dados do arquivo data.md para definir sua configuração. Os dados sobre o autor, título e nome do vídeo são informados no data.md.
- O script irá gerar um arquivo de vídeo temporário, chamado tmp-intro.mkv, com a imagem e trilha da introdução, substituindo as strings "curso" e "nomenome" do arquivo intro.svg pelo nome do curso e nome do autor.
- Depois, fará o mesmo para gerar o arquivo de créditos do vídeo (tmp-credits.mkv), porém, sem efetuas substituições no arquivo svg original.
- Depois disso, irá tratar o áudio do vídeo original, normalizando-o e salvando-o no arquivo tmp-normalized.mkv.
- Irá então mesclar o vídeo do curso (teste2.mkv) com o arquivo logo.png e a marca d'água presente no arquivo watermark.svg substituindo neste arquivo a string "nomenome"pelo nome do autor e "curso" pelo título. Este arquivo será salvo com o nome tmp-video.mkv.
- O script irá então unir os 3 arquivos em um único arquivo.

959
script/_intro.svg Executable file
View File

@ -0,0 +1,959 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="1920"
height="1080"
viewBox="0 0 508 285.75"
version="1.1"
id="svg5"
inkscape:version="1.2.2 (b0a8486541, 2022-12-01)"
sodipodi:docname="intro.svg"
xml:space="preserve"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"><sodipodi:namedview
id="namedview7"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="mm"
showgrid="false"
inkscape:zoom="0.32620784"
inkscape:cx="996.29733"
inkscape:cy="654.49071"
inkscape:window-width="1296"
inkscape:window-height="704"
inkscape:window-x="70"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:current-layer="layer1" /><defs
id="defs2" /><g
inkscape:label="Camada 1"
inkscape:groupmode="layer"
id="layer1"><rect
style="opacity:0.9;fill:#ececec;stroke-width:0.1;stroke-opacity:0.903051"
id="rect368"
width="554.28259"
height="300.4014"
x="-15.152804"
y="-7.4028754"
ry="3.9869003" /><image
width="60.854168"
height="79.375"
preserveAspectRatio="none"
xlink:href="data:image/png;base64,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
"
id="image198"
x="39.197491"
y="25.090725" /><text
xml:space="preserve"
style="font-size:36.0993px;line-height:1.25;font-family:sans-serif;stroke-width:3.38429"
x="115.92052"
y="40.716591"
id="text256"><tspan
sodipodi:role="line"
id="tspan254"
style="stroke-width:3.38429"
x="115.92052"
y="40.716591">ALICE</tspan><tspan
sodipodi:role="line"
style="stroke-width:3.38429"
x="115.92052"
y="85.840714"
id="tspan371">Apresenta:</tspan></text><text
xml:space="preserve"
style="font-size:42.4042px;line-height:1.25;font-family:sans-serif;stroke-width:3.97538"
x="88.322395"
y="166.67043"
id="text310"><tspan
sodipodi:role="line"
id="tspan308"
style="stroke-width:3.97538"
x="88.322395"
y="166.67043">curso</tspan></text><text
xml:space="preserve"
style="font-size:41.2491px;line-height:1.25;font-family:sans-serif;stroke-width:3.86709"
x="152.89662"
y="238.03685"
id="text314"><tspan
sodipodi:role="line"
id="tspan312"
style="stroke-width:3.86709"
x="152.89662"
y="238.03685">nomenome</tspan></text></g></svg>

After

Width:  |  Height:  |  Size: 68 KiB

100
script/credits.svg Executable file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 379 KiB

BIN
script/credits.wav Executable file

Binary file not shown.

6
script/data.md Executable file
View File

@ -0,0 +1,6 @@
---
author: Flávio Luiz Schiavoni
date: 12/12/2023
title: Curso de shell script
video: teste2.mkv
---

BIN
script/intro.mmpz Executable file

Binary file not shown.

114
script/intro.svg Executable file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 73 KiB

BIN
script/intro.wav Executable file

Binary file not shown.

BIN
script/logo.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

19
script/mkvFmp4.sh Executable file
View File

@ -0,0 +1,19 @@
#!/bin/bash
# Pasta de origem dos arquivos .mkv
SOURCE_DIR="_aulas/"
# Pasta de destino dos arquivos .mp4
DEST_DIR="_aulas/"
# Loop pelos arquivos .mkv na pasta de origem
for mkv_file in ${SOURCE_DIR}/*.mkv; do
# Nome do arquivo sem extensão
base_name=$(basename "$mkv_file" .mkv)
# Caminho do arquivo de saída .mp4
mp4_file="${DEST_DIR}/${base_name}.mp4"
# Converter .mkv para .mp4
ffmpeg -i "$mkv_file" -c:v libx264 -preset slow -crf 22 -c:a aac -strict experimental "$mp4_file"
done

136
script/script.sh Executable file
View File

@ -0,0 +1,136 @@
#!/bin/sh
SRC=collections/_aulas
# SCRIPT=script/
SCRIPT=/var/www/src/AliceClass/script/
# TMP=tmp
TMP=$(mktemp -d)
ASSETS="$TMP/assets"
PARAM="scale=1920:1080: force_original_aspect_ratio=decrease: eval=frame,pad=1920:1080: -1:-1:color=black"
process_video () {
NAME=$1
AUTHOR=$2
INPUT=$3
AULA=$4
OUTPUT=$5
# no output path
if [ -z "$OUTPUT" ]; then
OUTPUT="$ASSETS/videos/${NAME}.mp4"
fi
THUMB_PATH=$(dirname $(dirname $OUTPUT))/thumbs/$NAME
echo $THUMB_PATH
echo "########################################"
echo "# Aula: ${AULA}"
echo "# Author: ${AUTHOR}"
echo "# Input: ${INPUT}"
echo "# Src: ${SRC}"
echo "# Dest: ${OUTPUT}"
echo "# Name: ${NAME}"
echo "# Script Path: ${SCRIPT}"
echo "########################################"
# exit
# ####################################
# Creating the thumbnail if does not exist
# ####################################
if test ! -f "${THUMB_PATH}.jpg" ; then
ffmpeg -y -i "${INPUT}" -vframes 1 -an -s 400x222 -ss 30 "${THUMB_PATH}.jpg"
fi
# ####################################
# if output exist, continue
# ####################################
if test -f "$ASSETS/videos/${NAME}.mp4" ; then
continue
fi
# ####################################
# Creating the intro clip
# ####################################
# sed "s/nomenome/$AUTHOR/g" ${SCRIPT}/intro.svg | sed "s/curso/${NAME}/g" > ${TMP}/tmp-intro.svg
sed "s/nomenome/$AUTHOR/g; s/curso/${NAME}/g" ${SCRIPT}/intro.svg > ${TMP}/tmp-intro.svg
ffmpeg -y -loop 1 -i ${TMP}/tmp-intro.svg -i ${SCRIPT}/intro.wav -shortest ${TMP}/tmp-intro.mkv
# ###################################################
# Audio adjustment
# ###################################################
# Some possible options
# -af loudnorm
# -af dynaudnorm=p=1
# -af speechnorm=e=12.5:r=0.0001:l=1
# -af acompressor=threshold=0.089:ratio=9:attack=200:release=1000:makeup=2
ffmpeg -y -i "${INPUT}" -af dynaudnorm=p=1 ${TMP}/tmp-normalized.mkv
# ####################################################
# Wartermarking the video file
# ####################################################
sed "s/nomenome/$AUTHOR/g" ${SCRIPT}/watermark.svg | sed "s/curso/${NAME}/g" > ${TMP}/tmp-watermark.svg
# add watermark to video
ffmpeg -y -i ${TMP}/tmp-normalized.mkv -i ${TMP}/tmp-watermark.svg -i ${SCRIPT}/logo.png \
-filter_complex "[0][1]overlay=5:H-h-5:format=auto[bg];[bg][2]overlay=W-w-5:5:format=auto" -c:a copy ${TMP}/tmp-video.mkv
# ####################################################
# Concatenating videos
# ####################################################
echo "Concatenando videos..."
ffmpeg -y \
-i ${TMP}/tmp-intro.mkv \
-i ${TMP}/tmp-video.mkv \
-i ${TMP}/tmp-credits.mkv \
-filter_complex \
"[0:v]$PARAM[v0]; [1:v]$PARAM[v1]; [2:v]$PARAM[v2]; [v0][0:a][v1][1:a][v2][2:a] concat=n=3:v=1:a=1 [v] [a]" \
-map [v] -map [a] \
-s hd720 \
-vcodec libx264 \
-pix_fmt yuv420p \
-vsync 2 \
"$OUTPUT"
}
# mkdir -p ./${TMP}
# ####################################
# Creating the credits clip
# ####################################
#if test ${TMP}/tmp-credits.mkv -ot ${SCRIPT}/credits.svg ; then
echo "########################################"
echo "# Gerando o tmp-credits.mkv"
echo "########################################"
ffmpeg -y -loop 1 -i ${SCRIPT}/credits.svg -i ${SCRIPT}/credits.wav -shortest ${TMP}/tmp-credits.mkv
#fi
# ####################################
# Creating dest dir
# ####################################
mkdir -p $ASSETS/thumbs
mkdir -p $ASSETS/videos
if [ $# -gt 1 ]; then
NAME=$1
AUTHOR=$2
INPUT=$3
AULA=$4
OUTPUT=$5
process_video "$NAME" "$AUTHOR" "$INPUT" "$AULA" "$OUTPUT"
exit
fi
# for aula in ./${SRC}/*.md; do
# # ####################################
# # Getting parameters from aulas
# # ####################################
# NAME="$(basename "${aula}" .md)"
# AUTHOR=$(grep "^author: " "${aula}" | sed -e 's/author: //g')
# INPUT="${SRC}/${NAME}.mkv"
#
# process_video "$NAME" "$AUTHOR" "$INPUT"
# done
# rm -f ${TMP}

110
script/watermark.svg Executable file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 70 KiB