#google-apps-script
Вопрос:
Итак, вот что я пытаюсь сделать:
Есть сайт под названием Тора в любое время (https://www.torahanytime.com/), который ежедневно публикует аудиофайлы (я думаю, вы можете назвать их подкастами, веб-сайт называет их шиурим, шиур на иврите означает песню или, в данном случае, аудио). Я хотел бы создать скрипт, который загружает аудио определенных динамиков, а затем отправляет эти файлы мне по электронной почте. Я делаю это с помощью сценариев Google Apps. Тора В любое время позволяет вам следить за конкретными ораторами и получать уведомления по электронной почте, когда оратор, за которым вы следите, выпускает новый подкаст. Вот код, который у меня есть до сих пор:
function main() {
var emails = getemails();
for (var i = 0; i < emails.length; i ) {
var email = emails[i].getMessages();
if (email[0].getFrom() == "TorahAnytime Following <following@torahanytime.com>"){
var title = getTitle(email);
var shiurID = getShiurID(email);
var downloadLink = "https://dl.torahanytime.com/audio/" shiurID;
var shiur = downloadShiur(downloadLink);
shiur.setName(title);
var emailSent = emailShiur(shiur);
if (emailSent) {email[0].moveToTrash();
Logger.log("Email moved to Trash");}
}
}
}
function getemails() {
var label = GmailApp.getUserLabelByName("TA Speeches");
return label.getThreads();
}
function getTitle(email) {
body = email[0].getPlainBody();
var begIndex = body.indexOf("from") 4;
var endIndex = body.indexOf("on ");
var title = body.substring(begIndex, endIndex).toLowerCase().replaceAll(" ", "-").replace(/(rn|n|r)/gm, "-");
begIndex = body.indexOf("called ") 7;
endIndex = body.indexOf(" [");
title = "-" body.substring(begIndex, endIndex).toLowerCase().replaceAll(" ", "-").replace(/(rn|n|r)/gm, "-") ".mp3";
return title;
}
function getShiurID(email) {
body = email[0].getPlainBody();
var begIndex = body.indexOf("[") 1;
var endIndex = body.indexOf("]");
var link = body.substring(begIndex, endIndex).replaceAll("?v", "?a");
console.log(link);
var mainLink = UrlFetchApp.fetch(link);
//here I somehow need to get the link being used to stream that particular audio file
}
function getIDName(email) {
body = email[0].getPlainBody();
var begIndex = body.indexOf("ID ") 3;
var endIndex = body.indexOf(" and");
return body.substring(begIndex, endIndex);
}
function downloadShiur(downloadLink) {
var audio = UrlFetchApp.fetch(downloadLink);
return audio.getBlob().getAs('audio/mp3');
}
function emailShiur(shiur) {
const maxFileSize = 26214400;
if (shiur.getBytes().length <= maxFileSize) {
MailApp.sendEmail("[Email addressed removed]", "TA Shiur (File)", "Enjoy!", {
attachments: [shiur],
name: 'Automatic Emailer Script'
});
return true;
} else {
MailApp.sendEmail("[Email addressed removed]", "TA Shiur (File)", "Error, File too large to email", {
name: 'Automatic Emailer Script'
});
return false;
}
}
Моя проблема в том, что URL-адрес для загрузки файла отсутствует в HTML, поэтому я не знаю, как добраться до него с помощью ГАЗА. Если вы используете инструменты разработки chrome, вы можете увидеть URL-адрес прямо там, на вкладке сеть, Пример вывода, который я вижу, который я хочу получить. Кто-нибудь знает какой-либо способ, которым я могу получить информацию, которую я вижу на вкладке «Сетевые средства разработки chrome» (название получаемых URL-адресов), используя GAS? Спасибо!
Комментарии:
1. К сожалению, из
My issue is that the URL to download the file is not in the HTML, so I don't know how to get to it using GAS. If you use chrome's dev-tools, you can see the URL right there in the network tab.
, я не могу понять вашу текущую проблему и вашу цель. Я приношу извинения за мое плохое знание английского языка. Чтобы правильно понять их, можете ли вы предоставить примерное входное значение и примерное выходное значение, которые вы ожидаете?2. Входное значение: torahanytime.com/#/lectures?a=162956 Выходное значение: Имена URL-адресов, которые вы видите на прикрепленной картинке в моем посте
3. Спасибо вам за ответ и предоставление дополнительной информации. Я подумал, что ожидаемое значение может быть сгенерировано с помощью Javascript. Если я правильно понимаю, к сожалению, я думаю, что трудно напрямую извлечь значение из URL-адреса. Я приношу свои извинения за это.
4. Да, сетевой монитор вашего браузера совершает звонки после загрузки страницы. Возможно, вы сможете посмотреть, получает ли какой-либо из JS-файлов страницы этот URL-адрес.
5. Они действительно звонят после загрузки страницы, и я могу видеть, какой URL они используют. Моя проблема в том, что каждый новый подкаст транслируется с другого URL-адреса, я хочу иметь возможность автоматически получать этот URL-адрес с помощью моего сценария.