aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEvgeny Kuznetsov <evgeny@kuznetsov.md>2022-04-29 17:57:45 +0300
committerEvgeny Kuznetsov <evgeny@kuznetsov.md>2022-04-29 17:57:45 +0300
commitc6abeb08768566dcdac5b9adb57207814472d8f5 (patch)
treeea39d231e1bb4d3eaccbc9ebaecc3b1cfabacb96
parent0230ce2283f0c8ff21398bd9e42d39fa0d4213fe (diff)
downloadradiorus-rss-c6abeb08768566dcdac5b9adb57207814472d8f5.tar.gz
radiorus-rss-c6abeb08768566dcdac5b9adb57207814472d8f5.zip
don't die on smotrim.ru redirects
-rw-r--r--main.go162
-rw-r--r--main_test.go60
-rw-r--r--testdata/TestPopulateFeed.golden152
-rw-r--r--testdata/smotrim.570831824
4 files changed, 2169 insertions, 29 deletions
diff --git a/main.go b/main.go
index e49bc83..24cdcb6 100644
--- a/main.go
+++ b/main.go
@@ -22,6 +22,7 @@ import (
"io/ioutil"
"log"
"net/http"
+ "net/url"
"regexp"
"strconv"
"strings"
@@ -77,8 +78,10 @@ func processURL(url string) *feeds.Feed {
feed := getFeed(url)
var wg sync.WaitGroup
- wg.Add(1)
- go describeFeed(feed, &wg)
+ if feed.Description == "" {
+ wg.Add(1)
+ go describeFeed(feed, &wg)
+ }
describeEpisodes(feed)
wg.Wait()
@@ -100,11 +103,11 @@ func writeFile(output []byte, filename string) {
}
func getFeed(url string) (feed *feeds.Feed) {
+ page, url := getPage(url)
feed = &feeds.Feed{
Link: &feeds.Link{Href: url},
}
- page := getPage(url)
if err := populateFeed(feed, page); err != nil {
err = fmt.Errorf("could not process %v: %w", url, err)
log.Fatal(err)
@@ -114,43 +117,121 @@ func getFeed(url string) (feed *feeds.Feed) {
}
func populateFeed(feed *feeds.Feed, page []byte) (err error) {
- title, err := parseSingle(page, programNameRe)
+ feed.Title, err = parseText(page, ".brand-main-item__title")
+ if feed.Title == "" {
+ feed.Title, err = parseProgrammeTitle(page)
+ }
+
if err != nil {
return fmt.Errorf("bad programme page: title not found")
}
- feed.Title = stripLink(string(title))
- addFeedImage(page, feed)
+ feed.Description, _ = parseText(page, ".program-about__text")
- episodes := findEpisodes(page)
- urlPrefix := episodeURLPrefix(feed.Link.Href)
+ addFeedImage(page, feed)
- for _, episode := range episodes {
- if len(episodeUrlRe.FindAllSubmatch(episode, -1)) > 1 {
- return errBadEpisode
+ switch site := parseSite(feed); site {
+ case "smotrim.ru":
+ err = populateSmotrimEpisodes(feed, page)
+ default:
+ episodes := findEpisodes(page)
+ urlPrefix := episodeURLPrefix(feed.Link.Href)
+
+ for _, episode := range episodes {
+ if len(episodeUrlRe.FindAllSubmatch(episode, -1)) > 1 {
+ return errBadEpisode
+ }
+ url, err := parseSingle(episode, episodeUrlRe)
+ if err != nil {
+ return errBadEpisode
+ }
+ episodeUrl := urlPrefix + string(url)
+ title, _ := parseSingle(episode, episodeTitleRe)
+ episodeTitle := string(title)
+ enclosure := findEnclosure(episode)
+ date := findDate(episode)
+
+ feed.Add(&feeds.Item{
+ Id: episodeID(episodeUrl),
+ Link: &feeds.Link{Href: episodeUrl},
+ Title: episodeTitle,
+ Enclosure: enclosure,
+ Created: date,
+ })
}
- url, err := parseSingle(episode, episodeUrlRe)
+ }
+ return
+}
+
+func populateSmotrimEpisodes(feed *feeds.Feed, page []byte) (err error) {
+ doc, err := goquery.NewDocumentFromReader(bytes.NewReader(page))
+ if err != nil {
+ return
+ }
+ base, err := url.Parse(feed.Link.Href)
+ if err != nil {
+ return
+ }
+ doc.Find(".episode-card").Each(func(i int, s *goquery.Selection) {
+ l, _ := s.Find(".episode-card__link").Attr("href")
+ id := strings.TrimPrefix(l, "/audio/")
+ link, err := base.Parse(l)
if err != nil {
- return errBadEpisode
+ return
}
- episodeUrl := urlPrefix + string(url)
- title, _ := parseSingle(episode, episodeTitleRe)
- episodeTitle := string(title)
- enclosure := findEnclosure(episode)
- date := findDate(episode)
-
+ title := strings.TrimSpace(strings.TrimPrefix(s.Find(".episode-card__title").Text(), s.Find(".episode-card__title__brand").Text()))
feed.Add(&feeds.Item{
- Id: episodeID(episodeUrl),
- Link: &feeds.Link{Href: episodeUrl},
- Title: episodeTitle,
- Enclosure: enclosure,
- Created: date,
+ Id: id,
+ Link: &feeds.Link{Href: link.String()},
+ Title: title,
+ Enclosure: enclosure(id),
})
+ })
+ return
+}
+
+func parseSite(feed *feeds.Feed) string {
+ u, err := url.Parse(feed.Link.Href)
+ if err != nil {
+ return ""
+ }
+ return u.Hostname()
+}
+
+func parseProgrammeTitle(page []byte) (title string, err error) {
+ t, err := parseSingle(page, programNameRe)
+ if err != nil {
+ return
}
+ title = stripLink(string(t))
+ return
+}
+
+func parseText(page []byte, sel string) (title string, err error) {
+ doc, err := goquery.NewDocumentFromReader(bytes.NewReader(page))
+ if err != nil {
+ return
+ }
+ title = strings.TrimSpace(doc.Find(sel).Text())
return
}
func addFeedImage(page []byte, feed *feeds.Feed) {
+ doc, err := goquery.NewDocumentFromReader(bytes.NewReader(page))
+ if err != nil {
+ return
+ }
+ img := doc.Find(".brand-main-item__picture").Find("img")
+ if src, ok := img.Attr("src"); ok {
+ t, _ := img.Attr("title")
+ feed.Image = &feeds.Image{
+ Link: feed.Link.Href,
+ Url: src,
+ Title: t,
+ }
+ return
+ }
+
programImage, err := parse(page, programImageRe, 4)
if err == nil {
feed.Image = &feeds.Image{
@@ -209,7 +290,12 @@ func findEnclosure(ep []byte) *feeds.Enclosure {
return &feeds.Enclosure{}
}
- url := "https://audio.vgtrk.com/download?id=" + string(res)
+ return enclosure(string(res))
+}
+
+func enclosure(no string) *feeds.Enclosure {
+
+ url := "https://audio.vgtrk.com/download?id=" + string(no)
return &feeds.Enclosure{
Url: url,
@@ -227,7 +313,7 @@ func findEpisodes(page []byte) [][]byte {
func describeFeed(feed *feeds.Feed, wg *sync.WaitGroup) {
defer wg.Done()
url := strings.TrimSuffix(feed.Link.Href, "episodes") + "about"
- page := getPage(url)
+ page, _ := getPage(url)
desc, err := processFeedDesc(page)
if err != nil {
log.Printf("could not find programme description on page %v: %v", url, err)
@@ -255,12 +341,29 @@ func describeEpisodes(feed *feeds.Feed) {
func describeEpisode(item *feeds.Item, wg *sync.WaitGroup) {
defer wg.Done()
- page := getPage(item.Link.Href)
+ page, _ := getPage(item.Link.Href)
desc, err := processEpisodeDesc(page)
if err != nil {
log.Printf("could not find episode description on page %v: %v", item.Link.Href, err)
}
item.Description = desc
+ if item.Created.IsZero() {
+ item.Created = parseSmotrimDate(page)
+ }
+}
+
+func parseSmotrimDate(page []byte) (t time.Time) {
+ s, err := parseText(page, ".video__date")
+ if err != nil {
+ return
+ }
+ mnths := [12]string{"января", "февраля", "марта", "апреля", "мая", "июня", "июля", "августа", "сентября", "октября", "ноября", "декабря"}
+ for i, mnt := range mnths {
+ s = strings.ReplaceAll(s, mnt, strconv.Itoa(i+1))
+ }
+ s = fmt.Sprintf("%s z+03", s)
+ t, _ = time.Parse("2 1 2006, 15:04 z-07", s)
+ return
}
func processEpisodeDesc(page []byte) (string, error) {
@@ -271,6 +374,7 @@ func processEpisodeDesc(page []byte) (string, error) {
var r []string
r = addText(r, doc.Find(".brand-episode__head").Find(".anons").Text())
r = addText(r, doc.Find(".brand-episode__body").Find(".body").Text())
+ r = addText(r, strings.TrimSpace(doc.Find(".video__body").Text()))
res := strings.Join(r, "\n\n")
if res == "" {
@@ -286,7 +390,7 @@ func addText(arr []string, str string) []string {
return arr
}
-func getPage(pageUrl string) []byte {
+func getPage(pageUrl string) ([]byte, string) {
client := &http.Client{}
req, err := http.NewRequest("GET", pageUrl, nil)
if err != nil {
@@ -305,7 +409,7 @@ func getPage(pageUrl string) []byte {
page = cleanText(page)
- return page
+ return page, res.Request.URL.String()
}
// cleanText replaces HTML-encoded symbols with proper UTF
diff --git a/main_test.go b/main_test.go
index 6c5c172..82dc506 100644
--- a/main_test.go
+++ b/main_test.go
@@ -166,6 +166,25 @@ func TestUpdatingFeed(t *testing.T) {
assertGolden(t, actual, golden)
}
+func TestPopulateFeed(t *testing.T) {
+ var page []byte
+
+ feed := &feeds.Feed{
+ Link: &feeds.Link{Href: "https://smotrim.ru/brand/57083"},
+ }
+
+ page = helperLoadBytes(t, "smotrim.57083")
+ page = cleanText(page)
+
+ if err := populateFeed(feed, page); err != nil {
+ t.Fatal(err)
+ }
+
+ actual := createFeed(feed)
+ golden := filepath.Join("testdata", t.Name()+".golden")
+ assertGolden(t, actual, golden)
+}
+
func TestMissingEpisode(t *testing.T) {
server := helperMockServer(t)
defer helperCleanupServer(t)
@@ -245,6 +264,47 @@ func BenchmarkServedFeed(b *testing.B) {
}
}
+func TestGetFeed(t *testing.T) {
+ radiorus := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
+ page := helperLoadBytes(t, "episodes")
+ _, _ = w.Write(page)
+ }))
+ defer radiorus.Close()
+
+ smotrim := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
+ page := helperLoadBytes(t, "smotrim.57083")
+ _, _ = w.Write(page)
+ }))
+ defer smotrim.Close()
+
+ redir := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
+ http.Redirect(w, r, smotrim.URL, 301)
+ }))
+ defer redir.Close()
+
+ tests := map[string]struct {
+ url string
+ want string
+ desc bool
+ }{
+ "radiorus": {radiorus.URL, radiorus.URL, false},
+ "smotrim": {redir.URL, smotrim.URL, true},
+ }
+
+ for name, tc := range tests {
+ t.Run(name, func(t *testing.T) {
+ feed := getFeed(tc.url)
+ if tc.want != feed.Link.Href {
+ t.Fatalf("\nwant %s, got %s", tc.want, feed.Link.Href)
+ }
+ ne := feed.Description != ""
+ if ne != tc.desc {
+ t.Fatalf("\nwant %v, got %v", tc.desc, ne)
+ }
+ })
+ }
+}
+
func helperMockServer(t testing.TB) *httptest.Server {
t.Helper()
diff --git a/testdata/TestPopulateFeed.golden b/testdata/TestPopulateFeed.golden
new file mode 100644
index 0000000..221c9fe
--- /dev/null
+++ b/testdata/TestPopulateFeed.golden
@@ -0,0 +1,152 @@
+<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/">
+ <channel>
+ <title>Аэростат</title>
+ <link>https://smotrim.ru/brand/57083</link>
+ <description>Вы не можете быть до конца уверены, что на этот раз вам откроет БГ – будь то взгляд на группу Doors или столь глобальные вопросы, как: что такое новое время, как делится история мира в соответствии с древней индийской космогонией, стоит ли ждать ветра перемен, ждет ли нас духовное возрождение, где граница между прошлым и будущим. А может и вовсе не стоит искать ответы на эти вопросы? Потому что это не те вопросы, а потому и ответы не приведут вас к истине...&#xA;&#xA;Прислушаемся к Борису Гребенщикову, который с улыбкой говорит всем нам &#34;Здравствуйте!&#34; и находит самые простые ответы...</description>
+ <image>
+ <url>https://cdnapi.smotrim.ru/api/v1/pictures/1246171/mw/redirect</url>
+ <title>Аэростат</title>
+ <link>https://smotrim.ru/brand/57083</link>
+ </image>
+ <item>
+ <title>Выпуск 884. Ответы на Вопросы</title>
+ <link>https://smotrim.ru/audio/2628425</link>
+ <description></description>
+ <enclosure url="https://audio.vgtrk.com/download?id=2628425" length="1024" type="audio/mpeg"></enclosure>
+ <guid>2628425</guid>
+ </item>
+ <item>
+ <title>Выпуск 883. Judy Collins Wildflowers</title>
+ <link>https://smotrim.ru/audio/2627161</link>
+ <description></description>
+ <enclosure url="https://audio.vgtrk.com/download?id=2627161" length="1024" type="audio/mpeg"></enclosure>
+ <guid>2627161</guid>
+ </item>
+ <item>
+ <title>Выпуск 882. Новое То да Сё</title>
+ <link>https://smotrim.ru/audio/2625692</link>
+ <description></description>
+ <enclosure url="https://audio.vgtrk.com/download?id=2625692" length="1024" type="audio/mpeg"></enclosure>
+ <guid>2625692</guid>
+ </item>
+ <item>
+ <title>Выпуск 881. Новые Песни Апреля</title>
+ <link>https://smotrim.ru/audio/2624678</link>
+ <description></description>
+ <enclosure url="https://audio.vgtrk.com/download?id=2624678" length="1024" type="audio/mpeg"></enclosure>
+ <guid>2624678</guid>
+ </item>
+ <item>
+ <title>Выпуск 880. Что такое концерт</title>
+ <link>https://smotrim.ru/audio/2623811</link>
+ <description></description>
+ <enclosure url="https://audio.vgtrk.com/download?id=2623811" length="1024" type="audio/mpeg"></enclosure>
+ <guid>2623811</guid>
+ </item>
+ <item>
+ <title>Выпуск 879. То да Сё № 22</title>
+ <link>https://smotrim.ru/audio/2622374</link>
+ <description></description>
+ <enclosure url="https://audio.vgtrk.com/download?id=2622374" length="1024" type="audio/mpeg"></enclosure>
+ <guid>2622374</guid>
+ </item>
+ <item>
+ <title>Выпуск 878. Целительная сила музыки</title>
+ <link>https://smotrim.ru/audio/2621443</link>
+ <description></description>
+ <enclosure url="https://audio.vgtrk.com/download?id=2621443" length="1024" type="audio/mpeg"></enclosure>
+ <guid>2621443</guid>
+ </item>
+ <item>
+ <title>Выпуск 877. Новые Песни Марта</title>
+ <link>https://smotrim.ru/audio/2619992</link>
+ <description></description>
+ <enclosure url="https://audio.vgtrk.com/download?id=2619992" length="1024" type="audio/mpeg"></enclosure>
+ <guid>2619992</guid>
+ </item>
+ <item>
+ <title>Выпуск 876. Шаманизм</title>
+ <link>https://smotrim.ru/audio/2618401</link>
+ <description></description>
+ <enclosure url="https://audio.vgtrk.com/download?id=2618401" length="1024" type="audio/mpeg"></enclosure>
+ <guid>2618401</guid>
+ </item>
+ <item>
+ <title>Выпуск 875. Новые Имена</title>
+ <link>https://smotrim.ru/audio/2617736</link>
+ <description></description>
+ <enclosure url="https://audio.vgtrk.com/download?id=2617736" length="1024" type="audio/mpeg"></enclosure>
+ <guid>2617736</guid>
+ </item>
+ <item>
+ <title>Выпуск 874. То да сё № 21</title>
+ <link>https://smotrim.ru/audio/2615992</link>
+ <description></description>
+ <enclosure url="https://audio.vgtrk.com/download?id=2615992" length="1024" type="audio/mpeg"></enclosure>
+ <guid>2615992</guid>
+ </item>
+ <item>
+ <title>Выпуск 873. Новые Песни Февраля</title>
+ <link>https://smotrim.ru/audio/2614575</link>
+ <description></description>
+ <enclosure url="https://audio.vgtrk.com/download?id=2614575" length="1024" type="audio/mpeg"></enclosure>
+ <guid>2614575</guid>
+ </item>
+ <item>
+ <title>Выпуск 872. Имболк: Романтизм</title>
+ <link>https://smotrim.ru/audio/2613623</link>
+ <description></description>
+ <enclosure url="https://audio.vgtrk.com/download?id=2613623" length="1024" type="audio/mpeg"></enclosure>
+ <guid>2613623</guid>
+ </item>
+ <item>
+ <title>Выпуск 871. Кто Есть Кто?</title>
+ <link>https://smotrim.ru/audio/2611838</link>
+ <description></description>
+ <enclosure url="https://audio.vgtrk.com/download?id=2611838" length="1024" type="audio/mpeg"></enclosure>
+ <guid>2611838</guid>
+ </item>
+ <item>
+ <title>Выпуск 870. То и Сё № 20</title>
+ <link>https://smotrim.ru/audio/2610401</link>
+ <description></description>
+ <enclosure url="https://audio.vgtrk.com/download?id=2610401" length="1024" type="audio/mpeg"></enclosure>
+ <guid>2610401</guid>
+ </item>
+ <item>
+ <title>Выпуск 869. Новые Песни Января</title>
+ <link>https://smotrim.ru/audio/2607924</link>
+ <description></description>
+ <enclosure url="https://audio.vgtrk.com/download?id=2607924" length="1024" type="audio/mpeg"></enclosure>
+ <guid>2607924</guid>
+ </item>
+ <item>
+ <title>Выпуск 868. Новогодние притчи</title>
+ <link>https://smotrim.ru/audio/2607923</link>
+ <description></description>
+ <enclosure url="https://audio.vgtrk.com/download?id=2607923" length="1024" type="audio/mpeg"></enclosure>
+ <guid>2607923</guid>
+ </item>
+ <item>
+ <title>Выпуск 867. Предновогодняя</title>
+ <link>https://smotrim.ru/audio/2606839</link>
+ <description></description>
+ <enclosure url="https://audio.vgtrk.com/download?id=2606839" length="1024" type="audio/mpeg"></enclosure>
+ <guid>2606839</guid>
+ </item>
+ <item>
+ <title>Выпуск 866. Роберт Плант и Элисон Краусс</title>
+ <link>https://smotrim.ru/audio/2605330</link>
+ <description></description>
+ <enclosure url="https://audio.vgtrk.com/download?id=2605330" length="1024" type="audio/mpeg"></enclosure>
+ <guid>2605330</guid>
+ </item>
+ <item>
+ <title>Выпуск 865. 8 Наблюдений</title>
+ <link>https://smotrim.ru/audio/2603883</link>
+ <description></description>
+ <enclosure url="https://audio.vgtrk.com/download?id=2603883" length="1024" type="audio/mpeg"></enclosure>
+ <guid>2603883</guid>
+ </item>
+ </channel>
+</rss> \ No newline at end of file
diff --git a/testdata/smotrim.57083 b/testdata/smotrim.57083
new file mode 100644
index 0000000..82e63c8
--- /dev/null
+++ b/testdata/smotrim.57083
@@ -0,0 +1,1824 @@
+<html>
+ <head>
+ <meta charset="utf-8">
+ <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0, viewport-fit=cover">
+
+ <title>Аэростат, радио, программа, слушать онлайн // Смотрим</title>
+
+ <meta name="description" content="Аэростат, радио, слушать онлайн, на Смотрим, культура">
+<meta name="keywords" content="Аэростат, радио, программа, онлайн, музыка, Борис Гребенщиков, размышления, культура, искусство">
+<meta property="canonical" content="https://smotrim.ru/brand/57083">
+ <link rel="amphtml" href="https://smotrim.ru/amp/brand/57083">
+
+
+<meta property="og:site_name" content="smotrim.ru">
+<meta property="og:type" content="website">
+<meta property="og:url" content="https://smotrim.ru/brand/57083">
+<meta property="og:image" content="https://cdnapi.smotrim.ru/api/v1/pictures/1246171/xw/redirect">
+
+
+ <meta property="og:title" content="Аэростат">
+
+ <meta property="og:description" content="Программа Бориса Гребенщикова &quot;Аэростат&quot; посвящена истории рок-музыки. Спокойный и ненавязчивый рассказ БГ субъективен, но именно это придает ему особую ценность...">
+
+
+<meta name="twitter:card" content="summary_large_image">
+<meta property="twitter:url" content="https://smotrim.ru/brand/57083">
+<meta name="twitter:image" content="https://cdnapi.smotrim.ru/api/v1/pictures/1246171/xw/redirect">
+
+ <meta name="twitter:title" content="Аэростат">
+
+ <meta name="twitter:description" content="Программа Бориса Гребенщикова &quot;Аэростат&quot; посвящена истории рок-музыки. Спокойный и ненавязчивый рассказ БГ субъективен, но именно это придает ему особую ценность...">
+
+ <script type="application/ld+json">
+ {
+ "@context": "http://schema.org",
+ "@type": "TVSeries",
+ "name": "Аэростат",
+ "mainEntityOfPage": {
+ "@type": "WebPage",
+ "@id": "https://smotrim.ru/brand/57083"
+ },
+ "image": {
+ "@type": "ImageObject",
+ "url": "https://cdnapi.smotrim.ru/api/v1/pictures/1246171/hd/redirect",
+ "height": 1080,
+ "width": 1920
+ },
+ "publisher": {
+ "@type": "Organization",
+ "name": "Смотрим",
+ "logo": {
+ "@type": "ImageObject",
+ "url": "https://smotrim.ru/i/smotrim_logo_soc_new.png",
+ "height": 512,
+ "width": 512
+ }
+ },
+ "description": "Программа Бориса Гребенщикова \"Аэростат\" посвящена истории рок-музыки. Спокойный и ненавязчивый рассказ БГ субъективен, но именно это придает ему особую ценность..."
+}
+ </script>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <link rel="apple-touch-icon" sizes="57x57" href="https://cdnmg-st.smotrim.ru/smotrimru/i/favicon/apple-touch-icon-57x57.png">
+ <link rel="apple-touch-icon" sizes="72x72" href="https://cdnmg-st.smotrim.ru/smotrimru/i/favicon/apple-touch-icon-72x72.png">
+ <link rel="apple-touch-icon" sizes="76x76" href="https://cdnmg-st.smotrim.ru/smotrimru/i/favicon/apple-touch-icon-76x76.png">
+ <link rel="apple-touch-icon" sizes="114x114" href="https://cdnmg-st.smotrim.ru/smotrimru/i/favicon/apple-touch-icon-114x114.png">
+ <link rel="apple-touch-icon" sizes="120x120" href="https://cdnmg-st.smotrim.ru/smotrimru/i/favicon/apple-touch-icon-120x120.png">
+ <link rel="apple-touch-icon" sizes="144x144" href="https://cdnmg-st.smotrim.ru/smotrimru/i/favicon/apple-touch-icon-144x144.png">
+ <link rel="apple-touch-icon" sizes="152x152" href="https://cdnmg-st.smotrim.ru/smotrimru/i/favicon/apple-touch-icon-152x152.png">
+ <link rel="apple-touch-icon" sizes="180x180" href="https://cdnmg-st.smotrim.ru/smotrimru/i/favicon/apple-touch-icon-180x180.png">
+
+ <link rel="icon" type="image/png" sizes="32x32" href="https://cdnmg-st.smotrim.ru/smotrimru/i/favicon/favicon-32x32.png?v=1">
+ <link rel="icon" type="image/png" sizes="16x16" href="https://cdnmg-st.smotrim.ru/smotrimru/i/favicon/favicon-16x16.png?v=1">
+ <link rel="icon" href="https://cdnmg-st.smotrim.ru/smotrimru/i/favicon/favicon.ico" type="image/x-icon">
+
+ <link rel="manifest" href="https://cdnmg-st.smotrim.ru/smotrimru/js/manifest.json">
+ <meta name="msapplication-TileColor" content="#ffffff">
+ <meta name="theme-color" content="#ffffff">
+
+
+ <link rel="stylesheet" href="https://cdnmg-st.smotrim.ru/smotrimru/css/smotrim_71.css?v=1650990624">
+
+ <!-- Adv slot 292 [ -->
+
+
+
+
+
+
+ <script>window.yaContextCb = window.yaContextCb || []</script>
+<script src="https://yandex.ru/ads/system/context.js" async></script>
+
+
+
+
+
+ <!-- ] Adv slot 292 -->
+
+ <script>
+ window.sm = window.sm || {};
+ window.sm.highload = false;
+ </script>
+
+ <!-- header misc code -->
+<meta name="yandex-verification" content="947693d7e236def8" />
+<meta name="yandex-verification" content="0c599b7aa3d1f8d2" />
+
+<meta name="no-splash" content="/article/2662578,/brand/67430" />
+
+<script src="https://assets.vgtrk.com/uid/latest/uid.js?v=11" type="text/javascript"></script>
+<style>
+.app__main .theme--section {
+ padding-top: 47px;
+}
+.app--page-live .tvp-pop-up__picture img {
+height: auto;
+}
+</style>
+<!-- End header misc code -->
+
+
+
+ <script type="text/javascript" src="/js/piwik.js"></script>
+
+ <script type="text/javascript" src="//code.jquery.com/jquery-1.11.3.min.js"></script>
+ </head>
+ <body class="app app--scheme-black app--page-brand">
+
+ <section id="top-slot">
+ <div class="slot slot--before-header">
+ <!-- Adv slot 293 [ -->
+
+
+
+
+
+
+ <!--AdFox START-->
+<!--vgtrk.com-->
+<!--Площадка: _Смотрим / Тест / перетяжка в шапке | desktop-->
+<!--Категория: <не задана>-->
+<!--Тип баннера: 1000x90-->
+<div id="adfox_159706077566131331"></div>
+<script>
+ window.yaContextCb.push(()=>{
+ Ya.adfoxCode.createAdaptive({
+ ownerId: 166267,
+ containerId: 'adfox_159706077566131331',
+ params: {
+ p1: 'clvim',
+ p2: 'eroq',
+ puid2: '',
+ puid3: '',
+ puid4: '',
+ puid10: '',
+ puid11: '',
+ puid12: window.tags,
+ pk: window.tagsTitle,
+ pke: '1'
+ },
+ onLoad: function(data) {
+ var event = new Event('slot.top.load');
+
+ window.dispatchEvent(event);
+ },
+ onRender: function() {
+ var event = new Event('slot.top.render');
+
+ window.dispatchEvent(event);
+ },
+ onError: function(error) {
+ var event = new Event('slot.top.error');
+
+ window.dispatchEvent(event);
+ },
+ onStub: function() {
+ var event = new Event('slot.top.stub');
+
+ window.dispatchEvent(event);
+ }
+ }, [ 'desktop' ], {
+ tabletWidth: 1024,
+ phoneWidth: 736,
+ isAutoReloads: false
+ })
+})
+</script>
+<style>
+
+ .slot {
+ width: 100%;
+ }
+
+
+</style>
+
+
+
+
+
+
+ <!--AdFox START-->
+<!--vgtrk.com-->
+<!--Площадка: smotrim.ru / * / *-->
+<!--Тип баннера: 1x1_R-->
+<!--Расположение: <верх страницы>-->
+<div id="adfox_160892056771289736"></div>
+<script>
+ window.yaContextCb.push(()=>{
+ Ya.adfoxCode.create({
+ ownerId: 166267,
+ containerId: 'adfox_160892056771289736',
+ params: {
+ pp: 'g',
+ ps: 'egyd',
+ p2: 'gbcy',
+ puid2: '',
+ puid3: '',
+ puid4: '',
+ puid10: '',
+ puid11: '',
+ puid12: window.tags,
+ pk: window.tagsTitle,
+ pke: '1'
+ }
+ })
+})
+</script>
+
+
+
+
+
+
+ <!--AdFox START-->
+<!--vgtrk.com-->
+<!--Площадка: smotrim.ru / Главная/весь сайт / 1х1_2-->
+<!--Категория: <не задана>-->
+<!--Тип баннера: 1x1_R-->
+<div id="adfox_162513991204161174"></div>
+<script>
+ window.yaContextCb.push(()=>{
+ Ya.adfoxCode.create({
+ ownerId: 166267,
+ containerId: 'adfox_162513991204161174',
+ params: {
+ p1: 'cqabr',
+ p2: 'gbcy',
+ puid2: '',
+ puid3: '',
+ puid4: '',
+ puid10: '',
+ puid11: '',
+ puid12: window.tags,
+ pk: window.tagsTitle,
+ pke: '1'
+ }
+ })
+ })
+</script>
+
+
+
+
+
+ <!-- ] Adv slot 293 -->
+ </div>
+ </section>
+
+ <main id="reloadable" class="app__holder">
+ <section class="app__main">
+ <header class="header">
+ <div class="header__logo">
+ <a class="header__link" href="/"></a>
+ </div>
+ <div class="header__content">
+ <div class="header__wrapper">
+ <div class="header__navigation">
+ <div class="navigation">
+ <div class="navigation__control"></div>
+ <div class="navigation__content">
+ <ul class="navigation__list">
+ <li class="navigation__item">
+ <a class="navigation__link" href="/?utm_source=internal&amp;utm_medium=menu-group&amp;utm_campaign=menu-main">
+ Главное
+ </a>
+ </li>
+ <li class="navigation__item">
+ <a class="navigation__link" href="/vesti?utm_source=internal&amp;utm_medium=menu-group&amp;utm_campaign=menu-main">
+ Вести
+ </a>
+ </li>
+ <li class="navigation__item">
+ <a class="navigation__link" href="/cinema?utm_source=internal&amp;utm_medium=menu-group&amp;utm_campaign=menu-main">
+ Кино и шоу
+ </a>
+ </li>
+ <li class="navigation__item">
+ <a class="navigation__link" href="/radio?utm_source=internal&amp;utm_medium=menu-group&amp;utm_campaign=menu-main">
+ Слушаем
+ </a>
+ </li>
+ <li class="navigation__item">
+ <a class="navigation__link" href="/channels?utm_source=internal&amp;utm_medium=menu-group&amp;utm_campaign=menu-main">
+ Эфир
+ </a>
+ </li>
+ <li class="navigation__item navigation__special">
+ <a class="navigation__link" href="/pick/special-donbass">Специальная военная операция</a>
+ </li>
+ </ul>
+ </div>
+</div>
+ </div>
+ <div class="header__search">
+ <div class="search-form">
+ <div class="search-form__control">
+ <a class="search-form__button search-form__button--show" href="#show-search-form">Найти</a>
+ </div>
+ <div class="search-form__content">
+ <form class="search-form__form" method="get" action="/search" autocomplete="off">
+ <input class="search-form__query" type="text" value="" placeholder="Найти" name="q">
+ <input class="search-form__button search-form__button--clear" type="reset" value="Отчистить">
+ <input class="search-form__button search-form__button--submit" type="submit" value="Найти">
+ </form>
+ <div class="search-form__autocomplete">
+
+ <div class="autocomplete">
+ <ul class="autocomplete__list">
+
+ </ul>
+ <div class="autocomplete__control">
+ <a class="autocomplete__submit" href="/search">Показать все результаты</a>
+ </div>
+ </div>
+
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="header__geo">
+ <div class="geo">
+ <div class="geo__inner">
+ <div class="geo__icon">
+ </div>
+ <div class="geo__info"></div>
+ </div>
+ <div class="dialog dialog-geo">
+ <div class="dialog__container">
+ <form class="form">
+ <div class="dialog__title">Выберите регион</div>
+ <div class="dialog__content">
+ <ul class="list">
+ <li class="list__item">
+ <input type="text" class="form-input geo-title">
+ <div class="dropdown geo-list">
+ <div class="dropdown__item">Нижний Новгород</div>
+ <div class="dropdown__item">Нижний Тагил</div>
+ <div class="dropdown__item">Нижневартовск</div>
+ <div class="dropdown__item">Нижнекамск</div>
+ <div class="dropdown__item">Нижнее Хваршини</div>
+ <div class="dropdown__item">Нижнее Ишкарты</div>
+ <div class="dropdown__item">Нижнеидрисово</div>
+ <div class="dropdown__item">Нижнее Солотвино</div>
+ </div>
+ </li>
+ <li class="list__item">
+ <label for="auto">Определять автоматически</label>
+ <div class="roller">
+ <input type="checkbox" id="auto" checked>
+ <label class="roller__label" for="auto"></label>
+ </div>
+ </li>
+ </ul>
+ </div>
+ <div class="dialog__bottom">
+ <button class="btn">смотрим</button>
+ </div>
+ </form>
+ </div>
+</div>
+</div>
+ </div>
+
+
+
+ <div class="header__profile">
+ <div class="profile">
+ <div class="profile__control">
+ <span class="profile__link profile__link--favorites"></span>
+ <a class="profile__link profile__link--user profile__link--notlogged" href="/personal/login?redirect=%2Fbrand%2F57083">
+ </a>
+<script>
+ window.isLogged = false;
+</script>
+ </div>
+ <div class="profile__content"></div>
+ </div>
+ </div>
+ <div class="header__social-groups">
+ <div class="social-groups">
+ <div class="social-groups__content">
+ <ul class="social-groups__list">
+ <li class="social-groups__item">
+ <a
+ class="social-groups__link social-groups__link--odnoklassniki"
+ href="https://ok.ru/group/68835016835126"
+ target="_blank"
+ ></a>
+ </li>
+ <li class="social-groups__item">
+ <a
+ class="social-groups__link social-groups__link--yzen"
+ href="https://zen.yandex.ru/smotrimru"
+ target="_blank"
+ ></a>
+ </li>
+ <li class="social-groups__item">
+ <a
+ class="social-groups__link social-groups__link--telegram"
+ href="https://t.me/smotrim_ru"
+ target="_blank"
+ ></a>
+ </li>
+ <li class="social-groups__item">
+ <a
+ class="social-groups__link social-groups__link--tiktok"
+ href="https://www.tiktok.com/@smotrimru"
+ target="_blank"
+ ></a>
+ </li>
+ </ul>
+ </div>
+</div>
+ </div>
+ <div class="header__store">
+ <div class="store">
+ <div class="store__preview"></div>
+ <div class="store__content">
+ <h2 class="store__title">Смотрим на</h2>
+ <ul class="store__list">
+ <li class="store__item">
+ <a class="store__link" href="https://apps.apple.com/us/app/смотрим-сериалы-кино-и-шоу/id1526501534?utm_source=internal&amp;utm_medium=menu-group&amp;utm_campaign=menu-footer-apps" target="_blank">
+ iOS
+ </a>
+ </li>
+ <li class="store__item">
+ <a class="store__link" href="https://play.google.com/store/apps/details?utm_source=internal&amp;utm_medium=menu-group&amp;utm_campaign=menu-footer-apps&amp;id=com.vgtrk.smotrim" target="_blank">
+ Android
+ </a>
+ </li>
+ </ul>
+ </div>
+</div>
+ </div>
+ <div class="header__close">
+ <a class="header__button" href="#hide-menu"></a>
+ </div>
+ </div>
+ </div>
+ <div class="header__mobile-search">
+ <a class="header__button" href="#show-search-form"></a>
+ </div>
+ <div class="header__burger">
+ <a class="header__button" href="#show-menu"></a>
+ </div>
+</header>
+
+
+ <section class="brand-main-item">
+ <div class="brand-main-item__preview">
+ <picture class="brand-main-item__picture">
+ <source type="image/jpeg" media="(min-width: 1920px)" srcset="https://cdnapi.smotrim.ru/api/v1/pictures/1246171/hd/redirect 1x, https://cdnapi.smotrim.ru/api/v1/pictures/1246171/dk/redirect 2x"/>
+ <source type="image/jpeg" media="(min-width: 1280px)" srcset="https://cdnapi.smotrim.ru/api/v1/pictures/1246171/hdr/redirect 1x, https://cdnapi.smotrim.ru/api/v1/pictures/1246171/hd/redirect 2x"/>
+ <source type="image/jpeg" media="(min-width: 720px)" srcset="https://cdnapi.smotrim.ru/api/v1/pictures/1246171/xw/redirect 1x, https://cdnapi.smotrim.ru/api/v1/pictures/1246171/hdr/redirect 2x"/>
+ <source type="image/jpeg" media="(min-width: 426px)" srcset="https://cdnapi.smotrim.ru/api/v1/pictures/1246171/lw/redirect 1x, https://cdnapi.smotrim.ru/api/v1/pictures/1246171/xw/redirect 2x"/>
+ <source type="image/jpeg" media="(max-width: 425px)" srcset="https://cdnapi.smotrim.ru/api/v1/pictures/1246171/vm/redirect 1x, https://cdnapi.smotrim.ru/api/v1/pictures/1246171/vhdr/redirect 2x"/>
+ <img alt="Аэростат" title="Аэростат" src="https://cdnapi.smotrim.ru/api/v1/pictures/1246171/mw/redirect"/>
+ </picture>
+ <script>
+
+ let mainImg = document.querySelector(".brand-main-item__picture > img");
+ let mainImgSrc = document.querySelectorAll(".brand-main-item__picture > source");
+ mainImg.onerror = function() {
+ mainImgSrc.forEach(function(item) {
+ item.setAttribute("srcset", "https://cdnapi.smotrim.ru/api/v1/pictures/1246171/xw/redirect");
+ });
+ }
+ </script>
+
+
+ <a class="brand-main-item__link" href="/audio/2628425" title="Выпуск 884. Ответы на Вопросы"></a>
+
+ </div>
+ <div class="brand-main-item__info">
+ <div class="brand-main-item__description">
+ <div class="brand-main-item__type">
+ Программа
+ </div>
+ <h1 class="brand-main-item__title">
+ Аэростат
+ </h1>
+ <div class="brand-main-item__production">
+ <span class="brand-main-item__age-restriction">0+</span>
+ </div>
+ </div>
+
+ <div class="brand-main-item__social">
+ <div class="brand-main-item__bookmark">
+ <a class="profile-bookmark"
+ href="#add-to-favorites"
+ data-id="57083"
+ data-type="brand"
+ data-category="brands"
+ data-title="Аэростат"
+ data-subtitle=""
+ data-picture="1246171"
+ data-position="0"
+ data-duration="0"
+ data-published=""
+ data-recorded=""
+ data-created=""
+ data-modified=""
+ data-client="web"
+ >
+ </a>
+ </div>
+ </div>
+ </div>
+</section>
+
+
+
+
+
+
+
+
+
+ <section class="audio">
+
+ <header class="audio__header">
+ <h2 class="audio__title">
+ <a href="/audio/2628425">
+ Слушаем
+ </a>
+ </h2>
+ </header>
+
+ <div class="audio__content">
+ <div class="audio__slider">
+ <ul class="audio__list">
+ <li class="audio__item">
+
+ <div class="episode-card">
+ <div class="episode-card__box">
+ <a class="episode-card__link" href="/audio/2628425"></a>
+ <div class="episode-card__info">
+ <h3 class="episode-card__title episode-card__title__brand">
+ <span>
+ Аэростат
+ </span>
+ </h3>
+ <h3 class="episode-card__title">
+ <span>
+ Выпуск 884. Ответы на Вопросы
+ </span>
+ </h3>
+
+
+
+ <div class="episode-card__icon"></div>
+ <div class="episode-card__duration">
+ 46:01
+ </div>
+ </div>
+ </div>
+ </div>
+
+ </li>
+ <li class="audio__item">
+
+ <div class="episode-card">
+ <div class="episode-card__box">
+ <a class="episode-card__link" href="/audio/2627161"></a>
+ <div class="episode-card__info">
+ <h3 class="episode-card__title episode-card__title__brand">
+ <span>
+ Аэростат
+ </span>
+ </h3>
+ <h3 class="episode-card__title">
+ <span>
+ Выпуск 883. Judy Collins Wildflowers
+ </span>
+ </h3>
+
+
+
+ <div class="episode-card__icon"></div>
+ <div class="episode-card__duration">
+ 46:01
+ </div>
+ </div>
+ </div>
+ </div>
+
+ </li>
+ <li class="audio__item">
+
+ <div class="episode-card">
+ <div class="episode-card__box">
+ <a class="episode-card__link" href="/audio/2625692"></a>
+ <div class="episode-card__info">
+ <h3 class="episode-card__title episode-card__title__brand">
+ <span>
+ Аэростат
+ </span>
+ </h3>
+ <h3 class="episode-card__title">
+ <span>
+ Выпуск 882. Новое То да Сё
+ </span>
+ </h3>
+
+
+
+ <div class="episode-card__icon"></div>
+ <div class="episode-card__duration">
+ 46:01
+ </div>
+ </div>
+ </div>
+ </div>
+
+ </li>
+ <li class="audio__item">
+
+ <div class="episode-card">
+ <div class="episode-card__box">
+ <a class="episode-card__link" href="/audio/2624678"></a>
+ <div class="episode-card__info">
+ <h3 class="episode-card__title episode-card__title__brand">
+ <span>
+ Аэростат
+ </span>
+ </h3>
+ <h3 class="episode-card__title">
+ <span>
+ Выпуск 881. Новые Песни Апреля
+ </span>
+ </h3>
+
+
+
+ <div class="episode-card__icon"></div>
+ <div class="episode-card__duration">
+ 46:01
+ </div>
+ </div>
+ </div>
+ </div>
+
+ </li>
+ <li class="audio__item">
+
+ <div class="episode-card">
+ <div class="episode-card__box">
+ <a class="episode-card__link" href="/audio/2623811"></a>
+ <div class="episode-card__info">
+ <h3 class="episode-card__title episode-card__title__brand">
+ <span>
+ Аэростат
+ </span>
+ </h3>
+ <h3 class="episode-card__title">
+ <span>
+ Выпуск 880. Что такое концерт
+ </span>
+ </h3>
+
+
+
+ <div class="episode-card__icon"></div>
+ <div class="episode-card__duration">
+ 46:01
+ </div>
+ </div>
+ </div>
+ </div>
+
+ </li>
+ <li class="audio__item">
+
+ <div class="episode-card">
+ <div class="episode-card__box">
+ <a class="episode-card__link" href="/audio/2622374"></a>
+ <div class="episode-card__info">
+ <h3 class="episode-card__title episode-card__title__brand">
+ <span>
+ Аэростат
+ </span>
+ </h3>
+ <h3 class="episode-card__title">
+ <span>
+ Выпуск 879. То да Сё № 22
+ </span>
+ </h3>
+
+
+
+ <div class="episode-card__icon"></div>
+ <div class="episode-card__duration">
+ 46:01
+ </div>
+ </div>
+ </div>
+ </div>
+
+ </li>
+ <li class="audio__item">
+
+ <div class="episode-card">
+ <div class="episode-card__box">
+ <a class="episode-card__link" href="/audio/2621443"></a>
+ <div class="episode-card__info">
+ <h3 class="episode-card__title episode-card__title__brand">
+ <span>
+ Аэростат
+ </span>
+ </h3>
+ <h3 class="episode-card__title">
+ <span>
+ Выпуск 878. Целительная сила музыки
+ </span>
+ </h3>
+
+
+
+ <div class="episode-card__icon"></div>
+ <div class="episode-card__duration">
+ 46:01
+ </div>
+ </div>
+ </div>
+ </div>
+
+ </li>
+ <li class="audio__item">
+
+ <div class="episode-card">
+ <div class="episode-card__box">
+ <a class="episode-card__link" href="/audio/2619992"></a>
+ <div class="episode-card__info">
+ <h3 class="episode-card__title episode-card__title__brand">
+ <span>
+ Аэростат
+ </span>
+ </h3>
+ <h3 class="episode-card__title">
+ <span>
+ Выпуск 877. Новые Песни Марта
+ </span>
+ </h3>
+
+
+
+ <div class="episode-card__icon"></div>
+ <div class="episode-card__duration">
+ 46:01
+ </div>
+ </div>
+ </div>
+ </div>
+
+ </li>
+ <li class="audio__item">
+
+ <div class="episode-card">
+ <div class="episode-card__box">
+ <a class="episode-card__link" href="/audio/2618401"></a>
+ <div class="episode-card__info">
+ <h3 class="episode-card__title episode-card__title__brand">
+ <span>
+ Аэростат
+ </span>
+ </h3>
+ <h3 class="episode-card__title">
+ <span>
+ Выпуск 876. Шаманизм
+ </span>
+ </h3>
+
+
+
+ <div class="episode-card__icon"></div>
+ <div class="episode-card__duration">
+ 46:01
+ </div>
+ </div>
+ </div>
+ </div>
+
+ </li>
+ <li class="audio__item">
+
+ <div class="episode-card">
+ <div class="episode-card__box">
+ <a class="episode-card__link" href="/audio/2617736"></a>
+ <div class="episode-card__info">
+ <h3 class="episode-card__title episode-card__title__brand">
+ <span>
+ Аэростат
+ </span>
+ </h3>
+ <h3 class="episode-card__title">
+ <span>
+ Выпуск 875. Новые Имена
+ </span>
+ </h3>
+
+
+
+ <div class="episode-card__icon"></div>
+ <div class="episode-card__duration">
+ 46:01
+ </div>
+ </div>
+ </div>
+ </div>
+
+ </li>
+ <li class="audio__item">
+
+ <div class="episode-card">
+ <div class="episode-card__box">
+ <a class="episode-card__link" href="/audio/2615992"></a>
+ <div class="episode-card__info">
+ <h3 class="episode-card__title episode-card__title__brand">
+ <span>
+ Аэростат
+ </span>
+ </h3>
+ <h3 class="episode-card__title">
+ <span>
+ Выпуск 874. То да сё № 21
+ </span>
+ </h3>
+
+
+
+ <div class="episode-card__icon"></div>
+ <div class="episode-card__duration">
+ 46:01
+ </div>
+ </div>
+ </div>
+ </div>
+
+ </li>
+ <li class="audio__item">
+
+ <div class="episode-card">
+ <div class="episode-card__box">
+ <a class="episode-card__link" href="/audio/2614575"></a>
+ <div class="episode-card__info">
+ <h3 class="episode-card__title episode-card__title__brand">
+ <span>
+ Аэростат
+ </span>
+ </h3>
+ <h3 class="episode-card__title">
+ <span>
+ Выпуск 873. Новые Песни Февраля
+ </span>
+ </h3>
+
+
+
+ <div class="episode-card__icon"></div>
+ <div class="episode-card__duration">
+ 46:01
+ </div>
+ </div>
+ </div>
+ </div>
+
+ </li>
+ <li class="audio__item">
+
+ <div class="episode-card">
+ <div class="episode-card__box">
+ <a class="episode-card__link" href="/audio/2613623"></a>
+ <div class="episode-card__info">
+ <h3 class="episode-card__title episode-card__title__brand">
+ <span>
+ Аэростат
+ </span>
+ </h3>
+ <h3 class="episode-card__title">
+ <span>
+ Выпуск 872. Имболк: Романтизм
+ </span>
+ </h3>
+
+
+
+ <div class="episode-card__icon"></div>
+ <div class="episode-card__duration">
+ 46:01
+ </div>
+ </div>
+ </div>
+ </div>
+
+ </li>
+ <li class="audio__item">
+
+ <div class="episode-card">
+ <div class="episode-card__box">
+ <a class="episode-card__link" href="/audio/2611838"></a>
+ <div class="episode-card__info">
+ <h3 class="episode-card__title episode-card__title__brand">
+ <span>
+ Аэростат
+ </span>
+ </h3>
+ <h3 class="episode-card__title">
+ <span>
+ Выпуск 871. Кто Есть Кто?
+ </span>
+ </h3>
+
+
+
+ <div class="episode-card__icon"></div>
+ <div class="episode-card__duration">
+ 46:01
+ </div>
+ </div>
+ </div>
+ </div>
+
+ </li>
+ <li class="audio__item">
+
+ <div class="episode-card">
+ <div class="episode-card__box">
+ <a class="episode-card__link" href="/audio/2610401"></a>
+ <div class="episode-card__info">
+ <h3 class="episode-card__title episode-card__title__brand">
+ <span>
+ Аэростат
+ </span>
+ </h3>
+ <h3 class="episode-card__title">
+ <span>
+ Выпуск 870. То и Сё № 20
+ </span>
+ </h3>
+
+
+
+ <div class="episode-card__icon"></div>
+ <div class="episode-card__duration">
+ 46:01
+ </div>
+ </div>
+ </div>
+ </div>
+
+ </li>
+ <li class="audio__item">
+
+ <div class="episode-card">
+ <div class="episode-card__box">
+ <a class="episode-card__link" href="/audio/2607924"></a>
+ <div class="episode-card__info">
+ <h3 class="episode-card__title episode-card__title__brand">
+ <span>
+ Аэростат
+ </span>
+ </h3>
+ <h3 class="episode-card__title">
+ <span>
+ Выпуск 869. Новые Песни Января
+ </span>
+ </h3>
+
+
+
+ <div class="episode-card__icon"></div>
+ <div class="episode-card__duration">
+ 46:01
+ </div>
+ </div>
+ </div>
+ </div>
+
+ </li>
+ <li class="audio__item">
+
+ <div class="episode-card">
+ <div class="episode-card__box">
+ <a class="episode-card__link" href="/audio/2607923"></a>
+ <div class="episode-card__info">
+ <h3 class="episode-card__title episode-card__title__brand">
+ <span>
+ Аэростат
+ </span>
+ </h3>
+ <h3 class="episode-card__title">
+ <span>
+ Выпуск 868. Новогодние притчи
+ </span>
+ </h3>
+
+
+
+ <div class="episode-card__icon"></div>
+ <div class="episode-card__duration">
+ 46:01
+ </div>
+ </div>
+ </div>
+ </div>
+
+ </li>
+ <li class="audio__item">
+
+ <div class="episode-card">
+ <div class="episode-card__box">
+ <a class="episode-card__link" href="/audio/2606839"></a>
+ <div class="episode-card__info">
+ <h3 class="episode-card__title episode-card__title__brand">
+ <span>
+ Аэростат
+ </span>
+ </h3>
+ <h3 class="episode-card__title">
+ <span>
+ Выпуск 867. Предновогодняя
+ </span>
+ </h3>
+
+
+
+ <div class="episode-card__icon"></div>
+ <div class="episode-card__duration">
+ 46:01
+ </div>
+ </div>
+ </div>
+ </div>
+
+ </li>
+ <li class="audio__item">
+
+ <div class="episode-card">
+ <div class="episode-card__box">
+ <a class="episode-card__link" href="/audio/2605330"></a>
+ <div class="episode-card__info">
+ <h3 class="episode-card__title episode-card__title__brand">
+ <span>
+ Аэростат
+ </span>
+ </h3>
+ <h3 class="episode-card__title">
+ <span>
+ Выпуск 866. Роберт Плант и Элисон Краусс
+ </span>
+ </h3>
+
+
+
+ <div class="episode-card__icon"></div>
+ <div class="episode-card__duration">
+ 46:01
+ </div>
+ </div>
+ </div>
+ </div>
+
+ </li>
+ <li class="audio__item">
+
+ <div class="episode-card">
+ <div class="episode-card__box">
+ <a class="episode-card__link" href="/audio/2603883"></a>
+ <div class="episode-card__info">
+ <h3 class="episode-card__title episode-card__title__brand">
+ <span>
+ Аэростат
+ </span>
+ </h3>
+ <h3 class="episode-card__title">
+ <span>
+ Выпуск 865. 8 Наблюдений
+ </span>
+ </h3>
+
+
+
+ <div class="episode-card__icon"></div>
+ <div class="episode-card__duration">
+ 46:01
+ </div>
+ </div>
+ </div>
+ </div>
+
+ </li>
+ </ul>
+ </div>
+
+ <div class="audio__navigation">
+ <a class="audio__button audio__button--prev" href="#prev"></a>
+ <a class="audio__button audio__button--next" href="#next"></a>
+ </div>
+ </div>
+
+ </section>
+ <div class="section program-about">
+ <div class="section__top">
+ <div class="section__title">О программе</div>
+ </div>
+ <div class="section__content program-about__text">
+ <p>Вы не можете быть до конца уверены, что на этот раз вам откроет БГ &ndash; будь то взгляд на группу Doors или столь глобальные вопросы, как: что такое новое время, как делится история мира в соответствии с древней индийской космогонией, стоит ли ждать ветра перемен, ждет ли нас духовное возрождение, где граница между прошлым и будущим. А может и вовсе не стоит искать ответы на эти вопросы? Потому что это не те вопросы, а потому и ответы не приведут вас к истине...</p>
+
+<p>Прислушаемся к Борису Гребенщикову, который с улыбкой говорит всем нам &quot;Здравствуйте!&quot; и находит самые простые ответы...</p>
+ </div>
+</div>
+ <div class="slot slot--default">
+ <!-- Adv slot 310 [ -->
+
+
+
+
+
+
+ <!--AdFox START-->
+<!--vgtrk.com-->
+<!--Площадка: smotrim.ru / Вести / inpage-->
+<!--Категория: <не задана>-->
+<!--Тип баннера: Inpage combo-->
+<div id="adfox_16088855316344568"></div>
+<script>
+ window.yaContextCb.push(()=>{
+ Ya.adfoxCode.createAdaptive({
+ ownerId: 166267,
+ containerId: 'adfox_16088855316344568',
+ params: {
+ p1: 'cnuli',
+ p2: 'gyer',
+ insertAfter: 'p',
+ insertPosition: '1',
+ stick: false,
+ stickTo: 'auto',
+ stickyColorScheme: 'light',
+ puid2: '',
+ puid3: '',
+ puid4: '',
+ puid10: '',
+ puid11: '',
+ puid12: window.tags,
+ pk: window.tagsTitle,
+ pke: '1'
+ }
+ }, ['desktop'], {
+ tabletWidth: 1024,
+ phoneWidth: 736,
+ isAutoReloads: false
+ })
+ })
+</script>
+
+
+
+
+
+
+ <!--AdFox START-->
+<!--vgtrk.com-->
+<!--Площадка: smotrim.ru / Вести / inpage mobile-->
+<!--Категория: <не задана>-->
+<!--Тип баннера: Inpage combo-->
+<div id="adfox_160888596368771928"></div>
+<script>
+ window.yaContextCb.push(()=>{
+ Ya.adfoxCode.createAdaptive({
+ ownerId: 166267,
+ containerId: 'adfox_160888596368771928',
+ params: {
+ p1: 'cnulj',
+ p2: 'gyer',
+ insertAfter: 'p',
+ insertPosition: '1',
+ stick: false,
+ stickTo: 'auto',
+ stickyColorScheme: 'light',
+ puid2: '',
+ puid3: '',
+ puid4: '',
+ puid10: '',
+ puid11: '',
+ puid12: window.tags,
+ pk: window.tagsTitle,
+ pke: '1'
+ }
+ }, ['tablet', 'phone'], {
+ tabletWidth: 1024,
+ phoneWidth: 736,
+ isAutoReloads: false
+ })
+ })
+</script>
+
+
+
+
+
+ <div class="vgtrk-a1" data-id="604">
+
+ <!--AdFox START-->
+<!--vgtrk.com-->
+<!--Площадка: smotrim.ru / Главная/весь сайт / под 2 анонсом | mobile-->
+<!--Категория: <не задана>-->
+<!--Тип баннера: Мобильный 320х100-->
+<div id="adfox_164008543820976781"></div>
+<script>
+ window.yaContextCb.push(()=>{
+ Ya.adfoxCode.createAdaptive({
+ ownerId: 166267,
+ containerId: 'adfox_164008543820976781',
+ params: {
+ p1: 'clviw',
+ p2: 'ffei',
+ puid2: '',
+ puid3: '',
+ puid4: '',
+ puid10: '',
+ puid11: '',
+ puid12: window.tags,
+ pk: window.tagsTitle,
+ pke: '1'
+ }
+ }, ['tablet', 'phone'], {
+ tabletWidth: 1024,
+ phoneWidth: 736,
+ isAutoReloads: false
+ })
+ })
+</script>
+ </div>
+
+
+
+
+
+ <div class="vgtrk-a1" data-id="592">
+
+ <!--AdFox START-->
+<!--vgtrk.com-->
+<!--Площадка: smotrim.ru / Главная/весь сайт / Перетяжка середина | mobile-->
+<!--Категория: <не задана>-->
+<!--Тип баннера: Мобильный middle-->
+<div style="max-height: 300px; position: relative">
+<div id="adfox_160888808039868553"></div>
+<script>
+ window.yaContextCb.push(()=>{
+ Ya.adfoxCode.createAdaptive({
+ ownerId: 166267,
+ containerId: 'adfox_160888808039868553',
+ params: {
+ p1: 'cnukv',
+ p2: 'hbki',
+ puid2: '',
+ puid3: '',
+ puid4: '',
+ puid10: '',
+ puid11: '',
+ puid12: window.tags,
+ pk: window.tagsTitle,
+ pke: '1'
+ }
+ }, ['tablet', 'phone'], {
+ tabletWidth: 1024,
+ phoneWidth: 736,
+ isAutoReloads: false
+ })
+ })
+</script>
+</div>
+
+ </div>
+
+
+
+
+
+ <!-- ] Adv slot 310 -->
+ </div>
+ <section id="persons" class="person-slider">
+ <header class="person-slider__header">
+ <h2 class="person-slider__title">Персоны</h2>
+ <div class="person-slider__filter">
+ <div class="filter">
+ <div class="filter__content">
+ <div class="filter__slider">
+ <ul class="filter__list">
+ <li class="filter__item">
+ <a class="filter__link" href="#persons-1">Автор и ведущий</a>
+ </li>
+ </ul>
+ </div>
+ </div>
+ </div>
+ </div>
+ </header>
+
+
+ <div id="persons-1" class="person-slider__content">
+ <div class="person-slider__slider">
+ <ul class="person-slider__list">
+
+ <li class="person-slider__item">
+ <div class="person-slider__box">
+ <div class="person-slider__preview">
+ <div class="person-slider__picture">
+ <a class="person-slider__link" href="/person/210324">
+ <img class="swiper-lazy" data-src="https://cdn-st2.rtr-vesti.ru/vh/pictures/b/287/293.jpg"
+ alt="Борис Гребенщиков"
+ title="Борис Гребенщиков">
+ <div class="swiper-lazy-preloader"></div>
+ </a>
+ </div>
+ </div>
+ <div class="person-slider__info">
+ <h3 class="person-slider__title">
+ <a class="person-slider__link" href="/person/210324">
+ Борис Гребенщиков
+ </a>
+ </h3>
+ </div>
+ </div>
+ </li>
+
+ </ul>
+ </div>
+ <div class="person-slider__navigation">
+ <div class="person-slider__button-holder">
+ <div class="person-slider__button-place">
+ <a class="person-slider__button person-slider__button--prev" href="#prev"></a>
+ </div>
+ </div>
+ <div class="person-slider__button-holder">
+ <div class="person-slider__button-place">
+ <a class="person-slider__button person-slider__button--next" href="#next"></a>
+ </div>
+ </div>
+ </div>
+ </div>
+
+ </section>
+
+
+
+
+
+
+
+ <section class="brand brand--slider brand--ajax brand--black brand--preset-vhdr">
+ <header class="brand__header">
+
+ <h2 class="brand__title">
+ <span>
+ Слушаем также
+ </span>
+ </h2>
+
+ </header>
+ <div class="brand__content">
+ <div class="brand__slider">
+ <ul class="brand__list">
+
+ </ul>
+ </div>
+ <div class="brand__navigation">
+ <div class="brand__button-holder">
+ <div class="brand__button-place">
+ <a class="brand__button brand__button--prev" href="#prev"></a>
+ </div>
+ </div>
+ <div class="brand__button-holder">
+ <div class="brand__button-place">
+ <a class="brand__button brand__button--next" href="#next"></a>
+ </div>
+ </div>
+ </div>
+ </div>
+</section>
+ <div class="program-top__tags">
+ <div class="tags">
+ <div class="tags__item">
+ <a class="tags__link" href="/brands/tag/2550">
+ Борис Гребенщиков
+ </a>
+ </div>
+ <div class="tags__item">
+ <a class="tags__link" href="/brands/tag/43626">
+ Радио России
+ </a>
+ </div>
+ <div class="tags__item">
+ <a class="tags__link" href="/brands/tag/23296">
+ аэростат
+ </a>
+ </div>
+ <div class="tags__item">
+ <a class="tags__link" href="/brands/tag/1078">
+ музыка
+ </a>
+ </div>
+ <div class="tags__item">
+ <a class="tags__link" href="/brands/tag/255439">
+ РКПрограммы
+ </a>
+ </div>
+ <div class="tags__item">
+ <a class="tags__link" href="/brands/tag/250699">
+ Радио Культура
+ </a>
+ </div>
+ <div class="tags__item">
+ <a class="tags__link" href="/brands/tag/237499">
+ музыкальные радиошоу
+ </a>
+ </div>
+ </div>
+ </div>
+ <div class="slot slot--default">
+ <!-- Adv slot 299 [ -->
+
+
+
+ <!-- ] Adv slot 299 -->
+ </div>
+<footer class="footer">
+ <div class="footer__logo">
+ <a class="footer__link" href="/"></a>
+ </div>
+ <div class="footer__navigation">
+ <div class="navigation">
+ <div class="navigation__control"></div>
+ <div class="navigation__content">
+ <ul class="navigation__list">
+ <li class="navigation__item">
+ <a class="navigation__link" href="/?utm_source=internal&amp;utm_medium=menu-group&amp;utm_campaign=menu-main">
+ Главное
+ </a>
+ </li>
+ <li class="navigation__item">
+ <a class="navigation__link" href="/vesti?utm_source=internal&amp;utm_medium=menu-group&amp;utm_campaign=menu-main">
+ Вести
+ </a>
+ </li>
+ <li class="navigation__item">
+ <a class="navigation__link" href="/cinema?utm_source=internal&amp;utm_medium=menu-group&amp;utm_campaign=menu-main">
+ Кино и шоу
+ </a>
+ </li>
+ <li class="navigation__item">
+ <a class="navigation__link" href="/radio?utm_source=internal&amp;utm_medium=menu-group&amp;utm_campaign=menu-main">
+ Слушаем
+ </a>
+ </li>
+ <li class="navigation__item">
+ <a class="navigation__link" href="/channels?utm_source=internal&amp;utm_medium=menu-group&amp;utm_campaign=menu-main">
+ Эфир
+ </a>
+ </li>
+ <li class="navigation__item navigation__special">
+ <a class="navigation__link" href="/pick/special-donbass">Специальная военная операция</a>
+ </li>
+ </ul>
+ </div>
+</div>
+ </div>
+ <div class="footer__store">
+ <div class="store">
+ <div class="store__preview"></div>
+ <div class="store__content">
+ <h2 class="store__title">Смотрим на</h2>
+ <ul class="store__list">
+ <li class="store__item">
+ <a class="store__link" href="https://apps.apple.com/us/app/смотрим-сериалы-кино-и-шоу/id1526501534?utm_source=internal&amp;utm_medium=menu-group&amp;utm_campaign=menu-footer-apps" target="_blank">
+ iOS
+ </a>
+ </li>
+ <li class="store__item">
+ <a class="store__link" href="https://play.google.com/store/apps/details?utm_source=internal&amp;utm_medium=menu-group&amp;utm_campaign=menu-footer-apps&amp;id=com.vgtrk.smotrim" target="_blank">
+ Android
+ </a>
+ </li>
+ </ul>
+ </div>
+</div>
+ </div>
+ <div class="footer__menu">
+ <div class="menu">
+ <div class="menu__content">
+ <ul class="menu__list">
+ <li class="menu__item">
+ <a class="menu__link" href="https://smotrim.ru/article/2491124?utm_source=internal&amp;utm_medium=menu-group&amp;utm_campaign=menu-footer-docs">
+ О платформе
+ </a>
+ </li>
+ <li class="menu__item">
+ <a class="menu__link" href="https://smotrim.ru/article/2469904?utm_source=internal&amp;utm_medium=menu-group&amp;utm_campaign=menu-footer-docs">
+ Пользовательское соглашение сервиса &quot;Смотрим&quot;
+ </a>
+ </li>
+ <li class="menu__item">
+ <a class="menu__link" href="https://smotrim.ru/article/2469947?utm_source=internal&amp;utm_medium=menu-group&amp;utm_campaign=menu-footer-docs">
+ Обратная связь
+ </a>
+ </li>
+ <li class="menu__item">
+ <a class="menu__link" target="_blank" href="https://rosreklama.vgtrk.ru/?utm_source=internal&amp;utm_medium=menu-group&amp;utm_campaign=menu-footer-docs">
+ Реклама на сайте
+ </a>
+ </li>
+
+ </ul>
+ </div>
+</div>
+ </div>
+ <div class="footer__info">
+ <p>&copy; 2022 Сетевое издание "Смотрим". Учредитель: Федеральное государственное унитарное предприятие "Всероссийская государственная телевизионная и радиовещательная компания" (ВГТРК). <a href="https://rkn.gov.ru/mass-communications/reestr/media/?id=802971" target="_blank">Свидетельство о регистрации СМИ ЭЛ № ФС 77 – 78574 от 08.07.2020</a>. Выдано Федеральной службой по надзору в сфере связи, информационных технологий и массовых коммуникаций. Главный редактор: Виноградов Е.А. Адрес электронной почты редакции: <a href="mailto:info@smotrim.ru">info@smotrim.ru</a>, телефон редакции: +7(495)232-63-33. Для лиц старше 18 лет. Все права на любые материалы, опубликованные на сайте, защищены в соответствии с российским и международным законодательством об интеллектуальной собственности. Любое использование текстовых, фото, аудио и видеоматериалов возможно только с согласия правообладателя (ВГТРК).</p>
+ </div>
+ <div class="footer__age-restriction">
+ <i class="footer__icon"></i>
+ </div>
+ <div class="footer__social-groups">
+ <div class="social-groups">
+ <div class="social-groups__content">
+ <ul class="social-groups__list">
+ <li class="social-groups__item">
+ <a
+ class="social-groups__link social-groups__link--odnoklassniki"
+ href="https://ok.ru/group/68835016835126"
+ target="_blank"
+ ></a>
+ </li>
+ <li class="social-groups__item">
+ <a
+ class="social-groups__link social-groups__link--yzen"
+ href="https://zen.yandex.ru/smotrimru"
+ target="_blank"
+ ></a>
+ </li>
+ <li class="social-groups__item">
+ <a
+ class="social-groups__link social-groups__link--telegram"
+ href="https://t.me/smotrim_ru"
+ target="_blank"
+ ></a>
+ </li>
+ <li class="social-groups__item">
+ <a
+ class="social-groups__link social-groups__link--tiktok"
+ href="https://www.tiktok.com/@smotrimru"
+ target="_blank"
+ ></a>
+ </li>
+ </ul>
+ </div>
+</div>
+ </div>
+
+ <div class="footer__counters">
+ <div class="counters">
+ <!-- footer counters web -->
+
+<!-- Yandex.Metrika counter -->
+<script type="text/javascript" >
+ (function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};
+ m[i].l=1*new Date();k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})
+ (window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym");
+
+ ym(67731175, "init", {
+ clickmap:true,
+ trackLinks:true,
+ accurateTrackBounce:true,
+ webvisor:true
+ });
+</script>
+<noscript><div><img src="https://mc.yandex.ru/watch/67731175" style="position:absolute; left:-9999px;" alt="" /></div></noscript>
+<!-- /Yandex.Metrika counter -->
+
+<!-- Yandex.Metrika counter -->
+<script type="text/javascript" >
+ (function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};
+ m[i].l=1*new Date();k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})
+ (window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym");
+
+ ym(55382026, "init", {
+ clickmap:true,
+ trackLinks:true,
+ accurateTrackBounce:true,
+ webvisor:true
+ });
+</script>
+<noscript><div><img src="https://mc.yandex.ru/watch/55382026" style="position:absolute; left:-9999px;" alt="" /></div></noscript>
+<!-- /Yandex.Metrika counter -->
+
+<!-- tns-counter -->
+<script language="JavaScript">
+ var img = new Image();
+ img.src = 'https://www.tns-counter.ru/V13a***R>' + document.referrer.replace(/\*/g,'%2a') + '*vgtrk_ru/ru/CP1251/tmsec=smotrim_total/';
+</script>
+<noscript>
+ <img src="https://www.tns-counter.ru/V13a****vgtrk_ru/ru/CP1251/tmsec=smotrim_total/" width="1" height="1" alt="" />
+</noscript>
+<!-- /tns-counter -->
+<!-- Rating Mail.ru counter -->
+<script type="text/javascript">
+var _tmr = window._tmr || (window._tmr = []);
+_tmr.push({id: "3203839", type: "pageView", start: (new Date()).getTime()});
+(function (d, w, id) {
+ if (d.getElementById(id)) return;
+ var ts = d.createElement("script"); ts.type = "text/javascript"; ts.async = true; ts.id = id;
+ ts.src = "https://top-fwz1.mail.ru/js/code.js";
+ var f = function () {var s = d.getElementsByTagName("script")[0]; s.parentNode.insertBefore(ts, s);};
+ if (w.opera == "[object Opera]") { d.addEventListener("DOMContentLoaded", f, false); } else { f(); }
+})(document, window, "topmailru-code");
+</script><noscript><div>
+<img src="https://top-fwz1.mail.ru/counter?id=3203839;js=na" style="border:0;position:absolute;left:-9999px;" alt="Top.Mail.Ru" />
+</div></noscript>
+<!-- //Rating Mail.ru counter -->
+
+<script>
+ ((counterHostname) => {
+ window.MSCounter = {
+ counterHostname: counterHostname
+ };
+ window.mscounterCallbacks = window.mscounterCallbacks || [];
+ window.mscounterCallbacks.push(() => {
+ msCounterExampleCom = new MSCounter.counter({
+ 'account':'smotrim',
+ 'tmsec': 'smotrim',
+ 'autohit' : true
+ });
+ });
+
+ const newScript = document.createElement('script');
+ newScript.async = true;
+ newScript.src = `${counterHostname}/ncc/counter.js`;
+
+ const referenceNode = document.querySelector('script');
+ if (referenceNode) {
+ referenceNode.parentNode.insertBefore(newScript, referenceNode);
+ } else {
+ document.firstElementChild.appendChild(newScript);
+ }
+ })('https://tns-counter.ru/');
+</script>
+ </div>
+ </div>
+</footer>
+ </section>
+ <section class="app__aside">
+
+ <aside class="aside">
+ <section class="aside__control">
+ <a class="aside__button aside__button--switch" href="#switch-aside" data-label="Вести"></a>
+ </section>
+ <section class="aside__content">
+
+ <div class="news-feed news-feed--loading ">
+ <header class="news-feed__header">
+ <h2 class="news-feed__title">Сейчас</h2>
+
+
+
+
+ <a class="news-feed__close" href="#hide-news-feed"></a>
+ </header>
+ <div class="news-feed__content">
+ <ul class="news-feed__list"></ul>
+ </div>
+</div>
+
+ </section>
+ </aside>
+
+ </section>
+ </main>
+
+ <section id="outside">
+ <div class="dialog-wrapper">
+ <div class="dialog-confirm">
+ <div class="dialog-confirm__content">
+<!-- <div class="dialog-confirm__title">Вы уверены?</div>-->
+ <div class="dialog-confirm__text">
+ <p></p>
+ </div>
+ <div class="dialog-confirm__bottom">
+ <button class="btn btn-link btn-no close">Закрыть</button>
+ <div class="btn btn-link btn-yes">Регистрация</div>
+ </div>
+ </div>
+ </div>
+
+<!-- <a href="#" class="close"></a>-->
+<!---->
+<!-- <div class="dialog__title">Зарегистрируйтесь!</div>-->
+
+</div>
+ </section>
+
+ <section class="popup">
+ <section class="popup__window">
+ <header class="popup__header">
+ <h2 class="popup__title"></h2>
+ <div class="popup__control">
+ <a class="popup__button popup__button--close" href="#popup-close"></a>
+ </div>
+ </header>
+ <section class="popup__content"></section>
+ </section>
+</section>
+
+ <section id="layout-audio-player" class="layout-player">
+ <div class="layout-player__holder">
+ <div class="layout-player__picture">
+ <a class="layout-player__link" href="#"></a>
+ </div>
+ <div class="layout-player__title"></div>
+ <div class="layout-player__frame">
+
+ <iframe
+ name="layout_player"
+ allow="autoplay"
+ allowfullscreen=""
+ src="https://player.vgtrk.com/iframe/audio/id/2525782/sid/smotrim/"
+ >
+ </iframe>
+ </div>
+ <div class="layout-player__close">
+ <span></span>
+ </div>
+ </div>
+ </section>
+ <section class="grid grid--hidden">
+ <section class="grid__section grid__section--main">
+ <div class="grid__column"></div>
+ <div class="grid__column"></div>
+ <div class="grid__column"></div>
+ <div class="grid__column"></div>
+ <div class="grid__column"></div>
+ <div class="grid__column"></div>
+ <div class="grid__column"></div>
+ <div class="grid__column"></div>
+ <div class="grid__column"></div>
+ <div class="grid__column"></div>
+ <div class="grid__column"></div>
+ <div class="grid__column"></div>
+ </section>
+ <section class="grid__section grid__section--aside"></section>
+</section>
+
+
+ <script src="https://cdnmg-st.smotrim.ru/smotrimru/js/smotrim_71.js?v=1650990624"></script>
+
+ <!-- footer misc code -->
+
+ <script>
+ // old browsers alert
+ if (/MSIE \d|Trident.*rv:/.test(navigator.userAgent) || window.navigator.userAgent.indexOf("Windows NT 6.0") != -1 || window.navigator.userAgent.indexOf("Windows NT 5.1") != -1 || window.navigator.userAgent.indexOf("Windows NT 5.0") != -1) {
+ var fileref=document.createElement('script');
+ fileref.setAttribute("type","text/javascript");
+ fileref.setAttribute("src", "/js/old-browsers.js");
+ document.getElementsByTagName("head")[0].appendChild(fileref);
+ }
+ // end old browsers alert
+ </script>
+ <script>
+ ym(67731175, 'userParams', {
+ is_registered: window.isLogged ? 1 : 0
+ });
+ </script>
+
+ <section id="ajaxify-loader" class="ajaxify-loader">
+ <div class="ajaxify-loader__container">
+ <div class="ajaxify-loader__icon"></div>
+ <div class="ajaxify-loader__progress">
+ <span></span>
+ </div>
+ </div>
+ </section>
+
+ </body>
+</html> \ No newline at end of file