Check-in [21152c0d6e]
Overview
| Comment: | Added tracks(genres), albums, and playlists; none of the API streaming URLs work yet |
|---|---|
| Downloads: | Tarball | ZIP archive | SQL archive |
| Timelines: | family | ancestors | descendants | both | trunk |
| Files: | files | file ages | folders |
| SHA1: |
21152c0d6ece19285f51d2fa9a21f0e8 |
| User & Date: | mario on 2014-05-08 20:02:18 |
| Other Links: | manifest | tags |
Context
|
2014-05-08
| ||
| 20:02 | Introduce channel.has_search flag check-in: 08de3d2f45 user: mario tags: trunk | |
| 20:02 | Added tracks(genres), albums, and playlists; none of the API streaming URLs work yet check-in: 21152c0d6e user: mario tags: trunk | |
| 20:01 | simpler HTTP signature check-in: 5fba8a2956 user: mario tags: trunk | |
Changes
Modified channels/jamendo.py from [e56bcf3be6] to [c6330abad1].
| ︙ | ︙ | |||
8 9 10 11 12 13 14 | # Recently required an API key as well. Thus probably will remain a stub. # # import re import ahttp as http | | | | > > > | | < < < < < < < < < < < < < > | > > | > | | | | | | | | | | | < | < | | | > | < < < < | | < | | | | > > | > > > | | > > | | > > > > > > > | | | | | | | | | | < | | | > | < < | < | | 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 |
# Recently required an API key as well. Thus probably will remain a stub.
#
#
import re
import ahttp as http
from config import conf, __print__, dbg
from channels import *
from xml.sax.saxutils import unescape
import json
# jamendo CC music sharing site
class jamendo (ChannelPlugin):
# description
title = "Jamendo"
module = "jamendo"
homepage = "http://www.jamendo.com/"
version = 0.3
has_search = True
base = "http://www.jamendo.com/en/"
listformat = "url/http"
api = "http://api.jamendo.com/v3.0/"
cid = "49daa4f5"
categories = ["radios"]
titles = dict( title="Title", playing="Album/Artist/User", bitrate=False, listeners=False )
config = [
{"name":"jamendo_stream_format", "value":"ogg2", "type":"text", "description":"streaming format, 'ogg2' or 'mp31'"}
]
# refresh category list
def update_categories(self):
self.categories = [
"radios",
"playlists",
"albums",
"tracks",
["pop", "rock", "dance", "classical", "jazz", "instrumental"]
]
# download links from dmoz listing
def update_streams(self, cat, search="", force=0):
entries = []
# return a static list for now
if cat == "radios":
entries = [
{"title": "Best Of", "url": "http://streaming.radionomy.com/BestOf", "playing": "", "format": "audio/mpeg", "homepage": "http://www.jamendo.com/en/radios", "favicon": "http://imgjam1.jamendo.com/new_jamendo_radios/bestof30.jpg"},
{"title": "Pop", "url": "http://streaming.radionomy.com/JamPop", "playing": "", "format": "audio/mpeg", "homepage": "http://www.jamendo.com/en/radios", "favicon": "http://imgjam1.jamendo.com/new_jamendo_radios/pop30.jpg"},
{"title": "Rock", "url": "http://streaming.radionomy.com/JamRock", "playing": "", "format": "audio/mpeg", "homepage": "http://www.jamendo.com/en/radios", "favicon": "http://imgjam1.jamendo.com/new_jamendo_radios/rock30.jpg"},
{"title": "Lounge", "url": "http://streaming.radionomy.com/JamLounge", "playing": "", "format": "audio/mpeg", "homepage": "http://www.jamendo.com/en/radios", "favicon": "http://imgjam1.jamendo.com/new_jamendo_radios/lounge30.jpg"},
{"title": "Electro", "url": "http://streaming.radionomy.com/JamElectro", "playing": "", "format": "audio/mpeg", "homepage": "http://www.jamendo.com/en/radios", "favicon": "http://imgjam1.jamendo.com/new_jamendo_radios/electro30.jpg"},
{"title": "HipHop", "url": "http://streaming.radionomy.com/JamHipHop", "playing": "", "format": "audio/mpeg", "homepage": "http://www.jamendo.com/en/radios", "favicon": "http://imgjam1.jamendo.com/new_jamendo_radios/hiphop30.jpg"},
{"title": "World", "url": "http://streaming.radionomy.com/JamWorld", "playing": "", "format": "audio/mpeg", "homepage": "http://www.jamendo.com/en/radios", "favicon": "http://imgjam1.jamendo.com/new_jamendo_radios/world30.jpg"},
{"title": "Jazz", "url": "http://streaming.radionomy.com/JamJazz", "playing": "", "format": "audio/mpeg", "homepage": "http://www.jamendo.com/en/radios", "favicon": "http://imgjam1.jamendo.com/new_jamendo_radios/jazz30.jpg"},
{"title": "Metal", "url": "http://streaming.radionomy.com/JamMetal", "playing": "", "format": "audio/mpeg", "homepage": "http://www.jamendo.com/en/radios", "favicon": "http://imgjam1.jamendo.com/new_jamendo_radios/metal30.jpg"},
{"title": "Soundtrack", "url": "http://streaming.radionomy.com/JamSoundtrack", "playing": "", "format": "audio/mpeg", "homepage": "http://www.jamendo.com/en/radios", "favicon": "http://imgjam1.jamendo.com/new_jamendo_radios/soundtrack30.jpg"},
{"title": "Relaxation", "url": "http://streaming.radionomy.com/JamRelaxation", "playing": "", "format": "audio/mpeg", "homepage": "http://www.jamendo.com/en/radios", "favicon": "http://imgjam1.jamendo.com/new_jamendo_radios/relaxation30.jpg"},
{"title": "Classical", "url": "http://streaming.radionomy.com/JamClassical", "playing": "", "format": "audio/mpeg", "homepage": "http://www.jamendo.com/en/radios", "favicon": "http://imgjam1.jamendo.com/new_jamendo_radios/classical30.jpg"},
]
# playlist
if cat == "playlists":
data = http.get(self.api + cat, params = {
"client_id": self.cid,
"format": "json",
"limit": "200"
})
for e in json.loads(data)["results"]:
entries.append({
"title": e["name"],
"playing": e["user_name"],
"homepage": e["shareurl"],
"url": "http://api.jamendo.com/v3.0/playlists/file?client_id="+self.cid+"&id="+e["id"]
})
# albums
if cat == "albums":
data = http.get(self.api + cat, params = {
"client_id": self.cid,
"format": "json",
"limit": "200",
"imagesize": "50"
})
for e in json.loads(data)["results"]:
entries.append({
"title": e["name"],
"playing": e["artist_name"],
"favicon": e["image"],
"homepage": e["shareurl"],
"url": "http://api.jamendo.com/v3.0/playlists/file?client_id="+self.cid+"&id="+e["id"]
})
# genre list
else:
data = http.get(self.api + "tracks", params={
"client_id": self.cid,
("fuzzytags" if cat else "search"): (search if search else cat),
"format": "json",
"audioformat":"mp31",
"limit": "200",
"imagesize": "50",
"order": "popularity_week",
})
for e in json.loads(data)["results"]:
entries.append({
"title": e["name"],
"playing": e["album_name"] + " / " + e["artist_name"],
"favicon": e["album_image"],
"homepage": e["shareurl"],
"url": e["audio"]
})
# done
return entries
# smaller album link
def cover(self, url):
|
| ︙ | ︙ | |||
159 160 161 162 163 164 165 |
return "http://api.jamendo.com/get2/stream/"+track+"/"+urltype+"/?id="+track_id+"&streamencoding="+fmt
# audio/*
def stream_mime(self):
if conf.jamendo_stream_format.find("og") >= 0:
return "audio/ogg"
else:
| | | 158 159 160 161 162 163 164 165 166 167 |
return "http://api.jamendo.com/get2/stream/"+track+"/"+urltype+"/?id="+track_id+"&streamencoding="+fmt
# audio/*
def stream_mime(self):
if conf.jamendo_stream_format.find("og") >= 0:
return "audio/ogg"
else:
return "audio/mpeg"
|