三星多室扬声器支持

samsung-multiroom的Python项目详细描述


控制三星多室扬声器。

https://img.shields.io/travis/krygal/samsung_multiroom/master.svghttps://img.shields.io/librariesio/github/krygal/samsung_multiroom.svghttps://img.shields.io/codeclimate/maintainability-percentage/krygal/samsung_multiroom.svghttps://img.shields.io/codeclimate/coverage/krygal/samsung_multiroom.svghttps://img.shields.io/pypi/v/samsung_multiroom.svghttps://img.shields.io/pypi/pyversions/samsung_multiroom.svghttps://img.shields.io/pypi/l/samsung_multiroom.svg

安装

pip install samsung_multiroom

扬声器控制示例

初始化

fromsamsung_multiroomimportSamsungMultiroomSpeaker# initialise (replace with your speaker's ip address)speaker=SamsungMultiroomSpeaker('192.168.1.129')# get speaker namespeaker.get_name()

基本函数

# get/set volumevolume=speaker.get_volume()print(volume)speaker.set_volume(10)# switch source to connect with your samsung tvspeaker.set_source('soundshare')# mute/unmutespeaker.mute()speaker.unmute()

音频源浏览器

# browse dlna device called nasbrowser=speaker.service('dlna').browser# or shorterbrowser=speaker.browser('dlna')browser=browser.browse('/nas/Music/By Folder/Air/Moon Safari/CD 1')foriteminbrowser:print(item.object_type,item.object_id,item.artist,'-',item.name)# browse TuneIn radiosbrowser=speaker.service('tunein').browserbrowser=browser.browse('/Trending/')foriteminbrowser:print(item.object_type,item.object_id,item.name)

app集成

# check available servicesnames=speaker.get_services_names()print(names)# authenticate (unless you've done it already via mobile app)speaker.service('Deezer').login('your email','your password')browser=speaker.service('Deezer').browserbrowser=browser.browse('/Browse/Rock/Artists/Queen')foriteminbrowser:print(item.object_type,item.object_id,item.name)

player函数

# create playlist from browser items (see above) and playspeaker.player.play(browser)# pause/resumespeaker.player.pause()speaker.player.resume()# repeat modefromsamsung_multiroomimportREPEAT_ALL,REPEAT_ONE,REPEAT_OFFspeaker.player.repeat(REPEAT_ALL)# get track infotrack=speaker.player.get_current_track()print(track)

均衡器函数

# get preset namespresets=speaker.equalizer.get_presets_names()print(presets)# set predefined equalizer settingsspeaker.equalizer.set('Pop')# set adhoc settingsspeaker.equalizer.set([4,3,2,1,2,3,0])# <-6, 6># overwrite current presetspeaker.equalizer.save()# ... or save as a new presetspeaker.equalizer.save('Experimental')

时钟函数

# set alarmbrowser=speaker.service('tunein').browserbrowser=browser.browse('/Trending/')speaker.clock.alarm.slot(0).set(time='17:28',weekdays=[0,1,5],# Mon, Tue, Friplaylist=browser,)# enable/disable alarm 0speaker.clock.alarm.slot(0).enable()speaker.clock.alarm.slot(0).disable()# sleep after 30 secondsspeaker.clock.timer.start(300)remaining_time=speaker.clock.timer.get_remaining_time()print(remaining_time)

扬声器发现

fromsamsung_multiroomimportSamsungSpeakerDiscoveryspeakers=SamsungSpeakerDiscovery().discover()# takes some timeforsinspeakers:print(s.get_name(),'@',s.ip_address)

扬声器分组

# (after speaker discovery)main_speaker=speakers[0]rest_speakers=speakers[1:]speaker_group=main_speaker.group('My first group',rest_speakers)# now use speaker group like a speakerspeaker_group.set_volume(10)browser=speaker_group.service('dlna').browserbrowser=browser.browse('/nas/Music/By Folder/Air/Moon Safari/CD 1')speaker_group.player.play(browser)

事件(预览)

您可以监视扬声器发出的事件而无需轮询。支持的事件的完整列表可以在 Samsung_Multiroom/Event/Type/。

importasynciofromsamsung_multiroomimportSamsungMultiroomSpeaker# listener will be passed an Event object (see samsung_multiroom/event/type/)deflistener(event):print(event.name,event)asyncdefmain():speaker=SamsungMultiroomSpeaker('192.168.1.129')event_loop=speaker.event_loopevent_loop.add_listener('*',listener)awaitevent_loop.loop()loop=asyncio.get_event_loop()loop.run_until_complete(main())loop.close()
# listen to all eventsevent_loop.add_listener('*',listener)# listen to events within a namespaceevent_loop.add_listener('speaker.service.*',listener)# listen to a single eventevent_loop.add_listener('speaker.service.changed',listener)

许可证

麻省理工学院许可证

版权所有(c)2018 Krystian Galutowski

兹免费准许任何人取得副本 本软件和相关文档文件(“软件”)的 在软件中不受限制,包括但不限于 使用、复制、修改、合并、发布、分发、再授权和/或出售 软件的副本,并允许软件的用户 在满足以下条件的情况下,可以这样做:

上述版权公告及本许可公告须包括在 软件的拷贝或大部分。

本软件按“原样”提供,无任何形式的保证,明示或 默示的,包括但不限于适销性保证, 适合特定目的和不侵权。在任何情况下 作者或版权所有者应对任何索赔、损害或其他 责任,无论是在合同诉讼、侵权诉讼或其他诉讼中, 不属于或与本软件有关,或使用或与本软件的其他交易有关。 软件。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java线程执行器服务   aspose如何通过java获得单词bookmark之前的所有文本内容?   一对一映射的java Hibernate合并问题   java SOAP XSD根元素问题   java如何保护我的Spring启动API   java使用GeoJson向google地图添加标记   java安卓:在SQLite中没有这样的列   java STS 2.8.0 StartExplorer/Legacy插件安装问题   java如何以编程方式获取AppBar高度?   在Java中将BigDecimal添加到BigDecimal   java不支持ntdll。dll是windows xp和windows vista的标准配置吗?   内容类型为application/xwwwformurlencoded的java Http Put请求在Spring中不起作用   java在数组中计算工资并返回答案   java数字/货币格式   elasticsearch java api中的弹性搜索查询