From ae03b4a981e6a6b4f494547ab1e156e2fe185d0b Mon Sep 17 00:00:00 2001 From: Sarsoo Date: Sat, 12 Jun 2021 13:00:38 +0000 Subject: [PATCH] deploy: e64d0e2cd8e4205a17f907b9c467af25e6a38de2 --- .doctrees/environment.pickle | Bin 84491 -> 93251 bytes .doctrees/index.doctree | Bin 8166 -> 8217 bytes .doctrees/src/MusicTools.Admin.doctree | Bin 0 -> 27383 bytes .doctrees/src/MusicTools.Maths.doctree | Bin 0 -> 9898 bytes .doctrees/src/MusicTools.MusicTools.doctree | Bin 9126 -> 0 bytes .doctrees/src/MusicTools.Playlist.doctree | Bin 79326 -> 79251 bytes .doctrees/src/MusicTools.Settings.doctree | Bin 0 -> 33501 bytes .doctrees/src/MusicTools.Tag.doctree | Bin 23490 -> 45287 bytes .doctrees/src/MusicTools.doctree | Bin 3004 -> 9821 bytes .doctrees/src/modules.doctree | Bin 2669 -> 2725 bytes .doctrees/src/music.doctree | Bin 9110 -> 8860 bytes _sources/index.rst.txt | 16 +- _sources/src/MusicTools.Admin.rst.txt | 34 +++ _sources/src/MusicTools.Maths.rst.txt | 17 ++ _sources/src/MusicTools.MusicTools.rst.txt | 6 - _sources/src/MusicTools.Playlist.rst.txt | 19 +- _sources/src/MusicTools.Settings.rst.txt | 34 +++ _sources/src/MusicTools.Tag.rst.txt | 9 +- _sources/src/MusicTools.rst.txt | 12 +- _sources/src/modules.rst.txt | 4 +- _sources/src/music.rst.txt | 14 +- genindex.html | 130 +++++++-- index.html | 50 ++-- objects.inv | Bin 2210 -> 2536 bytes py-modindex.html | 12 +- search.html | 12 +- searchindex.js | 2 +- src/MusicTools.Admin.html | 259 +++++++++++++++++ src/MusicTools.Maths.html | 166 +++++++++++ src/MusicTools.MusicTools.html | 158 ----------- src/MusicTools.Playlist.html | 87 +++--- src/MusicTools.Settings.html | 296 ++++++++++++++++++++ src/MusicTools.Tag.html | 152 +++++++++- src/MusicTools.html | 105 +++++-- src/modules.html | 141 +++++----- src/music.api.html | 33 ++- src/music.auth.html | 29 +- src/music.cloud.html | 29 +- src/music.db.html | 29 +- src/music.html | 47 ++-- src/music.model.html | 29 +- src/music.tasks.html | 33 ++- 42 files changed, 1456 insertions(+), 508 deletions(-) create mode 100644 .doctrees/src/MusicTools.Admin.doctree create mode 100644 .doctrees/src/MusicTools.Maths.doctree delete mode 100644 .doctrees/src/MusicTools.MusicTools.doctree create mode 100644 .doctrees/src/MusicTools.Settings.doctree create mode 100644 _sources/src/MusicTools.Admin.rst.txt create mode 100644 _sources/src/MusicTools.Maths.rst.txt delete mode 100644 _sources/src/MusicTools.MusicTools.rst.txt create mode 100644 _sources/src/MusicTools.Settings.rst.txt create mode 100644 src/MusicTools.Admin.html create mode 100644 src/MusicTools.Maths.html delete mode 100644 src/MusicTools.MusicTools.html create mode 100644 src/MusicTools.Settings.html diff --git a/.doctrees/environment.pickle b/.doctrees/environment.pickle index 68585df66a28e53d7775d9ceece3c40d4030e87e..64be4a24bd7269e66bc31a05a610d3869cffce2a 100644 GIT binary patch literal 93251 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 CUjN+y delta 1556 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 literal 0 HcmV?d00001 diff --git a/.doctrees/src/MusicTools.MusicTools.doctree b/.doctrees/src/MusicTools.MusicTools.doctree deleted file mode 100644 index 0328fc230e0f1e03a0d114ef67bb607e312a99ae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9126 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 diff --git a/.doctrees/src/MusicTools.Playlist.doctree b/.doctrees/src/MusicTools.Playlist.doctree index 0d243f89030719b24455ab5f9cd189214c0038c5..ca19a008f99bf28b59244afa82092a69e6cf77c6 100644 GIT binary patch literal 79251 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 diff --git a/.doctrees/src/MusicTools.Settings.doctree b/.doctrees/src/MusicTools.Settings.doctree new file mode 100644 index 0000000000000000000000000000000000000000..3698ccdec00d70fe5679f578e25aba1dd80a5c53 GIT binary patch literal 33501 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 QG8%$s&v$s+d)1}?1A)G7H~;_u literal 0 HcmV?d00001 diff --git a/.doctrees/src/MusicTools.Tag.doctree b/.doctrees/src/MusicTools.Tag.doctree index 020ff214818f9976095b98331f5de6c9985ad1ef..94a4f5735b0f0bf975fc70a6b61e73cc7e4f33ce 100644 GIT binary patch literal 45287 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 diff --git a/.doctrees/src/MusicTools.doctree b/.doctrees/src/MusicTools.doctree index 812d4235dd3274a8fa94081010c1ef6651d276e9..424f03916b99182e66f7899998496024832ac462 100644 GIT binary patch literal 9821 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 MUZw)AI&7~07YWFIm;e9( delta 476 zcmccXvqzk@fpzLe?uo1&rh>ku#hJ+pA^G_^#R@^GiOD5XGT39MWN`MdgrruKOqo2T z2UE$!Jx~0(H5;eYPSMC<&0qs*(8v&g3G{FWmnIb?CTAz6rxrs@6GIhiodVNqlp&pA zkRg-7Jb9z2l4xm$b_PFCL>DBIA)BF-A?M9Hc`jp_tYmRfvOd_UV3+D4m{Z!OOcrD^ zl}zp7$;?a6DNRXD%gh1V3vyCmMsP;xTk>7J)+* zVJJjW0W7Hik(}(O>b3bV%UedqIh$XzZDiKf$SBJw&dAHiF74sWOUz9zsVo5c31obk dUq+r^X@(+*T?}+Wc82ce4n==P7Ut3SSx^+uHx^;7*x)U>$f!bALf%?GG3SemksPtw*<`{MWqgF8k delta 75 zcmZ1~`c{Ocfpu!qM3zoj*4)zK%;YHIffko93~sB diff --git a/.doctrees/src/music.doctree b/.doctrees/src/music.doctree index dd6f2a907da29a8154ba67ecdbe7d56055ba0a88..5688104b7e940475092299ac93f9b9cfffc4a1bd 100644 GIT binary patch delta 2046 zcmZuyT})e59N)eDfKp1KP$-m^+frB=lx^yifisgaoDi#7{D{V3+H&Fa&=1nvE-<&U zPG($k6J`Ia@xjFSw5ZIXC?Oc?7U+1m_nhT zdF!!v4jN7x-kkH!8D0xm24f*)DH;(DCzEO6 ziR5S|CTjlb1ypsf&Gws+Ww6}KbnW{0hCL7y@u3si7=o`alW)^Hjr zuP_y!i7pSoWkDAVLR~gMtz9rvfNGJK8(eoIufUn|np8SadO|V)~XCya~ z`#Ut4_wi&+rAlU`uBy~G%zeCtgG=^ixM}V&o4IY<7(Ejf;Re^ZtKeV-iPsV4Zyosv z$(BemAthttzQIsT(t_$If524bE`B?+=W^c;kv7cicKkYyC=4b7p{?iv4c&#^W*@&t z_1s3wka&+Y0?bR(O60@4<}Ut#s$ifFM)=q4H)()T?rfvGx&*Cyh4upR8eX9oBjOI? z6-f)rwg&;8hl5o;wx1ZtPcb`JFgqN|e+;iz4OA0!#ty{*uT<^ijzX=~=R1xpxh#>4 zCPu|6UDE0eZy<1klhg8LBSHAB8)!4_bVg+eZgk+qOCW3%64PhF^ed%>i zK}+2+(+ZPv(i`kTovd}Q))9W0gT3}yevJ{ktgD*H9k#gWMOd|WaHqgm{}gA1_v!-W zIn=M@u^>YYf~f*Gc)o)L>Gl1sY2Lym6Q;LuDFH$6a?se&%LUL-S2xXj+QDp~C#LNl zW~yeSY*xjw@=?Px+yE+eK)}(-jluJdhgzk+J%S5DY%$>g za?(ESB$Vd??|}att)?PiL~r_w`FBzb#{MV4N%}&@Aq@ZXmTjcB_r*C)xbq4y16T2ejT$#6rmwraEInZ&TYI z>&7;hEo1EE354@6PqEVS3?a{0oNemixlb0qZeG$=%M9EZ_M2tD9Lx!I?Ti>y2^e7y zP7zgtRMH$Wu$8m)BwmNjbS_)y@l{77- z#rR8cQIbOABEE^GsV_O#%RPstC&g4OnwSvMq13pT7QFY)8?O+Rgakf>DRE3piHV3f z+O4d=c}C2&SEt)pBrWVz<8bXY#KfawOc~~6eHuL}vi|Yl;FF4Ml#-cLL{zAZSCI7x SKtv%{bS_lQghLQ+ec*o*NtjUp delta 2168 zcmZuyYfPJE6yEohue4NXDFp^y%bm4>ZfrwECJSadqhv*$bD0i9VI428P%dq=ONMM_ znk|0GLe2+7K%H4OsqO?1X{-tW?K`SD%ebIx;a z?{nUF?y;%Il~c;(>opU~*?=;bPWJa|EVoNzPBrJ*__34*nyQN@KKlU<+Wbwfed(Uz zSno@*zIakMEm2p

c&$hM<>*GgP8-4kaO@324`7NQs6mT zu*JQ1=x}-dN3#m>!mqYb=UFrmQW#MVz}1{H%3COz zBZ$mqQ22bIP^Wv?Y}jZEblL~u3HzAx5t@ELrX_3!3x6NmVl(|A;2gBMn_*Y(Zbd|a z*K)5&x6r&Ex*UGxTeMt+F~_^oPb4d5%j|ZVHL$xRH}bp#-Of*Co&zIA0oak}b8=bQ zumKJJgS~leGA|a2%cLkW6`$wrlAAe(t_sp8qeC%p+ zXdvFUCpM6b3toh{4bgDP)g-l(!w`4lI!0T>HscfS(lB8oCH^q#(mmWqkiNVcnMZX@ z<$4%BTN6`9n8mzC=@3B_zKzylSIDVnk7n>qY0zVK$VgrkRA&_QXLi?Ea0SiSH8_&r z;{AoX`!(*<9o#1g?XSa?{6{^fF&HhZmgf{~mCi$RL2cJ0s?^-XP=DfZ{Fru*@Lviu z;!GgADolt?tL{NT(TGLSxJ7D1WwBQf+e^fL#4E;ji+ES+9?Zd9Pi4`YUlO_Vi`cfv zMx0Q7fdrW$EjL(rf61g;q&wbOnH3D)E+}y`do-oRs5qo4zW{B8+}Fg_$Ja;;lsiQq}!yeHnqrk zzGQjl%k)co$o_&Y-iGna93RU~h8SLjxo z=o8?}aNQS{X5kOtQ*yHa=Hdb3=i6lPR0rYr{2a$t0|1MqHMQmXq7*+kVSfCq%7s_T z@N;pi{EUbeF`{)645LvU!485pt%0&xc)4W1+)uy|+$(92#vxq#U_eGo)iHd$wRa$v zOlnc=5AP#?e%>px%%hG`(%oy4?xdt0X41597VA)KO8v&haed^h23t95XQ>3|w06vX>+0&|zg*C7bnfFhKUnL*k* z7Szi4nXd@ul-uwm#Y?Qhyu_}tMG-@^M3m3{WYgv@Rm75Da=8s|6};%RjuWH~O%`8T M*i%_80jqBQA9jhZ{r~^~ diff --git a/_sources/index.rst.txt b/_sources/index.rst.txt index a452bac..2805352 100644 --- a/_sources/index.rst.txt +++ b/_sources/index.rst.txt @@ -2,18 +2,12 @@ Music Tools ======================================= .. toctree:: - :maxdepth: 1 + :maxdepth: 2 :caption: Contents: - Modules - src/music - src/music.api - src/music.auth - src/music.cloud - src/music.db - src/music.model - src/music.tasks - src/MusicTools + Py + Js + All Modules `Music Tools `_ ---------------------------------------------- @@ -22,7 +16,7 @@ Music Tools Music Tools is a web app for creating smart Spotify playlists. The app is based on `spotframework `_ and `fmframework `_ for interfacing with Spotify and Last.fm. The app is currently hosted on Google's Cloud Platform. -The system is composed of a Flask web server with a Fireo ORM layer and longer tasks dispatched to Cloud Tasks or Functions. +The backend is composed of a Flask web server with a Fireo ORM layer and longer tasks dispatched to Cloud Tasks or Functions. The frontend is a React app with material UI components and Axios for HTTP requests. .. image:: Playlists.png diff --git a/_sources/src/MusicTools.Admin.rst.txt b/_sources/src/MusicTools.Admin.rst.txt new file mode 100644 index 0000000..aa10ade --- /dev/null +++ b/_sources/src/MusicTools.Admin.rst.txt @@ -0,0 +1,34 @@ +Admin +================= + +Router +-------- + +.. js:autoclass:: Admin + :members: + :private-members: + +Lock +------------------ + +.. js:autoclass:: Lock + :members: + :private-members: + +.. js:autofunction:: Row + +Functions +-------------------- + +.. js:autoclass:: Functions + :members: + :private-members: + +Tasks +-------------------- + +.. js:autoclass:: Tasks + :members: + :private-members: + +.. js:autofunction:: TaskType \ No newline at end of file diff --git a/_sources/src/MusicTools.Maths.rst.txt b/_sources/src/MusicTools.Maths.rst.txt new file mode 100644 index 0000000..bc50182 --- /dev/null +++ b/_sources/src/MusicTools.Maths.rst.txt @@ -0,0 +1,17 @@ +Maths +================= + +Bar Chart +----------------- + +.. js:autoclass:: BarChart + :members: + :private-members: + +Pie Chart +------------------ + +.. js:autoclass:: PieChart + :members: + :private-members: + diff --git a/_sources/src/MusicTools.MusicTools.rst.txt b/_sources/src/MusicTools.MusicTools.rst.txt deleted file mode 100644 index 06a6bb6..0000000 --- a/_sources/src/MusicTools.MusicTools.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -MusicTools -================= - -.. js:autoclass:: MusicTools - :members: - :private-members: \ No newline at end of file diff --git a/_sources/src/MusicTools.Playlist.rst.txt b/_sources/src/MusicTools.Playlist.rst.txt index 5e3b698..4dd7a52 100644 --- a/_sources/src/MusicTools.Playlist.rst.txt +++ b/_sources/src/MusicTools.Playlist.rst.txt @@ -8,7 +8,13 @@ Router :members: :private-members: -Playlists List +For managing playlists list pages for diverting to new playlist page + +.. js:autoclass:: PlaylistRouter.View + :members: + :private-members: + +Cards List ------------------ .. js:autoclass:: PlaylistsView @@ -32,14 +38,7 @@ New Playlist Card :members: :private-members: -Playlist Router ------------------- - -.. js:autoclass:: PlaylistRouter.View - :members: - :private-members: - -Playlist View +View/Edit Card ------------------ .. js:autoclass:: Edit @@ -52,7 +51,7 @@ Playlist View .. js:autofunction:: Edit.BlockGridItem -Playlist Stats View +Stats Card ----------------------- .. js:autoclass:: Count diff --git a/_sources/src/MusicTools.Settings.rst.txt b/_sources/src/MusicTools.Settings.rst.txt new file mode 100644 index 0000000..589dbaa --- /dev/null +++ b/_sources/src/MusicTools.Settings.rst.txt @@ -0,0 +1,34 @@ +Settings +================= + +Router +-------- + +.. js:autoclass:: Settings + :members: + :private-members: + +Change Password +------------------ + +.. js:autoclass:: ChangePassword + :members: + :private-members: + +Spotify Link +------------------ + +.. js:autoclass:: SpotifyLink + :members: + :private-members: + +.. js:autofunction:: AuthButton + +.. js:autofunction:: DeAuthButton + +Last.fm Username +------------------ + +.. js:autoclass:: LastFM + :members: + :private-members: diff --git a/_sources/src/MusicTools.Tag.rst.txt b/_sources/src/MusicTools.Tag.rst.txt index 28db4c0..aa179dd 100644 --- a/_sources/src/MusicTools.Tag.rst.txt +++ b/_sources/src/MusicTools.Tag.rst.txt @@ -8,7 +8,7 @@ Router :members: :private-members: -Tags List +Cards List ------------------ .. js:autoclass:: TagList @@ -28,3 +28,10 @@ New Tag Card :members: :private-members: +View/Edit Tag +-------------------- + +.. js:autoclass:: TagView + :members: + :private-members: + diff --git a/_sources/src/MusicTools.rst.txt b/_sources/src/MusicTools.rst.txt index e5e5ec4..3f47637 100644 --- a/_sources/src/MusicTools.rst.txt +++ b/_sources/src/MusicTools.rst.txt @@ -1,13 +1,15 @@ -Music Tools React +React Frontend =================== -Subpackages ------------ - .. toctree:: :maxdepth: 4 - MusicTools.MusicTools MusicTools.Playlist MusicTools.Tag + MusicTools.Maths + MusicTools.Admin + MusicTools.Settings +.. js:autoclass:: MusicTools + :members: + :private-members: \ No newline at end of file diff --git a/_sources/src/modules.rst.txt b/_sources/src/modules.rst.txt index 0f60f80..a0cdc3e 100644 --- a/_sources/src/modules.rst.txt +++ b/_sources/src/modules.rst.txt @@ -1,5 +1,5 @@ -music -===== +Music Tools Modules +====================== .. toctree:: :maxdepth: 4 diff --git a/_sources/src/music.rst.txt b/_sources/src/music.rst.txt index cc1f5d8..d117b03 100644 --- a/_sources/src/music.rst.txt +++ b/_sources/src/music.rst.txt @@ -1,8 +1,5 @@ -music -============= - -Subpackages ------------ +Flask Backend +==================== .. toctree:: :maxdepth: 4 @@ -14,17 +11,14 @@ Subpackages music.model music.tasks -Module contents ---------------- +music Root Module +------------------ .. automodule:: music :members: :undoc-members: :show-inheritance: -music.music module ------------------- - .. automodule:: music.music :members: :undoc-members: diff --git a/genindex.html b/genindex.html index e90d330..41c678c 100644 --- a/genindex.html +++ b/genindex.html @@ -35,9 +35,11 @@

A + | B | C | D | E + | F | G | I | L @@ -61,6 +63,10 @@
  • add_last_month (music.model.playlist.Playlist attribute)
  • add_this_month (music.model.playlist.Playlist attribute) +
  • +
  • Admin() (class) +
  • +
  • Admin.handleChange() (Admin method)
  • admin_required() (in module music.api.decorators)
  • @@ -75,6 +81,22 @@
  • artists (music.model.tag.Tag attribute)
  • auth() (in module music.auth.auth) +
  • +
  • AuthButton() (built-in function) +
  • + + + +

    B

    + + +
    @@ -83,6 +105,16 @@
    +

    F

    + + + +
    +

    G

    + -
    +
  • LastFM() (class) +
  • +
  • LastFM.getUserInfo() (LastFM method) +
  • +
  • LastFM.handleChange() (LastFM method) +
  • +
  • LastFM.handleSubmit() (LastFM method) +
  • lastfm_stat_album_count (music.model.playlist.Playlist attribute)
  • lastfm_stat_album_percent (music.model.playlist.Playlist attribute) @@ -289,6 +345,12 @@
  • lastfm_username (music.model.user.User attribute)
  • lastfm_username_required() (in module music.api.decorators) +
  • +
  • Lock() (class) +
  • +
  • Lock.getUserInfo() (Lock method) +
  • +
  • Lock.handleLock() (Lock method)
  • locked (music.model.user.User attribute)
  • @@ -574,15 +636,15 @@
  • module
  • -
  • MusicTools() (class) +
  • MusicTools() (class)
  • -
  • MusicTools.componentDidMount() (MusicTools method) +
  • MusicTools.componentDidMount() (MusicTools method)
  • -
  • MusicTools.componentWillUnmount() (MusicTools method) +
  • MusicTools.componentWillUnmount() (MusicTools method)
  • -
  • MusicTools.getUserInfo() (MusicTools method) +
  • MusicTools.getUserInfo() (MusicTools method)
  • -
  • MusicTools.setOpen() (MusicTools method) +
  • MusicTools.setOpen() (MusicTools method)
  • mutable_keys (music.model.playlist.Playlist attribute)
  • @@ -637,6 +699,12 @@
  • parts (music.model.playlist.Playlist attribute)
  • password (music.model.user.User attribute) +
  • +
  • PieChart() (class) +
  • +
  • PieChart.componentDidMount() (PieChart method) +
  • +
  • PieChart.componentDidUpdate() (PieChart method)
  • play() (in module music.api.player)
  • @@ -654,12 +722,12 @@
  • playlist_refresh() (in module music.api.spotfm)
  • +
      +
    • TagView.handleInputChange() (TagView method) +
    • +
    • TagView.handleRemoveObj() (TagView method) +
    • +
    • TagView.handleRun() (TagView method) +
    • +
    • TagView.makeNetworkUpdate() (TagView method) +
    • +
    • Tasks() (class) +
    • +
    • Tasks.getTasks() (Tasks method) +
    • +
    • TaskType() (built-in function) +
    • time_objects (music.model.tag.Tag attribute)
    • to_dict() (music.model.playlist.Playlist method) @@ -933,15 +1037,9 @@

      Navigation

      Contents:

      diff --git a/index.html b/index.html index 37b673f..499b484 100644 --- a/index.html +++ b/index.html @@ -15,7 +15,7 @@ - + @@ -37,21 +37,35 @@

      Music Tools

      https://github.com/sarsoo/music-tools/workflows/test%20and%20deploy/badge.svg

      Music Tools is a web app for creating smart Spotify playlists. The app is based on spotframework and fmframework for interfacing with Spotify and Last.fm. The app is currently hosted on Google’s Cloud Platform.

      -

      The system is composed of a Flask web server with a Fireo ORM layer and longer tasks dispatched to Cloud Tasks or Functions.

      +

      The backend is composed of a Flask web server with a Fireo ORM layer and longer tasks dispatched to Cloud Tasks or Functions. The frontend is a React app with material UI components and Axios for HTTP requests.

      _images/Playlists.png
      @@ -83,22 +97,16 @@

      Navigation

      Contents:

      Related Topics

      diff --git a/objects.inv b/objects.inv index dffeb448e3035520e93c33675be3b468894dc149..3ef456c3a25f6cab5c0dd4f70362eb1f626276a6 100644 GIT binary patch delta 2440 zcmV;333v9Q5$F?;dVic?aW^0E=f28TYU|C~BbGk|=HIFVTQ_$J z&=}`>l}HL-z<&dV_pm<-;#XB#kbb5tKmW-|@lE2=*IYwz<$6`MQ9i0erhHJjo?&5u zqFURXfwcIPAwU4zMLre9a~mPygcp3kDz4->0Q2R9^YfOzze@R5)r}0Myx@|(;lO&a zkQi0-(o`UIiOwpZN)-^#TXN4e8WF?e{z_ z8oBgG0!ALMHIw9Uc_h`@ukc{yu0e?_^aS>p<;&DBL&RwqWN_`am1&umJ zn_IRMY?SdZ_C`FIyWBSw%rb2K0EFGl5v;YYt_a^RH4dO`oOG@*U_*d0!_F1|+W&+T zZp{&AwVpG?2}7K3SNThCxw{EvB8M8R|52LNE=Olv zM>#<82Gi(e1vnx%-8HM-!a4v!N^}I3?P?&?ZBUpD0l$$BRx|xyBjG6CR9)+Y>Wyzf zA-Zitw84c#Iz?(q233B6bH4z~-`2HBHh}BT%t@a_0EJu{Z%S zqr{5nz9~ULb(Y2@G+WQ%jAwuZmr5CJ7Yh)&DeUOiOji$HnQisVnP9Z#O-pxkUe`l z1NtJ??q*u;&VSjc@K+WpF z+h*~bad)xNKn*L@$}0~J=#^DolpfLH8I5j()6MI z@S`0b4i}KenA>{0SVK$zo$esq!qNjDyO@x*bNR|HqA%9vW}cfdhXGwLF^MH}hqGL{ z(0*<5H%qP6EFnAM3Y*C@pnna=fK>0R`*Vof*pzD+Q-vJo4Hx81FYI#b*d>-HRs^zZ z&T=e-9{Je^!r5Lm5VF(J`<2jriB^pA2`o3$NJXSx?^^Vh$@Qw~F3E-iQH^%h(rtvVQavcjb5Njwr5RM zAbyF3?02YU><#mGPJbl616wqQ1NjvROsbqV1y)YA=c+2~60e91R|7XzmRMD`ecK=o z-Sk;I+bJRX%x=MCAz7OB7{NK%di@%@!_cGi#&0vW)GCppFl#QC$ zQLG0qu{uq}5ZX<`Vz35}((I%t7I_?dGJ(pP#;SqABhMJL_J83}1e9dm=8l=EpdU(a z0gPi+!$}zFwXGr8SW>H1B0Zpn%5XcBV^ORZUCg%1a9oHlEk7c>J?7Vsp1vdhDRrxZ zjqiuzC<8nPG-*|YAxvruV+0O@uQA~@15c=q5Io*;px}F{IjdEl39VlJxR!+7iX9J%M&OOje2rB>Nm^xFZS_Dz*gU$g>#a}G)^>>42l(^l*>i1qH&*(+Idk0En;DR&NY_^e%OUXl zoP$jd+9kC0{U)CFUKL@Nx$atq-Bb%NVs6_Ktj?#Tbo-X56$8h6y+D@rh%GzECbk@L zMXCb-N`HhbK2o&DH2Ls*;*Of@l5hIsuD`5cxxQ#{g?S|~G4BNKl$A5Y`tre@XeIVm zEqieGhV1#G;(0Yz3ygSv8Vl_)t9iBOpV1NT#xF1qZ)fH=NRk(fR2uopStW5*?B?FN zTtW2jWG3e0ZtjO6R`mT3Mpvt)2!H{6smFKjofB<|a8lD_9veP&Mv2X>RlFt6={Mlv|C`#<58 G+W~v_F}9BY delta 2111 zcmV-F2*CH~6QU82dVibClAAabhWCC7s%ExfCfn>XovBn;C7DzwnORaY9NUToB9iFD zZ$G*K78qzak{3y1q5sqE=;+D=Zz`31mv3@Lq)c8XQsjSpY$VOUa?WJ>nUM>lQl%$V zvfqABUhN)?B7Nv|L@7b{je_;sBdBi@#A9{fhHz-ATv1-F2Y)nmK@@yZM9HmyzYDsp zxJHov#dv;xFKF?opu{AZcIj@aF01^YgKYY!baP(Tyn;%-qs7Or%{EhXi*;`>tu|($ zS}i@1s$lT8C_WRR!U#`r00C7F0hosqyHR&}F-DNj)HX9%np2Z>QNPfdkV zm*fneK>g(6{C~}M@vW5W%Y{DfJx&O>_L#M_|0rYMsxlb3+Ihafk)Zymq1w*)1V6iq z-{eR=UAR~BVZj~g7WSptmoz9-x_aM%%muBjdOPVWIWAPMemjo6wI1dXYf3**cLjJL zqS#~;U5FW4QNky#hfw6B>+cn{y%2`G2>{prLh0a&_kj z2yYpSM8amQAKLz|l(=kFYm4vfdu6xKKRUx+ulTU+SEr(z_ScVcdqRWuZavO=g6lkM zGwT`Y2U=~O&AKwatQ@3Sn((B)yeWCnFi8Hiv2Cb}aLGv!Zar$d5dZEoFo8|Td$kd+Klw#b`F&a!~OSe21UP*way~uIS;CF+GmP;5`#Y%|bmR;wWQq zzRT^VbtqB&^iZY+q3n|BWg6e_8Eh_q@vhD_Zcf}u(+YlR-z-Re#-(llAf@uu91aYS z>VId>nsT$)*dMaFoHWhtb^$8c>)@BVlQ97a6Ql9q%hOroBUyT zKN@Ht4yxaCK~=j|r>z6Zx_yvq-Aj8!jm=gMUbl*0jk`-8E!46?b9rOIVZ7FKZ+{v` z#zQWS1Z!!?d=>i{>n-*(rmJ7*1c_dlLVz@V*FJn}r-%L?@DTH|-fh-U>p;ghB-XIZ z#K&zWWbInMa>vNCb-9|?t(e1rT`#c%OV$Nvxi+Ew(&BHDTI*Fpc7zJ-;u+C~LqKZo z4ZQbpE1Pl&W2;a=-Uvyb&Bm^9hJRgxI`JZqT??LrlxF7V4s^1;ZXn{8qxVap{}C-2 zZ4;nY(`ZGN+3%XQmQj4&^uT7!!@irb5ce+U)qx%Z<>^CDxiu;evZzi!f+7(RI*2i_ z)z(|fw6|G}y%M9sVr9=b!%Ta_oKdLMqJv${?1yEyoy==v%d|RXCUOM6gnwLU-*JXZ z3|Q;EV^+Y3>GF%>`V&`FC+h(HdFkd}azns%wrNZhi@rsZ!VUA<;wrZ^jRaLEDx*U4 zlkxtHn(H(%iNfAdi9`%@VN1Z6jb4yTw&zV%5OIlxyk5}C_%n!~f-1NJTQ-LS{S^sJ ztDH3jXrtN-T@`MNS4M{GiGLd}OVE{V3J{BK`>b2-6cLend^79Lb|=0+AGix$4|X}+ zhwpa&@0NXszhD0Em2qn{-WG3UeB25t8@;e&U?wlII!#0u+AqRlu)L!*wuECsirE_JK|HiCwczO*%jn@bwC9)Cy=q+u#NAKI`O zm`xY^VL>=9#Fpld2w$G_o1>?%Wc!l3)#2v%zBtMRuLIg)RfZw#&=$rBoCM!u!fOUU zpmv1d`Bn!CE=w(Vt@})9^_t^a8delVOUU^CyKbd0i$QzrD?kyJnfwIiqr+sSj6ibd zIR1?&JP^M$=@8wOJbx6VySRdKvqqfGpKZL5tX1M%?NA=YrCgCDx7*tN`E~%xT}kzC zY;Wra9x2TEPJv?76_kXsK!$a}{Vj-4P`eC5dh;R7yYCuG4s=^+%lAz-=JzHEx6O6eG~A_Hd=gXF zmT+}GCZ+4IL@i`+c-IS+vnyiF&9PBlj!@C6fM1DJ#T!QUz>-(5lP=W8OCHVR?i#J& zxryY(u%84b_J5neozCS1vA(?OUbGTdRLAz-z99R2(f+&|swEJSpN2vg<}_d2`_JSE zyWt0nesM;hHjc}cJORnoZuXn~1=J+fRo2XxmtLFA0lQIWoYr3ZY2pR!{s&P-5Z{T5FWCS9 diff --git a/py-modindex.html b/py-modindex.html index 36c17ed..c03af7b 100644 --- a/py-modindex.html +++ b/py-modindex.html @@ -211,15 +211,9 @@

      Navigation

      Contents:

      diff --git a/search.html b/search.html index f5728e8..e7ea106 100644 --- a/search.html +++ b/search.html @@ -76,15 +76,9 @@

      Navigation

      Contents:

      diff --git a/searchindex.js b/searchindex.js index 8112433..130d9d6 100644 --- a/searchindex.js +++ b/searchindex.js @@ -1 +1 @@ -Search.setIndex({docnames:["index","src/MusicTools","src/MusicTools.MusicTools","src/MusicTools.Playlist","src/MusicTools.Tag","src/modules","src/music","src/music.api","src/music.auth","src/music.cloud","src/music.db","src/music.model","src/music.tasks"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":3,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":2,"sphinx.domains.rst":2,"sphinx.domains.std":2,sphinx:56},filenames:["index.rst","src/MusicTools.rst","src/MusicTools.MusicTools.rst","src/MusicTools.Playlist.rst","src/MusicTools.Tag.rst","src/modules.rst","src/music.rst","src/music.api.rst","src/music.auth.rst","src/music.cloud.rst","src/music.db.rst","src/music.model.rst","src/music.tasks.rst"],objects:{"":{Count:[3,0,1,""],Edit:[3,0,1,""],MusicTools:[2,0,1,""],NewPlaylist:[3,0,1,""],NewTag:[4,0,1,""],PlaylistCard:[3,0,1,""],PlaylistGrid:[3,0,1,""],Playlists:[3,0,1,""],PlaylistsView:[3,0,1,""],ReferenceEntry:[3,2,1,""],TagCard:[4,2,1,""],TagGrid:[4,2,1,""],TagList:[4,0,1,""],TagRouter:[4,0,1,""],getPlaylistLink:[3,2,1,""],getTagLink:[4,2,1,""],music:[6,3,0,"-"]},"PlaylistRouter.View":{handleChange:[3,2,1,""]},"music.api":{admin:[7,3,0,"-"],api:[7,3,0,"-"],decorators:[7,3,0,"-"],fm:[7,3,0,"-"],player:[7,3,0,"-"],spotfm:[7,3,0,"-"],spotify:[7,3,0,"-"],tag:[7,3,0,"-"]},"music.api.admin":{get_tasks:[7,4,1,""]},"music.api.api":{all_playlists_route:[7,4,1,""],all_users_route:[7,4,1,""],change_password:[7,4,1,""],image:[7,4,1,""],playlist_get_delete_route:[7,4,1,""],playlist_post_put_route:[7,4,1,""],run_playlist:[7,4,1,""],run_playlist_task:[7,4,1,""],run_user:[7,4,1,""],run_user_task:[7,4,1,""],run_users:[7,4,1,""],user_route:[7,4,1,""]},"music.api.decorators":{admin_required:[7,4,1,""],check_dict:[7,4,1,""],cloud_task:[7,4,1,""],gae_cron:[7,4,1,""],is_basic_authed:[7,4,1,""],is_logged_in:[7,4,1,""],lastfm_username_required:[7,4,1,""],login_or_basic_auth:[7,4,1,""],login_required:[7,4,1,""],spotify_link_required:[7,4,1,""],validate_args:[7,4,1,""],validate_json:[7,4,1,""]},"music.api.fm":{daily_scrobbles:[7,4,1,""]},"music.api.player":{next_track:[7,4,1,""],play:[7,4,1,""],shuffle:[7,4,1,""],volume:[7,4,1,""]},"music.api.spotfm":{count:[7,4,1,""],playlist_refresh:[7,4,1,""],run_playlist_album_task:[7,4,1,""],run_playlist_artist_task:[7,4,1,""],run_playlist_track_task:[7,4,1,""],run_user:[7,4,1,""],run_user_task:[7,4,1,""],run_users:[7,4,1,""]},"music.api.spotify":{sort:[7,4,1,""]},"music.api.tag":{delete_tag:[7,4,1,""],get_tag:[7,4,1,""],post_tag:[7,4,1,""],put_tag:[7,4,1,""],run_tag_task:[7,4,1,""],tag_refresh:[7,4,1,""],tag_route:[7,4,1,""],tags:[7,4,1,""]},"music.auth":{auth:[8,3,0,"-"]},"music.auth.auth":{auth:[8,4,1,""],deauth:[8,4,1,""],login:[8,4,1,""],logout:[8,4,1,""],register:[8,4,1,""],token:[8,4,1,""]},"music.cloud":{"function":[9,3,0,"-"],offload_or_run_user_playlist:[9,4,1,""],queue_run_user_playlist:[9,4,1,""],tasks:[9,3,0,"-"]},"music.cloud.function":{run_user_playlist_function:[9,4,1,""],update_tag:[9,4,1,""]},"music.cloud.tasks":{refresh_all_user_playlist_stats:[9,4,1,""],refresh_playlist_task:[9,4,1,""],refresh_user_playlist_stats:[9,4,1,""],refresh_user_stats_task:[9,4,1,""],run_user_playlist_task:[9,4,1,""],update_all_user_playlists:[9,4,1,""],update_all_user_tags:[9,4,1,""],update_playlists:[9,4,1,""]},"music.db":{database:[10,3,0,"-"],part_generator:[10,3,0,"-"]},"music.db.database":{DatabaseUser:[10,5,1,""],get_authed_lastfm_network:[10,4,1,""],get_authed_spotify_network:[10,4,1,""],refresh_token_database_callback:[10,4,1,""]},"music.db.database.DatabaseUser":{user_id:[10,6,1,""]},"music.db.part_generator":{PartGenerator:[10,5,1,""]},"music.db.part_generator.PartGenerator":{get_recursive_parts:[10,7,1,""],process_reference_by_name:[10,7,1,""],process_reference_by_reference:[10,7,1,""],reset:[10,7,1,""]},"music.model":{config:[11,3,0,"-"],playlist:[11,3,0,"-"],tag:[11,3,0,"-"],user:[11,3,0,"-"]},"music.model.config":{Config:[11,5,1,""]},"music.model.config.Config":{Meta:[11,5,1,""],collection:[11,6,1,""],collection_name:[11,6,1,""],last_fm_client_id:[11,6,1,""],playlist_cloud_operating_mode:[11,6,1,""],secret_key:[11,6,1,""],spotify_client_id:[11,6,1,""],spotify_client_secret:[11,6,1,""]},"music.model.config.Config.Meta":{collection_name:[11,6,1,""]},"music.model.playlist":{Playlist:[11,5,1,""],Sort:[11,5,1,""]},"music.model.playlist.Playlist":{Meta:[11,5,1,""],add_last_month:[11,6,1,""],add_this_month:[11,6,1,""],chart_limit:[11,6,1,""],chart_range:[11,6,1,""],collection:[11,6,1,""],collection_name:[11,6,1,""],day_boundary:[11,6,1,""],description_overwrite:[11,6,1,""],description_suffix:[11,6,1,""],include_library_tracks:[11,6,1,""],include_recommendations:[11,6,1,""],last_updated:[11,6,1,""],lastfm_stat_album_count:[11,6,1,""],lastfm_stat_album_percent:[11,6,1,""],lastfm_stat_artist_count:[11,6,1,""],lastfm_stat_artist_percent:[11,6,1,""],lastfm_stat_count:[11,6,1,""],lastfm_stat_last_refresh:[11,6,1,""],lastfm_stat_percent:[11,6,1,""],mutable_keys:[11,6,1,""],name:[11,6,1,""],parts:[11,6,1,""],playlist_references:[11,6,1,""],recommendation_sample:[11,6,1,""],shuffle:[11,6,1,""],sort:[11,6,1,""],to_dict:[11,7,1,""],type:[11,6,1,""],uri:[11,6,1,""]},"music.model.playlist.Playlist.Meta":{collection_name:[11,6,1,""]},"music.model.playlist.Sort":{"default":[11,6,1,""],release_date:[11,6,1,""],shuffle:[11,6,1,""]},"music.model.tag":{Tag:[11,5,1,""]},"music.model.tag.Tag":{Meta:[11,5,1,""],albums:[11,6,1,""],artists:[11,6,1,""],collection:[11,6,1,""],collection_name:[11,6,1,""],count:[11,6,1,""],last_updated:[11,6,1,""],name:[11,6,1,""],proportion:[11,6,1,""],tag_id:[11,6,1,""],time_objects:[11,6,1,""],to_dict:[11,7,1,""],total_time:[11,6,1,""],total_time_ms:[11,6,1,""],total_user_scrobbles:[11,6,1,""],tracks:[11,6,1,""],username:[11,6,1,""]},"music.model.tag.Tag.Meta":{collection_name:[11,6,1,""]},"music.model.user":{User:[11,5,1,""]},"music.model.user.User":{Meta:[11,5,1,""],access_token:[11,6,1,""],check_password:[11,7,1,""],collection:[11,6,1,""],collection_name:[11,6,1,""],email:[11,6,1,""],last_login:[11,6,1,""],last_refreshed:[11,6,1,""],lastfm_username:[11,6,1,""],locked:[11,6,1,""],password:[11,6,1,""],refresh_token:[11,6,1,""],spotify_linked:[11,6,1,""],to_dict:[11,7,1,""],token_expiry:[11,6,1,""],type:[11,6,1,""],username:[11,6,1,""],validated:[11,6,1,""]},"music.model.user.User.Meta":{collection_name:[11,6,1,""]},"music.music":{create_app:[6,4,1,""]},"music.tasks":{create_playlist:[12,3,0,"-"],refresh_lastfm_stats:[12,3,0,"-"],run_user_playlist:[12,3,0,"-"],update_tag:[12,3,0,"-"]},"music.tasks.create_playlist":{create_playlist:[12,4,1,""]},"music.tasks.refresh_lastfm_stats":{refresh_lastfm_album_stats:[12,4,1,""],refresh_lastfm_artist_stats:[12,4,1,""],refresh_lastfm_track_stats:[12,4,1,""]},"music.tasks.run_user_playlist":{run_user_playlist:[12,4,1,""]},"music.tasks.update_tag":{update_tag:[12,4,1,""]},Count:{Count:[3,1,1,""],getUserInfo:[3,2,1,""],updateStats:[3,2,1,""]},Edit:{BlockGridItem:[3,2,1,""],Edit:[3,1,1,""],ListBlock:[3,2,1,""],componentDidMount:[3,2,1,""],getPlaylistInfo:[3,2,1,""],getPlaylists:[3,2,1,""],handleAddPart:[3,2,1,""],handleAddReference:[3,2,1,""],handleCheckChange:[3,2,1,""],handleInputChange:[3,2,1,""],handleRemovePart:[3,2,1,""],handleRemoveReference:[3,2,1,""],handleRun:[3,2,1,""],makeNetworkUpdate:[3,2,1,""]},MusicTools:{componentDidMount:[2,2,1,""],componentWillUnmount:[2,2,1,""],getUserInfo:[2,2,1,""],setOpen:[2,2,1,""]},NewPlaylist:{componentDidMount:[3,2,1,""],handleInputChange:[3,2,1,""],handleSubmit:[3,2,1,""],setDescription:[3,2,1,""]},NewTag:{handleInputChange:[4,2,1,""],handleSubmit:[4,2,1,""]},PlaylistRouter:{View:[3,0,1,""]},PlaylistsView:{getPlaylists:[3,2,1,""],handleDeletePlaylist:[3,2,1,""],handleRunAll:[3,2,1,""],handleRunPlaylist:[3,2,1,""]},TagList:{getTags:[4,2,1,""],handleDeleteTag:[4,2,1,""]},music:{api:[7,3,0,"-"],auth:[8,3,0,"-"],cloud:[9,3,0,"-"],db:[10,3,0,"-"],init_log:[6,4,1,""],model:[11,3,0,"-"],music:[6,3,0,"-"],tasks:[12,3,0,"-"]}},objnames:{"0":["js","class","JavaScript class"],"1":["js","attribute","JavaScript attribute"],"2":["js","function","JavaScript function"],"3":["py","module","Python module"],"4":["py","function","Python function"],"5":["py","class","Python class"],"6":["py","attribute","Python attribute"],"7":["py","method","Python method"]},objtypes:{"0":"js:class","1":"js:attribute","2":"js:function","3":"py:module","4":"py:function","5":"py:class","6":"py:attribute","7":"py:method"},terms:{"class":[2,3,4,10,11],"default":[7,9,11,12],"enum":11,"function":[0,5,6,10,11,12],"int":9,"long":[9,12],"new":[1,5,12],"return":[3,4,6,7,8,10,11,12],Adding:10,For:12,The:0,Used:10,access_token:[10,11],account:12,action:3,add_last_month:11,add_this_month:11,adding:3,admin:[5,6],admin_requir:7,album:11,all:[3,7,9],all_playlists_rout:7,all_users_rout:7,allow:8,api:[0,2,3,4,5,6],app:[0,2,6,7,11,12],arg:[3,7,11],argument:[2,3,4],artist:11,asid:10,attributeerror:12,auth:[0,5,6],authent:10,avail:12,backend:6,base:[0,10,11],between:4,blockgriditem:3,blueprint:[6,7],bool:2,box:[3,4],button:3,callback:10,cancel:2,card:[1,5],cell:3,chang:[3,4],change_password:7,chart_limit:11,chart_rang:11,check:3,check_dict:7,check_password:11,checkbox:3,client_id:10,client_secret:10,cloud:[0,5,6,10,11],cloud_task:7,code:9,collect:11,collection_nam:11,compon:[2,3,4,10],componentdidmount:[2,3],componentwillunmount:2,compos:0,config:[5,6],consol:6,contain:[3,6,11],content:[0,5],convert:11,correct:11,count:[3,7,11],creat:[0,6,9,12],create_app:6,create_playlist:[5,6],credemti:10,credenti:10,current:0,daily_scrobbl:7,data:[3,4,11],databas:[5,6],databaseus:10,day_boundari:11,deauth:8,decor:[5,6],delai:9,delet:[3,4],delete_tag:7,depend:[9,10],descript:[3,7,11,12],description_overwrit:11,description_suffix:11,determin:11,dict:11,dictionari:3,direct:4,dispatch:0,document:10,documentrefer:10,done:11,drawer:2,dropbox:3,dure:3,edit:3,email:11,endpoint:[7,8],entri:3,enumer:11,environ:9,error:12,event:[3,4],execut:9,expected_arg:7,fals:6,fireo:[0,11],firestor:[10,11],firestore_v1:10,flask:[0,6,7],fmframework:[0,10,12],fmnet:12,fmnetwork:10,from:[2,3,4,10],fullplaylist:12,func:7,gae_cron:7,gcp:9,gener:[6,12],get:[2,3,4,8,10],get_authed_lastfm_network:10,get_authed_spotify_network:10,get_recursive_part:10,get_tag:7,get_task:7,getplaylist:3,getplaylistinfo:3,getplaylistlink:3,gettag:4,gettaglink:4,getuserinfo:[2,3],given:[3,7,9,10],googl:[0,10],grid:[3,4],hand:9,handl:[3,4,10],handleaddpart:3,handleaddrefer:3,handlechang:3,handlecheckchang:3,handledeleteplaylist:3,handledeletetag:4,handleinputchang:[3,4],handleremovepart:3,handleremoverefer:3,handlerun:3,handlerunal:3,handlerunplaylist:3,handlesubmit:[3,4],has:[3,12],home:8,host:[0,3],html:8,http:[7,8],imag:7,includ:[3,8,9,12],include_library_track:11,include_recommend:11,index:0,info:[2,3,4],infrastuctur:9,init:3,init_log:6,initi:3,initialis:6,input:[3,4],interfac:[0,10],intern:10,is_basic_auth:7,is_logged_in:7,kei:11,kwarg:[7,11],last:[0,3,12],last_fm_client_id:11,last_login:11,last_refresh:11,last_upd:11,lastfm_stat_album_count:11,lastfm_stat_album_perc:11,lastfm_stat_artist_count:11,lastfm_stat_artist_perc:11,lastfm_stat_count:11,lastfm_stat_last_refresh:11,lastfm_stat_perc:11,lastfm_usernam:11,lastfm_username_requir:7,layer:[0,10,11],level:[3,6,11],link:3,list:[1,5,10],listblock:3,listen:3,load:[2,3,6,7],lock:11,log:6,login:8,login_or_basic_auth:7,login_requir:7,logout:8,longer:0,main:3,make:[3,4],makenetworkupd:3,manag:11,map:4,match:3,meta:11,model:[0,5,6,10,12],modul:[0,5],music:3,musictool:[1,5],mutable_kei:11,name:[3,4,9,10,11,12],nameerror:12,net:[10,12],network:[10,12],networkus:10,newli:10,newplaylist:3,newtag:4,newvalu:3,next_track:7,none:[7,9,10,11,12],object:[3,10,11,12],off:9,offload_or_run_user_playlist:9,open:2,oper:[9,11,12],option:[3,7,9,10,12],orm:[0,10,11],other:10,page:[0,3,8],paramet:[7,9,10,11,12],part:11,part_gener:[5,6],partgener:10,password:[8,11],path:11,plai:7,platform:0,player:[5,6],playlist:[0,1,5,6,7,9,10,12],playlist_cloud_operating_mod:11,playlist_get_delete_rout:7,playlist_nam:[9,12],playlist_post_put_rout:7,playlist_refer:11,playlist_refresh:7,playlistcard:3,playlistgrid:3,playlistnam:3,playlistrout:3,playlistsview:3,post:[3,8],post_tag:7,present:3,process_reference_by_nam:10,process_reference_by_refer:10,prop:[2,3,4],properti:[3,4],proport:11,provid:12,put_tag:7,queue:9,queue_run_user_playlist:9,rais:12,react:[0,5],readi:6,recommendation_sampl:11,recurs:10,redirect:8,ref:10,refer:3,referenc:10,referenceentri:3,refresh:[3,9],refresh_all_user_playlist_stat:9,refresh_lastfm_album_stat:12,refresh_lastfm_artist_stat:12,refresh_lastfm_stat:[5,6],refresh_lastfm_track_stat:12,refresh_playlist_task:9,refresh_token:[10,11],refresh_token_database_callback:10,refresh_user_playlist_stat:9,refresh_user_stats_task:9,regist:8,relat:8,release_d:11,remov:3,request:[2,3,4,8],request_param:7,reset:[8,10],resolut:10,resolv:10,respons:[7,8],result:[3,8],retriev:[6,7,8,10,12],root:[2,6],rout:8,router:[1,5],run:[3,6,9,12],run_playlist:7,run_playlist_album_task:7,run_playlist_artist_task:7,run_playlist_task:7,run_playlist_track_task:7,run_tag_task:7,run_us:7,run_user_playlist:[5,6],run_user_playlist_funct:9,run_user_playlist_task:9,run_user_task:7,search:0,second:9,secret_kei:11,secur:8,send:3,server:0,serverless:9,servic:11,set:[2,3,11],setdescript:3,setopen:2,shuffl:[7,11],side:2,smart:[0,3,10,11,12],sort:[3,7,11],spotfm:[5,6],spotframework:[0,10,12],spotifi:[0,3,5,6,10,12],spotify_client_id:11,spotify_client_secret:11,spotify_link:11,spotify_link_requir:7,spotify_us:11,spotifynetwork:10,spotnet:12,spotnetwork:12,stack:6,stat:[1,5,9],state:[2,3,4,10],statist:3,store:10,str:[9,10,12],string:3,structur:[3,11],subject:[3,4,9,10,12],submiss:8,subpackag:5,system:0,tab:3,tag:[1,5,6,9,12],tag_id:[4,7,9,11],tag_refresh:7,tag_rout:7,tagcard:4,taggrid:4,taglist:4,tagnam:4,tagrout:4,task:[0,5,6,11],time_object:11,to_dict:11,token:8,token_expiri:11,tool:[3,5,6,10],top:[3,6],total_tim:11,total_time_m:11,total_user_scrobbl:11,track:11,trigger:3,type:[3,6,7,8,10,11,12],upad:12,updat:[3,9,10,11,12],update_all_user_playlist:9,update_all_user_tag:9,update_playlist:9,update_tag:[5,6,9],updatestat:3,uri:[11,12],url:[3,4],user:[2,3,5,6,7,9,10,12],user_id:10,user_rout:7,usernam:[3,9,10,11,12],valid:[3,4,11],validate_arg:7,validate_json:7,valu:[3,11],view:[1,5],volum:7,walk:10,watch:3,web:0,when:[10,12],whether:[2,11],wrap:3},titles:["Music Tools","Music Tools React","MusicTools","Playlist","Tag","music","music","music.api","music.auth","music.cloud","music.db","music.model","music.tasks"],titleterms:{"function":9,"new":[3,4],admin:7,api:7,auth:8,card:[3,4],cloud:9,config:11,content:[6,7,8,9,10,11,12],create_playlist:12,databas:10,decor:7,indic:0,list:[3,4],model:11,modul:[6,7,8,9,10,11,12],music:[0,1,5,6,7,8,9,10,11,12],musictool:2,part_gener:10,player:7,playlist:[3,11],react:1,refresh_lastfm_stat:12,router:[3,4],run_user_playlist:12,spotfm:7,spotifi:7,stat:3,subpackag:[1,6],tabl:0,tag:[4,7,11],task:[9,12],tool:[0,1],update_tag:12,user:11,view:3}}) \ No newline at end of file +Search.setIndex({docnames:["index","src/MusicTools","src/MusicTools.Admin","src/MusicTools.Maths","src/MusicTools.Playlist","src/MusicTools.Settings","src/MusicTools.Tag","src/modules","src/music","src/music.api","src/music.auth","src/music.cloud","src/music.db","src/music.model","src/music.tasks"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":3,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":2,"sphinx.domains.rst":2,"sphinx.domains.std":2,sphinx:56},filenames:["index.rst","src/MusicTools.rst","src/MusicTools.Admin.rst","src/MusicTools.Maths.rst","src/MusicTools.Playlist.rst","src/MusicTools.Settings.rst","src/MusicTools.Tag.rst","src/modules.rst","src/music.rst","src/music.api.rst","src/music.auth.rst","src/music.cloud.rst","src/music.db.rst","src/music.model.rst","src/music.tasks.rst"],objects:{"":{Admin:[2,0,1,""],AuthButton:[5,1,1,""],BarChart:[3,0,1,""],ChangePassword:[5,0,1,""],Count:[4,0,1,""],DeAuthButton:[5,1,1,""],Edit:[4,0,1,""],Functions:[2,0,1,""],LastFM:[5,0,1,""],Lock:[2,0,1,""],MusicTools:[1,0,1,""],NewPlaylist:[4,0,1,""],NewTag:[6,0,1,""],PieChart:[3,0,1,""],PlaylistCard:[4,0,1,""],PlaylistGrid:[4,0,1,""],Playlists:[4,0,1,""],PlaylistsView:[4,0,1,""],ReferenceEntry:[4,1,1,""],Row:[2,1,1,""],Settings:[5,0,1,""],SpotifyLink:[5,0,1,""],TagCard:[6,1,1,""],TagGrid:[6,1,1,""],TagList:[6,0,1,""],TagRouter:[6,0,1,""],TagView:[6,0,1,""],TaskType:[2,1,1,""],Tasks:[2,0,1,""],getPlaylistLink:[4,1,1,""],getTagLink:[6,1,1,""],music:[8,3,0,"-"]},"PlaylistRouter.View":{handleChange:[4,1,1,""]},"music.api":{admin:[9,3,0,"-"],api:[9,3,0,"-"],decorators:[9,3,0,"-"],fm:[9,3,0,"-"],player:[9,3,0,"-"],spotfm:[9,3,0,"-"],spotify:[9,3,0,"-"],tag:[9,3,0,"-"]},"music.api.admin":{get_tasks:[9,4,1,""]},"music.api.api":{all_playlists_route:[9,4,1,""],all_users_route:[9,4,1,""],change_password:[9,4,1,""],image:[9,4,1,""],playlist_get_delete_route:[9,4,1,""],playlist_post_put_route:[9,4,1,""],run_playlist:[9,4,1,""],run_playlist_task:[9,4,1,""],run_user:[9,4,1,""],run_user_task:[9,4,1,""],run_users:[9,4,1,""],user_route:[9,4,1,""]},"music.api.decorators":{admin_required:[9,4,1,""],check_dict:[9,4,1,""],cloud_task:[9,4,1,""],gae_cron:[9,4,1,""],is_basic_authed:[9,4,1,""],is_logged_in:[9,4,1,""],lastfm_username_required:[9,4,1,""],login_or_basic_auth:[9,4,1,""],login_required:[9,4,1,""],spotify_link_required:[9,4,1,""],validate_args:[9,4,1,""],validate_json:[9,4,1,""]},"music.api.fm":{daily_scrobbles:[9,4,1,""]},"music.api.player":{next_track:[9,4,1,""],play:[9,4,1,""],shuffle:[9,4,1,""],volume:[9,4,1,""]},"music.api.spotfm":{count:[9,4,1,""],playlist_refresh:[9,4,1,""],run_playlist_album_task:[9,4,1,""],run_playlist_artist_task:[9,4,1,""],run_playlist_track_task:[9,4,1,""],run_user:[9,4,1,""],run_user_task:[9,4,1,""],run_users:[9,4,1,""]},"music.api.spotify":{sort:[9,4,1,""]},"music.api.tag":{delete_tag:[9,4,1,""],get_tag:[9,4,1,""],post_tag:[9,4,1,""],put_tag:[9,4,1,""],run_tag_task:[9,4,1,""],tag_refresh:[9,4,1,""],tag_route:[9,4,1,""],tags:[9,4,1,""]},"music.auth":{auth:[10,3,0,"-"]},"music.auth.auth":{auth:[10,4,1,""],deauth:[10,4,1,""],login:[10,4,1,""],logout:[10,4,1,""],register:[10,4,1,""],token:[10,4,1,""]},"music.cloud":{"function":[11,3,0,"-"],offload_or_run_user_playlist:[11,4,1,""],queue_run_user_playlist:[11,4,1,""],tasks:[11,3,0,"-"]},"music.cloud.function":{run_user_playlist_function:[11,4,1,""],update_tag:[11,4,1,""]},"music.cloud.tasks":{refresh_all_user_playlist_stats:[11,4,1,""],refresh_playlist_task:[11,4,1,""],refresh_user_playlist_stats:[11,4,1,""],refresh_user_stats_task:[11,4,1,""],run_user_playlist_task:[11,4,1,""],update_all_user_playlists:[11,4,1,""],update_all_user_tags:[11,4,1,""],update_playlists:[11,4,1,""]},"music.db":{database:[12,3,0,"-"],part_generator:[12,3,0,"-"]},"music.db.database":{DatabaseUser:[12,5,1,""],get_authed_lastfm_network:[12,4,1,""],get_authed_spotify_network:[12,4,1,""],refresh_token_database_callback:[12,4,1,""]},"music.db.database.DatabaseUser":{user_id:[12,6,1,""]},"music.db.part_generator":{PartGenerator:[12,5,1,""]},"music.db.part_generator.PartGenerator":{get_recursive_parts:[12,7,1,""],process_reference_by_name:[12,7,1,""],process_reference_by_reference:[12,7,1,""],reset:[12,7,1,""]},"music.model":{config:[13,3,0,"-"],playlist:[13,3,0,"-"],tag:[13,3,0,"-"],user:[13,3,0,"-"]},"music.model.config":{Config:[13,5,1,""]},"music.model.config.Config":{Meta:[13,5,1,""],collection:[13,6,1,""],collection_name:[13,6,1,""],last_fm_client_id:[13,6,1,""],playlist_cloud_operating_mode:[13,6,1,""],secret_key:[13,6,1,""],spotify_client_id:[13,6,1,""],spotify_client_secret:[13,6,1,""]},"music.model.config.Config.Meta":{collection_name:[13,6,1,""]},"music.model.playlist":{Playlist:[13,5,1,""],Sort:[13,5,1,""]},"music.model.playlist.Playlist":{Meta:[13,5,1,""],add_last_month:[13,6,1,""],add_this_month:[13,6,1,""],chart_limit:[13,6,1,""],chart_range:[13,6,1,""],collection:[13,6,1,""],collection_name:[13,6,1,""],day_boundary:[13,6,1,""],description_overwrite:[13,6,1,""],description_suffix:[13,6,1,""],include_library_tracks:[13,6,1,""],include_recommendations:[13,6,1,""],last_updated:[13,6,1,""],lastfm_stat_album_count:[13,6,1,""],lastfm_stat_album_percent:[13,6,1,""],lastfm_stat_artist_count:[13,6,1,""],lastfm_stat_artist_percent:[13,6,1,""],lastfm_stat_count:[13,6,1,""],lastfm_stat_last_refresh:[13,6,1,""],lastfm_stat_percent:[13,6,1,""],mutable_keys:[13,6,1,""],name:[13,6,1,""],parts:[13,6,1,""],playlist_references:[13,6,1,""],recommendation_sample:[13,6,1,""],shuffle:[13,6,1,""],sort:[13,6,1,""],to_dict:[13,7,1,""],type:[13,6,1,""],uri:[13,6,1,""]},"music.model.playlist.Playlist.Meta":{collection_name:[13,6,1,""]},"music.model.playlist.Sort":{"default":[13,6,1,""],release_date:[13,6,1,""],shuffle:[13,6,1,""]},"music.model.tag":{Tag:[13,5,1,""]},"music.model.tag.Tag":{Meta:[13,5,1,""],albums:[13,6,1,""],artists:[13,6,1,""],collection:[13,6,1,""],collection_name:[13,6,1,""],count:[13,6,1,""],last_updated:[13,6,1,""],name:[13,6,1,""],proportion:[13,6,1,""],tag_id:[13,6,1,""],time_objects:[13,6,1,""],to_dict:[13,7,1,""],total_time:[13,6,1,""],total_time_ms:[13,6,1,""],total_user_scrobbles:[13,6,1,""],tracks:[13,6,1,""],username:[13,6,1,""]},"music.model.tag.Tag.Meta":{collection_name:[13,6,1,""]},"music.model.user":{User:[13,5,1,""]},"music.model.user.User":{Meta:[13,5,1,""],access_token:[13,6,1,""],check_password:[13,7,1,""],collection:[13,6,1,""],collection_name:[13,6,1,""],email:[13,6,1,""],last_login:[13,6,1,""],last_refreshed:[13,6,1,""],lastfm_username:[13,6,1,""],locked:[13,6,1,""],password:[13,6,1,""],refresh_token:[13,6,1,""],spotify_linked:[13,6,1,""],to_dict:[13,7,1,""],token_expiry:[13,6,1,""],type:[13,6,1,""],username:[13,6,1,""],validated:[13,6,1,""]},"music.model.user.User.Meta":{collection_name:[13,6,1,""]},"music.music":{create_app:[8,4,1,""]},"music.tasks":{create_playlist:[14,3,0,"-"],refresh_lastfm_stats:[14,3,0,"-"],run_user_playlist:[14,3,0,"-"],update_tag:[14,3,0,"-"]},"music.tasks.create_playlist":{create_playlist:[14,4,1,""]},"music.tasks.refresh_lastfm_stats":{refresh_lastfm_album_stats:[14,4,1,""],refresh_lastfm_artist_stats:[14,4,1,""],refresh_lastfm_track_stats:[14,4,1,""]},"music.tasks.run_user_playlist":{run_user_playlist:[14,4,1,""]},"music.tasks.update_tag":{update_tag:[14,4,1,""]},Admin:{handleChange:[2,1,1,""]},BarChart:{componentDidMount:[3,1,1,""],componentDidUpdate:[3,1,1,""]},ChangePassword:{handleCurrentChange:[5,1,1,""],handleNew2Change:[5,1,1,""],handleNewChange:[5,1,1,""],handleSubmit:[5,1,1,""]},Count:{Count:[4,2,1,""],getUserInfo:[4,1,1,""],updateStats:[4,1,1,""]},Edit:{BlockGridItem:[4,1,1,""],Edit:[4,2,1,""],ListBlock:[4,1,1,""],componentDidMount:[4,1,1,""],getPlaylistInfo:[4,1,1,""],getPlaylists:[4,1,1,""],handleAddPart:[4,1,1,""],handleAddReference:[4,1,1,""],handleCheckChange:[4,1,1,""],handleInputChange:[4,1,1,""],handleRemovePart:[4,1,1,""],handleRemoveReference:[4,1,1,""],handleRun:[4,1,1,""],makeNetworkUpdate:[4,1,1,""]},Functions:{runAllUsers:[2,1,1,""],runStats:[2,1,1,""]},LastFM:{getUserInfo:[5,1,1,""],handleChange:[5,1,1,""],handleSubmit:[5,1,1,""]},Lock:{getUserInfo:[2,1,1,""],handleLock:[2,1,1,""]},MusicTools:{componentDidMount:[1,1,1,""],componentWillUnmount:[1,1,1,""],getUserInfo:[1,1,1,""],setOpen:[1,1,1,""]},NewPlaylist:{componentDidMount:[4,1,1,""],handleInputChange:[4,1,1,""],handleSubmit:[4,1,1,""],setDescription:[4,1,1,""]},NewTag:{handleInputChange:[6,1,1,""],handleSubmit:[6,1,1,""]},PieChart:{componentDidMount:[3,1,1,""],componentDidUpdate:[3,1,1,""]},PlaylistRouter:{View:[4,0,1,""]},PlaylistsView:{getPlaylists:[4,1,1,""],handleDeletePlaylist:[4,1,1,""],handleRunAll:[4,1,1,""],handleRunPlaylist:[4,1,1,""]},Settings:{handleChange:[5,1,1,""]},SpotifyLink:{getUserInfo:[5,1,1,""]},TagList:{getTags:[6,1,1,""],handleDeleteTag:[6,1,1,""]},TagView:{componentDidMount:[6,1,1,""],getTag:[6,1,1,""],handleAdd:[6,1,1,""],handleChangeAddType:[6,1,1,""],handleCheckChange:[6,1,1,""],handleInputChange:[6,1,1,""],handleRemoveObj:[6,1,1,""],handleRun:[6,1,1,""],makeNetworkUpdate:[6,1,1,""]},Tasks:{getTasks:[2,1,1,""]},music:{api:[9,3,0,"-"],auth:[10,3,0,"-"],cloud:[11,3,0,"-"],db:[12,3,0,"-"],init_log:[8,4,1,""],model:[13,3,0,"-"],music:[8,3,0,"-"],tasks:[14,3,0,"-"]}},objnames:{"0":["js","class","JavaScript class"],"1":["js","function","JavaScript function"],"2":["js","attribute","JavaScript attribute"],"3":["py","module","Python module"],"4":["py","function","Python function"],"5":["py","class","Python class"],"6":["py","attribute","Python attribute"],"7":["py","method","Python method"]},objtypes:{"0":"js:class","1":"js:function","2":"js:attribute","3":"py:module","4":"py:function","5":"py:class","6":"py:attribute","7":"py:method"},terms:{"class":[1,2,3,4,5,6,12,13],"default":[9,11,13,14],"enum":13,"function":[0,1,7,8,12,13,14],"int":11,"long":[11,14],"new":[1,2,5,7,14],"return":[2,4,5,6,8,9,10,12,13,14],"true":6,Adding:12,For:[4,14],The:0,Used:12,access_token:[12,13],account:[2,5,14],action:4,add:6,add_last_month:13,add_this_month:13,adding:[4,6],addtyp:6,admin:[0,1,7,8],admin_requir:9,again:5,album:[6,13],all:[0,2,4,9,11],all_playlists_rout:9,all_users_rout:9,allow:10,api:[0,1,2,4,5,6,7,8],app:[0,1,8,9,13,14],appli:3,arg:[4,5,9,13],argument:[1,2,4,5,6],artist:[6,13],asid:12,attributeerror:14,auth:[0,7,8],authbutton:5,authent:[5,12],avail:14,axio:0,backend:[0,7],bar:[1,7],barchart:3,base:[0,12,13],between:6,blockgriditem:4,blueprint:[8,9],bool:1,box:[4,5,6],button:[2,4,5],callback:12,cancel:1,card:[1,2,5,7],cell:[2,4],chang:[1,2,4,6,7],change_password:9,changepassword:5,chart:[1,7],chart_limit:13,chart_rang:13,check:4,check_dict:9,check_password:13,checkbox:[4,6],click:5,client_id:12,client_secret:12,cloud:[0,7,8,12,13],cloud_task:9,code:11,collect:13,collection_nam:13,compnent:2,compon:[0,1,2,3,4,5,6,12],componentdidmount:[1,3,4,6],componentdidupd:3,componentwillunmount:1,compos:0,config:[7,8],consol:8,contain:[4,8,13],content:[0,7,8],convert:13,correct:13,count:[4,9,13],creat:[0,8,11,14],create_app:8,create_playlist:[7,8],credemti:12,credenti:12,current:[0,5],daily_scrobbl:9,data:[2,3,4,5,6,13],databas:[7,8],databaseus:12,day_boundari:13,deauth:10,deauthbutton:5,deauthent:5,decor:[7,8],delai:11,delet:[4,6],delete_tag:9,depend:[11,12],descript:[4,9,13,14],description_overwrit:13,description_suffix:13,determin:13,dict:13,dictionari:[4,6],direct:6,dispatch:0,divert:4,document:12,documentrefer:12,done:13,down:6,drawer:1,drop:6,dropbox:4,dure:4,edit:[1,7],email:13,endpoint:[9,10],entri:4,enumer:13,environ:11,error:[6,14],error_toast:6,event:[2,4,5,6],execut:11,expected_arg:9,fals:8,fireo:[0,13],firestor:[12,13],firestore_v1:12,flask:[0,7,9],fmframework:[0,12,14],fmnet:14,fmnetwork:12,from:[1,2,3,4,5,6,12],frontend:[0,7],fullplaylist:14,func:9,gae_cron:9,gcp:11,gener:[8,14],get:[1,2,4,5,6,10,12],get_authed_lastfm_network:12,get_authed_spotify_network:12,get_recursive_part:12,get_tag:9,get_task:9,getplaylist:4,getplaylistinfo:4,getplaylistlink:4,gettag:6,gettaglink:6,gettask:2,getuserinfo:[1,2,4,5],given:[4,9,11,12],googl:[0,12],grid:[2,4,6],hand:11,handl:[2,4,5,6,12],handleadd:6,handleaddpart:4,handleaddrefer:4,handlechang:[2,4,5],handlechangeaddtyp:6,handlecheckchang:[4,6],handlecurrentchang:5,handledeleteplaylist:4,handledeletetag:6,handleinputchang:[4,6],handlelock:2,handlenew2chang:5,handlenewchang:5,handleremoveobj:6,handleremovepart:4,handleremoverefer:4,handlerun:[4,6],handlerunal:4,handlerunplaylist:4,handlesubmit:[4,5,6],has:[4,14],home:10,host:[0,2,4,5],html:10,http:[0,9,10],imag:9,includ:[4,10,11,14],include_library_track:13,include_recommend:13,index:0,info:[1,4,5,6],infor:2,infrastuctur:11,init:4,init_log:8,initi:4,initialis:8,input:[4,5,6],interfac:[0,12],intern:12,is_basic_auth:9,is_logged_in:9,kei:13,kwarg:[9,13],last:[0,1,4,7,14],last_fm_client_id:13,last_login:13,last_refresh:13,last_upd:13,lastfm:5,lastfm_stat_album_count:13,lastfm_stat_album_perc:13,lastfm_stat_artist_count:13,lastfm_stat_artist_perc:13,lastfm_stat_count:13,lastfm_stat_last_refresh:13,lastfm_stat_perc:13,lastfm_usernam:13,lastfm_username_requir:9,layer:[0,12,13],level:[4,8,13],link:[1,4,7],list:[1,7,12],listblock:4,listen:4,load:[1,3,4,6,8,9],lock:[1,7,13],log:8,login:10,login_or_basic_auth:9,login_requir:9,logout:10,longer:0,main:4,make:[2,4,5,6],makenetworkupd:[4,6],manag:[4,13],map:6,match:4,materi:0,math:[0,1,7],meta:13,model:[0,7,8,12,14],modul:0,music:4,music_obj:6,musictool:1,mutable_kei:13,name:[4,6,11,12,13,14],nameerror:14,net:[12,14],network:[5,6,12,14],networkus:12,newli:12,newplaylist:4,newtag:6,newvalu:[2,4,5],next_track:9,none:[9,11,12,13,14],noth:6,object:[4,5,6,12,13,14],off:11,offload_or_run_user_playlist:11,open:1,oper:[11,13,14],option:[4,9,11,12,14],orm:[0,12,13],other:12,page:[0,4,10],paramet:[9,11,12,13,14],part:[6,13],part_gener:[7,8],partgener:12,password:[1,7,10,13],path:13,pie:[1,7],piechart:3,plai:9,platform:0,player:[7,8],playlist:[0,1,2,7,8,9,11,12,14],playlist_cloud_operating_mod:13,playlist_get_delete_rout:9,playlist_nam:[11,14],playlist_post_put_rout:9,playlist_refer:13,playlist_refresh:9,playlistcard:4,playlistgrid:4,playlistnam:4,playlistrout:4,playlistsview:4,post:[4,5,10],post_tag:9,present:4,process_reference_by_nam:12,process_reference_by_refer:12,prop:[1,2,3,4,5,6],properti:[3,4,5,6],proport:13,provid:14,put:6,put_tag:9,queue:11,queue_run_user_playlist:11,rais:14,react:[0,3,7],readi:8,recommendation_sampl:13,recurs:12,redirect:10,ref:12,refer:4,referenc:12,referenceentri:4,refresh:[4,6,11],refresh_all_user_playlist_stat:11,refresh_lastfm_album_stat:14,refresh_lastfm_artist_stat:14,refresh_lastfm_stat:[7,8],refresh_lastfm_track_stat:14,refresh_playlist_task:11,refresh_token:[12,13],refresh_token_database_callback:12,refresh_user_playlist_stat:11,refresh_user_stats_task:11,regist:10,relat:10,release_d:13,remov:[4,6],request:[0,1,2,4,5,6,10],request_param:9,reset:[10,12],resolut:12,resolv:12,respons:[9,10],result:[4,10],retriev:[8,9,10,12,14],root:[0,1,7],rout:10,router:[1,7],row:2,run:[2,4,8,11,14],run_playlist:9,run_playlist_album_task:9,run_playlist_artist_task:9,run_playlist_task:9,run_playlist_track_task:9,run_tag_task:9,run_us:9,run_user_playlist:[7,8],run_user_playlist_funct:11,run_user_playlist_task:11,run_user_task:9,runallus:2,runstat:2,search:0,second:11,secret_kei:13,secur:10,send:4,server:0,serverless:11,servic:13,set:[0,1,4,7,13],setdescript:4,setopen:1,show:6,shuffl:[9,13],side:1,smart:[0,4,12,13,14],sort:[4,9,13],spotfm:[7,8],spotframework:[0,12,14],spotifi:[0,1,4,7,8,12,14],spotify_client_id:13,spotify_client_secret:13,spotify_link:13,spotify_link_requir:9,spotify_us:13,spotifylink:5,spotifynetwork:12,spotnet:14,spotnetwork:14,stack:8,stat:[1,2,7,11],state:[1,2,4,5,6,12],statist:4,statu:5,store:12,str:[11,12,14],string:4,structur:[4,5,13],subject:[2,4,6,11,12,14],submiss:10,submit:[5,6],tab:[2,4,5],tag:[0,1,7,8,11,14],tag_id:[6,9,11,13],tag_refresh:9,tag_rout:9,tagcard:6,taggrid:6,taglist:6,tagnam:6,tagrout:6,tagview:6,target:2,task:[0,1,7,8,13],tasktyp:2,time_object:13,to_dict:13,to_stat:2,toast:6,token:10,token_expiri:13,tool:[4,8,12],top:[4,8],total_tim:13,total_time_m:13,total_user_scrobbl:13,track:[6,13],trigger:4,type:[4,6,8,9,10,12,13,14],upad:14,updat:[3,4,6,11,12,13,14],update_all_user_playlist:11,update_all_user_tag:11,update_playlist:11,update_tag:[7,8,11],updatestat:4,uri:[13,14],url:[4,6],user:[1,2,4,5,7,8,9,11,12,14],user_id:12,user_rout:9,usernam:[1,2,4,7,11,12,13,14],using:3,valid:[4,5,6,13],validate_arg:9,validate_json:9,valu:[4,13],view:[1,7],volum:9,walk:12,watch:[4,6],web:0,when:[12,14],whether:[1,6,13],wrap:[2,4]},titles:["Music Tools","React Frontend","Admin","Maths","Playlist","Settings","Tag","Music Tools Modules","Flask Backend","music.api","music.auth","music.cloud","music.db","music.model","music.tasks"],titleterms:{"function":[2,11],"new":[4,6],admin:[2,9],api:9,auth:10,backend:8,bar:3,card:[4,6],chang:5,chart:3,cloud:11,config:13,content:[9,10,11,12,13,14],create_playlist:14,databas:12,decor:9,edit:[4,6],flask:8,frontend:1,indic:0,last:5,link:5,list:[4,6],lock:2,math:3,model:13,modul:[7,8,9,10,11,12,13,14],music:[0,7,8,9,10,11,12,13,14],part_gener:12,password:5,pie:3,player:9,playlist:[4,13],react:1,refresh_lastfm_stat:14,root:8,router:[2,4,5,6],run_user_playlist:14,set:5,spotfm:9,spotifi:[5,9],stat:4,tabl:0,tag:[6,9,13],task:[2,11,14],tool:[0,7],update_tag:14,user:13,usernam:5,view:[4,6]}}) \ No newline at end of file diff --git a/src/MusicTools.Admin.html b/src/MusicTools.Admin.html new file mode 100644 index 0000000..8c0f9f0 --- /dev/null +++ b/src/MusicTools.Admin.html @@ -0,0 +1,259 @@ + + + + + + + + + Admin — Music Tools documentation + + + + + + + + + + + + + + + + + + + +
      +
      +
      + + +
      + +
      +

      Admin

      +
      +

      Router

      +
      +
      +class Admin(props)
      +

      Admin router component for hosting cards

      +
      +
      +Admin.handleChange(e, newValue)
      +

      Handle tab change event

      +
      +
      Arguments
      +
        +
      • e (*) – Event data

      • +
      • newValue (*) – New tab data

      • +
      +
      +
      +
      + +
      + +
      +
      +

      Lock

      +
      +
      +class Lock(props)
      +

      Account lock card component

      +
      +
      +Lock.getUserInfo()
      +

      Make user infor request of API

      +
      + +
      +
      +Lock.handleLock(event, username, to_state)
      +

      Make lock request of API

      +
      +
      Arguments
      +
        +
      • event (*) – Event data

      • +
      • username (*) – Subject username

      • +
      • to_state (*) – Target lock state

      • +
      +
      +
      +
      + +
      + +
      +
      +Row(props)
      +

      Grid of account cards with lock buttons

      +
      +
      Arguments
      +
        +
      • props (*) –

      • +
      +
      +
      Returns
      +

      Card component wrapped in grid cell

      +
      +
      +
      + +
      +
      +

      Functions

      +
      +
      +class Functions(props)
      +

      Admin functions card component

      +
      +
      +Functions.runAllUsers(event)
      +

      Make run all playlists request of API

      +
      +
      Arguments
      +
        +
      • event (*) – Event data

      • +
      +
      +
      +
      + +
      +
      +Functions.runStats(event)
      +

      Make run stats request of API

      +
      +
      Arguments
      +
        +
      • event (*) – Event data

      • +
      +
      +
      +
      + +
      + +
      +
      +

      Tasks

      +
      +
      +class Tasks(props)
      +

      Running tasks card component

      +
      +
      +Tasks.getTasks()
      +

      Get tasks from API

      +
      + +
      + +
      +
      +TaskType(props)
      +

      Grid of task cards

      +
      +
      Arguments
      +
        +
      • props (*) –

      • +
      +
      +
      Returns
      +

      Card compnent wrapped in grid cell

      +
      +
      +
      + +
      +
      + + +
      + +
      +
      + +
      +
      + + + + + + + \ No newline at end of file diff --git a/src/MusicTools.Maths.html b/src/MusicTools.Maths.html new file mode 100644 index 0000000..07d055f --- /dev/null +++ b/src/MusicTools.Maths.html @@ -0,0 +1,166 @@ + + + + + + + + + Maths — Music Tools documentation + + + + + + + + + + + + + + + + + + + +
      +
      +
      + + +
      + +
      +

      Maths

      +
      +

      Bar Chart

      +
      +
      +class BarChart(props)
      +

      Bar chart component using Chart.js

      +
      +
      +BarChart.componentDidMount()
      +

      Load data from react properties

      +
      + +
      +
      +BarChart.componentDidUpdate()
      +

      Re-apply data to chart on update

      +
      + +
      + +
      +
      +

      Pie Chart

      +
      +
      +class PieChart(props)
      +

      Pie chart component using Chart.js

      +
      +
      +PieChart.componentDidMount()
      +

      Load data from react properties

      +
      + +
      +
      +PieChart.componentDidUpdate()
      +

      Re-apply data to chart on update

      +
      + +
      + +
      +
      + + +
      + +
      +
      + +
      +
      + + + + + + + \ No newline at end of file diff --git a/src/MusicTools.MusicTools.html b/src/MusicTools.MusicTools.html deleted file mode 100644 index 5aeb057..0000000 --- a/src/MusicTools.MusicTools.html +++ /dev/null @@ -1,158 +0,0 @@ - - - - - - - - - MusicTools — Music Tools documentation - - - - - - - - - - - - - - - - - - - -
      -
      -
      - - -
      - -
      -

      MusicTools

      -
      -
      -class MusicTools(props)
      -

      Root component for app

      -
      -
      -MusicTools.componentDidMount()
      -

      Get user info from API on load

      -
      - -
      -
      -MusicTools.componentWillUnmount()
      -

      Cancel get user info request

      -
      - -
      -
      -MusicTools.getUserInfo()
      -

      Get user info from API

      -
      - -
      -
      -MusicTools.setOpen(bool)
      -

      Set whether side app drawer is open

      -
      -
      Arguments
      -
        -
      • bool (*) – Open state of side drawer

      • -
      -
      -
      -
      - -
      - -
      - - -
      - -
      -
      - -
      -
      - - - - - - - \ No newline at end of file diff --git a/src/MusicTools.Playlist.html b/src/MusicTools.Playlist.html index 71190fe..f0d4573 100644 --- a/src/MusicTools.Playlist.html +++ b/src/MusicTools.Playlist.html @@ -16,7 +16,7 @@ - + @@ -43,9 +43,30 @@

      Router for playlist lists page, includes new playlist page

      +

      For managing playlists list pages for diverting to new playlist page

      +
      +
      +class PlaylistRouter.View(props)
      +

      Playlist view structure with tabs for view/editing and statistics

      +
      +
      +PlaylistRouter.View.handleChange(e, newValue)
      +

      Handle tab change event

      +
      +
      Arguments
      +
        +
      • e (*) – Event args

      • +
      • newValue (*) – New tab object

      • +
      +
      +
      +
      + +
      + -
      -

      Playlists List

      +
      +

      Cards List

      class PlaylistsView(props)
      @@ -210,31 +231,8 @@
      -
      -

      Playlist Router

      -
      -
      -class PlaylistRouter.View(props)
      -

      Playlist view structure with tabs for view/editing and statistics

      -
      -
      -PlaylistRouter.View.handleChange(e, newValue)
      -

      Handle tab change event

      -
      -
      Arguments
      -
        -
      • e (*) – Event args

      • -
      • newValue (*) – New tab object

      • -
      -
      -
      -
      - -
      - -
      -
      -

      Playlist View

      +
      +

      View/Edit Card

      class Edit()
      @@ -429,8 +427,8 @@
      -
      -

      Playlist Stats View

      +
      +

      Stats Card

      class Count()
      @@ -476,28 +474,31 @@

      Navigation

      Contents:

      Related Topics

      -
      -

      Tags List

      +
      +

      Cards List

      class TagList(props)
      @@ -154,6 +155,125 @@
      +
      +
      +

      View/Edit Tag

      +
      +
      +class TagView(props)
      +

      Tag View card

      +
      +
      +TagView.componentDidMount()
      +

      Get tag info from API on load

      +
      + +
      +
      +TagView.getTag(error_toast=true)
      +

      Get tag info from API

      +
      +
      Arguments
      +
        +
      • error_toast (*) – Whether to show toast on network error

      • +
      +
      +
      +
      + +
      +
      +TagView.handleAdd()
      +

      Validate input, make tag part add request of API

      +
      +
      Returns
      +

      Nothing

      +
      +
      +
      + +
      +
      +TagView.handleChangeAddType(type)
      +

      Handle adding type drop down change

      +
      +
      Arguments
      +
        +
      • type (*) –

      • +
      +
      +
      +
      + +
      +
      +TagView.handleCheckChange(event)
      +

      Handle checkbox state changes, make network updates

      +
      +
      Arguments
      +
        +
      • event (*) – Event data

      • +
      +
      +
      +
      + +
      +
      +TagView.handleInputChange(event)
      +

      Handle input box state changes

      +
      +
      Arguments
      +
        +
      • event (*) – Event data

      • +
      +
      +
      +
      + +
      +
      +TagView.handleRemoveObj(music_obj, addType, event)
      +

      Handle remove watched part

      +
      +
      Arguments
      +
        +
      • music_obj (*) – Subject object to remove

      • +
      • addType (*) – Object type (tracks/albums/artists)

      • +
      • event (*) – Event data

      • +
      +
      +
      +
      + +
      +
      +TagView.handleRun(event)
      +

      Validate input and make tag refresh update of API

      +
      +
      Arguments
      +
        +
      • event (*) –

      • +
      +
      +
      +
      + +
      +
      +TagView.makeNetworkUpdate(changes)
      +

      Put tag info changes to API

      +
      +
      Arguments
      +
        +
      • changes (*) – Dictionary of changes to submit

      • +
      +
      +
      +
      + +
      +
      @@ -176,25 +296,29 @@

      Navigation

      Contents:

      Related Topics