who knows what I changed

This commit is contained in:
Yoshi Askharoun
2021-07-22 00:38:41 -05:00
parent 11909bab46
commit 32b81dcc4c
11 changed files with 14164 additions and 94 deletions
+106 -93
View File
@@ -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
View File
@@ -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&amp;cost=free&amp;store=Zest&amp;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>
@@ -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&amp;store=&amp;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>
+35
View File
@@ -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>