Каталог решений - Загрузка выпусков подкаста Радио 1С Энтерпрайз

Загрузка выпусков подкаста Радио 1С Энтерпрайз

Загрузка выпусков подкаста Радио 1С Энтерпрайз

В наличии

Код для загрузки всех выпусков подкаста Радио 1С Энтерпрайз для оффлайн-прослушивания.

Категория:

Описание

На днях листал пожелтевшие страницы старых выпусков Зазеркалья и случайно наткнулся на заметку о старте второго сезона подкаста "Радио 1С Энтерпрайз". Сказать, что я был удивлён — это не сказать ничего. Причём меня удивило не то, что уже начался третий сезон этого подкаста и при этом в Зазеркалье до сих пор нет об этом заметки (это не удивило вообще), а то, что я ни сном, ни духом о существовании какого-то подкаста про 1С! А он оказывается есть!

Послушал пару первых выпусков первого сезона, и знаете, мне понравилось. Планирую продолжать слушать и дальше. Ну а поскольку я привык слушать на телефоне оффлайновые файлы через старый-добрый-ламповый проигрыватель VLC, а не с этих-ваших-модно-смузевых подкаст-сервисов, появилась необходимость выкачать все выпуски. 

Как известно, "лучше день потерять [на написание кода], потом за пять минут долететь всё скачать!"

Поэтому, собственно, вот и она — моя наколенная подделка. Глядишь, кому пригодится. Умеет выводить результат в ТекстовыйДокумент в виде bash-/bat-скрипта с вызовами wget и в виде обычного html-я (не знаю зачем; просто сделал для визуализации результата). Формат вывода результата определяется значением переменной ФорматРезультата в самом начале кода.

Запускать через любую консоль кода (коих тут уже накопилось немногим меньше, чем внешних печатных форм счета-фактуры), или можно создать обработочку и добавить этот код как обработчик нажатия кнопки.

ФорматРезультата = "wget"; // "wget" или "html"

// RSS: https://cloud.mave.digital/37402
Сервер = "cloud.mave.digital";
Порт = 443;
АдресРесурса = "/37402";

// запрос по HTTP
HTTPСоединение = Новый HTTPСоединение(Сервер, Порт,,,,, Новый ЗащищенноеСоединениеOpenSSL);
HTTPЗапрос = Новый HTTPЗапрос(АдресРесурса);
HTTPОтвет = HTTPСоединение.Получить(HTTPЗапрос);
Если HTTPОтвет.КодСостояния <> 200 Тогда
	ВызватьИсключение "Не удалось получить данные с сервера! Код состояния HTTP = " + HTTPОтвет.КодСостояния;
КонецЕсли;

// XML -> XDTO
ТекстRSS = HTTPОтвет.ПолучитьТелоКакСтроку();
ЧтениеXML = Новый ЧтениеXML;
ЧтениеXML.УстановитьСтроку(ТекстRSS);
ОбъектRSS = ФабрикаXDTO.ПрочитатьXML(ЧтениеXML);
ЧтениеXML.Закрыть();

// разбор XDTO
ВыпускиПодкаста = Новый Массив;
Для Каждого СтрокаItem Из ОбъектRSS.channel.item Цикл
	ОписаниеВыпуска = Новый Структура;
	ОписаниеВыпуска.Вставить("Сезон", ?(СтрокаItem.Свойства().Получить("season") <> Неопределено, СтрокаItem.season, "?"));
	ОписаниеВыпуска.Вставить("Эпизод", ?(СтрокаItem.Свойства().Получить("episode") <> Неопределено, СтрокаItem.episode, "?"));
	ОписаниеВыпуска.Вставить("ДатаВыхода", СтрокаItem.pubDate);
	ОписаниеВыпуска.Вставить("Описание", СтрокаItem.summary);
	ОписаниеВыпуска.Вставить("АдресФайла", СтрокаItem.enclosure.url);
	ВыпускиПодкаста.Добавить(ОписаниеВыпуска);
КонецЦикла;

// вывод результата
ТД = Новый ТекстовыйДокумент;
Для Каждого ОписаниеВыпуска Из ВыпускиПодкаста Цикл
	Сезон = ОписаниеВыпуска.Сезон;
	Эпизод = ОписаниеВыпуска.Эпизод;
	Описание = ОписаниеВыпуска.Описание;
	АдресФайла = ОписаниеВыпуска.АдресФайла;
	ДатаВыхода = ОписаниеВыпуска.ДатаВыхода;
	ИмяФайлаДляСохранения = "";
	ПозицияПоследнейТочки = СтрНайти(АдресФайла, ".", НаправлениеПоиска.СКонца);
	НомерМесяца = (СтрНайти("BAD,Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec", Сред(ДатаВыхода, 9, 3)) - 1) / 4;
	Если ПозицияПоследнейТочки <> 0
		И НомерМесяца > 0 Тогда
		ДатаВыходаГГГГММДД = Сред(ДатаВыхода, 13, 4) 
							+ "-" + Формат(НомерМесяца, "ЧЦ=2; ЧВН=; ЧГ=")
							+ "-" + Сред(ДатаВыхода, 6, 2);
		ИмяФайлаДляСохранения = ДатаВыходаГГГГММДД + Сред(АдресФайла, ПозицияПоследнейТочки);
	КонецЕсли;
	Если ПустаяСтрока(ИмяФайлаДляСохранения) Тогда
		ВызватьИсключение "Не удалось сформировать имя файла для сохранения!";
	КонецЕсли;
	Если ФорматРезультата = "wget" Тогда
		Стр = СтрШаблон("wget -O %1 %2", ИмяФайлаДляСохранения, АдресФайла);
	Иначе
		// по умолчанию "html"
		Стр = СтрШаблон("<p><b>%1</b><br />%2.%3. %4<br /><a href=""%5"" download=""%6"">%7</a></p>", ДатаВыхода, Сезон, Эпизод, Описание, АдресФайла, ИмяФайлаДляСохранения, АдресФайла);
	КонецЕсли;
	ТД.ДобавитьСтроку(Стр);
КонецЦикла;
ТД.Показать("Список выпусков Радио 1С Энтерпрайз", ?(ФорматРезультата = "wget", "download-all.sh", "index.html"));

 

has been added to your cart:
Оформление заказа