From f25632cbc7c4871f295c5e63dbf0eb14cdcc6907 Mon Sep 17 00:00:00 2001 From: Evgeny Kuznetsov Date: Tue, 4 Feb 2020 17:35:56 +0300 Subject: cleaner processing of pages containing video episodes --- README.md | 2 +- main.go | 13 ++++++++++--- testdata/TestUpdatingFeed.golden | 1 - testdata/TestVideoFeed.golden | 2 -- 4 files changed, 11 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index a9f4399..a87b987 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ [![Build Status](https://travis-ci.org/nekr0z/radiorus-rss.svg?branch=master)](https://travis-ci.org/nekr0z/radiorus-rss) [![codecov](https://codecov.io/gh/nekr0z/radiorus-rss/branch/master/graph/badge.svg)](https://codecov.io/gh/nekr0z/radiorus-rss) [![Go Report Card](https://goreportcard.com/badge/github.com/nekr0z/radiorus-rss)](https://goreportcard.com/report/github.com/nekr0z/radiorus-rss) [![GolangCI](https://golangci.com/badges/github.com/nekr0z/radiorus-rss.svg)](https://golangci.com) -Этот парсер можно использовать для преобразования страницы передачи на сайте «Радио России» в RSS-ленту подкаста. На сегодняшний день поддерживаются только аудиопередачи, при попытке использовать идентификатор передачи с видеовыпусками лента будет сгенерирована, но в ней не будет выпусков. +Этот парсер можно использовать для преобразования страницы передачи на сайте «Радио России» в RSS-ленту подкаста. На сегодняшний день поддерживаются только аудиопередачи, при попытке использовать идентификатор передачи с видеовыпусками лента будет сгенерирована, но в ней не будет прямых ссылок на видеофайлы. ## Использование Может работать в качестве скрипта (при установленном `Go`) или в скомпилированном виде как приложение. diff --git a/main.go b/main.go index a105576..d284b20 100644 --- a/main.go +++ b/main.go @@ -165,10 +165,17 @@ func populateFeed(feed *feeds.Feed, page []byte) (err error) { } func findEnclosure(ep []byte) *feeds.Enclosure { - episodeAudioRe := regexp.MustCompile(`data\-id="(.+?)?">`) - episodeAudioUrl := "https://audio.vgtrk.com/download?id=" + string(episodeAudioRe.FindSubmatch(ep)[1]) + re := regexp.MustCompile(`data\-type="audio"\s+data\-id="(.+?)?">`) + + matches := re.FindSubmatch(ep) + if len(matches) < 2 { + return &feeds.Enclosure{} + } + + url := "https://audio.vgtrk.com/download?id=" + string(matches[1]) + return &feeds.Enclosure{ - Url: episodeAudioUrl, + Url: url, Length: "1024", Type: "audio/mpeg", } diff --git a/testdata/TestUpdatingFeed.golden b/testdata/TestUpdatingFeed.golden index 8cbbf32..20972e9 100644 --- a/testdata/TestUpdatingFeed.golden +++ b/testdata/TestUpdatingFeed.golden @@ -12,7 +12,6 @@ Захарий Палиашвили "Абесалом и Этери" http://www.radiorus.ru/brand/59798/episode/2237240 - http://www.radiorus.ru/brand/59798/episode/2237240 Wed, 29 Jan 2020 00:25:00 +0300 diff --git a/testdata/TestVideoFeed.golden b/testdata/TestVideoFeed.golden index 11d6bd9..ece31fa 100644 --- a/testdata/TestVideoFeed.golden +++ b/testdata/TestVideoFeed.golden @@ -12,7 +12,6 @@ Эфир от 04.02.2020 (04:10) http://www.radiorus.ru/brand/63147/episode/2244130 - http://www.radiorus.ru/brand/63147/episode/2244130 Tue, 04 Feb 2020 04:10:00 +0300 @@ -20,7 +19,6 @@ Эфир от 03.02.2020 (23:10) http://www.radiorus.ru/brand/63147/episode/2244008 - http://www.radiorus.ru/brand/63147/episode/2244008 Mon, 03 Feb 2020 23:10:00 +0300 -- cgit v1.2.3