Open marcosdsdba opened 2 years ago
'use strict';
const request = require('request'); const fs = require('fs'); const axios = require('axios'); const logger = require('./utils/logger') require('dotenv').config()
main(process.env.ACCOUNT, process.env.COURSE_DOWNLOAD);
/**
@param {string} course */ async function main(account, course) {
let [_, id_course] = course.split('course/'); let [email, pwd] = account.split(':');
logger.log(1, {email, pwd}); let access_token = await sign_in(email, pwd);
if (!access_token) { logger.log(2, {email, pwd}); return; }
logger.log(6, {email, pwd});
logger.log(7, {email, pwd}); let parse = await get_course(access_token, id_course);
logger.log(8, {email, pwd}); let infos = JSON.parse(parse);
//console.log(infos);
logger.log(3, {id: infos.id, slug: infos.slug, name: infos.name, totalVideoTime: infos.totalVideoTime});
//process.exit()
//let folderName = infos.slug; let folderName = infos.name.replace(':', ' -').toLowerCase(); create_folder(folderName)
for (const title of infos.sections) {
// console.log(title.titulo.replace('?', '').replace(' ', '').replace(' ','-').toLowerCase());
//process.exit()
//create_folder(`${folderName}`);
create_folder(`${folderName}/${title.position} - ${title.titulo.replace('?', '').replace(' ', '').replace(' ','-').toLowerCase()}`);
for (const lesson of title.videos) {
let folderLesson = lesson.nome.replace(':', ' -').toLowerCase();
let url = await get_video(lesson.id, infos.slug, access_token);
logger.log(5, {lesson: lesson.nome, id: lesson.id})
//video_download(`${folderName}/${lesson.position} - ${folderLesson}.mp4`, url, folderLesson)
video_download(`${folderName}/${title.position} - ${title.titulo.replace('?', '').replace(' ', '').replace(' ','-').toLowerCase()}/${lesson.position} - ${folderLesson}.mp4`, url, folderLesson)
}
}
}
/**
@param {string} pass */ async function sign_in(mail, pass) {
let res = await http_request({
url: 'https://cursos.alura.com.br/mobile/token',
method: 'POST',
body: password=${pass}&client_secret=3de44ac5f5bccbcfba14a77181fbdbb9&client_id=br.com.alura.mobi&username=${mail}&grant_type=password
,
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
'User-Agent': 'alura-mobi/android',
'Host': 'cursos.alura.com.br',
'Connection': 'Keep-Alive'
}
})
if (res.body.includes('access_token')) return JSON.parse(res.body).access_token;
return false
}
/**
@param {string} token */ async function get_video(id, slug, token) {
let res = await http_request({
url: https://cursos.alura.com.br/mobile/courses/${slug}/busca-video-${id}
,
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
'User-Agent': 'alura-mobi/android',
'Host': 'cursos.alura.com.br',
'Authorization': Bearer ${token}
,
'Connection': 'Keep-Alive'
}
});
let [hd, sd] = JSON.parse(res.body); return hd.link;
}
/**
@param {string} course */ async function get_course(access_token, course) {
let res = await http_request({
url: https://cursos.alura.com.br/mobile/v2/course/${course}
,
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
'User-Agent': 'alura-mobi/android',
'Host': 'cursos.alura.com.br',
'Authorization': Bearer ${access_token}
,
'Connection': 'Keep-Alive'
}
})
return res.body
}
/**
@param {string} url */ async function video_download(path, url, title) {
const response = await axios({ method: 'GET', url: url, responseType: 'stream' })
response.data.pipe(fs.createWriteStream(path))
return new Promise((resolve, reject) => { response.data.on('end', () => { logger.log(9, {title}) resolve() })
response.data.on('error', () => {
reject()
})
}) }
/**
/**
Esse projeto foi descontinuado? não funciona?
@brunodelucasbarbosa A Alura bloqueou a URL não existe mais.
@brunodelucasbarbosa A Alura bloqueou a URL não existe mais.
Obrigado... Conhece outra forma?
@brunodelucasbarbosa A Alura bloqueou a URL não existe mais.
Obrigado... Conhece outra forma?
Estou usando uma extensão do Chrome: https://mybrowseraddon.com/hls-downloader.html
@brunodelucasbarbosa A Alura bloqueou a URL não existe mais.
Obrigado... Conhece outra forma?
Estou usando uma extensão do Chrome: https://mybrowseraddon.com/hls-downloader.html
Poderia me explicar como usar exatamente? não entendi direito, eu baixo e vem um arquivo .br
@brunodelucasbarbosa A Alura bloqueou a URL não existe mais.
Obrigado... Conhece outra forma?
Estou usando uma extensão do Chrome: https://mybrowseraddon.com/hls-downloader.html
Ou alguma forma de baixar da udemy, conhece?
Poderia me explicar como usar exatamente? não entendi direito, eu baixo e vem um arquivo .br
É só abrir a extensão e o vídeo, então o download aparecerá na janela da extensão. Quanto ao nome do arquivo, basta você renomear.
https://github.com/heliomarpm/udemy-downloader-gui/ https://github.com/Puyodead1/udemy-downloader
Estou usando uma extensão do Chrome: https://mybrowseraddon.com/hls-downloader.html
Poderia me explicar como usar exatamente? não entendi direito, eu baixo e vem um arquivo .br
Opa, testei o HLS Downloader e funcionou legal. Baixou um arquivo de video com extensão .br, mas com o SMPlayer pelo menos consegui abrir o arquivo de vídeo no Ubuntu.
Link: https://chrome.google.com/webstore/detail/hls-downloader/hkbifmjmkohpemgdkknlbgmnpocooogp
Alguem tem esta utilizando algum para baixar organizado da hotmart?
undefined:1
SyntaxError: Unexpected end of JSON input at JSON.parse ()
at main (C:\Users\Marcos\Downloads\gengar\index.js:35:22)
at processTicksAndRejections (node:internal/process/task_queues:96:5)
If you see this error use the code below in next post: