package jamendo

import (
	Ωcompat "github.com/tenta-browser/go-video-downloader/gen/youtube_dl/compat"
	Ωcommon "github.com/tenta-browser/go-video-downloader/gen/youtube_dl/extractor/common"
	Ωutils "github.com/tenta-browser/go-video-downloader/gen/youtube_dl/utils"
	λ "github.com/tenta-browser/go-video-downloader/runtime"
)

var (
	InfoExtractor  λ.Object
	JamendoAlbumIE λ.Object
	JamendoIE      λ.Object
	ϒclean_html    λ.Object
	ϒcompat_str    λ.Object
	ϒint_or_none   λ.Object
	ϒtry_get       λ.Object
)

func init() {
	λ.InitModule(func() {
		ϒcompat_str = Ωcompat.ϒcompat_str
		InfoExtractor = Ωcommon.InfoExtractor
		ϒclean_html = Ωutils.ϒclean_html
		ϒint_or_none = Ωutils.ϒint_or_none
		ϒtry_get = Ωutils.ϒtry_get
		JamendoIE = λ.Cal(λ.TypeType, λ.StrLiteral("JamendoIE"), λ.NewTuple(InfoExtractor), func() λ.Dict {
			var (
				JamendoIE__VALID_URL    λ.Object
				JamendoIE__real_extract λ.Object
			)
			JamendoIE__VALID_URL = λ.StrLiteral("(?x)\n                    https?:
			JamendoIE__real_extract = λ.NewFunction("_real_extract",
				[]λ.Param{
					{Name: "self"},
					{Name: "url"},
				},
				0, false, false,
				func(λargs []λ.Object) λ.Object {
					var (
						ϒalbum       λ.Object
						ϒartist      λ.Object
						ϒartist_name λ.Object
						ϒcover_id    λ.Object
						ϒcover_url   λ.Object
						ϒcovers      λ.Object
						ϒdisplay_id  λ.Object
						ϒformats     λ.Object
						ϒget_model   λ.Object
						ϒmodels      λ.Object
						ϒself        = λargs[0]
						ϒsize        λ.Object
						ϒstats       λ.Object
						ϒtag         λ.Object
						ϒtag_name    λ.Object
						ϒtags        λ.Object
						ϒthumbnails  λ.Object
						ϒtitle       λ.Object
						ϒtrack       λ.Object
						ϒtrack_id    λ.Object
						ϒtrack_name  λ.Object
						ϒurl         = λargs[1]
						ϒurls        λ.Object
						ϒwebpage     λ.Object
						τmp0         λ.Object
						τmp1         λ.Object
						τmp2         λ.Object
						τmp3         λ.Object
						τmp4         λ.Object
					)
					τmp0 = λ.Calm(λ.Calm(λ.GetAttr(ϒself, "_VALID_URL_RE", nil), "match", ϒurl), "groups")
					ϒtrack_id = λ.GetItem(τmp0, λ.IntLiteral(0))
					ϒdisplay_id = λ.GetItem(τmp0, λ.IntLiteral(1))
					ϒwebpage = λ.Calm(ϒself, "_download_webpage", λ.Add(λ.StrLiteral("https:
					ϒmodels = λ.Calm(ϒself, "_parse_json", λ.Calm(ϒself, "_html_search_regex", λ.StrLiteral("data-bundled-models='([^']+)"), ϒwebpage, λ.StrLiteral("bundled models")), ϒtrack_id)
					ϒtrack = λ.GetItem(λ.GetItem(λ.GetItem(ϒmodels, λ.StrLiteral("track")), λ.StrLiteral("models")), λ.IntLiteral(0))
					τmp0 = λ.GetItem(ϒtrack, λ.StrLiteral("name"))
					ϒtitle = τmp0
					ϒtrack_name = τmp0
					ϒget_model = λ.NewFunction("<lambda>",
						[]λ.Param{
							{Name: "x"},
						},
						0, false, false,
						func(λargs []λ.Object) λ.Object {
							var (
								ϒx = λargs[0]
							)
							return func() λ.Object {
								if λv := λ.Cal(ϒtry_get, ϒmodels, λ.NewFunction("<lambda>",
									[]λ.Param{
										{Name: "y"},
									},
									0, false, false,
									func(λargs []λ.Object) λ.Object {
										var (
											ϒy = λargs[0]
										)
										return λ.GetItem(λ.GetItem(λ.GetItem(ϒy, ϒx), λ.StrLiteral("models")), λ.IntLiteral(0))
									}), λ.DictType); λ.IsTrue(λv) {
									return λv
								} else {
									return λ.DictLiteral(map[λ.Object]λ.Object{})
								}
							}()
						})
					ϒartist = λ.Cal(ϒget_model, λ.StrLiteral("artist"))
					ϒartist_name = λ.Calm(ϒartist, "get", λ.StrLiteral("name"))
					if λ.IsTrue(ϒartist_name) {
						ϒtitle = λ.Mod(λ.StrLiteral("%s - %s"), λ.NewTuple(
							ϒartist_name,
							ϒtitle,
						))
					}
					ϒalbum = λ.Cal(ϒget_model, λ.StrLiteral("album"))
					ϒformats = λ.Cal(λ.ListType, λ.Cal(λ.NewFunction("<generator>",
						nil,
						0, false, false,
						func(λargs []λ.Object) λ.Object {
							return λ.NewGenerator(func(λgy λ.Yielder) λ.Object {
								var (
									ϒext        λ.Object
									ϒformat_id  λ.Object
									ϒquality    λ.Object
									ϒsub_domain λ.Object
									τmp0        λ.Object
									τmp1        λ.Object
									τmp2        λ.Object
									τmp3        λ.Object
								)
								τmp0 = λ.Cal(λ.BuiltinIter, λ.Cal(λ.EnumerateIteratorType, λ.NewTuple(
									λ.NewTuple(
										λ.StrLiteral("mp31"),
										λ.StrLiteral("mp3l"),
										λ.StrLiteral("mp3"),
									),
									λ.NewTuple(
										λ.StrLiteral("mp32"),
										λ.StrLiteral("mp3d"),
										λ.StrLiteral("mp3"),
									),
									λ.NewTuple(
										λ.StrLiteral("ogg1"),
										λ.StrLiteral("ogg"),
										λ.StrLiteral("ogg"),
									),
									λ.NewTuple(
										λ.StrLiteral("flac"),
										λ.StrLiteral("flac"),
										λ.StrLiteral("flac"),
									),
								)))
								for {
									if τmp1 = λ.NextDefault(τmp0, λ.AfterLast); τmp1 == λ.AfterLast {
										break
									}
									τmp2 = τmp1
									ϒquality = λ.GetItem(τmp2, λ.IntLiteral(0))
									τmp3 = λ.GetItem(τmp2, λ.IntLiteral(1))
									ϒformat_id = λ.GetItem(τmp3, λ.IntLiteral(0))
									ϒsub_domain = λ.GetItem(τmp3, λ.IntLiteral(1))
									ϒext = λ.GetItem(τmp3, λ.IntLiteral(2))
									λgy.Yield(λ.DictLiteral(map[string]λ.Object{
										"url": λ.Mod(λ.StrLiteral("https:
											ϒsub_domain,
											ϒtrack_id,
											ϒformat_id,
										)),
										"format_id": ϒformat_id,
										"ext":       ϒext,
										"quality":   ϒquality,
									}))
								}
								return λ.None
							})
						})))
					λ.Calm(ϒself, "_sort_formats", ϒformats)
					ϒurls = λ.NewList()
					ϒthumbnails = λ.NewList()
					τmp0 = λ.Cal(λ.BuiltinIter, λ.Calm(λ.Calm(ϒtrack, "get", λ.StrLiteral("cover"), λ.DictLiteral(map[λ.Object]λ.Object{})), "items"))
					for {
						if τmp1 = λ.NextDefault(τmp0, λ.AfterLast); τmp1 == λ.AfterLast {
							break
						}
						τmp2 = τmp1
						_ = λ.GetItem(τmp2, λ.IntLiteral(0))
						ϒcovers = λ.GetItem(τmp2, λ.IntLiteral(1))
						τmp2 = λ.Cal(λ.BuiltinIter, λ.Calm(ϒcovers, "items"))
						for {
							if τmp3 = λ.NextDefault(τmp2, λ.AfterLast); τmp3 == λ.AfterLast {
								break
							}
							τmp4 = τmp3
							ϒcover_id = λ.GetItem(τmp4, λ.IntLiteral(0))
							ϒcover_url = λ.GetItem(τmp4, λ.IntLiteral(1))
							if λ.IsTrue(func() λ.Object {
								if λv := λ.NewBool(!λ.IsTrue(ϒcover_url)); λ.IsTrue(λv) {
									return λv
								} else {
									return λ.NewBool(λ.Contains(ϒurls, ϒcover_url))
								}
							}()) {
								continue
							}
							λ.Calm(ϒurls, "append", ϒcover_url)
							ϒsize = λ.Cal(ϒint_or_none, λ.Calm(ϒcover_id, "lstrip", λ.StrLiteral("size")))
							λ.Calm(ϒthumbnails, "append", λ.DictLiteral(map[string]λ.Object{
								"id":     ϒcover_id,
								"url":    ϒcover_url,
								"width":  ϒsize,
								"height": ϒsize,
							}))
						}
					}
					ϒtags = λ.NewList()
					τmp0 = λ.Cal(λ.BuiltinIter, λ.Calm(ϒtrack, "get", λ.StrLiteral("tags"), λ.NewList()))
					for {
						if τmp1 = λ.NextDefault(τmp0, λ.AfterLast); τmp1 == λ.AfterLast {
							break
						}
						ϒtag = τmp1
						ϒtag_name = λ.Calm(ϒtag, "get", λ.StrLiteral("name"))
						if !λ.IsTrue(ϒtag_name) {
							continue
						}
						λ.Calm(ϒtags, "append", ϒtag_name)
					}
					ϒstats = func() λ.Object {
						if λv := λ.Calm(ϒtrack, "get", λ.StrLiteral("stats")); λ.IsTrue(λv) {
							return λv
						} else {
							return λ.DictLiteral(map[λ.Object]λ.Object{})
						}
					}()
					return λ.DictLiteral(map[string]λ.Object{
						"id":          ϒtrack_id,
						"display_id":  ϒdisplay_id,
						"thumbnails":  ϒthumbnails,
						"title":       ϒtitle,
						"description": λ.Calm(ϒtrack, "get", λ.StrLiteral("description")),
						"duration":    λ.Cal(ϒint_or_none, λ.Calm(ϒtrack, "get", λ.StrLiteral("duration"))),
						"artist":      ϒartist_name,
						"track":       ϒtrack_name,
						"album":       λ.Calm(ϒalbum, "get", λ.StrLiteral("name")),
						"formats":     ϒformats,
						"license": func() λ.Object {
							if λv := λ.Calm(λ.StrLiteral("-"), "join", λ.Calm(ϒtrack, "get", λ.StrLiteral("licenseCC"), λ.NewList())); λ.IsTrue(λv) {
								return λv
							} else {
								return λ.None
							}
						}(),
						"timestamp":      λ.Cal(ϒint_or_none, λ.Calm(ϒtrack, "get", λ.StrLiteral("dateCreated"))),
						"view_count":     λ.Cal(ϒint_or_none, λ.Calm(ϒstats, "get", λ.StrLiteral("listenedAll"))),
						"like_count":     λ.Cal(ϒint_or_none, λ.Calm(ϒstats, "get", λ.StrLiteral("favorited"))),
						"average_rating": λ.Cal(ϒint_or_none, λ.Calm(ϒstats, "get", λ.StrLiteral("averageNote"))),
						"tags":           ϒtags,
					})
				})
			return λ.ClassDictLiteral(map[string]λ.Object{
				"_VALID_URL":    JamendoIE__VALID_URL,
				"_real_extract": JamendoIE__real_extract,
			})
		}())
		JamendoAlbumIE = λ.Cal(λ.TypeType, λ.StrLiteral("JamendoAlbumIE"), λ.NewTuple(InfoExtractor), func() λ.Dict {
			var (
				JamendoAlbumIE__VALID_URL λ.Object
			)
			JamendoAlbumIE__VALID_URL = λ.StrLiteral("https?:
			return λ.ClassDictLiteral(map[string]λ.Object{
				"_VALID_URL": JamendoAlbumIE__VALID_URL,
			})
		}())
	})
}
// Code generated by transpiler. DO NOT EDIT.

/**
 * Go Video Downloader
 *
 *    Copyright 2019 Tenta, LLC
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *
 * For any questions, please contact developer@tenta.io
 *
 * jamendo/module.go: transpiled from https://github.com/ytdl-org/youtube-dl/blob/master/youtube_dl/extractor/jamendo.py
 */

package jamendo

import (
	Ωcompat "github.com/tenta-browser/go-video-downloader/gen/youtube_dl/compat"
	Ωcommon "github.com/tenta-browser/go-video-downloader/gen/youtube_dl/extractor/common"
	Ωutils "github.com/tenta-browser/go-video-downloader/gen/youtube_dl/utils"
	λ "github.com/tenta-browser/go-video-downloader/runtime"
)

var (
	InfoExtractor  λ.Object
	JamendoAlbumIE λ.Object
	JamendoIE      λ.Object
	ϒclean_html    λ.Object
	ϒcompat_str    λ.Object
	ϒint_or_none   λ.Object
	ϒtry_get       λ.Object
)

func init() {
	λ.InitModule(func() {
		ϒcompat_str = Ωcompat.ϒcompat_str
		InfoExtractor = Ωcommon.InfoExtractor
		ϒclean_html = Ωutils.ϒclean_html
		ϒint_or_none = Ωutils.ϒint_or_none
		ϒtry_get = Ωutils.ϒtry_get
		JamendoIE = λ.Cal(λ.TypeType, λ.StrLiteral("JamendoIE"), λ.NewTuple(InfoExtractor), func() λ.Dict {
			var (
				JamendoIE__VALID_URL    λ.Object
				JamendoIE__real_extract λ.Object
			)
			JamendoIE__VALID_URL = λ.StrLiteral("(?x)\n                    https?://\n                        (?:\n                            licensing\\.jamendo\\.com/[^/]+|\n                            (?:www\\.)?jamendo\\.com\n                        )\n                        /track/(?P<id>[0-9]+)(?:/(?P<display_id>[^/?#&]+))?\n                    ")
			JamendoIE__real_extract = λ.NewFunction("_real_extract",
				[]λ.Param{
					{Name: "self"},
					{Name: "url"},
				},
				0, false, false,
				func(λargs []λ.Object) λ.Object {
					var (
						ϒalbum       λ.Object
						ϒartist      λ.Object
						ϒartist_name λ.Object
						ϒcover_id    λ.Object
						ϒcover_url   λ.Object
						ϒcovers      λ.Object
						ϒdisplay_id  λ.Object
						ϒformats     λ.Object
						ϒget_model   λ.Object
						ϒmodels      λ.Object
						ϒself        = λargs[0]
						ϒsize        λ.Object
						ϒstats       λ.Object
						ϒtag         λ.Object
						ϒtag_name    λ.Object
						ϒtags        λ.Object
						ϒthumbnails  λ.Object
						ϒtitle       λ.Object
						ϒtrack       λ.Object
						ϒtrack_id    λ.Object
						ϒtrack_name  λ.Object
						ϒurl         = λargs[1]
						ϒurls        λ.Object
						ϒwebpage     λ.Object
						τmp0         λ.Object
						τmp1         λ.Object
						τmp2         λ.Object
						τmp3         λ.Object
						τmp4         λ.Object
					)
					τmp0 = λ.Calm(λ.Calm(λ.GetAttr(ϒself, "_VALID_URL_RE", nil), "match", ϒurl), "groups")
					ϒtrack_id = λ.GetItem(τmp0, λ.IntLiteral(0))
					ϒdisplay_id = λ.GetItem(τmp0, λ.IntLiteral(1))
					ϒwebpage = λ.Calm(ϒself, "_download_webpage", λ.Add(λ.StrLiteral("https://www.jamendo.com/track/"), ϒtrack_id), ϒtrack_id)
					ϒmodels = λ.Calm(ϒself, "_parse_json", λ.Calm(ϒself, "_html_search_regex", λ.StrLiteral("data-bundled-models='([^']+)"), ϒwebpage, λ.StrLiteral("bundled models")), ϒtrack_id)
					ϒtrack = λ.GetItem(λ.GetItem(λ.GetItem(ϒmodels, λ.StrLiteral("track")), λ.StrLiteral("models")), λ.IntLiteral(0))
					τmp0 = λ.GetItem(ϒtrack, λ.StrLiteral("name"))
					ϒtitle = τmp0
					ϒtrack_name = τmp0
					ϒget_model = λ.NewFunction("<lambda>",
						[]λ.Param{
							{Name: "x"},
						},
						0, false, false,
						func(λargs []λ.Object) λ.Object {
							var (
								ϒx = λargs[0]
							)
							return func() λ.Object {
								if λv := λ.Cal(ϒtry_get, ϒmodels, λ.NewFunction("<lambda>",
									[]λ.Param{
										{Name: "y"},
									},
									0, false, false,
									func(λargs []λ.Object) λ.Object {
										var (
											ϒy = λargs[0]
										)
										return λ.GetItem(λ.GetItem(λ.GetItem(ϒy, ϒx), λ.StrLiteral("models")), λ.IntLiteral(0))
									}), λ.DictType); λ.IsTrue(λv) {
									return λv
								} else {
									return λ.DictLiteral(map[λ.Object]λ.Object{})
								}
							}()
						})
					ϒartist = λ.Cal(ϒget_model, λ.StrLiteral("artist"))
					ϒartist_name = λ.Calm(ϒartist, "get", λ.StrLiteral("name"))
					if λ.IsTrue(ϒartist_name) {
						ϒtitle = λ.Mod(λ.StrLiteral("%s - %s"), λ.NewTuple(
							ϒartist_name,
							ϒtitle,
						))
					}
					ϒalbum = λ.Cal(ϒget_model, λ.StrLiteral("album"))
					ϒformats = λ.Cal(λ.ListType, λ.Cal(λ.NewFunction("<generator>",
						nil,
						0, false, false,
						func(λargs []λ.Object) λ.Object {
							return λ.NewGenerator(func(λgy λ.Yielder) λ.Object {
								var (
									ϒext        λ.Object
									ϒformat_id  λ.Object
									ϒquality    λ.Object
									ϒsub_domain λ.Object
									τmp0        λ.Object
									τmp1        λ.Object
									τmp2        λ.Object
									τmp3        λ.Object
								)
								τmp0 = λ.Cal(λ.BuiltinIter, λ.Cal(λ.EnumerateIteratorType, λ.NewTuple(
									λ.NewTuple(
										λ.StrLiteral("mp31"),
										λ.StrLiteral("mp3l"),
										λ.StrLiteral("mp3"),
									),
									λ.NewTuple(
										λ.StrLiteral("mp32"),
										λ.StrLiteral("mp3d"),
										λ.StrLiteral("mp3"),
									),
									λ.NewTuple(
										λ.StrLiteral("ogg1"),
										λ.StrLiteral("ogg"),
										λ.StrLiteral("ogg"),
									),
									λ.NewTuple(
										λ.StrLiteral("flac"),
										λ.StrLiteral("flac"),
										λ.StrLiteral("flac"),
									),
								)))
								for {
									if τmp1 = λ.NextDefault(τmp0, λ.AfterLast); τmp1 == λ.AfterLast {
										break
									}
									τmp2 = τmp1
									ϒquality = λ.GetItem(τmp2, λ.IntLiteral(0))
									τmp3 = λ.GetItem(τmp2, λ.IntLiteral(1))
									ϒformat_id = λ.GetItem(τmp3, λ.IntLiteral(0))
									ϒsub_domain = λ.GetItem(τmp3, λ.IntLiteral(1))
									ϒext = λ.GetItem(τmp3, λ.IntLiteral(2))
									λgy.Yield(λ.DictLiteral(map[string]λ.Object{
										"url": λ.Mod(λ.StrLiteral("https://%s.jamendo.com/?trackid=%s&format=%s&from=app-97dab294"), λ.NewTuple(
											ϒsub_domain,
											ϒtrack_id,
											ϒformat_id,
										)),
										"format_id": ϒformat_id,
										"ext":       ϒext,
										"quality":   ϒquality,
									}))
								}
								return λ.None
							})
						})))
					λ.Calm(ϒself, "_sort_formats", ϒformats)
					ϒurls = λ.NewList()
					ϒthumbnails = λ.NewList()
					τmp0 = λ.Cal(λ.BuiltinIter, λ.Calm(λ.Calm(ϒtrack, "get", λ.StrLiteral("cover"), λ.DictLiteral(map[λ.Object]λ.Object{})), "items"))
					for {
						if τmp1 = λ.NextDefault(τmp0, λ.AfterLast); τmp1 == λ.AfterLast {
							break
						}
						τmp2 = τmp1
						_ = λ.GetItem(τmp2, λ.IntLiteral(0))
						ϒcovers = λ.GetItem(τmp2, λ.IntLiteral(1))
						τmp2 = λ.Cal(λ.BuiltinIter, λ.Calm(ϒcovers, "items"))
						for {
							if τmp3 = λ.NextDefault(τmp2, λ.AfterLast); τmp3 == λ.AfterLast {
								break
							}
							τmp4 = τmp3
							ϒcover_id = λ.GetItem(τmp4, λ.IntLiteral(0))
							ϒcover_url = λ.GetItem(τmp4, λ.IntLiteral(1))
							if λ.IsTrue(func() λ.Object {
								if λv := λ.NewBool(!λ.IsTrue(ϒcover_url)); λ.IsTrue(λv) {
									return λv
								} else {
									return λ.NewBool(λ.Contains(ϒurls, ϒcover_url))
								}
							}()) {
								continue
							}
							λ.Calm(ϒurls, "append", ϒcover_url)
							ϒsize = λ.Cal(ϒint_or_none, λ.Calm(ϒcover_id, "lstrip", λ.StrLiteral("size")))
							λ.Calm(ϒthumbnails, "append", λ.DictLiteral(map[string]λ.Object{
								"id":     ϒcover_id,
								"url":    ϒcover_url,
								"width":  ϒsize,
								"height": ϒsize,
							}))
						}
					}
					ϒtags = λ.NewList()
					τmp0 = λ.Cal(λ.BuiltinIter, λ.Calm(ϒtrack, "get", λ.StrLiteral("tags"), λ.NewList()))
					for {
						if τmp1 = λ.NextDefault(τmp0, λ.AfterLast); τmp1 == λ.AfterLast {
							break
						}
						ϒtag = τmp1
						ϒtag_name = λ.Calm(ϒtag, "get", λ.StrLiteral("name"))
						if !λ.IsTrue(ϒtag_name) {
							continue
						}
						λ.Calm(ϒtags, "append", ϒtag_name)
					}
					ϒstats = func() λ.Object {
						if λv := λ.Calm(ϒtrack, "get", λ.StrLiteral("stats")); λ.IsTrue(λv) {
							return λv
						} else {
							return λ.DictLiteral(map[λ.Object]λ.Object{})
						}
					}()
					return λ.DictLiteral(map[string]λ.Object{
						"id":          ϒtrack_id,
						"display_id":  ϒdisplay_id,
						"thumbnails":  ϒthumbnails,
						"title":       ϒtitle,
						"description": λ.Calm(ϒtrack, "get", λ.StrLiteral("description")),
						"duration":    λ.Cal(ϒint_or_none, λ.Calm(ϒtrack, "get", λ.StrLiteral("duration"))),
						"artist":      ϒartist_name,
						"track":       ϒtrack_name,
						"album":       λ.Calm(ϒalbum, "get", λ.StrLiteral("name")),
						"formats":     ϒformats,
						"license": func() λ.Object {
							if λv := λ.Calm(λ.StrLiteral("-"), "join", λ.Calm(ϒtrack, "get", λ.StrLiteral("licenseCC"), λ.NewList())); λ.IsTrue(λv) {
								return λv
							} else {
								return λ.None
							}
						}(),
						"timestamp":      λ.Cal(ϒint_or_none, λ.Calm(ϒtrack, "get", λ.StrLiteral("dateCreated"))),
						"view_count":     λ.Cal(ϒint_or_none, λ.Calm(ϒstats, "get", λ.StrLiteral("listenedAll"))),
						"like_count":     λ.Cal(ϒint_or_none, λ.Calm(ϒstats, "get", λ.StrLiteral("favorited"))),
						"average_rating": λ.Cal(ϒint_or_none, λ.Calm(ϒstats, "get", λ.StrLiteral("averageNote"))),
						"tags":           ϒtags,
					})
				})
			return λ.ClassDictLiteral(map[string]λ.Object{
				"_VALID_URL":    JamendoIE__VALID_URL,
				"_real_extract": JamendoIE__real_extract,
			})
		}())
		JamendoAlbumIE = λ.Cal(λ.TypeType, λ.StrLiteral("JamendoAlbumIE"), λ.NewTuple(InfoExtractor), func() λ.Dict {
			var (
				JamendoAlbumIE__VALID_URL λ.Object
			)
			JamendoAlbumIE__VALID_URL = λ.StrLiteral("https?://(?:www\\.)?jamendo\\.com/album/(?P<id>[0-9]+)")
			return λ.ClassDictLiteral(map[string]λ.Object{
				"_VALID_URL": JamendoAlbumIE__VALID_URL,
			})
		}())
	})
}
