Amarok Scripting API

Mark Kretschmann kretschmann at kde.org
Mon Sep 9 12:37:27 UTC 2013


Hi Anmol,

the new API additions look good to me so far. I have the feeling there
are some more parts of Amarok that could be covered, like maybe the
ContextView, and perhaps tagging.

Let's do some brainstorming. Everyone here please add your ideas for
what parts could be useful to expose to scripts.


On Wed, Aug 28, 2013 at 10:24 PM, Anmol Ahuja <darthcodus at gmail.com> wrote:
> Amarok Scripting API Status 2.0
>
> Existing:
>
> Amarok.Lyrics
> public slots:
>             void showLyrics( const QString& lyrics ) const;
>             void showLyricsHtml( const QString& lyrics ) const;
>             void showLyricsError( const QString& error ) const;
>             void showLyricsNotFound( const QString& msg ) const;
>             QString escape( const QString& str );
>             void setLyricsForTrack( const QString& trackUrl , const QString&
> lyrics ) const;
>             QString toUtf8( const QByteArray& lyrics, const QString&
> encoding = "UTF-8" );
>             QString QStringtoUtf8( const QString& lyrics, const QString&
> encoding = "UTF-8" );
>             QByteArray fromUtf8( const QString& str, const QString& encoding
> );
> signals:
>             void fetchLyrics( const QString& artist, const QString& title,
> const QString& );
>
> Amarok.Script
> public slots:
>             QVariant readConfig( const QString &name, const QVariant
> &defaultValue ) const;
>             QString readConfig( const QString &name, const QString
> &defaultValue ) const;
>             void writeConfig( const QString &name, const QVariant &content
> );
>             void writeConfig( const QString &name, const QString &content );
> ScriptableServiceScript
> public slots:
>             int insertItem( StreamItem* item );
>             void setCurrentInfo( const QString &infoHtml );
>             int donePopulating() const;
>             void setIcon( const QPixmap &icon );
>             void setEmblem( const QPixmap &icon );
>             void setScalableEmblem( const QString &emblemPath );
> signals:
>             void populate( int, QString, QString );
>             void fetchInfo( int, QString );
>             void customize();
>
> Amarok.CollectionManager [previously Amarok.Collection]
> public slots:
>             int totalAlbums() const;
>             int totalArtists() const;
>             int totalComposers() const;
>             int totalGenres() const;
>             int totalTracks() const;
>             QStringList collectionLocation() const;
>             QStringList query( const QString& sql ) const;
>             QString escape( const QString& sql ) const;
>             void scanCollection() const;
>             void scanCollectionChanges() const;
>
> Amarok.Window.OSD
> public slots:
>             void showCurrentTrack();
>              * To show an OSD with the current settings, call show();
>             void show();
>             void setDuration( int ms );
>             void setTextColor( const QColor &color );
>             void setOffset( int y );
>             void setImage( const QImage &image );
>             void setScreen( int screen );
>             void setText( const QString &text );
>             void setRating( const short rating );
> Amarok
> public slots:
>             void quitAmarok();
>             void debug( const QString& text ) const;
>             int alert( const QString& text, const QString& type =
> "information" ) const;
>             void end();
>             bool runScript( const QString& name ) const;
>             bool stopScript( const QString& name ) const;
>             QStringList listRunningScripts() const;
> signals:
>             void configured();
>
> Amarok.StreamItem
> QString itemName
> QString infoHtml
> QString playableUrl
> QString callbackData
> int level
> QString album
> QString artist
> QString genre
> QString composer
> int year
> QString coverUrl
> Amarok.Window.Statusbar
> public slots:
>             void longMessage( const QString &text );
>             void shortMessage( const QString &text );
>
> Amarok.Playlist
> public slots:
>             int activeIndex();
>             int totalTrackCount();
>             QString saveCurrentPlaylist();
>             void addMedia( const QUrl &url );
>             void addMediaList( const QVariantList &urls );
>             void clearPlaylist();
>             void playByIndex( int index );
>             void playMedia( const QUrl &url );
>             void playMediaList( const QVariantList &urls );
>             void removeCurrentTrack();
>             void removeByIndex( int index );
>             void savePlaylist( const QString& path );
>             void setStopAfterCurrent( bool on );
>             bool stopAfterCurrent();
>             void togglePlaylist();
>             QStringList filenames();
>             Meta::TrackPtr trackAt( int row );
>             QList<int> selectedIndexes();
>             QStringList selectedFilenames();
> signals:
>             void trackInserted( int start, int end );
>             void trackRemoved( int start, int end );
> Amarok.Info
> public slots:
>             QString scriptPath() const;
>             QString scriptConfigPath( const QString& name ) const;
>             QString iconPath( const QString& name, int size ) const;
>             QString version() const;
>
> Amarok.Window.KNotify
> bool kNotifyEnabled
> public slots:
>             void showCurrentTrack();
>             void show(const QString &title, const QString &body, const
> QPixmap &pixmap = QPixmap() );
> Amarok.Engine
> bool randomMode
> bool dynamicMode
> bool repeatPlaylist
> bool repeatTrack
> int volume
> int fadeoutLength
> public slots:
>             void Play() const;
>             void Stop( bool forceInstant = false ) const;
>             void Pause() const;
>             void Next() const;
>             void Prev() const;
>             void PlayPause() const;
>             void Seek( int ms ) const;
>             void SeekRelative( int ms ) const;
>             void SeekForward( int ms = 10000 ) const;
>             void SeekBackward( int ms = 10000 ) const;
>             int  IncreaseVolume( int ticks = 100/25 );
>             int  DecreaseVolume( int ticks = 100/25 );
>             void Mute();
>             int  trackPosition() const;
>             int  trackPositionMs() const;
>             int  engineState() const;
>             Meta::TrackPtr currentTrack() const;
> signals:
>             void trackFinished();
>             void trackChanged();
>             void newMetaData( const QHash<qint64, QString> &metaData, bool
> newTrack );
>             void trackSeeked( int );
>             void volumeChanged( int );
>             void trackPlayPause( int state );
>
> Amarok.Window
> public slots:
>             bool addToolsMenu( QString id, QString menuTitle, QString icon =
> "amarok" );
>             void addToolsSeparator();
>             bool addSettingsMenu( QString id, QString menuTitle, QString
> icon = "amarok" );
>             void addSettingsSeparator();
> signals:
>             void prepareToQuit();
>
> Amarok.ServicePluginManager
> public slots:
>             QStringList loadedServices();
>             QStringList loadedServiceNames();
>             QString serviceDescription( const QString &service );
>             QString serviceMessages( const QString &service );
>             QString sendMessage( const QString &service, const QString
> &message );
>
> Track
> QString title
> int sampleRate
> int bitrate
> double score
> int rating
> bool inCollection
> QString type
> int length
> int fileSize
> int trackNumber
> int discNumber
> int playCount
> bool playable
> QString album
> QString artist
> QString composer
> QString genre
> int year
> QString comment
> QString path
> bool isValid
> bool isEditable
> QString lyrics
> QString imageUrl
> QString url
> double bpm
> public slots:
>             QScriptValue imagePixmap( int size = 1 ) const;
>
> Importer
> public slots:
>             void loadExtension( const QString &src );
>             bool loadQtBinding( const QString &binding );
>             bool include( const QString &relativeFile );
>
>
> New:
>
> Amarok.Window
> QMainWindow mainWindow
> bool isTrayIconShown
> QString activeBrowserName
> QString styleSheet
> public slots:
>             void showBrowser( QString browser ) const;
>             void showTrayIcon( bool show );
>             QPalette palette() const;
>             void setPalette( const QPalette & palette );
> signals:
>             void newPalette( QPalette );
>
> Amarok.CollectionManager
> public slots:
>             Collections::QueryMaker *queryMaker() const;
>             Collections::CollectionList queryableCollections() const;
>             Collections::CollectionList viewableCollections() const;
>             void dumpDatabaseContent() const;
> signals:
>             void collectionAdded( Collections::Collection *newCollection );
>             void collectionDataChanged( Collections::Collection
> *changedCollection );
>             void collectionRemoved( QString collectionId );
>
> Amarok.Bookmark
> int id
> BookmarkGroupPtr parent
> QString command
> QString name
> QString path
> QString description
> bool isNull
> QString customValue
> QString url
> int id
> BookmarkGroupPtr parent
> QString name
> QString description
> int childCount
> public slots:
>             AmarokUrlPtr contextView();
>             AmarokUrlPtr currentPlaylistView();
>             AmarokUrlPtr browserView();
>             AmarokUrlPtr createCurrentTrackBookmark();
>             // AmarokUrlPtr artist( Meta::AlbumPtr album );
>
> Amarok.Engine.Equalizer
> bool enabled
> bool isSupported
> QString selectedPreset
> QStringList userPresets
> QStringList translatedGlobalPresetList
> QStringList globalPresetList
> QStringList translatedDefaultPresetList
> QStringList defaultPresetList
> QList<int> gains
> int maxGain
> QStringList bandFrequencies
> public slots:
>             QList<int> getPresetGains( const QString &presetName );
>             bool deletePreset( const QString &presetName );
>             void savePreset( const QString &name, const QList<int>
> &presetGains );
> signals:
>             void presetApplied( QString name );
>             void gainsChanged( QList<int> gains );
>             void presetsChanged( QString name );
>
> Importer
> public slots:
>             void loadAmarokBinding( const QString &name );
>
> Amarok.PlaylistManager
> QList<int> availableCategories
> public slots:
>             Playlists::PlaylistList playlistsOfCategory( int
> playlistCategory );
>             Playlists::PlaylistProviderList providersForCategory( int
> playlistCategory );
>             //void setupSync( const Playlists::PlaylistPtr master, const
> Playlists::PlaylistPtr slave );
>             Playlists::PlaylistProvider *playlistProvider( int category,
> QString name );
>                        Playlists::PlaylistProvider *toProvider = 0 );
>             bool import( const QString &fromLocation );
>             bool rename( Playlists::PlaylistPtr playlist, const QString
> &newName );
>             bool deletePlaylists( Playlists::PlaylistList playlistList );
>             getProvidersForPlaylist( const Playlists::PlaylistPtr playlist
> );
>             bool isWritable( const Playlists::PlaylistPtr &playlist );
> signals:
>             void updated( int category );
>             void categoryAdded( int category );
>             void providerAdded( Playlists::PlaylistProvider *provider, int
> category );
>             void providerRemoved( Playlists::PlaylistProvider *provider, int
> category );
>             void playlistAdded( Playlists::PlaylistPtr playlist, int
> category );
>             void playlistRemoved( Playlists::PlaylistPtr playlist, int
> category );
>             void playlistUpdated( Playlists::PlaylistPtr playlist, int
> category );
>             void renamePlaylist( Playlists::PlaylistPtr playlist );
>
>
> PlaylistProvider
> bool isWritable
> QString prettyName
> bool isValid
> QIcon icon
> int category
> int playlistCount
> public slots:
>             QString toString() const;
>             Playlists::PlaylistList playlists();
>             Playlists::PlaylistPtr addPlaylist( Playlists::PlaylistPtr
> playlist );
>             void renamePlaylist( Playlists::PlaylistPtr playlist, const
> QString &newName );
>             bool deletePlaylists( const Playlists::PlaylistList
> &playlistlist );
>             Playlists::PlaylistPtr save( const Meta::TrackList &tracks,
> const QString &name = QString() );
> signals:
>             void updated();
>             void playlistAdded( Playlists::PlaylistPtr playlist );
>             void playlistRemoved( Playlists::PlaylistPtr playlist );
>
> BiasFactory
> ctors: new BiasFactory()
> bool enabled
> QString name
> QString identifier
> QString description
> QScriptValue widget
> QScriptValue fromXml
> QScriptValue toXml
> QScriptValue matchingTracks
> QScriptValue trackMatches
> QScriptValue toStringFunction
> QScriptValue init
> QScriptValue paintOperator
> int count
> bool isFull
> bool isOutstanding
> bool isEmpty
>
> TrackSet (+script ctors )
> int count
> bool isFull
> bool isOutstanding
> bool isEmpty
>         public slots:
>             void reset( bool value );
>             bool contains( const QString& uid ) const;
>             bool contains( const Meta::TrackPtr track ) const;
>             Meta::TrackPtr getRandomTrack() const;
>             void uniteTrack( const Meta::TrackPtr &track );
>             void uniteTrackSet( const Dynamic::TrackSet &trackSet );
>             void uniteUids( const QStringList &uids );
>             void intersectTrackSet( const Dynamic::TrackSet &trackSet );
>             void intersectUids( const QStringList &uids );
>             void subtractTrack( const Meta::TrackPtr &track );
>             void subtractTrackSet( const Dynamic::TrackSet &trackSet );
>             void subtractUids( const QStringList &uids );
>
> QueryMaker
> bool isValid
> QString filter
> public slots:
>         void run();
>         void abort();
>         void addFilter( const QString &filter );
> signals:
>         void newResultReady( Meta::TrackList );
>         void queryDone();
>
> Collection
> bool isOrganizable
> bool isWritable
> QString collectionId
> QString prettyName
> float usedCapacity
> float totalCapacity
> bool isValid
> QIcon icon
> bool isQueryable
> bool isViewable
> bool supportsTranscode
> QString prettyLocation
> QStringList actualLocation
> public slots:
>             void copyTracks( const Meta::TrackList &tracks,
> Collections::Collection *targetCollection );
>             void copyTracks( const Meta::TrackPtr track,
> Collections::Collection *targetCollection );
>             void queryAndCopyTracks( Collections::QueryMaker *queryMaker,
> Collections::Collection *targetCollection );
>             void moveTracks( const Meta::TrackList &tracks,
> Collections::Collection *targetCollection );
>             void moveTracks( const Meta::TrackPtr track,
> Collections::Collection *targetCollection );
>             void queryAndMoveTracks( Collections::QueryMaker *queryMaker,
> Collections::Collection *targetCollection );
>             void removeTracks( const Meta::TrackList &trackList );
>             void removeTracks( const Meta::TrackPtr track );
>             void queryAndRemoveTracks( Collections::QueryMaker *qm );
>             Collections::QueryMaker *queryMaker();
> signals:
>            void updated();
>             void removed();
>             void finishCopy();
>             void finishRemove();
>             void aborted();
>
> Playlist
> bool isValid
> QString name
> QUrl uidUrl
> int trackCount
> Playlists
> public slots:
>             Meta::TrackList tracks();
>             void triggerFullLoad();
>             void triggerQuickLoad();
>             void addTrack( Meta::TrackPtr track, int position = -1 );
>             void removeTrack( int position );
>             QString toString() const;
> signals:
>         void loaded( Meta::TrackList tracks );
>         void addedTrack( Meta::TrackPtr track, int position );
>         void removedTrack( int position );
>
> Track
> Ctors: new Track (QUrl )
> bool isLoaded
> signals:
>             void loaded( Meta::TrackPtr );
>
> Bookmark
> ctors:
> new Bookmark( QString urlString )
> new Bookmark( QString urlString, BookmarkGroupPtr parent )
> new Bookmark( Meta::Track track, longlong time  )
>
> int id
> BookmarkGroupPtr parent
> QString command
> QString name
> QString path
> QString description
> bool isNull
> QString customValue
> QString url
>         public slots:
>             bool save();
>             void initFromString( const QString & urlString );
>             bool run();
>             void removeFromDb();
>             QString prettyCommand() const;
>             StringMap args() const;
>             void setArg( const QString &name, const QString &value );
>
> BookmarkGroup
> ctors:
> BookmarkGroup( QString name )
> BookmarkGroup( QString name, customType )
> BookmarkGroup( QString name, BookmarkGroup parent )
>
> int id
> BookmarkGroupPtr parent
> QString name
> QString description
> int childCount
>         public slots:
>             void save();
>             BookmarkGroupList childGroups() const;
>             BookmarkList childBookmarks() const;
>             void clear();
>             void deleteChildBookmark( AmarokUrlPtr bookmark );
>             void deleteChildBookmarkgroup( BookmarkGroupPtr bookmarkGroup );
>
>
> Amarok.Window.CollectionView
> QString filter
> QScriptValue selection
> bool showYears
> bool showTrackNumbers
> bool showCovers
> QList<Category> levels
> public slots:
>             // void setLevel( int level, Category type );
>             void toggleView( bool merged );
>             void setAction( const QScriptValue &value );
>
> CollectionViewItem
>         CollectionTreeItem* parent
>         int childCount
>         int row
>         int level
>         int childCount
>         bool isCollection
>         Meta::TrackList descendentTracks
>         Collections::Collection* parentCollection
>         public slots:
>             CollectionTreeItem* child( int row );
>
> Selection
>         bool singleCollection
>         int collectionCount
>         QList<CollectionViewItem*> selectedItems
>
> _______________________________________________
> Amarok-devel mailing list
> Amarok-devel at kde.org
> https://mail.kde.org/mailman/listinfo/amarok-devel
>



-- 
Mark Kretschmann
Amarok Developer
Fellow of the Free Software Foundation Europe
http://amarok.kde.org - http://fsfe.org


More information about the Amarok-devel mailing list