func (c *Client) Register(name string) error {
	res, err := c.upAuth(&mmuspb.UpAuthRequest{
		UploaderId:   c.id,
		FriendlyName: name,
	})
	if err != nil {
		return err
	}
	if res != mmuspb.UploadResponse_OK {
		return RegisterError(res)
	}
	return nil
}
BUG(lor): Exporting tracks has been known to fail if the device ID of
the client is not sufficiently "MAC address-like".  The exact
threshold is unknown; perhaps the server only looks for a colon in
the ID.
Register registers the client as a device with the given name under
the user's Play Music library.  A client must be registered before
the other method calls can succeed.  Re-registering a client can be
used to change its name.  Note that there are limits to how many
devices one account can have registered at a time, with how many
accounts one device can be registered, and how many devices a user
can deregister in a year, so be judicious in using this call.
package musicmanager
import (
	"fmt"
	"net/http"
	"net/textproto"
	convert "github.com/lxr/go.google.musicmanager/internal/convert"
	mmdspb "github.com/lxr/go.google.musicmanager/internal/download_proto/service"
	mmldpb "github.com/lxr/go.google.musicmanager/internal/locker_proto/data"
	mmssjs "github.com/lxr/go.google.musicmanager/internal/session_json"
	mmudpb "github.com/lxr/go.google.musicmanager/internal/upload_proto/data"
	mmuspb "github.com/lxr/go.google.musicmanager/internal/upload_proto/service"
)
const Scope = "https://www.googleapis.com/auth/musicmanager"
type Client struct {
	client *http.Client
	id     string
}
func NewClient(client *http.Client, deviceID string) (*Client, error) {
	if client == nil {
		return nil, fmt.Errorf("client is nil")
	}
	if deviceID == "" {
		return nil, fmt.Errorf("device ID is empty")
	}
	return &Client{client, deviceID}, nil
}