Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
M
modlastfm
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
1
Issues
1
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
Operations
Operations
Incidents
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
stella-irc
modlastfm
Commits
63acf5bf
Commit
63acf5bf
authored
Oct 26, 2018
by
Mike Jones
🌶
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Song plays
parent
c1cfbc44
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
50 additions
and
12 deletions
+50
-12
cmd/modlastfm/main.go
cmd/modlastfm/main.go
+1
-1
internal/app/modlastfm/command/init.go
internal/app/modlastfm/command/init.go
+2
-1
internal/app/modlastfm/command/user.go
internal/app/modlastfm/command/user.go
+38
-9
internal/app/modlastfm/gauntlet/run.go
internal/app/modlastfm/gauntlet/run.go
+9
-1
No files found.
cmd/modlastfm/main.go
View file @
63acf5bf
...
@@ -22,7 +22,7 @@ func main() {
...
@@ -22,7 +22,7 @@ func main() {
gauntlet
.
New
(
config
,
db
)
gauntlet
.
New
(
config
,
db
)
out
:=
gauntlet
.
Run
(
"ne7split"
,
`
aplays Odraza "Esperalem tkane
"`
)
out
:=
gauntlet
.
Run
(
"ne7split"
,
`
splays Begrime Exemious "Noose for a Monarch
"`
)
log
.
Println
(
out
)
log
.
Println
(
out
)
...
...
internal/app/modlastfm/command/init.go
View file @
63acf5bf
...
@@ -2,9 +2,10 @@ package command
...
@@ -2,9 +2,10 @@ package command
import
(
import
(
"fmt"
"fmt"
"strconv"
"github.com/boltdb/bolt"
"github.com/boltdb/bolt"
"github.com/n7st/lastfm-go/lastfm"
"github.com/n7st/lastfm-go/lastfm"
"strconv"
"git.netsplit.uk/stella-irc/modlastfm/internal/app/modlastfm/util"
"git.netsplit.uk/stella-irc/modlastfm/internal/app/modlastfm/util"
)
)
...
...
internal/app/modlastfm/command/user.go
View file @
63acf5bf
...
@@ -8,6 +8,8 @@ import (
...
@@ -8,6 +8,8 @@ import (
"github.com/n7st/lastfm-go/lastfm"
"github.com/n7st/lastfm-go/lastfm"
)
)
const
statLineF
=
"%s by %s has %s total plays, of which %s are %s's (%s)"
func
(
f
*
Fn
)
NowPlaying
(
message
string
,
username
string
)
string
{
func
(
f
*
Fn
)
NowPlaying
(
message
string
,
username
string
)
string
{
resp
,
err
:=
f
.
LastFM
.
User
.
GetRecentTracks
(
lastfm
.
P
{
resp
,
err
:=
f
.
LastFM
.
User
.
GetRecentTracks
(
lastfm
.
P
{
"autocorrect"
:
1
,
"autocorrect"
:
1
,
...
@@ -51,14 +53,20 @@ func (f *Fn) UserAlbumStats(message string, username string) string {
...
@@ -51,14 +53,20 @@ func (f *Fn) UserAlbumStats(message string, username string) string {
return
f
.
fmtUserAlbumStats
(
username
,
userAlbumInfo
)
return
f
.
fmtUserAlbumStats
(
username
,
userAlbumInfo
)
}
}
func
(
f
*
Fn
)
fmtUserArtistStats
(
username
string
,
info
lastfm
.
ArtistGetInfo
)
string
{
func
(
f
*
Fn
)
UserTrackStats
(
message
string
,
username
string
)
string
{
return
fmt
.
Sprintf
(
"%s have %s total plays, of which %s are %s's (%s)"
,
artist
,
songTitle
:=
extractTitles
(
message
)
info
.
Name
,
info
.
Stats
.
Plays
,
if
artist
==
""
||
songTitle
==
""
{
info
.
Stats
.
UserPlays
,
return
`Format: splays Artist Name "Song Title"`
username
,
}
fmtPlaycountPercentage
(
info
.
Stats
.
UserPlays
,
info
.
Stats
.
Plays
),
)
userTrackInfo
,
err
:=
f
.
getUserTrackInfo
(
username
,
artist
,
songTitle
)
if
err
!=
nil
{
return
fmtError
(
err
)
}
return
f
.
fmtUserTrackStats
(
username
,
userTrackInfo
)
}
}
// formats a "now playing" string from recent user tracks, e.g.:
// formats a "now playing" string from recent user tracks, e.g.:
...
@@ -107,8 +115,18 @@ func (f *Fn) fmtNowPlaying(username string, np lastfm.UserGetRecentTracks) strin
...
@@ -107,8 +115,18 @@ func (f *Fn) fmtNowPlaying(username string, np lastfm.UserGetRecentTracks) strin
)
)
}
}
func
(
f
*
Fn
)
fmtUserArtistStats
(
username
string
,
info
lastfm
.
ArtistGetInfo
)
string
{
return
fmt
.
Sprintf
(
"%s have %s total plays, of which %s are %s's (%s)"
,
info
.
Name
,
info
.
Stats
.
Plays
,
info
.
Stats
.
UserPlays
,
username
,
fmtPlaycountPercentage
(
info
.
Stats
.
UserPlays
,
info
.
Stats
.
Plays
),
)
}
func
(
f
*
Fn
)
fmtUserAlbumStats
(
username
string
,
album
lastfm
.
AlbumGetInfo
)
string
{
func
(
f
*
Fn
)
fmtUserAlbumStats
(
username
string
,
album
lastfm
.
AlbumGetInfo
)
string
{
return
fmt
.
Sprintf
(
"%s by %s has %s total plays, of which %s are %s's (%s)"
,
return
fmt
.
Sprintf
(
statLineF
,
album
.
Name
,
album
.
Name
,
album
.
Artist
,
album
.
Artist
,
album
.
PlayCount
,
album
.
PlayCount
,
...
@@ -118,6 +136,17 @@ func (f *Fn) fmtUserAlbumStats(username string, album lastfm.AlbumGetInfo) strin
...
@@ -118,6 +136,17 @@ func (f *Fn) fmtUserAlbumStats(username string, album lastfm.AlbumGetInfo) strin
)
)
}
}
func
(
f
*
Fn
)
fmtUserTrackStats
(
username
string
,
track
lastfm
.
TrackGetInfo
)
string
{
return
fmt
.
Sprintf
(
statLineF
,
track
.
Artist
.
Name
,
track
.
Name
,
track
.
PlayCount
,
track
.
UserPlayCount
,
username
,
fmtPlaycountPercentage
(
track
.
UserPlayCount
,
track
.
PlayCount
),
)
}
func
(
f
*
Fn
)
getUserTrackInfo
(
username
string
,
artist
string
,
track
string
)
(
lastfm
.
TrackGetInfo
,
error
)
{
func
(
f
*
Fn
)
getUserTrackInfo
(
username
string
,
artist
string
,
track
string
)
(
lastfm
.
TrackGetInfo
,
error
)
{
return
f
.
LastFM
.
Track
.
GetInfo
(
lastfm
.
P
{
return
f
.
LastFM
.
Track
.
GetInfo
(
lastfm
.
P
{
"artist"
:
artist
,
"artist"
:
artist
,
...
...
internal/app/modlastfm/gauntlet/run.go
View file @
63acf5bf
...
@@ -25,9 +25,17 @@ func New(c *util.Config, db *bolt.DB) {
...
@@ -25,9 +25,17 @@ func New(c *util.Config, db *bolt.DB) {
"l"
:
fn
.
NowPlaying
,
"l"
:
fn
.
NowPlaying
,
"np"
:
fn
.
NowPlaying
,
"np"
:
fn
.
NowPlaying
,
"nowplaying"
:
fn
.
NowPlaying
,
"nowplaying"
:
fn
.
NowPlaying
,
//"topw": fn.UserTopWeek,
//"topm": fn.UserTopMonth,
//"topy": fn.UserTopYear,
//"topa": fn.UserTopAll,
"plays"
:
fn
.
UserArtistStats
,
"plays"
:
fn
.
UserArtistStats
,
"aplays"
:
fn
.
UserAlbumStats
,
"aplays"
:
fn
.
UserAlbumStats
,
"splays"
:
fn
.
UserTrackStats
,
//"artist": fn.ArtistInfo,
//"band": fn.ArtistInfo,
//"similar": fn.SimilarArtists,
}
}
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment