使用pylast和声情并茂

2024-04-20 05:29:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直在使用pylast.py从中检索有关艺术家和活动的各种类型的信息姓氏.fm. 在

但是,pylast没有从活动中检索场馆信息的功能。特别是,如果您查看事件.获取信息,我想退休地点:

http://www.last.fm/api/show/event.getInfo

<venue> 
<id>8783057</id> 
<name>Ryman Auditorium</name> 
<location> 
  <city>Nashville</city> 
  <country>United States</country> 
  <street>116 Fifth Avenue North</street> 
  <postalcode>37219</postalcode> 
  <geo:point> 
     <geo:lat>36.16148</geo:lat> 
     <geo:long>-86.777959</geo:long> 
  </geo:point> 
</location> 
<url>http://www.last.fm/venue/8783057</url> 
</venue> 

现在,pylast在event对象下有一个名为get_venture的方法,但是它不返回上面显示的任何位置数据。。。在

有没有办法通过pylast获取位置数据?在


Tags: nameevent信息idhttpstreetcitywww
2条回答

Pylast已经有几年没有更新了,但现在是possible in my fork

artist = network.get_artist("Skinny Puppy")
event = artist.get_upcoming_events()[0]
venue = event.get_venue()
print venue.info

印刷品:

^{pr2}$

以及:

print venue.location

印刷品:

{u'postalcode': u'CA 90015', u'city': u'Los Angeles', u'geo:point': {u'geo:long': u'-118.259068', u'geo:lat': u'34.040729'}, u'street': u'1038 S. Hill St', u'country': u'United States'}

以及:

print venue.id, venue.name

印刷品:

8901088, u'Mayan Theatre'

这看起来像是pylast中的一个限制。如果您看一下the sourcepylast总是假定它可以只保存任何子对象的ID,然后使用getInfo服务调用来检索其余的信息。所以,当你调用event.get_venue()时,它就是这样做的

但在这种情况下,它不起作用。从API文档中可以看到,没有venue.getInfo。因此,pylast代码中有以下注释:

# TODO: waiting for a venue.getInfo web service to use.

所以,你需要做三件事之一:

  • 臭虫姓氏.fm添加这个丢失的方法。在
  • 实质上重写所有pylast,以便它存储为对象检索的原始XML,而不仅仅是ID,或者至少在{}的情况下这样做。在
  • 破解Event类,将location视为事件的一部分,而不是其场地的一部分。在

最后一个似乎是目前为止最容易的。但是,您必须决定如何表示一个位置。在

下面是一个快速而肮脏的hack,它将一个位置表示为其所有非空纯文本节点的dict,并使用monkey-patches代码将其获取到Event对象:

^{pr2}$

现在,代码如下:

artist = network.get_artist("Skinny Puppy")
event = artist.get_upcoming_events()[0]
print event.get_location()

…应该打印如下内容:

{'city': 'Santa Ana, CA', 'postalcode': '92704', 
 'street': '3503 S. Harbor Blvd.', 'country': 'United States'}

不完全是美丽的,但它应该作为一个有用的黑客,直到真正的功能存在。在

相关问题 更多 >