三星多室扬声器支持

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 utf8文本文件读取错误?   X509证书将PEM证书或Java证书转换为ASN1证书   java我做错了什么最后一部分没有打开框或给出错误?   自定义从Java类生成Granite DS Actionscript代码   java Android检查端口上是否有可用的WebService   为什么字节上的Java位检查不稳定?   安装Java JRE 64位Windows下载?   java修补程序/补丁构建和交付方法   java为什么“mvn测试”编译测试类,但只运行部分测试类?   JavaScriptJava动态添加输入字段并向表中添加列   安卓 OpenCV Java极限轮廓   java通过在变量中指定classname来选择要执行的类   Java大十进制除法   数组。lang.NullPointerException程序   java需要在Android Studio中使用Jsoup的帮助