mirror of
https://github.com/ZuneDev/PyZuneCatalogServer.git
synced 2026-07-27 13:11:13 -07:00
who knows what I changed
This commit is contained in:
@@ -1,3 +1,4 @@
|
||||
import urllib
|
||||
from xml.dom.minidom import Document, Element
|
||||
|
||||
from flask import Flask, request, abort, Response
|
||||
@@ -20,7 +21,7 @@ def allow_zunestk_cors(response):
|
||||
r = request.origin
|
||||
if r is None:
|
||||
return response
|
||||
if re.match(r"https?://(127\.0\.0\.(?:\d*)|localhost(?:\:\d+)?|(?:\w*\.)*zunes\.tk)", r):
|
||||
if re.match(r"https?://(127\.0\.0\.(?:\d*)|localhost(?::\d+)?|(?:\w*\.)*zunes\.tk)", r):
|
||||
response.headers.add('Access-Control-Allow-Origin', r)
|
||||
response.headers.add('Access-Control-Allow-Credentials', 'true')
|
||||
response.headers.add('Access-Control-Allow-Headers', 'Content-Type')
|
||||
@@ -38,23 +39,16 @@ def hubs_music(locale: str):
|
||||
return Response(data, mimetype=MIME_ATOM_XML)
|
||||
|
||||
|
||||
@app.route(f"/v3.2/<string:locale>/music/hub/podcast/")
|
||||
def hubs_podcasts(locale: str):
|
||||
with open('reference/catalog.zune.net_v3.2_{locale}_music_hub_podcast.xml', 'r') as file:
|
||||
data: str = file.read().replace('\n', '')
|
||||
return Response(data, mimetype=MIME_ATOM_XML)
|
||||
|
||||
|
||||
@app.route(f"/v3.2/<string:locale>/music/genre/<string:id>/")
|
||||
def music_genre_details(id: str, locale: str):
|
||||
with open('reference/catalog.zune.net_v3.2_{locale}_music_genre.xml', 'r') as file:
|
||||
with open(f'reference/catalog.zune.net_v3.2_{locale}_music_genre.xml', 'r') as file:
|
||||
data: str = file.read().replace('\n', '')
|
||||
return Response(data, mimetype=MIME_ATOM_XML)
|
||||
|
||||
|
||||
@app.route(f"/v3.2/<string:locale>/music/genre/<string:id>/albums/")
|
||||
def music_genre_albums(id: str, locale: str):
|
||||
with open('reference/catalog.zune.net_v3.2_{locale}_music_genre.xml', 'r') as file:
|
||||
with open(f'reference/catalog.zune.net_v3.2_{locale}_music_genre.xml', 'r') as file:
|
||||
data: str = file.read().replace('\n', '')
|
||||
return Response(data, mimetype=MIME_ATOM_XML)
|
||||
|
||||
@@ -68,7 +62,7 @@ def music_genre(locale: str):
|
||||
feed: Element = create_feed(doc, "Genres", "genre", request.endpoint, lastpulledlist)
|
||||
|
||||
for genre_name, genre_id in GENRES.items():
|
||||
entry: Element = create_entry(doc, genre_name, genre_id, "/v3.2/{locale}/music/genre" + genre_id, lastpulledlist)
|
||||
entry: Element = create_entry(doc, genre_name, genre_id, f"/v3.2/{locale}/music/genre" + genre_id, lastpulledlist)
|
||||
feed.appendChild(entry)
|
||||
|
||||
xml_str = doc.toprettyxml(indent="\t")
|
||||
@@ -104,33 +98,56 @@ def music_get_album(album_id: str, locale: str):
|
||||
track_title: str = recording["title"]
|
||||
entry: Element = create_entry(doc, track_title, track_id, f"/v3.2/{locale}/")
|
||||
|
||||
# Create primaryArtist element
|
||||
# Set primaryArtist
|
||||
primary_artist_elem: Element = doc.createElement("primaryArtist")
|
||||
artist_id_element: Element = doc.createElement("id")
|
||||
set_element_value(artist_id_element, artist_id)
|
||||
primary_artist_elem.appendChild(artist_id_element)
|
||||
artist_name_element: Element = doc.createElement("name")
|
||||
set_element_value(artist_name_element, artist_name)
|
||||
primary_artist_elem.appendChild(artist_name_element)
|
||||
primary_artist_props = {
|
||||
"id": artist_id,
|
||||
"name": artist_name
|
||||
}
|
||||
set_values_as_elements(doc, primary_artist_elem, primary_artist_props)
|
||||
entry.appendChild(primary_artist_elem)
|
||||
|
||||
try:
|
||||
length_ms: str = track["track_or_recording_length"]
|
||||
length_ms: int = int(track["track_or_recording_length"])
|
||||
# FIXME: Add duration element
|
||||
length_elem: Element = doc.createElement("duration")
|
||||
set_element_value(length_elem, length_ms)
|
||||
length_timespan: str = f"00:00:00.{length_ms:0>3}"
|
||||
print("Duration:", length_timespan)
|
||||
set_element_value(length_elem, length_timespan)
|
||||
entry.appendChild(length_elem)
|
||||
except:
|
||||
pass
|
||||
try:
|
||||
track_position: str = track["position"]
|
||||
# FIXME: Add index element
|
||||
# FIXME: Add track number element
|
||||
index_elem: Element = doc.createElement("trackNumber")
|
||||
print("Track #:", track_position)
|
||||
set_element_value(index_elem, track_position)
|
||||
entry.appendChild(index_elem)
|
||||
except:
|
||||
pass
|
||||
|
||||
try:
|
||||
# Add rights
|
||||
right: Element = doc.createElement("right")
|
||||
right_props = {
|
||||
"providerName": "YouTube",
|
||||
"providerCode": "27407509:MP3_DOWNLOAD_UENC_320kb_070",
|
||||
"pointsPrice": "800",
|
||||
"licenseType": "Preview",
|
||||
"audioEncoding": "WMA",
|
||||
"offerId": "urn:uuid:9534a201-2102-11db-89ca-0019b92a3933",
|
||||
"offerInstanceId": "urn:uuid:9534a201-2102-11db-89ca-0019b92a3933",
|
||||
}
|
||||
set_values_as_elements(doc, right, right_props)
|
||||
rights: Element = doc.createElement("rights")
|
||||
rights.appendChild(right)
|
||||
entry.appendChild(rights)
|
||||
set_value_as_element(doc, entry, "isActionable", "True")
|
||||
set_value_as_element(doc, entry, "canPlay", "True")
|
||||
except:
|
||||
pass
|
||||
|
||||
feed.appendChild(entry)
|
||||
|
||||
# doc.appendChild(feed)
|
||||
@@ -171,19 +188,14 @@ def music_get_artist_tracks(artist_id: str, locale: str):
|
||||
|
||||
# Create primaryArtist element
|
||||
primary_artist_elem: Element = doc.createElement("primaryArtist")
|
||||
|
||||
artist_id_element: Element = doc.createElement("id")
|
||||
set_element_value(artist_id_element, artist_id)
|
||||
primary_artist_elem.appendChild(artist_id_element)
|
||||
|
||||
artist_name_element: Element = doc.createElement("name")
|
||||
set_element_value(artist_name_element, artist_name)
|
||||
primary_artist_elem.appendChild(artist_name_element)
|
||||
primary_artist_props = {
|
||||
"id": artist_id,
|
||||
"name": artist_name
|
||||
}
|
||||
set_values_as_elements(doc, primary_artist_elem, primary_artist_props)
|
||||
entry.appendChild(primary_artist_elem)
|
||||
|
||||
#doc.appendChild(feed)
|
||||
xml_str = doc.toprettyxml(indent="\t")
|
||||
print(xml_str)
|
||||
return Response(xml_str, mimetype=MIME_XML)
|
||||
|
||||
|
||||
@@ -215,14 +227,11 @@ def music_get_artist_albums(artist_id: str, locale: str):
|
||||
|
||||
# Create primaryArtist element
|
||||
primary_artist_elem: Element = doc.createElement("primaryArtist")
|
||||
|
||||
artist_id_element: Element = doc.createElement("id")
|
||||
set_element_value(artist_id_element, artist_id)
|
||||
primary_artist_elem.appendChild(artist_id_element)
|
||||
|
||||
artist_name_element: Element = doc.createElement("name")
|
||||
set_element_value(artist_name_element, artist_name)
|
||||
primary_artist_elem.appendChild(artist_name_element)
|
||||
primary_artist_props = {
|
||||
"id": artist_id,
|
||||
"name": artist_name
|
||||
}
|
||||
set_values_as_elements(doc, primary_artist_elem, primary_artist_props)
|
||||
entry.appendChild(primary_artist_elem)
|
||||
|
||||
#doc.appendChild(feed)
|
||||
@@ -310,18 +319,31 @@ def music_chart_tracks(locale: str):
|
||||
artist_id: str = artist["id"]
|
||||
artist_name: str = artist["name"]
|
||||
|
||||
# Create primaryArtist element
|
||||
# Set primaryArtist
|
||||
primary_artist_elem: Element = doc.createElement("primaryArtist")
|
||||
|
||||
artist_id_element: Element = doc.createElement("id")
|
||||
set_element_value(artist_id_element, artist_id)
|
||||
primary_artist_elem.appendChild(artist_id_element)
|
||||
|
||||
artist_name_element: Element = doc.createElement("name")
|
||||
set_element_value(artist_name_element, artist_name)
|
||||
primary_artist_elem.appendChild(artist_name_element)
|
||||
primary_artist_props = {
|
||||
"id": artist_id,
|
||||
"name": artist_name
|
||||
}
|
||||
set_values_as_elements(doc, primary_artist_elem, primary_artist_props)
|
||||
entry.appendChild(primary_artist_elem)
|
||||
|
||||
# Add rights
|
||||
right: Element = doc.createElement("right")
|
||||
right_props = {
|
||||
"providerName": "YouTube",
|
||||
"providerCode": "27407509:MP3_DOWNLOAD_UENC_320kb_070",
|
||||
"pointsPrice": "800",
|
||||
"licenseType": "Preview",
|
||||
"audioEncoding": "WMA",
|
||||
"offerId": "urn:uuid:9534a201-2102-11db-89ca-0019b92a3933",
|
||||
"offerInstanceId": "urn:uuid:9534a201-2102-11db-89ca-0019b92a3933",
|
||||
}
|
||||
set_values_as_elements(doc, right, right_props)
|
||||
rights: Element = doc.createElement("rights")
|
||||
rights.appendChild(right)
|
||||
entry.appendChild(rights)
|
||||
|
||||
feed.appendChild(entry)
|
||||
xml_str = doc.toprettyxml(indent="\t")
|
||||
return Response(xml_str, mimetype=MIME_XML)
|
||||
@@ -350,16 +372,13 @@ def music_track(locale: str):
|
||||
artist_id: str = artist["id"]
|
||||
artist_name: str = artist["name"]
|
||||
|
||||
# Create primaryArtist element
|
||||
# Set primaryArtist
|
||||
primary_artist_elem: Element = doc.createElement("primaryArtist")
|
||||
|
||||
artist_id_element: Element = doc.createElement("id")
|
||||
set_element_value(artist_id_element, artist_id)
|
||||
primary_artist_elem.appendChild(artist_id_element)
|
||||
|
||||
artist_name_element: Element = doc.createElement("name")
|
||||
set_element_value(artist_name_element, artist_name)
|
||||
primary_artist_elem.appendChild(artist_name_element)
|
||||
primary_artist_props = {
|
||||
"id": artist_id,
|
||||
"name": artist_name
|
||||
}
|
||||
set_values_as_elements(doc, primary_artist_elem, primary_artist_props)
|
||||
entry.appendChild(primary_artist_elem)
|
||||
|
||||
# Get album ID and Title
|
||||
@@ -367,17 +386,14 @@ def music_track(locale: str):
|
||||
album_id: str = album["id"]
|
||||
album_name: str = album["title"]
|
||||
|
||||
# Create album element
|
||||
album_elem: Element = doc.createElement("album")
|
||||
|
||||
album_id_element: Element = doc.createElement("id")
|
||||
set_element_value(album_id_element, album_id)
|
||||
album_elem.appendChild(album_id_element)
|
||||
|
||||
album_name_element: Element = doc.createElement("title")
|
||||
set_element_value(album_name_element, album_name)
|
||||
album_elem.appendChild(album_name_element)
|
||||
entry.appendChild(album_elem)
|
||||
# Set album info
|
||||
primary_album_elem: Element = doc.createElement("album")
|
||||
primary_album_props = {
|
||||
"id": album_id,
|
||||
"title": album_name
|
||||
}
|
||||
set_values_as_elements(doc, primary_album_elem, primary_album_props)
|
||||
entry.appendChild(primary_album_elem)
|
||||
|
||||
feed.appendChild(entry)
|
||||
except:
|
||||
@@ -416,16 +432,13 @@ def music_album(locale: str):
|
||||
artist_id: str = artist["id"]
|
||||
artist_name: str = artist["name"]
|
||||
|
||||
# Create primaryArtist element
|
||||
# Set primaryArtist
|
||||
primary_artist_elem: Element = doc.createElement("primaryArtist")
|
||||
|
||||
artist_id_element: Element = doc.createElement("id")
|
||||
set_element_value(artist_id_element, artist_id)
|
||||
primary_artist_elem.appendChild(artist_id_element)
|
||||
|
||||
artist_name_element: Element = doc.createElement("name")
|
||||
set_element_value(artist_name_element, artist_name)
|
||||
primary_artist_elem.appendChild(artist_name_element)
|
||||
primary_artist_props = {
|
||||
"id": artist_id,
|
||||
"name": artist_name
|
||||
}
|
||||
set_values_as_elements(doc, primary_artist_elem, primary_artist_props)
|
||||
entry.appendChild(primary_artist_elem)
|
||||
|
||||
feed.appendChild(entry)
|
||||
@@ -433,41 +446,41 @@ def music_album(locale: str):
|
||||
return Response(xml_str, mimetype=MIME_XML)
|
||||
|
||||
|
||||
@app.route("/")
|
||||
def commerce():
|
||||
# TODO: Attempt SSL handshake
|
||||
return "Howdy, Zune!"
|
||||
|
||||
|
||||
### MOVIES
|
||||
@app.route(f"/v3.2/<string:locale>/chart/zuneDownload/movie/")
|
||||
def chart_zunedown_movie(locale: str):
|
||||
with open('reference/catalog.zune.net_v3.2_en-US_hubs_music.xml', 'r') as file:
|
||||
with open(f'reference/catalog.zune.net_v3.2_{locale}_hubs_music.xml', 'r') as file:
|
||||
data: str = file.read().replace('\n', '')
|
||||
return Response(data, mimetype=MIME_ATOM_XML)
|
||||
|
||||
|
||||
@app.route(f"/v3.2/<string:locale>/music/hub/movie/")
|
||||
def hubs_movie(locale: str):
|
||||
with open('reference/catalog.zune.net_v3.2_en-US_hubs_music.xml', 'r') as file:
|
||||
with open(f'reference/catalog.zune.net_v3.2_{locale}_hubs_music.xml', 'r') as file:
|
||||
data: str = file.read().replace('\n', '')
|
||||
return Response(data, mimetype=MIME_ATOM_XML)
|
||||
|
||||
|
||||
@app.route(f"/v3.2/<string:locale>/music/hub/video/")
|
||||
def hubs_video(locale: str):
|
||||
with open('reference/catalog.zune.net_v3.2_en-US_hubs_music.xml', 'r') as file:
|
||||
with open(f'reference/catalog.zune.net_v3.2_{locale}_hubs_music.xml', 'r') as file:
|
||||
data: str = file.read().replace('\n', '')
|
||||
return Response(data, mimetype=MIME_ATOM_XML)
|
||||
|
||||
|
||||
### IMAGES
|
||||
@app.route(f"/v3.2/<string:locale>/image/<string:mbid>")
|
||||
def get_image(mbid: str, locale: str):
|
||||
print("Image request for", mbid)
|
||||
import urllib.request
|
||||
image = urllib.request.urlopen(f"http://coverartarchive.org/release/{mbid}/front")
|
||||
return Response(image.read(), mimetype=MIME_JPG)
|
||||
### PODCASTS
|
||||
@app.route(f"/v3.2/<string:locale>/music/hub/podcast/")
|
||||
def hubs_podcasts(locale: str):
|
||||
with open(f'reference/catalog.zune.net_v3.2_{locale}_music_hub_podcast.xml', 'r') as file:
|
||||
data: str = file.read().replace('\n', '')
|
||||
return Response(data, mimetype=MIME_ATOM_XML)
|
||||
|
||||
|
||||
@app.route(f"/v3.2/<string:locale>/podcast")
|
||||
def podcast_passthrough(locale: str):
|
||||
podcast_url: str = request.args.get('url')
|
||||
podcast = urllib.request.urlopen(podcast_url)
|
||||
return Response(podcast.read(), mimetype="application/rss+xml")
|
||||
|
||||
### Metadata
|
||||
# fai.music.metaservices.microsoft.com
|
||||
|
||||
+12
-1
@@ -1,4 +1,4 @@
|
||||
from typing import List
|
||||
from typing import Dict
|
||||
from xml.dom import minidom
|
||||
from xml.dom.minidom import Element, Document, Text
|
||||
from datetime import datetime
|
||||
@@ -15,6 +15,17 @@ def set_element_value(element: Element, value: str):
|
||||
element.appendChild(content)
|
||||
|
||||
|
||||
def set_value_as_element(doc: Document, element: Element, name: str, value: str):
|
||||
prop_element: Element = doc.createElement(name)
|
||||
set_element_value(prop_element, value)
|
||||
element.appendChild(prop_element)
|
||||
|
||||
|
||||
def set_values_as_elements(doc: Document, element: Element, props: Dict[str, str]):
|
||||
for name in props:
|
||||
set_value_as_element(doc, element, name, props[name])
|
||||
|
||||
|
||||
def create_feed(doc: Document, title: str, id: str, href: str, date_updated: datetime = datetime.today()) -> Element:
|
||||
feed = create_empty_feed(doc)
|
||||
|
||||
|
||||
@@ -0,0 +1,124 @@
|
||||
<!-- http://catalog.zune.net/v1.1/music/mapping/amg/R 782424/album -->
|
||||
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<a:feed xmlns:a="http://www.w3.org/2005/Atom"
|
||||
xmlns:m="http://schemas.zune.net/catalog/music/2007/10">
|
||||
<a:link rel="self" type="application/atom+xml" href="/v1.1/music/mapping/amg/R%20%20%20782424/album" />
|
||||
<a:updated>2008-09-22T05:21:20.8583897Z</a:updated>
|
||||
<a:title type="text">AMG Id Mapping To Zune Album Metadata and Media Id</a:title>
|
||||
<a:author>
|
||||
<a:name>Microsoft Corporation</a:name>
|
||||
<a:uri>http://www.zune.net/</a:uri>
|
||||
</a:author>
|
||||
<a:id>urn:uuid:58f00b00-0400-11db-89ca-0019b92a3933</a:id>
|
||||
<m:amgId>R 782424</m:amgId>
|
||||
<m:type>Album</m:type>
|
||||
<m:primaryArtist>
|
||||
<m:id>urn:uuid:73aa0200-0600-11db-89ca-0019b92a3933</m:id>
|
||||
<m:name>Shakira</m:name>
|
||||
</m:primaryArtist>
|
||||
<m:primaryGenre>
|
||||
<m:id>latin</m:id>
|
||||
<m:title>Latin</m:title>
|
||||
</m:primaryGenre>
|
||||
<a:rights>Copyright (c) Microsoft Corporation. All rights reserved.</a:rights>
|
||||
<a:entry>
|
||||
<a:updated>2008-09-22T05:21:20.8583897Z</a:updated>
|
||||
<a:title type="text">T 8525916</a:title>
|
||||
<a:content type="html" />
|
||||
<a:id>urn:uuid:5c188200-0500-11db-89ca-0019b92a3933</a:id>
|
||||
<m:amgId>T 8525916</m:amgId>
|
||||
<m:type>Track</m:type>
|
||||
<m:mediaInstances />
|
||||
</a:entry>
|
||||
<a:entry>
|
||||
<a:updated>2008-09-22T05:21:20.8583897Z</a:updated>
|
||||
<a:title type="text">T 8525917</a:title>
|
||||
<a:content type="html" />
|
||||
<a:id>urn:uuid:5d188200-0500-11db-89ca-0019b92a3933</a:id>
|
||||
<m:amgId>T 8525917</m:amgId>
|
||||
<m:type>Track</m:type>
|
||||
<m:mediaInstances />
|
||||
</a:entry>
|
||||
<a:entry>
|
||||
<a:updated>2008-09-22T05:21:20.8583897Z</a:updated>
|
||||
<a:title type="text">T 8525918</a:title>
|
||||
<a:content type="html" />
|
||||
<a:id>urn:uuid:5e188200-0500-11db-89ca-0019b92a3933</a:id>
|
||||
<m:amgId>T 8525918</m:amgId>
|
||||
<m:type>Track</m:type>
|
||||
<m:mediaInstances />
|
||||
</a:entry>
|
||||
<a:entry>
|
||||
<a:updated>2008-09-22T05:21:20.8583897Z</a:updated>
|
||||
<a:title type="text">T 8525919</a:title>
|
||||
<a:content type="html" />
|
||||
<a:id>urn:uuid:5f188200-0500-11db-89ca-0019b92a3933</a:id>
|
||||
<m:amgId>T 8525919</m:amgId>
|
||||
<m:type>Track</m:type>
|
||||
<m:mediaInstances />
|
||||
</a:entry>
|
||||
<a:entry>
|
||||
<a:updated>2008-09-22T05:21:20.8583897Z</a:updated>
|
||||
<a:title type="text">T 8525920</a:title>
|
||||
<a:content type="html" />
|
||||
<a:id>urn:uuid:60188200-0500-11db-89ca-0019b92a3933</a:id>
|
||||
<m:amgId>T 8525920</m:amgId>
|
||||
<m:type>Track</m:type>
|
||||
<m:mediaInstances />
|
||||
</a:entry>
|
||||
<a:entry>
|
||||
<a:updated>2008-09-22T05:21:20.8583897Z</a:updated>
|
||||
<a:title type="text">T 8525921</a:title>
|
||||
<a:content type="html" />
|
||||
<a:id>urn:uuid:61188200-0500-11db-89ca-0019b92a3933</a:id>
|
||||
<m:amgId>T 8525921</m:amgId>
|
||||
<m:type>Track</m:type>
|
||||
<m:mediaInstances />
|
||||
</a:entry>
|
||||
<a:entry>
|
||||
<a:updated>2008-09-22T05:21:20.8583897Z</a:updated>
|
||||
<a:title type="text">T 8525922</a:title>
|
||||
<a:content type="html" />
|
||||
<a:id>urn:uuid:62188200-0500-11db-89ca-0019b92a3933</a:id>
|
||||
<m:amgId>T 8525922</m:amgId>
|
||||
<m:type>Track</m:type>
|
||||
<m:mediaInstances />
|
||||
</a:entry>
|
||||
<a:entry>
|
||||
<a:updated>2008-09-22T05:21:20.8583897Z</a:updated>
|
||||
<a:title type="text">T 8525923</a:title>
|
||||
<a:content type="html" />
|
||||
<a:id>urn:uuid:63188200-0500-11db-89ca-0019b92a3933</a:id>
|
||||
<m:amgId>T 8525923</m:amgId>
|
||||
<m:type>Track</m:type>
|
||||
<m:mediaInstances />
|
||||
</a:entry>
|
||||
<a:entry>
|
||||
<a:updated>2008-09-22T05:21:20.8583897Z</a:updated>
|
||||
<a:title type="text">T 8525924</a:title>
|
||||
<a:content type="html" />
|
||||
<a:id>urn:uuid:64188200-0500-11db-89ca-0019b92a3933</a:id>
|
||||
<m:amgId>T 8525924</m:amgId>
|
||||
<m:type>Track</m:type>
|
||||
<m:mediaInstances />
|
||||
</a:entry>
|
||||
<a:entry>
|
||||
<a:updated>2008-09-22T05:21:20.8583897Z</a:updated>
|
||||
<a:title type="text">T 8525925</a:title>
|
||||
<a:content type="html" />
|
||||
<a:id>urn:uuid:65188200-0500-11db-89ca-0019b92a3933</a:id>
|
||||
<m:amgId>T 8525925</m:amgId>
|
||||
<m:type>Track</m:type>
|
||||
<m:mediaInstances />
|
||||
</a:entry>
|
||||
<a:entry>
|
||||
<a:updated>2008-09-22T05:21:20.8583897Z</a:updated>
|
||||
<a:title type="text">T 8525926</a:title>
|
||||
<a:content type="html" />
|
||||
<a:id>urn:uuid:66188200-0500-11db-89ca-0019b92a3933</a:id>
|
||||
<m:amgId>T 8525926</m:amgId>
|
||||
<m:type>Track</m:type>
|
||||
<m:mediaInstances />
|
||||
</a:entry>
|
||||
</a:feed>
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,14 @@
|
||||
<!-- http://catalog.zune.net/v3.2/en-US/appCategories/windowsphone.games/apps/?clientType=WinMobile%207.0&cost=free&store=Zest&orderby=averageUserRating -->
|
||||
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<a:feed xmlns:a="http://www.w3.org/2005/Atom"
|
||||
xmlns:os="http://a9.com/-/spec/opensearch/1.1/"
|
||||
xmlns="http://schemas.zune.net/catalog/apps/2008/02">
|
||||
<a:link rel="self" type="application/atom+xml" href="/v3.2/en-US/appCategories/windowsphone.games/apps?orderBy=averageUserRating&cost=free&store=Zest&clientType=WinMobile+7.0" />
|
||||
<a:updated>2013-11-26T06:58:46.620085Z</a:updated>
|
||||
<a:title type="text">List Of Items</a:title>
|
||||
<a:id>tag:catalog.zune.net,2013-11-26:/appCategories/windowsphone.games/apps</a:id>
|
||||
<a:author>
|
||||
<a:name>Microsoft Corporation</a:name>
|
||||
</a:author>
|
||||
</a:feed>
|
||||
File diff suppressed because it is too large
Load Diff
+116
@@ -0,0 +1,116 @@
|
||||
<!-- http://catalog.zune.net/v3.2/en-US/clientTypes/WinMobile 7.1/hubTypes/marketplace/hub?store=Zest&store=&store= -->
|
||||
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<a:feed xmlns:a="http://www.w3.org/2005/Atom"
|
||||
xmlns:os="http://a9.com/-/spec/opensearch/1.1/"
|
||||
xmlns="http://schemas.zune.net/catalog/apps/2008/02">
|
||||
<a:link rel="self" type="application/atom+xml" href="/v3.2/en-US/clientTypes/WinMobile%207.1/hubTypes/marketplace/hub?store=Zest&store=&store=" />
|
||||
<a:updated>2012-01-12T17:04:30.4439363Z</a:updated>
|
||||
<a:title type="text">marketplace-US-winMobile7</a:title>
|
||||
<a:id>marketplace-US-WinMobile71-ALL-ALL</a:id>
|
||||
<templates>
|
||||
<template>
|
||||
<mimeType>application/uix</mimeType>
|
||||
<templateName>MarketplaceHub</templateName>
|
||||
</template>
|
||||
</templates>
|
||||
<a:entry>
|
||||
<a:link rel="alternate" type="application/atom+xml" href="/v3.2/en-US/music/collection/features/3e6ea222-256f-4f3b-81d1-7bbca0ae0813" />
|
||||
<a:updated>2012-01-12T17:04:30.4439363Z</a:updated>
|
||||
<a:title type="text">List Of Items</a:title>
|
||||
<a:id>urn:uuid:3e6ea222-256f-4f3b-81d1-7bbca0ae0813</a:id>
|
||||
<index>1</index>
|
||||
<link>
|
||||
<type>FeatureCollection</type>
|
||||
<target>3E6EA222-256F-4F3B-81D1-7BBCA0AE0813</target>
|
||||
</link>
|
||||
<editorialItems>
|
||||
<editorialItem>
|
||||
<id>urn:uuid:ef12719b-4753-4ee6-87f0-674f0dffcc9f</id>
|
||||
<link>
|
||||
<type>Application</type>
|
||||
<target>ca8d6603-a9ae-4a05-8643-baad091ecdd1</target>
|
||||
</link>
|
||||
<title>Spotify</title>
|
||||
<sequenceNumber>1</sequenceNumber>
|
||||
<image>
|
||||
<id>urn:uuid:9c3be70f-b18d-40c3-9dd7-f8860146ebdc</id>
|
||||
</image>
|
||||
<backgroundImage>
|
||||
<id>urn:uuid:6343af90-f15b-4cc3-92e6-3340701638d5</id>
|
||||
</backgroundImage>
|
||||
</editorialItem>
|
||||
<editorialItem>
|
||||
<id>urn:uuid:6e9de89a-91e0-4773-a9d7-d4870070910f</id>
|
||||
<link>
|
||||
<type>Application</type>
|
||||
<target>1040a930-f36b-e011-81d2-78e7d1fa76f8</target>
|
||||
</link>
|
||||
<title>Shazam Encore</title>
|
||||
<sequenceNumber>2</sequenceNumber>
|
||||
<image>
|
||||
<id>urn:uuid:e614ae40-a2c8-4035-bdde-61edb3009ff6</id>
|
||||
</image>
|
||||
<backgroundImage>
|
||||
<id>urn:uuid:b4aecf21-64d9-4370-9840-9e11cb104a04</id>
|
||||
</backgroundImage>
|
||||
</editorialItem>
|
||||
<editorialItem>
|
||||
<id>urn:uuid:27cf0c24-21d3-44a7-992e-02ddb5310cce</id>
|
||||
<link>
|
||||
<type>Application</type>
|
||||
<target>4a9378e6-bad1-df11-9eae-00237de2db9e</target>
|
||||
</link>
|
||||
<title>Local Concerts</title>
|
||||
<sequenceNumber>3</sequenceNumber>
|
||||
<image>
|
||||
<id>urn:uuid:d942a017-4144-445d-8aaa-7db29dcf0134</id>
|
||||
</image>
|
||||
<backgroundImage>
|
||||
<id>urn:uuid:7f802f85-31e5-4792-8978-8eb38bcabceb</id>
|
||||
</backgroundImage>
|
||||
</editorialItem>
|
||||
</editorialItems>
|
||||
<features>
|
||||
<feature>
|
||||
<id>urn:uuid:ef12719b-4753-4ee6-87f0-674f0dffcc9f</id>
|
||||
<link>
|
||||
<type>Application</type>
|
||||
<target>ca8d6603-a9ae-4a05-8643-baad091ecdd1</target>
|
||||
</link>
|
||||
<title>Spotify</title>
|
||||
<sequenceNumber>1</sequenceNumber>
|
||||
<image>
|
||||
<id>urn:uuid:9c3be70f-b18d-40c3-9dd7-f8860146ebdc</id>
|
||||
</image>
|
||||
</feature>
|
||||
<feature>
|
||||
<id>urn:uuid:6e9de89a-91e0-4773-a9d7-d4870070910f</id>
|
||||
<link>
|
||||
<type>Application</type>
|
||||
<target>1040a930-f36b-e011-81d2-78e7d1fa76f8</target>
|
||||
</link>
|
||||
<title>Shazam Encore</title>
|
||||
<sequenceNumber>2</sequenceNumber>
|
||||
<image>
|
||||
<id>urn:uuid:e614ae40-a2c8-4035-bdde-61edb3009ff6</id>
|
||||
</image>
|
||||
</feature>
|
||||
<feature>
|
||||
<id>urn:uuid:27cf0c24-21d3-44a7-992e-02ddb5310cce</id>
|
||||
<link>
|
||||
<type>Application</type>
|
||||
<target>4a9378e6-bad1-df11-9eae-00237de2db9e</target>
|
||||
</link>
|
||||
<title>Local Concerts</title>
|
||||
<sequenceNumber>3</sequenceNumber>
|
||||
<image>
|
||||
<id>urn:uuid:d942a017-4144-445d-8aaa-7db29dcf0134</id>
|
||||
</image>
|
||||
</feature>
|
||||
</features>
|
||||
</a:entry>
|
||||
<a:author>
|
||||
<a:name>Microsoft Corporation</a:name>
|
||||
</a:author>
|
||||
</a:feed>
|
||||
@@ -0,0 +1,94 @@
|
||||
<!-- http://www.zune.net/en-us/music/albums/rss.xml -->
|
||||
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<rss version="2.0" xmlns:xboxlive="http://www.xbox.com">
|
||||
<channel>
|
||||
<title>New Albums</title>
|
||||
<description>Get the scoop on new featured albums available in Zune Marketplace.</description>
|
||||
<link>http://www.zune.net/en-us/music/albums/default.htm</link>
|
||||
<ttl>60</ttl>
|
||||
<language>en-US</language>
|
||||
<copyright>©2008 Microsoft Corporation. All Rights Reserved
|
||||
</copyright>
|
||||
<item>
|
||||
<title>Harlem's American Gangster (Parental Advisory)</title>
|
||||
<guid isPermaLink="false">1204585486044_481775</guid>
|
||||
<description>By JIM JONES</description>
|
||||
<link>http://social.zune.net/AlbumDetails.aspx?aid=83d9c600-0100-11db-89ca-0019b92a3933</link>
|
||||
<pubDate>Tue, 04 Mar 2008 00:00:00 GMT</pubDate>
|
||||
<category>Albums</category>
|
||||
</item>
|
||||
<item>
|
||||
<title>Daylight (Remixes)</title>
|
||||
<guid isPermaLink="false">1204585474021_446344</guid>
|
||||
<description>By KELLY ROWLAND</description>
|
||||
<link>http://social.zune.net/AlbumDetails.aspx?aid=e5fbbc00-0100-11db-89ca-0019b92a3933</link>
|
||||
<pubDate>Tue, 04 Mar 2008 00:00:00 GMT</pubDate>
|
||||
<category>Albums</category>
|
||||
</item>
|
||||
<item>
|
||||
<title>Run (Single)</title>
|
||||
<guid isPermaLink="false">1204585473412_721658</guid>
|
||||
<description>By GNARLS BARKLEY</description>
|
||||
<link>http://social.zune.net/AlbumDetails.aspx?aid=c143c400-0100-11db-89ca-0019b92a3933</link>
|
||||
<pubDate>Tue, 04 Mar 2008 00:00:00 GMT</pubDate>
|
||||
<category>Albums</category>
|
||||
</item>
|
||||
<item>
|
||||
<title>Lust Lust Lust</title>
|
||||
<guid isPermaLink="false">1204585472925_459771</guid>
|
||||
<description>By THE RAVEONETTES</description>
|
||||
<link>http://social.zune.net/AlbumDetails.aspx?aid=a92ec600-0100-11db-89ca-0019b92a3933</link>
|
||||
<pubDate>Tue, 04 Mar 2008 00:00:00 GMT</pubDate>
|
||||
<category>Albums</category>
|
||||
</item>
|
||||
<item>
|
||||
<title>Dive Deep</title>
|
||||
<guid isPermaLink="false">1204585472484_5568</guid>
|
||||
<description>By MORCHEEBA</description>
|
||||
<link>http://social.zune.net/AlbumDetails.aspx?aid=0f76c600-0100-11db-89ca-0019b92a3933</link>
|
||||
<pubDate>Tue, 04 Mar 2008 00:00:00 GMT</pubDate>
|
||||
<category>Albums</category>
|
||||
</item>
|
||||
<item>
|
||||
<title>Conquest/Conquista</title>
|
||||
<guid isPermaLink="false">1204585461628_693962</guid>
|
||||
<description>By THE WHITE STRIPES</description>
|
||||
<link>http://social.zune.net/AlbumDetails.aspx?aid=9573c600-0100-11db-89ca-0019b92a3933</link>
|
||||
<pubDate>Tue, 04 Mar 2008 00:00:00 GMT</pubDate>
|
||||
<category>Albums</category>
|
||||
</item>
|
||||
<item>
|
||||
<title>Live</title>
|
||||
<guid isPermaLink="false">1204585461235_922428</guid>
|
||||
<description>By B.B. KING</description>
|
||||
<link>http://social.zune.net/AlbumDetails.aspx?aid=89cbc500-0100-11db-89ca-0019b92a3933</link>
|
||||
<pubDate>Tue, 04 Mar 2008 00:00:00 GMT</pubDate>
|
||||
<category>Albums</category>
|
||||
</item>
|
||||
<item>
|
||||
<title>It Is Time for a Love Revolution</title>
|
||||
<guid isPermaLink="false">1204585461034_552322</guid>
|
||||
<description>By LENNY KRAVITZ</description>
|
||||
<link>http://social.zune.net/AlbumDetails.aspx?aid=f97bc100-0100-11db-89ca-0019b92a3933</link>
|
||||
<pubDate>Tue, 04 Mar 2008 00:00:00 GMT</pubDate>
|
||||
<category>Albums</category>
|
||||
</item>
|
||||
<item>
|
||||
<title>Thriller (25th Anniversary Deluxe Edition)</title>
|
||||
<guid isPermaLink="false">1204585460728_886603</guid>
|
||||
<description>By MICHAEL JACKSON</description>
|
||||
<link>http://social.zune.net/AlbumDetails.aspx?aid=11e5c300-0100-11db-89ca-0019b92a3933</link>
|
||||
<pubDate>Tue, 04 Mar 2008 00:00:00 GMT</pubDate>
|
||||
<category>Albums</category>
|
||||
</item>
|
||||
<item>
|
||||
<title>Do You Like Rock Music?</title>
|
||||
<guid isPermaLink="false">1204585460200_845918</guid>
|
||||
<description>By British Sea Power</description>
|
||||
<link>http://social.zune.net/AlbumDetails.aspx?aid=110cc400-0100-11db-89ca-0019b92a3933</link>
|
||||
<pubDate>Tue, 04 Mar 2008 00:00:00 GMT</pubDate>
|
||||
<category>Albums</category>
|
||||
</item>
|
||||
</channel>
|
||||
</rss>
|
||||
@@ -0,0 +1,134 @@
|
||||
<!-- http://www.zune.net/en-us/music/artists/rss.xml -->
|
||||
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<rss version="2.0" xmlns:xboxlive="http://www.xbox.com">
|
||||
<channel>
|
||||
<title>Featured Artists </title>
|
||||
<description>Get updates on emerging artists featured in Zune Marketplace.</description>
|
||||
<link>http://www.zune.net/en-us/music/artists/default.htm</link>
|
||||
<ttl>60</ttl>
|
||||
<language>en-US</language>
|
||||
<copyright>©2008 Microsoft Corporation. All Rights Reserved
|
||||
</copyright>
|
||||
<item>
|
||||
<title>Artist of the Week: Los Tigres del Norte</title>
|
||||
<guid isPermaLink="false">1204584976740_531331</guid>
|
||||
<description>Los Tigres del Norte school you on their roots on their latest release, Raices.</description>
|
||||
<link>http://social.zune.net/artistdetails.aspx?aid=0c730000-0600-11db-89ca-0019b92a3933</link>
|
||||
<pubDate>Tue, 04 Mar 2008 00:00:00 GMT</pubDate>
|
||||
<category>Artists</category>
|
||||
</item>
|
||||
<item>
|
||||
<title>Sara Bareilles</title>
|
||||
<guid isPermaLink="false">1204584962162_692166</guid>
|
||||
<description>As a gifted singer and a versatile pianist with no formal training, Sara Bareilles burst onto the pop scene ...</description>
|
||||
<link>http://social.zune.net/artistdetails.aspx?aid=fd460b00-0600-11db-89ca-0019b92a3933</link>
|
||||
<pubDate>Tue, 04 Mar 2008 00:00:00 GMT</pubDate>
|
||||
<category>Artists</category>
|
||||
</item>
|
||||
<item>
|
||||
<title>Jack Johnson</title>
|
||||
<guid isPermaLink="false">1204584960824_320137</guid>
|
||||
<description>Before Jack Johnson perfected his rock star ways, he was a champion surfer on the professional route ...</description>
|
||||
<link>http://social.zune.net/artistdetails.aspx?aid=0d270700-0600-11db-89ca-0019b92a3933</link>
|
||||
<pubDate>Tue, 04 Mar 2008 00:00:00 GMT</pubDate>
|
||||
<category>Artists</category>
|
||||
</item>
|
||||
<item>
|
||||
<title>Flo Rida</title>
|
||||
<guid isPermaLink="false">1204584960588_934621</guid>
|
||||
<description>A native Floridian, Flo Rida is an MC who toured as a teenager with 2 Live Crew's Fresh Kid Ice ...</description>
|
||||
<link>http://social.zune.net/artistdetails.aspx?aid=c4160e00-0600-11db-89ca-0019b92a3933</link>
|
||||
<pubDate>Tue, 04 Mar 2008 00:00:00 GMT</pubDate>
|
||||
<category>Artists</category>
|
||||
</item>
|
||||
<item>
|
||||
<title>Goldfrapp</title>
|
||||
<guid isPermaLink="false">1204584960255_502302</guid>
|
||||
<description>England's singer/composer/keyboardist Allison Goldfrapp began exploring music as a part of her studies ...</description>
|
||||
<link>http://social.zune.net/artistdetails.aspx?aid=3dbf0600-0600-11db-89ca-0019b92a3933</link>
|
||||
<pubDate>Tue, 04 Mar 2008 00:00:00 GMT</pubDate>
|
||||
<category>Artists</category>
|
||||
</item>
|
||||
<item>
|
||||
<title>Timbaland</title>
|
||||
<guid isPermaLink="false">1204584959694_491210</guid>
|
||||
<description>Ascending to the top of the rap industry in the late '90s, Timbaland impressively ...</description>
|
||||
<link>http://social.zune.net/artistdetails.aspx?aid=71540300-0600-11db-89ca-0019b92a3933</link>
|
||||
<pubDate>Tue, 04 Mar 2008 00:00:00 GMT</pubDate>
|
||||
<category>Artists</category>
|
||||
</item>
|
||||
<item>
|
||||
<title>Artist of the Week: Erykah Badu</title>
|
||||
<guid isPermaLink="false">1204016405236_552507</guid>
|
||||
<description>Neo-soul singer Erykah Badu releases New Amerykah, Part One (4th World War).</description>
|
||||
<link>http://social.zune.net/AlbumDetails.aspx?aid=9b2ec700-0100-11db-89ca-0019b92a3933</link>
|
||||
<pubDate>Tue, 26 Feb 2008 00:00:00 GMT</pubDate>
|
||||
<category>Artists</category>
|
||||
</item>
|
||||
<item>
|
||||
<title>Kelly Rowland</title>
|
||||
<guid isPermaLink="false">1204016367505_624031</guid>
|
||||
<description>Rosing to fame with the success of Destiny's Child during the late '90s, Rowland began singing ...</description>
|
||||
<link>http://social.zune.net/artistdetails.aspx?aid=c7660500-0600-11db-89ca-0019b92a3933</link>
|
||||
<pubDate>Tue, 26 Feb 2008 00:00:00 GMT</pubDate>
|
||||
<category>Artists</category>
|
||||
</item>
|
||||
<item>
|
||||
<title>Against Me!</title>
|
||||
<guid isPermaLink="false">1204016323774_963063</guid>
|
||||
<description>The roots of Against Me!'s rousing punk-folk sound lie in Tom Gabel's guitar-and-stool troubadourship ...</description>
|
||||
<link>http://social.zune.net/artistdetails.aspx?aid=4e340900-0600-11db-89ca-0019b92a3933</link>
|
||||
<pubDate>Tue, 26 Feb 2008 00:00:00 GMT</pubDate>
|
||||
<category>Artists</category>
|
||||
</item>
|
||||
<item>
|
||||
<title>Hot Chip</title>
|
||||
<guid isPermaLink="false">1204016266282_247281</guid>
|
||||
<description>Hailing from London, Hot Chip entered the picture with the release of their 2000 debut, Mexico ...</description>
|
||||
<link>http://social.zune.net/artistdetails.aspx?aid=07d80700-0600-11db-89ca-0019b92a3933</link>
|
||||
<pubDate>Tue, 26 Feb 2008 00:00:00 GMT</pubDate>
|
||||
<category>Artists</category>
|
||||
</item>
|
||||
<item>
|
||||
<title>Artist of the Week: The Raveonettes</title>
|
||||
<guid isPermaLink="false">1203545615714_669789</guid>
|
||||
<description>Danish pop duo the Raveonettes releases their third studio album, Lust Lust Lust.</description>
|
||||
<link>http://social.zune.net/AlbumDetails.aspx?aid=207e1200-0400-11db-89ca-0019b92a3933</link>
|
||||
<pubDate>Wed, 20 Feb 2008 00:00:00 GMT</pubDate>
|
||||
<category>Artists</category>
|
||||
</item>
|
||||
<item>
|
||||
<title>Lenny Kravitz</title>
|
||||
<guid isPermaLink="false">1203545584401_913805</guid>
|
||||
<description>There may have been other "retro" rock acts before him, but Lenny Kravitz was one of the first to not ...</description>
|
||||
<link>http://social.zune.net/artistdetails.aspx?aid=64120000-0600-11db-89ca-0019b92a3933</link>
|
||||
<pubDate>Wed, 20 Feb 2008 00:00:00 GMT</pubDate>
|
||||
<category>Artists</category>
|
||||
</item>
|
||||
<item>
|
||||
<title>Michael Jackson</title>
|
||||
<guid isPermaLink="false">1203545547463_330168</guid>
|
||||
<description>Considered the biggest pop star of the 80's, Michael Jackson possessed of all the tools to dominate ...</description>
|
||||
<link>http://social.zune.net/artistdetails.aspx?aid=e0110000-0600-11db-89ca-0019b92a3933</link>
|
||||
<pubDate>Wed, 20 Feb 2008 00:00:00 GMT</pubDate>
|
||||
<category>Artists</category>
|
||||
</item>
|
||||
<item>
|
||||
<title>British Sea Power</title>
|
||||
<guid isPermaLink="false">1203545507900_502703</guid>
|
||||
<description>A rather conceptual indie band—one that's been compared more than once to Joy Division ...</description>
|
||||
<link>http://social.zune.net/artistdetails.aspx?aid=5de50700-0600-11db-89ca-0019b92a3933</link>
|
||||
<pubDate>Wed, 20 Feb 2008 00:00:00 GMT</pubDate>
|
||||
<category>Artists</category>
|
||||
</item>
|
||||
<item>
|
||||
<title>Artist of the Week: Michael Jackson</title>
|
||||
<guid isPermaLink="false">1202804328092_296555</guid>
|
||||
<description>Michael Jackson and special guests celebrate Thriller's 25th anniversary.</description>
|
||||
<link>http://social.zune.net/AlbumDetails.aspx?aid=11e5c300-0100-11db-89ca-0019b92a3933</link>
|
||||
<pubDate>Tue, 12 Feb 2008 00:00:00 GMT</pubDate>
|
||||
<category>Artists</category>
|
||||
</item>
|
||||
</channel>
|
||||
</rss>
|
||||
@@ -0,0 +1,35 @@
|
||||
<!-- http://www.zune.net/en-us/products/rss.xml -->
|
||||
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<rss version="2.0" xmlns:xboxlive="http://www.xbox.com">
|
||||
<channel>
|
||||
<title>Zune News</title>
|
||||
<description>Get the latest information about Zune devices, accessories, software, and services.</description>
|
||||
<link>http://www.zune.net/en-us/products/default.htm</link>
|
||||
<ttl>60</ttl>
|
||||
<language>en-US</language>
|
||||
<copyright>©2008 Microsoft Corporation. All Rights Reserved
|
||||
</copyright>
|
||||
<item>
|
||||
<title>Zune 80GB now available at Zune Originals</title>
|
||||
<guid isPermaLink="false">1196285169302_197697</guid>
|
||||
<description>Customize your Zune player with laser-engraved designs and personal text through a new Web store called Zune Originals.</description>
|
||||
<link>http://www.zuneoriginals.net</link>
|
||||
<pubDate>Thu, 29 Nov 2007 00:00:00 GMT</pubDate>
|
||||
</item>
|
||||
<item>
|
||||
<title>You make it you.</title>
|
||||
<guid isPermaLink="false">1194963897423_143068</guid>
|
||||
<description>New Zune players, re-designed Zune software and new online services including the Zune Marketplace and the Zune Social, an online music community.</description>
|
||||
<link>http://www.zune.net/en-us/default.htm</link>
|
||||
<pubDate>Tue, 13 Nov 2007 00:00:00 GMT</pubDate>
|
||||
</item>
|
||||
<item>
|
||||
<title>Zune Originals</title>
|
||||
<guid isPermaLink="false">1194963991940_683321</guid>
|
||||
<description>Customize your Zune player with laser-engraved designs and personal text through a new Web store called Zune Originals.</description>
|
||||
<link>http://www.zuneoriginals.net</link>
|
||||
<pubDate>Tue, 13 Nov 2007 00:00:00 GMT</pubDate>
|
||||
</item>
|
||||
</channel>
|
||||
</rss>
|
||||
Reference in New Issue
Block a user