Update Readme

This commit is contained in:
Terry Geng 2020-03-28 23:27:39 +08:00
parent da3f3cd42f
commit a5a8cb230d
3 changed files with 25 additions and 12 deletions

View File

@ -31,6 +31,7 @@ Predicted functionalities will be those people would expect from any classic mus
1. [Installation](#installation) 1. [Installation](#installation)
1. [Configuration](#configuration) 1. [Configuration](#configuration)
1. [Run the bot](#run-the-bot) 1. [Run the bot](#run-the-bot)
1. [Operate the bot](#operate-the-bot)
1. [Update](#update) 1. [Update](#update)
1. [Known issues](#known-issues) 1. [Known issues](#known-issues)
1. [Contributors](#contributors) 1. [Contributors](#contributors)
@ -141,6 +142,13 @@ If you want information about auto-starting and auto-restarting of the bot, you
**For the detailed manual of using botamusique, please see the [wiki](https://github.com/azlux/botamusique/wiki).** **For the detailed manual of using botamusique, please see the [wiki](https://github.com/azlux/botamusique/wiki).**
### Operate the bot
You can control the bot by both commands sent by text message and the web interface.
By default, all commands start with `!`. You can type `!help` in the text message to see the full list of commands supported, or see the [wiki page](https://github.com/azlux/botamusique/wiki/Command-Help).
The web interface can be used if you'd like an intuitive way of interacting with the bot. Through it is fairly straightforward, a walk-through can be found on the [wiki page](https://github.com/azlux/botamusique/wiki/Web-interface-walk-through).
### Update ### Update
@ -169,6 +177,11 @@ Exception: Could not find opus library. Make sure it is installed.
``` ```
You need to install the opus codec (not embedded in all system): `apt install libopus0` You need to install the opus codec (not embedded in all system): `apt install libopus0`
3. If you have a large amount of music files (>1000), it may take some time for the bot to boot, since
it will build up the cache for the music library on booting. You may want to disable this auto-scanning by
setting ``refresh_cache_on_startu=False`` in `[bot]` section and control the scanning manually by
``!rescan`` command and the *Rescan Files* button on the web interface.
### Contributors ### Contributors
If you want to participate, You're welcome to fork and submit pull requests (fixes and new features). If you want to participate, You're welcome to fork and submit pull requests (fixes and new features).

View File

@ -258,7 +258,7 @@ auto_paused = Use <i>!play</i> to resume music!
help = <h3>Commands</h3> help = <h3>Commands</h3>
<b>Control</b> <b>Control</b>
<ul> <ul>
<li> <b>!play </b> (or <b>!p</b>) [{num}] - resume from pausing / start to play (the num-th song is num is given) </li> <li> <b>!play </b> (or <b>!p</b>) [{num}] - resume from pausing / start to play (the num-th song is num if given) </li>
<li> <b>!<u>pa</u>use </b> - pause </li> <li> <b>!<u>pa</u>use </b> - pause </li>
<li> <b>!<u>st</u>op </b> - stop playing </li> <li> <b>!<u>st</u>op </b> - stop playing </li>
<li> <b>!<u>sk</u>ip </b> - jump to the next song </li> <li> <b>!<u>sk</u>ip </b> - jump to the next song </li>
@ -276,25 +276,25 @@ help = <h3>Commands</h3>
<ul> <ul>
<li> <b>!<u>n</u>ow </b> (or <b>!np</b>) - display the current song </li> <li> <b>!<u>n</u>ow </b> (or <b>!np</b>) - display the current song </li>
<li> <b>!<u>q</u>ueue </b> - display items in the playlist </li> <li> <b>!<u>q</u>ueue </b> - display items in the playlist </li>
<li> <b>!<u>t</u>ag </b> {tags} - add all items with tags {tags}, tags separated by ",". </li>
<li> <b>!file </b>(or <b>!f</b>) {path/folder/index/keyword} - add a single file to the playlist by its path or index returned by !listfile </li> <li> <b>!file </b>(or <b>!f</b>) {path/folder/index/keyword} - add a single file to the playlist by its path or index returned by !listfile </li>
<li> <b>!<u>filem</u>atch </b>(or <b>!fm</b>) {pattern} - add all files that match regex {pattern} </li> <li> <b>!<u>filem</u>atch </b>(or <b>!fm</b>) {pattern} - add all files that match regex {pattern} </li>
<li> <b>!<u>ur</u>l </b> {url} - add Youtube or SoundCloud music </li> <li> <b>!<u>ur</u>l </b> {url} - add Youtube or SoundCloud music </li>
<li> <b>!<u>playl</u>ist </b> {url} [{offset}] - add all items in a Youtube or SoundCloud playlist, and start with the {offset}-th item </li> <li> <b>!<u>playl</u>ist </b> {url} [{offset}] - add all items in a Youtube or SoundCloud playlist, and start with the {offset}-th item </li>
<li> <b>!<u>t</u>ag </b> {tags} - add all items with tags {tags}, tags separated by ",". </li> <li> <b>!<u>rad</u>io </b> {url} - append a radio {url} to the playlist </li>
<li> <b>!<u>sh</u>ortlist </b> (or <b>!sl</b>) {indexes} - add {indexes}-th item on the shortlist. </li> <li> <b>!<u>rbq</u>uery </b> {keyword} - query http://www.radio-browser.info for a radio station </li>
<li> <b>!<u>rbp</u>lay </b> {id} - play a radio station with {id} (eg. !rbplay 96746) </li>
<li> <b>!<u>ys</u>earch </b> {keywords} - query youtube. Use <i>!ysearch -n</i> to turn the page. </li>
<li> <b>!<u>yp</u>lay </b> {keywords} - add the first search result of {keywords} into the playlist.</li>
<li> <b>!<u>sh</u>ortlist </b> (or <b>!sl</b>) {indexes/*} - add {indexes}-th item (or all items if * is given) on the shortlist. </li>
<li> <b>!rm </b> {num} - remove the num-th song on the playlist </li> <li> <b>!rm </b> {num} - remove the num-th song on the playlist </li>
<li> <b>!<u>rep</u>eat </b> [{num}] - repeat current song {num} (1 by default) times.</li> <li> <b>!<u>rep</u>eat </b> [{num}] - repeat current song {num} (1 by default) times.</li>
<li> <b>!<u>ran</u>dom </b> - randomize the playlist.</li> <li> <b>!<u>ran</u>dom </b> - randomize the playlist.</li>
<li> <b>!<u>rad</u>io </b> {url} - append a radio {url} to the playlist </li>
<li> <b>!<u>li</u>stfile </b> [{pattern}] - display list of available files (that match the regex pattern if {pattern} is given) </li>
<li> <b>!<u>rbq</u>uery </b> {keyword} - query http://www.radio-browser.info for a radio station </li>
<li> <b>!<u>rbp</u>lay </b> {id} - play a radio station with {id} (eg. !rbplay 96746) </li>
<li> <b>!<u>ys</u>earch </b> {keywords} - query youtube. Use <i>!ytquery -n</i> to turn the page. </li>
<li> <b>!<u>yp</u>lay </b> {keywords} - add the first search result of {keywords} into the playlist.</li>
</ul> </ul>
<b>Music Library</b> <b>Music Library</b>
<ul> <ul>
<li> <b>!<u>se</u>arch </b> {keywords} - find item with {keywords} in the music library, keywords separated by space.</li> <li> <b>!<u>se</u>arch </b> {keywords} - find item with {keywords} in the music library, keywords separated by space.</li>
<li> <b>!<u>li</u>stfile </b> [{pattern}] - display list of available files (whose paths match the regex pattern if {pattern} is given) </li>
<li> <b>!<u>addt</u>ag </b> [{index}] {tags} - add {tags} to {index}-th(current song if {index} is omitted) item on the playlist, tags separated by ",". </li> <li> <b>!<u>addt</u>ag </b> [{index}] {tags} - add {tags} to {index}-th(current song if {index} is omitted) item on the playlist, tags separated by ",". </li>
<li> <b>!<u>addt</u>ag </b> * {tags} - add {tags} to all items on the playlist. </li> <li> <b>!<u>addt</u>ag </b> * {tags} - add {tags} to all items on the playlist. </li>
<li> <b>!<u>un</u>tag </b> [{index/*}] {tags}/* - remove {tags}/all tags from {index}-th(current song if {index} is omitted) item on the playlist. </li> <li> <b>!<u>un</u>tag </b> [{index/*}] {tags}/* - remove {tags}/all tags from {index}-th(current song if {index} is omitted) item on the playlist. </li>
@ -312,7 +312,7 @@ admin_help = <h3>Admin command</h3>
<li><b>!update </b> - update the bot</li> <li><b>!update </b> - update the bot</li>
<li><b>!userban </b> {user} - ban a user</li> <li><b>!userban </b> {user} - ban a user</li>
<li><b>!userunban </b> {user} - unban a user</li> <li><b>!userunban </b> {user} - unban a user</li>
<li><b>!urlbanlist </b> {url} - list banned url</li> <li><b>!urlbanlist </b> - list banned url</li>
<li><b>!urlban </b> [{url}] - ban {url} (or current item's url by default) and remove this url from the library.</li> <li><b>!urlban </b> [{url}] - ban {url} (or current item's url by default) and remove this url from the library.</li>
<li><b>!urlunban </b> {url} - unban {url}</li> <li><b>!urlunban </b> {url} - unban {url}</li>
<li><b>!rescan </b> {url} - rebuild local music file cache</li> <li><b>!rescan </b> {url} - rebuild local music file cache</li>

View File

@ -109,8 +109,8 @@ class MusicCache(dict):
self.log.info("library: rebuild directory cache") self.log.info("library: rebuild directory cache")
files = util.get_recursive_file_list_sorted(var.music_folder) files = util.get_recursive_file_list_sorted(var.music_folder)
for file in files: for file in files:
item = self.fetch(bot, item_id_generators['file'](path=file)) results = self.db.query_music(Condition().and_equal('path', file))
if not item: if not results:
item = item_builders['file'](bot, path=file) item = item_builders['file'](bot, path=file)
self.log.debug("library: music save into database: %s" % item.format_debug_string()) self.log.debug("library: music save into database: %s" % item.format_debug_string())
self.db.insert_music(item.to_dict()) self.db.insert_music(item.to_dict())