diff options
author | Evgeny Kuznetsov <evgeny@kuznetsov.md> | 2020-02-04 17:35:56 +0300 |
---|---|---|
committer | Evgeny Kuznetsov <evgeny@kuznetsov.md> | 2020-02-04 17:35:56 +0300 |
commit | f25632cbc7c4871f295c5e63dbf0eb14cdcc6907 (patch) | |
tree | 62916411189c73f19acdd486349b290e26678305 | |
parent | 8f44886d0114de8a4a432e28de930eae0928f709 (diff) | |
download | radiorus-rss-f25632cbc7c4871f295c5e63dbf0eb14cdcc6907.tar.gz radiorus-rss-f25632cbc7c4871f295c5e63dbf0eb14cdcc6907.zip |
cleaner processing of pages containing video episodes
-rw-r--r-- | README.md | 2 | ||||
-rw-r--r-- | main.go | 13 | ||||
-rw-r--r-- | testdata/TestUpdatingFeed.golden | 1 | ||||
-rw-r--r-- | testdata/TestVideoFeed.golden | 2 |
4 files changed, 11 insertions, 7 deletions
@@ -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`) или в скомпилированном виде как приложение. @@ -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 @@ <title>Захарий Палиашвили "Абесалом и Этери"</title> <link>http://www.radiorus.ru/brand/59798/episode/2237240</link> <description></description> - <enclosure url="https://audio.vgtrk.com/download?id=1990027" length="1024" type="audio/mpeg"></enclosure> <guid>http://www.radiorus.ru/brand/59798/episode/2237240</guid> <pubDate>Wed, 29 Jan 2020 00:25:00 +0300</pubDate> </item> 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 @@ <title>Эфир от 04.02.2020 (04:10)</title> <link>http://www.radiorus.ru/brand/63147/episode/2244130</link> <description></description> - <enclosure url="https://audio.vgtrk.com/download?id=1992139" length="1024" type="audio/mpeg"></enclosure> <guid>http://www.radiorus.ru/brand/63147/episode/2244130</guid> <pubDate>Tue, 04 Feb 2020 04:10:00 +0300</pubDate> </item> @@ -20,7 +19,6 @@ <title>Эфир от 03.02.2020 (23:10)</title> <link>http://www.radiorus.ru/brand/63147/episode/2244008</link> <description></description> - <enclosure url="https://audio.vgtrk.com/download?id=1992117" length="1024" type="audio/mpeg"></enclosure> <guid>http://www.radiorus.ru/brand/63147/episode/2244008</guid> <pubDate>Mon, 03 Feb 2020 23:10:00 +0300</pubDate> </item> |