| ofs | hex dump | ascii |
|---|
| 0000 | 56 69 6d 9f 55 6e 44 6f e5 00 03 a6 d2 36 23 08 cc a3 5b 86 47 48 d3 2a f5 12 c6 4e 73 af 20 89 | Vim.UnDo.....6#...[.GH.*...Ns... |
| 0020 | c1 55 8e bc ba 7b c0 ad 8d e3 8c 00 00 00 90 00 00 00 0a 20 20 20 20 6d 61 69 6e 28 29 00 00 00 | .U...{.................main()... |
| 0040 | 90 00 00 00 0a 00 00 00 01 00 00 00 25 00 00 00 00 00 00 00 25 00 00 00 25 00 00 00 25 00 00 00 | ............%.......%...%...%... |
| 0060 | 00 69 98 fd 05 04 01 00 00 00 1a 00 5f d0 00 00 00 00 00 00 00 02 00 00 00 00 00 00 00 00 00 00 | .i.........._................... |
| 0080 | 00 01 00 00 00 01 00 00 00 00 00 00 00 00 ff ff ff ff 00 03 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 00a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 00c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 00e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0100 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0120 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0140 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0160 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0180 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 01a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 01c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 01e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 69 98 f2 37 04 01 00 00 00 00 00 f5 18 00 00 00 | ................i..7............ |
| 0200 | 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 f5 18 00 00 00 01 00 00 00 00 00 00 00 00 00 | ................................ |
| 0220 | 00 00 00 f5 18 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 35 81 f5 18 00 00 00 00 00 00 00 | .....................5.......... |
| 0240 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0260 | 00 00 00 00 00 20 00 00 00 00 00 00 00 35 81 5f d0 00 00 00 01 00 00 00 03 00 00 00 00 00 00 00 | .............5._................ |
| 0280 | 00 00 00 00 02 00 00 00 01 00 00 00 1f 00 00 00 00 ff ff ff ff 00 01 00 00 00 00 00 00 00 00 00 | ................................ |
| 02a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 02c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 02e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0300 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0320 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0340 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0360 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0380 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 03a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 03c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 03e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 69 98 f2 3b 04 01 00 00 00 00 00 f5 18 | ...................i..;......... |
| 0400 | 00 00 00 00 00 00 00 02 00 00 00 00 00 00 00 01 00 00 00 20 38 35 38 64 35 61 38 33 63 38 37 35 | ....................858d5a83c875 |
| 0420 | 30 62 65 35 64 64 65 30 30 30 36 65 64 35 38 61 33 61 35 38 35 81 f5 18 00 00 00 00 00 00 00 00 | 0be5dde0006ed58a3a585........... |
| 0440 | 00 00 00 00 01 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 21 00 00 00 | ............................!... |
| 0460 | 00 00 00 00 01 00 00 00 00 00 00 00 35 81 5f d0 00 00 00 02 00 00 00 04 00 00 00 00 00 00 00 00 | ............5._................. |
| 0480 | 00 00 00 03 00 00 00 01 00 00 00 00 00 00 00 00 ff ff ff ff 00 03 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 04a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 04c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 04e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0500 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0520 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0540 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0560 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0580 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 05a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 05c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 05e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 69 98 f2 3b 04 01 00 00 00 01 00 f5 18 00 | ..................i..;.......... |
| 0600 | 00 00 8c 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 f5 18 00 00 00 8d 00 00 00 00 00 00 00 | ................................ |
| 0620 | 00 00 00 00 00 f5 18 00 00 00 8d 00 00 00 00 00 00 00 00 00 00 00 00 f5 18 00 00 00 7e 00 00 00 | ............................~... |
| 0640 | 00 00 00 00 00 00 00 00 01 00 00 00 1b 20 20 20 20 20 20 20 20 20 20 20 20 6c 61 73 74 5f 64 75 | .........................last_du |
| 0660 | 72 61 74 69 6f 6e 20 3d f5 18 00 00 00 7f 00 00 00 00 00 00 00 00 00 00 00 00 f5 18 00 00 00 51 | ration.=.......................Q |
| 0680 | 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 05 20 20 20 20 77 f5 18 00 00 00 52 00 00 00 00 00 | ....................w.....R..... |
| 06a0 | 00 00 00 00 00 00 00 f5 18 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 f5 18 00 | ................................ |
| 06c0 | 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 35 81 f5 18 00 00 00 00 00 00 00 00 00 00 00 00 00 | ...............5................ |
| 06e0 | 00 00 00 00 00 00 00 51 00 00 00 05 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .......Q........................ |
| 0700 | 08 00 00 00 00 00 00 f5 18 00 00 00 00 51 00 00 00 05 00 00 00 00 00 00 00 00 00 00 00 2d 00 00 | .............Q...............-.. |
| 0720 | 00 1b 00 00 00 00 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 05 00 00 00 00 00 00 f5 18 00 | ................................ |
| 0740 | 00 00 00 7e 00 00 00 1b 00 00 00 00 00 00 00 00 00 00 00 0e 00 00 00 00 00 00 00 00 0d 00 00 00 | ...~............................ |
| 0760 | 00 00 00 00 00 00 00 00 00 00 00 00 02 00 00 00 00 00 00 f5 18 00 00 00 00 8c 00 00 00 00 00 00 | ................................ |
| 0780 | 00 00 00 00 00 00 00 00 00 00 00 00 00 0a 00 00 00 00 0f 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 07a0 | 00 0a 00 00 00 00 00 00 00 35 81 5f d0 00 00 00 03 00 00 00 05 00 00 00 00 00 00 00 00 00 00 00 | .........5._.................... |
| 07c0 | 04 00 00 00 8d 00 00 00 09 00 00 00 00 ff ff ff ff 00 05 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 07e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0800 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0820 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0840 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0860 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0880 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 08a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 08c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 08e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0900 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0920 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 69 98 f2 3d 04 01 00 00 00 02 00 f5 18 00 00 00 00 | ...............i..=............. |
| 0940 | 00 00 00 00 00 00 00 00 00 00 00 8d 00 00 00 16 23 21 2f 75 73 72 2f 62 69 6e 2f 65 6e 76 20 70 | ................#!/usr/bin/env.p |
| 0960 | 79 74 68 6f 6e 33 00 00 00 00 00 00 00 0e 69 6d 70 6f 72 74 20 68 61 73 68 6c 69 62 00 00 00 0b | ython3........import.hashlib.... |
| 0980 | 69 6d 70 6f 72 74 20 74 69 6d 65 00 00 00 0d 69 6d 70 6f 72 74 20 73 6f 63 6b 65 74 00 00 00 0f | import.time....import.socket.... |
| 09a0 | 69 6d 70 6f 72 74 20 72 65 71 75 65 73 74 73 00 00 00 13 69 6d 70 6f 72 74 20 63 6f 6e 66 69 67 | import.requests....import.config |
| 09c0 | 70 61 72 73 65 72 00 00 00 09 69 6d 70 6f 72 74 20 6f 73 00 00 00 00 00 00 00 2c 41 50 49 5f 4b | parser....import.os.......,API_K |
| 09e0 | 45 59 20 3d 20 22 39 34 32 33 65 33 34 30 33 37 31 61 35 39 63 31 33 38 34 62 34 34 38 63 34 66 | EY.=."9423e340371a59c1384b448c4f |
| 0a00 | 62 39 61 34 37 38 22 00 00 00 2f 41 50 49 5f 53 45 43 52 45 54 20 3d 20 22 38 35 38 64 35 61 38 | b9a478".../API_SECRET.=."858d5a8 |
| 0a20 | 33 63 38 37 35 30 62 65 35 64 64 65 30 30 30 36 65 64 35 38 61 33 61 35 38 22 00 00 00 15 55 53 | 3c8750be5dde0006ed58a3a58"....US |
| 0a40 | 45 52 4e 41 4d 45 20 3d 20 22 56 65 74 74 65 72 69 61 22 00 00 00 1f 50 41 53 53 57 4f 52 44 20 | ERNAME.=."Vetteria"....PASSWORD. |
| 0a60 | 3d 20 22 59 4f 55 52 5f 50 41 53 53 57 4f 52 44 5f 48 45 52 45 22 00 00 00 16 4d 50 44 5f 48 4f | =."YOUR_PASSWORD_HERE"....MPD_HO |
| 0a80 | 53 54 20 3d 20 22 6c 6f 63 61 6c 68 6f 73 74 22 00 00 00 0f 4d 50 44 5f 50 4f 52 54 20 3d 20 36 | ST.=."localhost"....MPD_PORT.=.6 |
| 0aa0 | 36 30 30 00 00 00 00 00 00 00 0b 64 65 66 20 6d 64 35 28 73 29 3a 00 00 00 2e 20 20 20 20 72 65 | 600........def.md5(s):........re |
| 0ac0 | 74 75 72 6e 20 68 61 73 68 6c 69 62 2e 6d 64 35 28 73 2e 65 6e 63 6f 64 65 28 29 29 2e 68 65 78 | turn.hashlib.md5(s.encode()).hex |
| 0ae0 | 64 69 67 65 73 74 28 29 00 00 00 00 00 00 00 11 64 65 66 20 73 69 67 6e 28 70 61 72 61 6d 73 29 | digest()........def.sign(params) |
| 0b00 | 3a 00 00 00 20 20 20 20 20 6b 65 79 73 20 3d 20 73 6f 72 74 65 64 28 70 61 72 61 6d 73 2e 6b 65 | :........keys.=.sorted(params.ke |
| 0b20 | 79 73 28 29 29 00 00 00 2e 20 20 20 20 73 69 67 20 3d 20 22 22 2e 6a 6f 69 6e 28 6b 20 2b 20 70 | ys())........sig.=."".join(k.+.p |
| 0b40 | 61 72 61 6d 73 5b 6b 5d 20 66 6f 72 20 6b 20 69 6e 20 6b 65 79 73 29 00 00 00 15 20 20 20 20 73 | arams[k].for.k.in.keys)........s |
| 0b60 | 69 67 20 2b 3d 20 41 50 49 5f 53 45 43 52 45 54 00 00 00 13 20 20 20 20 72 65 74 75 72 6e 20 6d | ig.+=.API_SECRET........return.m |
| 0b80 | 64 35 28 73 69 67 29 00 00 00 00 00 00 00 16 64 65 66 20 67 65 74 5f 73 65 73 73 69 6f 6e 5f 6b | d5(sig)........def.get_session_k |
| 0ba0 | 65 79 28 29 3a 00 00 00 4b 20 20 20 20 74 6f 6b 65 6e 5f 72 65 73 20 3d 20 72 65 71 75 65 73 74 | ey():...K....token_res.=.request |
| 0bc0 | 73 2e 67 65 74 28 22 68 74 74 70 73 3a 2f 2f 77 73 2e 61 75 64 69 6f 73 63 72 6f 62 62 6c 65 72 | s.get("https://ws.audioscrobbler |
| 0be0 | 2e 63 6f 6d 2f 32 2e 30 2f 22 2c 20 70 61 72 61 6d 73 3d 7b 00 00 00 22 20 20 20 20 20 20 20 20 | .com/2.0/",.params={..."........ |
| 0c00 | 22 6d 65 74 68 6f 64 22 3a 20 22 61 75 74 68 2e 67 65 74 54 6f 6b 65 6e 22 2c 00 00 00 1b 20 20 | "method":."auth.getToken",...... |
| 0c20 | 20 20 20 20 20 20 22 61 70 69 5f 6b 65 79 22 3a 20 41 50 49 5f 4b 45 59 2c 00 00 00 18 20 20 20 | ......"api_key":.API_KEY,....... |
| 0c40 | 20 20 20 20 20 22 66 6f 72 6d 61 74 22 3a 20 22 6a 73 6f 6e 22 00 00 00 0d 20 20 20 20 7d 29 2e | ....."format":."json"........}). |
| 0c60 | 6a 73 6f 6e 28 29 00 00 00 1e 20 20 20 20 74 6f 6b 65 6e 20 3d 20 74 6f 6b 65 6e 5f 72 65 73 5b | json()........token.=.token_res[ |
| 0c80 | 22 74 6f 6b 65 6e 22 5d 00 00 00 00 00 00 00 0e 20 20 20 20 70 61 72 61 6d 73 20 3d 20 7b 00 00 | "token"]............params.=.{.. |
| 0ca0 | 00 2a 20 20 20 20 20 20 20 20 22 6d 65 74 68 6f 64 22 3a 20 22 61 75 74 68 2e 67 65 74 4d 6f 62 | .*........"method":."auth.getMob |
| 0cc0 | 69 6c 65 53 65 73 73 69 6f 6e 22 2c 00 00 00 1d 20 20 20 20 20 20 20 20 22 75 73 65 72 6e 61 6d | ileSession",............"usernam |
| 0ce0 | 65 22 3a 20 55 53 45 52 4e 41 4d 45 2c 00 00 00 22 20 20 20 20 20 20 20 20 22 70 61 73 73 77 6f | e":.USERNAME,..."........"passwo |
| 0d00 | 72 64 22 3a 20 6d 64 35 28 50 41 53 53 57 4f 52 44 29 2c 00 00 00 1b 20 20 20 20 20 20 20 20 22 | rd":.md5(PASSWORD),............" |
| 0d20 | 61 70 69 5f 6b 65 79 22 3a 20 41 50 49 5f 4b 45 59 2c 00 00 00 05 20 20 20 20 7d 00 00 00 24 20 | api_key":.API_KEY,........}...$. |
| 0d40 | 20 20 20 70 61 72 61 6d 73 5b 22 61 70 69 5f 73 69 67 22 5d 20 3d 20 73 69 67 6e 28 70 61 72 61 | ...params["api_sig"].=.sign(para |
| 0d60 | 6d 73 29 00 00 00 1d 20 20 20 20 70 61 72 61 6d 73 5b 22 66 6f 72 6d 61 74 22 5d 20 3d 20 22 6a | ms)........params["format"].=."j |
| 0d80 | 73 6f 6e 22 00 00 00 00 00 00 00 51 20 20 20 20 72 65 73 20 3d 20 72 65 71 75 65 73 74 73 2e 70 | son".......Q....res.=.requests.p |
| 0da0 | 6f 73 74 28 22 68 74 74 70 73 3a 2f 2f 77 73 2e 61 75 64 69 6f 73 63 72 6f 62 62 6c 65 72 2e 63 | ost("https://ws.audioscrobbler.c |
| 0dc0 | 6f 6d 2f 32 2e 30 2f 22 2c 20 64 61 74 61 3d 70 61 72 61 6d 73 29 2e 6a 73 6f 6e 28 29 00 00 00 | om/2.0/",.data=params).json()... |
| 0de0 | 20 20 20 20 20 72 65 74 75 72 6e 20 72 65 73 5b 22 73 65 73 73 69 6f 6e 22 5d 5b 22 6b 65 79 22 | .....return.res["session"]["key" |
| 0e00 | 5d 00 00 00 00 00 00 00 32 64 65 66 20 73 63 72 6f 62 62 6c 65 28 73 6b 2c 20 61 72 74 69 73 74 | ].......2def.scrobble(sk,.artist |
| 0e20 | 2c 20 74 69 74 6c 65 2c 20 61 6c 62 75 6d 2c 20 74 69 6d 65 73 74 61 6d 70 29 3a 00 00 00 0e 20 | ,.title,.album,.timestamp):..... |
| 0e40 | 20 20 20 70 61 72 61 6d 73 20 3d 20 7b 00 00 00 23 20 20 20 20 20 20 20 20 22 6d 65 74 68 6f 64 | ...params.=.{...#........"method |
| 0e60 | 22 3a 20 22 74 72 61 63 6b 2e 73 63 72 6f 62 62 6c 65 22 2c 00 00 00 1c 20 20 20 20 20 20 20 20 | ":."track.scrobble",............ |
| 0e80 | 22 61 72 74 69 73 74 5b 30 5d 22 3a 20 61 72 74 69 73 74 2c 00 00 00 1a 20 20 20 20 20 20 20 20 | "artist[0]":.artist,............ |
| 0ea0 | 22 74 72 61 63 6b 5b 30 5d 22 3a 20 74 69 74 6c 65 2c 00 00 00 1a 20 20 20 20 20 20 20 20 22 61 | "track[0]":.title,............"a |
| 0ec0 | 6c 62 75 6d 5b 30 5d 22 3a 20 61 6c 62 75 6d 2c 00 00 00 27 20 20 20 20 20 20 20 20 22 74 69 6d | lbum[0]":.album,...'........"tim |
| 0ee0 | 65 73 74 61 6d 70 5b 30 5d 22 3a 20 73 74 72 28 74 69 6d 65 73 74 61 6d 70 29 2c 00 00 00 1b 20 | estamp[0]":.str(timestamp),..... |
| 0f00 | 20 20 20 20 20 20 20 22 61 70 69 5f 6b 65 79 22 3a 20 41 50 49 5f 4b 45 59 2c 00 00 00 11 20 20 | ......."api_key":.API_KEY,...... |
| 0f20 | 20 20 20 20 20 20 22 73 6b 22 3a 20 73 6b 2c 00 00 00 05 20 20 20 20 7d 00 00 00 24 20 20 20 20 | ......"sk":.sk,........}...$.... |
| 0f40 | 70 61 72 61 6d 73 5b 22 61 70 69 5f 73 69 67 22 5d 20 3d 20 73 69 67 6e 28 70 61 72 61 6d 73 29 | params["api_sig"].=.sign(params) |
| 0f60 | 00 00 00 1d 20 20 20 20 70 61 72 61 6d 73 5b 22 66 6f 72 6d 61 74 22 5d 20 3d 20 22 6a 73 6f 6e | ........params["format"].=."json |
| 0f80 | 22 00 00 00 44 20 20 20 20 72 65 71 75 65 73 74 73 2e 70 6f 73 74 28 22 68 74 74 70 73 3a 2f 2f | "...D....requests.post("https:// |
| 0fa0 | 77 73 2e 61 75 64 69 6f 73 63 72 6f 62 62 6c 65 72 2e 63 6f 6d 2f 32 2e 30 2f 22 2c 20 64 61 74 | ws.audioscrobbler.com/2.0/",.dat |
| 0fc0 | 61 3d 70 61 72 61 6d 73 29 00 00 00 00 00 00 00 31 64 65 66 20 75 70 64 61 74 65 5f 6e 6f 77 5f | a=params).......1def.update_now_ |
| 0fe0 | 70 6c 61 79 69 6e 67 28 73 6b 2c 20 61 72 74 69 73 74 2c 20 74 69 74 6c 65 2c 20 61 6c 62 75 6d | playing(sk,.artist,.title,.album |
| 1000 | 29 3a 00 00 00 0e 20 20 20 20 70 61 72 61 6d 73 20 3d 20 7b 00 00 00 2b 20 20 20 20 20 20 20 20 | ):........params.=.{...+........ |
| 1020 | 22 6d 65 74 68 6f 64 22 3a 20 22 74 72 61 63 6b 2e 75 70 64 61 74 65 4e 6f 77 50 6c 61 79 69 6e | "method":."track.updateNowPlayin |
| 1040 | 67 22 2c 00 00 00 19 20 20 20 20 20 20 20 20 22 61 72 74 69 73 74 22 3a 20 61 72 74 69 73 74 2c | g",............"artist":.artist, |
| 1060 | 00 00 00 17 20 20 20 20 20 20 20 20 22 74 72 61 63 6b 22 3a 20 74 69 74 6c 65 2c 00 00 00 17 20 | ............"track":.title,..... |
| 1080 | 20 20 20 20 20 20 20 22 61 6c 62 75 6d 22 3a 20 61 6c 62 75 6d 2c 00 00 00 1b 20 20 20 20 20 20 | ......."album":.album,.......... |
| 10a0 | 20 20 22 61 70 69 5f 6b 65 79 22 3a 20 41 50 49 5f 4b 45 59 2c 00 00 00 11 20 20 20 20 20 20 20 | .."api_key":.API_KEY,........... |
| 10c0 | 20 22 73 6b 22 3a 20 73 6b 2c 00 00 00 05 20 20 20 20 7d 00 00 00 24 20 20 20 20 70 61 72 61 6d | ."sk":.sk,........}...$....param |
| 10e0 | 73 5b 22 61 70 69 5f 73 69 67 22 5d 20 3d 20 73 69 67 6e 28 70 61 72 61 6d 73 29 00 00 00 1d 20 | s["api_sig"].=.sign(params)..... |
| 1100 | 20 20 20 70 61 72 61 6d 73 5b 22 66 6f 72 6d 61 74 22 5d 20 3d 20 22 6a 73 6f 6e 22 00 00 00 44 | ...params["format"].=."json"...D |
| 1120 | 20 20 20 20 72 65 71 75 65 73 74 73 2e 70 6f 73 74 28 22 68 74 74 70 73 3a 2f 2f 77 73 2e 61 75 | ....requests.post("https://ws.au |
| 1140 | 64 69 6f 73 63 72 6f 62 62 6c 65 72 2e 63 6f 6d 2f 32 2e 30 2f 22 2c 20 64 61 74 61 3d 70 61 72 | dioscrobbler.com/2.0/",.data=par |
| 1160 | 61 6d 73 29 00 00 00 00 00 00 00 12 64 65 66 20 6d 70 64 5f 63 6f 6e 6e 65 63 74 28 29 3a 00 00 | ams)........def.mpd_connect():.. |
| 1180 | 00 17 20 20 20 20 73 20 3d 20 73 6f 63 6b 65 74 2e 73 6f 63 6b 65 74 28 29 00 00 00 23 20 20 20 | ......s.=.socket.socket()...#... |
| 11a0 | 20 73 2e 63 6f 6e 6e 65 63 74 28 28 4d 50 44 5f 48 4f 53 54 2c 20 4d 50 44 5f 50 4f 52 54 29 29 | .s.connect((MPD_HOST,.MPD_PORT)) |
| 11c0 | 00 00 00 10 20 20 20 20 73 2e 72 65 63 76 28 31 30 32 34 29 00 00 00 0c 20 20 20 20 72 65 74 75 | ........s.recv(1024)........retu |
| 11e0 | 72 6e 20 73 00 00 00 00 00 00 00 14 64 65 66 20 6d 70 64 5f 63 6d 64 28 73 2c 20 63 6d 64 29 3a | rn.s........def.mpd_cmd(s,.cmd): |
| 1200 | 00 00 00 24 20 20 20 20 73 2e 73 65 6e 64 61 6c 6c 28 28 63 6d 64 20 2b 20 22 5c 6e 22 29 2e 65 | ...$....s.sendall((cmd.+."\n").e |
| 1220 | 6e 63 6f 64 65 28 29 29 00 00 00 0e 20 20 20 20 72 65 73 70 20 3d 20 62 22 22 00 00 00 0f 20 20 | ncode())........resp.=.b""...... |
| 1240 | 20 20 77 68 69 6c 65 20 54 72 75 65 3a 00 00 00 1c 20 20 20 20 20 20 20 20 63 68 75 6e 6b 20 3d | ..while.True:............chunk.= |
| 1260 | 20 73 2e 72 65 63 76 28 34 30 39 36 29 00 00 00 15 20 20 20 20 20 20 20 20 72 65 73 70 20 2b 3d | .s.recv(4096)............resp.+= |
| 1280 | 20 63 68 75 6e 6b 00 00 00 2d 20 20 20 20 20 20 20 20 69 66 20 62 22 4f 4b 5c 6e 22 20 69 6e 20 | .chunk...-........if.b"OK\n".in. |
| 12a0 | 72 65 73 70 20 6f 72 20 62 22 41 43 4b 22 20 69 6e 20 72 65 73 70 3a 00 00 00 11 20 20 20 20 20 | resp.or.b"ACK".in.resp:......... |
| 12c0 | 20 20 20 20 20 20 20 62 72 65 61 6b 00 00 00 18 20 20 20 20 72 65 74 75 72 6e 20 72 65 73 70 2e | .......break........return.resp. |
| 12e0 | 64 65 63 6f 64 65 28 29 00 00 00 00 00 00 00 16 64 65 66 20 70 61 72 73 65 5f 73 74 61 74 75 73 | decode()........def.parse_status |
| 1300 | 28 72 61 77 29 3a 00 00 00 0d 20 20 20 20 64 61 74 61 20 3d 20 7b 7d 00 00 00 21 20 20 20 20 66 | (raw):........data.=.{}...!....f |
| 1320 | 6f 72 20 6c 69 6e 65 20 69 6e 20 72 61 77 2e 73 70 6c 69 74 6c 69 6e 65 73 28 29 3a 00 00 00 17 | or.line.in.raw.splitlines():.... |
| 1340 | 20 20 20 20 20 20 20 20 69 66 20 22 3a 22 20 69 6e 20 6c 69 6e 65 3a 00 00 00 25 20 20 20 20 20 | ........if.":".in.line:...%..... |
| 1360 | 20 20 20 20 20 20 20 6b 2c 20 76 20 3d 20 6c 69 6e 65 2e 73 70 6c 69 74 28 22 3a 22 2c 20 31 29 | .......k,.v.=.line.split(":",.1) |
| 1380 | 00 00 00 27 20 20 20 20 20 20 20 20 20 20 20 20 64 61 74 61 5b 6b 2e 73 74 72 69 70 28 29 5d 20 | ...'............data[k.strip()]. |
| 13a0 | 3d 20 76 2e 73 74 72 69 70 28 29 00 00 00 0f 20 20 20 20 72 65 74 75 72 6e 20 64 61 74 61 00 00 | =.v.strip()........return.data.. |
| 13c0 | 00 00 00 00 00 0b 64 65 66 20 6d 61 69 6e 28 29 3a 00 00 00 1a 20 20 20 20 73 6b 20 3d 20 67 65 | ......def.main():........sk.=.ge |
| 13e0 | 74 5f 73 65 73 73 69 6f 6e 5f 6b 65 79 28 29 00 00 00 29 20 20 20 20 70 72 69 6e 74 28 66 22 41 | t_session_key()...)....print(f"A |
| 1400 | 75 74 68 65 6e 74 69 63 61 74 65 64 20 61 73 20 7b 55 53 45 52 4e 41 4d 45 7d 22 29 00 00 00 00 | uthenticated.as.{USERNAME}").... |
| 1420 | 00 00 00 17 20 20 20 20 6d 70 64 20 3d 20 6d 70 64 5f 63 6f 6e 6e 65 63 74 28 29 00 00 00 15 20 | ........mpd.=.mpd_connect()..... |
| 1440 | 20 20 20 6c 61 73 74 5f 74 69 74 6c 65 20 3d 20 4e 6f 6e 65 00 00 00 15 20 20 20 20 6c 61 73 74 | ...last_title.=.None........last |
| 1460 | 5f 73 74 61 72 74 20 3d 20 4e 6f 6e 65 00 00 00 18 20 20 20 20 6c 61 73 74 5f 64 75 72 61 74 69 | _start.=.None........last_durati |
| 1480 | 6f 6e 20 3d 20 4e 6f 6e 65 00 00 00 16 20 20 20 20 6c 61 73 74 5f 61 72 74 69 73 74 20 3d 20 4e | on.=.None........last_artist.=.N |
| 14a0 | 6f 6e 65 00 00 00 15 20 20 20 20 6c 61 73 74 5f 61 6c 62 75 6d 20 3d 20 4e 6f 6e 65 00 00 00 15 | one........last_album.=.None.... |
| 14c0 | 20 20 20 20 73 63 72 6f 62 62 6c 65 64 20 3d 20 46 61 6c 73 65 00 00 00 00 00 00 00 0f 20 20 20 | ....scrobbled.=.False........... |
| 14e0 | 20 77 68 69 6c 65 20 54 72 75 65 3a 00 00 00 2b 20 20 20 20 20 20 20 20 73 74 61 74 75 73 5f 72 | .while.True:...+........status_r |
| 1500 | 61 77 20 3d 20 6d 70 64 5f 63 6d 64 28 6d 70 64 2c 20 22 73 74 61 74 75 73 22 29 00 00 00 31 20 | aw.=.mpd_cmd(mpd,."status")...1. |
| 1520 | 20 20 20 20 20 20 20 63 75 72 72 65 6e 74 5f 72 61 77 20 3d 20 6d 70 64 5f 63 6d 64 28 6d 70 64 | .......current_raw.=.mpd_cmd(mpd |
| 1540 | 2c 20 22 63 75 72 72 65 6e 74 73 6f 6e 67 22 29 00 00 00 29 20 20 20 20 20 20 20 20 73 74 61 74 | ,."currentsong")...)........stat |
| 1560 | 75 73 20 3d 20 70 61 72 73 65 5f 73 74 61 74 75 73 28 73 74 61 74 75 73 5f 72 61 77 29 00 00 00 | us.=.parse_status(status_raw)... |
| 1580 | 2b 20 20 20 20 20 20 20 20 63 75 72 72 65 6e 74 20 3d 20 70 61 72 73 65 5f 73 74 61 74 75 73 28 | +........current.=.parse_status( |
| 15a0 | 63 75 72 72 65 6e 74 5f 72 61 77 29 00 00 00 00 00 00 00 28 20 20 20 20 20 20 20 20 74 69 74 6c | current_raw).......(........titl |
| 15c0 | 65 20 3d 20 63 75 72 72 65 6e 74 2e 67 65 74 28 22 54 69 74 6c 65 22 2c 20 22 22 29 00 00 00 2a | e.=.current.get("Title",."")...* |
| 15e0 | 20 20 20 20 20 20 20 20 61 72 74 69 73 74 20 3d 20 63 75 72 72 65 6e 74 2e 67 65 74 28 22 41 72 | ........artist.=.current.get("Ar |
| 1600 | 74 69 73 74 22 2c 20 22 22 29 00 00 00 28 20 20 20 20 20 20 20 20 61 6c 62 75 6d 20 3d 20 63 75 | tist",."")...(........album.=.cu |
| 1620 | 72 72 65 6e 74 2e 67 65 74 28 22 41 6c 62 75 6d 22 2c 20 22 22 29 00 00 00 2b 20 20 20 20 20 20 | rrent.get("Album",."")...+...... |
| 1640 | 20 20 73 74 61 74 65 20 3d 20 73 74 61 74 75 73 2e 67 65 74 28 22 73 74 61 74 65 22 2c 20 22 73 | ..state.=.status.get("state",."s |
| 1660 | 74 6f 70 22 29 00 00 00 31 20 20 20 20 20 20 20 20 65 6c 61 70 73 65 64 20 3d 20 66 6c 6f 61 74 | top")...1........elapsed.=.float |
| 1680 | 28 73 74 61 74 75 73 2e 67 65 74 28 22 65 6c 61 70 73 65 64 22 2c 20 30 29 29 00 00 00 33 20 20 | (status.get("elapsed",.0))...3.. |
| 16a0 | 20 20 20 20 20 20 64 75 72 61 74 69 6f 6e 20 3d 20 66 6c 6f 61 74 28 73 74 61 74 75 73 2e 67 65 | ......duration.=.float(status.ge |
| 16c0 | 74 28 22 64 75 72 61 74 69 6f 6e 22 2c 20 30 29 29 00 00 00 00 00 00 00 3d 20 20 20 20 20 20 20 | t("duration",.0)).......=....... |
| 16e0 | 20 69 66 20 73 74 61 74 65 20 3d 3d 20 22 70 6c 61 79 22 20 61 6e 64 20 74 69 74 6c 65 20 61 6e | .if.state.==."play".and.title.an |
| 1700 | 64 20 74 69 74 6c 65 20 21 3d 20 6c 61 73 74 5f 74 69 74 6c 65 3a 00 00 00 1e 20 20 20 20 20 20 | d.title.!=.last_title:.......... |
| 1720 | 20 20 20 20 20 20 6c 61 73 74 5f 74 69 74 6c 65 20 3d 20 74 69 74 6c 65 00 00 00 20 20 20 20 20 | ......last_title.=.title........ |
| 1740 | 20 20 20 20 20 20 20 20 6c 61 73 74 5f 61 72 74 69 73 74 20 3d 20 61 72 74 69 73 74 00 00 00 1e | ........last_artist.=.artist.... |
| 1760 | 20 20 20 20 20 20 20 20 20 20 20 20 6c 61 73 74 5f 61 6c 62 75 6d 20 3d 20 61 6c 62 75 6d 00 00 | ............last_album.=.album.. |
| 1780 | 00 29 20 20 20 20 20 20 20 20 20 20 20 20 6c 61 73 74 5f 73 74 61 72 74 20 3d 20 69 6e 74 28 74 | .)............last_start.=.int(t |
| 17a0 | 69 6d 65 2e 74 69 6d 65 28 29 29 00 00 00 24 20 20 20 20 20 20 20 20 20 20 20 20 6c 61 73 74 5f | ime.time())...$............last_ |
| 17c0 | 64 75 72 61 74 69 6f 6e 20 3d 20 64 75 72 61 74 69 6f 6e 00 00 00 1d 20 20 20 20 20 20 20 20 20 | duration.=.duration............. |
| 17e0 | 20 20 20 73 63 72 6f 62 62 6c 65 64 20 3d 20 46 61 6c 73 65 00 00 00 38 20 20 20 20 20 20 20 20 | ...scrobbled.=.False...8........ |
| 1800 | 20 20 20 20 75 70 64 61 74 65 5f 6e 6f 77 5f 70 6c 61 79 69 6e 67 28 73 6b 2c 20 61 72 74 69 73 | ....update_now_playing(sk,.artis |
| 1820 | 74 2c 20 74 69 74 6c 65 2c 20 61 6c 62 75 6d 29 00 00 00 35 20 20 20 20 20 20 20 20 20 20 20 20 | t,.title,.album)...5............ |
| 1840 | 70 72 69 6e 74 28 66 22 4e 6f 77 20 70 6c 61 79 69 6e 67 3a 20 7b 61 72 74 69 73 74 7d 20 2d 20 | print(f"Now.playing:.{artist}.-. |
| 1860 | 7b 74 69 74 6c 65 7d 22 29 00 00 00 00 00 00 00 3e 20 20 20 20 20 20 20 20 69 66 20 28 6e 6f 74 | {title}").......>........if.(not |
| 1880 | 20 73 63 72 6f 62 62 6c 65 64 20 61 6e 64 20 6c 61 73 74 5f 74 69 74 6c 65 20 61 6e 64 20 6c 61 | .scrobbled.and.last_title.and.la |
| 18a0 | 73 74 5f 64 75 72 61 74 69 6f 6e 20 61 6e 64 00 00 00 42 20 20 20 20 20 20 20 20 20 20 20 20 20 | st_duration.and...B............. |
| 18c0 | 20 20 20 28 65 6c 61 70 73 65 64 20 3e 3d 20 6c 61 73 74 5f 64 75 72 61 74 69 6f 6e 20 2f 20 32 | ...(elapsed.>=.last_duration./.2 |
| 18e0 | 20 6f 72 20 65 6c 61 70 73 65 64 20 3e 3d 20 32 34 30 29 29 3a 00 00 00 49 20 20 20 20 20 20 20 | .or.elapsed.>=.240)):...I....... |
| 1900 | 20 20 20 20 20 73 63 72 6f 62 62 6c 65 28 73 6b 2c 20 6c 61 73 74 5f 61 72 74 69 73 74 2c 20 6c | .....scrobble(sk,.last_artist,.l |
| 1920 | 61 73 74 5f 74 69 74 6c 65 2c 20 6c 61 73 74 5f 61 6c 62 75 6d 2c 20 6c 61 73 74 5f 73 74 61 72 | ast_title,.last_album,.last_star |
| 1940 | 74 29 00 00 00 1c 20 20 20 20 20 20 20 20 20 20 20 20 73 63 72 6f 62 62 6c 65 64 20 3d 20 54 72 | t)................scrobbled.=.Tr |
| 1960 | 75 65 00 00 00 3d 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 6e 74 28 66 22 53 63 72 6f 62 62 | ue...=............print(f"Scrobb |
| 1980 | 6c 65 64 3a 20 7b 6c 61 73 74 5f 61 72 74 69 73 74 7d 20 2d 20 7b 6c 61 73 74 5f 74 69 74 6c 65 | led:.{last_artist}.-.{last_title |
| 19a0 | 7d 22 29 00 00 00 00 00 00 00 23 20 20 20 20 20 20 20 20 6d 70 64 5f 63 6d 64 28 6d 70 64 2c 20 | }").......#........mpd_cmd(mpd,. |
| 19c0 | 22 69 64 6c 65 20 70 6c 61 79 65 72 22 29 00 00 00 00 00 00 00 1a 69 66 20 5f 5f 6e 61 6d 65 5f | "idle.player")........if.__name_ |
| 19e0 | 5f 20 3d 3d 20 22 5f 5f 6d 61 69 6e 5f 5f 22 3a 00 00 00 0a 20 20 20 20 6d 61 69 6e 28 29 35 81 | _.==."__main__":........main()5. |
| 1a00 | 35 81 5f d0 00 00 00 04 00 00 00 08 00 00 00 00 00 00 00 00 00 00 00 05 00 00 00 0d 00 00 00 0c | 5._............................. |
| 1a20 | 00 00 00 00 ff ff ff ff 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1a40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1a60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1a80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1aa0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1ac0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1ae0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1b00 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1b20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1b40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1b60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1b80 | 00 00 00 00 00 00 69 98 f2 58 04 01 00 00 00 08 00 f5 18 00 00 00 0c 00 00 00 0e 00 00 00 8d 00 | ......i..X...................... |
| 1ba0 | 00 00 01 00 00 00 1f 50 41 53 53 57 4f 52 44 20 3d 20 22 59 4f 55 52 5f 50 41 53 53 57 4f 52 44 | .......PASSWORD.=."YOUR_PASSWORD |
| 1bc0 | 5f 48 45 52 45 22 f5 18 00 00 00 0d 00 00 00 0e 00 00 00 8d 00 00 00 00 35 81 f5 18 00 00 00 00 | _HERE"..................5....... |
| 1be0 | 0c 00 00 00 0c 00 00 00 00 00 00 00 12 00 00 00 00 00 00 00 0e 00 00 00 ef 00 00 00 00 00 00 00 | ................................ |
| 1c00 | 12 00 00 00 00 00 00 00 0e 00 00 00 00 00 00 00 35 81 5f d0 00 00 00 05 00 00 00 09 00 00 00 06 | ................5._............. |
| 1c20 | 00 00 00 00 00 00 00 08 00 00 00 01 00 00 00 00 00 00 00 00 ff ff ff ff 00 01 00 00 00 00 00 00 | ................................ |
| 1c40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1c60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1c80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1ca0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1cc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1ce0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1d00 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1d20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1d40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1d60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 1d80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 69 98 f3 07 04 01 00 00 00 00 | ......................i......... |
| 1da0 | 00 f5 18 00 00 00 00 00 00 00 02 00 00 00 00 00 00 00 8d 00 00 00 16 23 21 2f 75 73 72 2f 62 69 | .......................#!/usr/bi |
| 1dc0 | 6e 2f 65 6e 76 20 70 79 74 68 6f 6e 33 00 00 00 00 00 00 00 0e 69 6d 70 6f 72 74 20 68 61 73 68 | n/env.python3........import.hash |
| 1de0 | 6c 69 62 00 00 00 0b 69 6d 70 6f 72 74 20 74 69 6d 65 00 00 00 0d 69 6d 70 6f 72 74 20 73 6f 63 | lib....import.time....import.soc |
| 1e00 | 6b 65 74 00 00 00 0f 69 6d 70 6f 72 74 20 72 65 71 75 65 73 74 73 00 00 00 13 69 6d 70 6f 72 74 | ket....import.requests....import |
| 1e20 | 20 63 6f 6e 66 69 67 70 61 72 73 65 72 00 00 00 09 69 6d 70 6f 72 74 20 6f 73 00 00 00 00 00 00 | .configparser....import.os...... |
| 1e40 | 00 2c 41 50 49 5f 4b 45 59 20 3d 20 22 39 34 32 33 65 33 34 30 33 37 31 61 35 39 63 31 33 38 34 | .,API_KEY.=."9423e340371a59c1384 |
| 1e60 | 62 34 34 38 63 34 66 62 39 61 34 37 38 22 00 00 00 2f 41 50 49 5f 53 45 43 52 45 54 20 3d 20 22 | b448c4fb9a478".../API_SECRET.=." |
| 1e80 | 38 35 38 64 35 61 38 33 63 38 37 35 30 62 65 35 64 64 65 30 30 30 36 65 64 35 38 61 33 61 35 38 | 858d5a83c8750be5dde0006ed58a3a58 |
| 1ea0 | 22 00 00 00 15 55 53 45 52 4e 41 4d 45 20 3d 20 22 56 65 74 74 65 72 69 61 22 00 00 00 1b 50 41 | "....USERNAME.=."Vetteria"....PA |
| 1ec0 | 53 53 57 4f 52 44 20 3d 20 22 32 53 30 79 54 70 55 34 58 35 51 36 26 68 22 00 00 00 16 4d 50 44 | SSWORD.=."2S0yTpU4X5Q6&h"....MPD |
| 1ee0 | 5f 48 4f 53 54 20 3d 20 22 6c 6f 63 61 6c 68 6f 73 74 22 00 00 00 0f 4d 50 44 5f 50 4f 52 54 20 | _HOST.=."localhost"....MPD_PORT. |
| 1f00 | 3d 20 36 36 30 30 00 00 00 00 00 00 00 0b 64 65 66 20 6d 64 35 28 73 29 3a 00 00 00 2e 20 20 20 | =.6600........def.md5(s):....... |
| 1f20 | 20 72 65 74 75 72 6e 20 68 61 73 68 6c 69 62 2e 6d 64 35 28 73 2e 65 6e 63 6f 64 65 28 29 29 2e | .return.hashlib.md5(s.encode()). |
| 1f40 | 68 65 78 64 69 67 65 73 74 28 29 00 00 00 00 00 00 00 11 64 65 66 20 73 69 67 6e 28 70 61 72 61 | hexdigest()........def.sign(para |
| 1f60 | 6d 73 29 3a 00 00 00 20 20 20 20 20 6b 65 79 73 20 3d 20 73 6f 72 74 65 64 28 70 61 72 61 6d 73 | ms):........keys.=.sorted(params |
| 1f80 | 2e 6b 65 79 73 28 29 29 00 00 00 2e 20 20 20 20 73 69 67 20 3d 20 22 22 2e 6a 6f 69 6e 28 6b 20 | .keys())........sig.=."".join(k. |
| 1fa0 | 2b 20 70 61 72 61 6d 73 5b 6b 5d 20 66 6f 72 20 6b 20 69 6e 20 6b 65 79 73 29 00 00 00 15 20 20 | +.params[k].for.k.in.keys)...... |
| 1fc0 | 20 20 73 69 67 20 2b 3d 20 41 50 49 5f 53 45 43 52 45 54 00 00 00 13 20 20 20 20 72 65 74 75 72 | ..sig.+=.API_SECRET........retur |
| 1fe0 | 6e 20 6d 64 35 28 73 69 67 29 00 00 00 00 00 00 00 16 64 65 66 20 67 65 74 5f 73 65 73 73 69 6f | n.md5(sig)........def.get_sessio |
| 2000 | 6e 5f 6b 65 79 28 29 3a 00 00 00 4b 20 20 20 20 74 6f 6b 65 6e 5f 72 65 73 20 3d 20 72 65 71 75 | n_key():...K....token_res.=.requ |
| 2020 | 65 73 74 73 2e 67 65 74 28 22 68 74 74 70 73 3a 2f 2f 77 73 2e 61 75 64 69 6f 73 63 72 6f 62 62 | ests.get("https://ws.audioscrobb |
| 2040 | 6c 65 72 2e 63 6f 6d 2f 32 2e 30 2f 22 2c 20 70 61 72 61 6d 73 3d 7b 00 00 00 22 20 20 20 20 20 | ler.com/2.0/",.params={..."..... |
| 2060 | 20 20 20 22 6d 65 74 68 6f 64 22 3a 20 22 61 75 74 68 2e 67 65 74 54 6f 6b 65 6e 22 2c 00 00 00 | ..."method":."auth.getToken",... |
| 2080 | 1b 20 20 20 20 20 20 20 20 22 61 70 69 5f 6b 65 79 22 3a 20 41 50 49 5f 4b 45 59 2c 00 00 00 18 | ........."api_key":.API_KEY,.... |
| 20a0 | 20 20 20 20 20 20 20 20 22 66 6f 72 6d 61 74 22 3a 20 22 6a 73 6f 6e 22 00 00 00 0d 20 20 20 20 | ........"format":."json"........ |
| 20c0 | 7d 29 2e 6a 73 6f 6e 28 29 00 00 00 1e 20 20 20 20 74 6f 6b 65 6e 20 3d 20 74 6f 6b 65 6e 5f 72 | }).json()........token.=.token_r |
| 20e0 | 65 73 5b 22 74 6f 6b 65 6e 22 5d 00 00 00 00 00 00 00 0e 20 20 20 20 70 61 72 61 6d 73 20 3d 20 | es["token"]............params.=. |
| 2100 | 7b 00 00 00 2a 20 20 20 20 20 20 20 20 22 6d 65 74 68 6f 64 22 3a 20 22 61 75 74 68 2e 67 65 74 | {...*........"method":."auth.get |
| 2120 | 4d 6f 62 69 6c 65 53 65 73 73 69 6f 6e 22 2c 00 00 00 1d 20 20 20 20 20 20 20 20 22 75 73 65 72 | MobileSession",............"user |
| 2140 | 6e 61 6d 65 22 3a 20 55 53 45 52 4e 41 4d 45 2c 00 00 00 22 20 20 20 20 20 20 20 20 22 70 61 73 | name":.USERNAME,..."........"pas |
| 2160 | 73 77 6f 72 64 22 3a 20 6d 64 35 28 50 41 53 53 57 4f 52 44 29 2c 00 00 00 1b 20 20 20 20 20 20 | sword":.md5(PASSWORD),.......... |
| 2180 | 20 20 22 61 70 69 5f 6b 65 79 22 3a 20 41 50 49 5f 4b 45 59 2c 00 00 00 05 20 20 20 20 7d 00 00 | .."api_key":.API_KEY,........}.. |
| 21a0 | 00 24 20 20 20 20 70 61 72 61 6d 73 5b 22 61 70 69 5f 73 69 67 22 5d 20 3d 20 73 69 67 6e 28 70 | .$....params["api_sig"].=.sign(p |
| 21c0 | 61 72 61 6d 73 29 00 00 00 1d 20 20 20 20 70 61 72 61 6d 73 5b 22 66 6f 72 6d 61 74 22 5d 20 3d | arams)........params["format"].= |
| 21e0 | 20 22 6a 73 6f 6e 22 00 00 00 00 00 00 00 51 20 20 20 20 72 65 73 20 3d 20 72 65 71 75 65 73 74 | ."json".......Q....res.=.request |
| 2200 | 73 2e 70 6f 73 74 28 22 68 74 74 70 73 3a 2f 2f 77 73 2e 61 75 64 69 6f 73 63 72 6f 62 62 6c 65 | s.post("https://ws.audioscrobble |
| 2220 | 72 2e 63 6f 6d 2f 32 2e 30 2f 22 2c 20 64 61 74 61 3d 70 61 72 61 6d 73 29 2e 6a 73 6f 6e 28 29 | r.com/2.0/",.data=params).json() |
| 2240 | 00 00 00 20 20 20 20 20 72 65 74 75 72 6e 20 72 65 73 5b 22 73 65 73 73 69 6f 6e 22 5d 5b 22 6b | ........return.res["session"]["k |
| 2260 | 65 79 22 5d 00 00 00 00 00 00 00 32 64 65 66 20 73 63 72 6f 62 62 6c 65 28 73 6b 2c 20 61 72 74 | ey"].......2def.scrobble(sk,.art |
| 2280 | 69 73 74 2c 20 74 69 74 6c 65 2c 20 61 6c 62 75 6d 2c 20 74 69 6d 65 73 74 61 6d 70 29 3a 00 00 | ist,.title,.album,.timestamp):.. |
| 22a0 | 00 0e 20 20 20 20 70 61 72 61 6d 73 20 3d 20 7b 00 00 00 23 20 20 20 20 20 20 20 20 22 6d 65 74 | ......params.=.{...#........"met |
| 22c0 | 68 6f 64 22 3a 20 22 74 72 61 63 6b 2e 73 63 72 6f 62 62 6c 65 22 2c 00 00 00 1c 20 20 20 20 20 | hod":."track.scrobble",......... |
| 22e0 | 20 20 20 22 61 72 74 69 73 74 5b 30 5d 22 3a 20 61 72 74 69 73 74 2c 00 00 00 1a 20 20 20 20 20 | ..."artist[0]":.artist,......... |
| 2300 | 20 20 20 22 74 72 61 63 6b 5b 30 5d 22 3a 20 74 69 74 6c 65 2c 00 00 00 1a 20 20 20 20 20 20 20 | ..."track[0]":.title,........... |
| 2320 | 20 22 61 6c 62 75 6d 5b 30 5d 22 3a 20 61 6c 62 75 6d 2c 00 00 00 27 20 20 20 20 20 20 20 20 22 | ."album[0]":.album,...'........" |
| 2340 | 74 69 6d 65 73 74 61 6d 70 5b 30 5d 22 3a 20 73 74 72 28 74 69 6d 65 73 74 61 6d 70 29 2c 00 00 | timestamp[0]":.str(timestamp),.. |
| 2360 | 00 1b 20 20 20 20 20 20 20 20 22 61 70 69 5f 6b 65 79 22 3a 20 41 50 49 5f 4b 45 59 2c 00 00 00 | .........."api_key":.API_KEY,... |
| 2380 | 11 20 20 20 20 20 20 20 20 22 73 6b 22 3a 20 73 6b 2c 00 00 00 05 20 20 20 20 7d 00 00 00 24 20 | ........."sk":.sk,........}...$. |
| 23a0 | 20 20 20 70 61 72 61 6d 73 5b 22 61 70 69 5f 73 69 67 22 5d 20 3d 20 73 69 67 6e 28 70 61 72 61 | ...params["api_sig"].=.sign(para |
| 23c0 | 6d 73 29 00 00 00 1d 20 20 20 20 70 61 72 61 6d 73 5b 22 66 6f 72 6d 61 74 22 5d 20 3d 20 22 6a | ms)........params["format"].=."j |
| 23e0 | 73 6f 6e 22 00 00 00 44 20 20 20 20 72 65 71 75 65 73 74 73 2e 70 6f 73 74 28 22 68 74 74 70 73 | son"...D....requests.post("https |
| 2400 | 3a 2f 2f 77 73 2e 61 75 64 69 6f 73 63 72 6f 62 62 6c 65 72 2e 63 6f 6d 2f 32 2e 30 2f 22 2c 20 | ://ws.audioscrobbler.com/2.0/",. |
| 2420 | 64 61 74 61 3d 70 61 72 61 6d 73 29 00 00 00 00 00 00 00 31 64 65 66 20 75 70 64 61 74 65 5f 6e | data=params).......1def.update_n |
| 2440 | 6f 77 5f 70 6c 61 79 69 6e 67 28 73 6b 2c 20 61 72 74 69 73 74 2c 20 74 69 74 6c 65 2c 20 61 6c | ow_playing(sk,.artist,.title,.al |
| 2460 | 62 75 6d 29 3a 00 00 00 0e 20 20 20 20 70 61 72 61 6d 73 20 3d 20 7b 00 00 00 2b 20 20 20 20 20 | bum):........params.=.{...+..... |
| 2480 | 20 20 20 22 6d 65 74 68 6f 64 22 3a 20 22 74 72 61 63 6b 2e 75 70 64 61 74 65 4e 6f 77 50 6c 61 | ..."method":."track.updateNowPla |
| 24a0 | 79 69 6e 67 22 2c 00 00 00 19 20 20 20 20 20 20 20 20 22 61 72 74 69 73 74 22 3a 20 61 72 74 69 | ying",............"artist":.arti |
| 24c0 | 73 74 2c 00 00 00 17 20 20 20 20 20 20 20 20 22 74 72 61 63 6b 22 3a 20 74 69 74 6c 65 2c 00 00 | st,............"track":.title,.. |
| 24e0 | 00 17 20 20 20 20 20 20 20 20 22 61 6c 62 75 6d 22 3a 20 61 6c 62 75 6d 2c 00 00 00 1b 20 20 20 | .........."album":.album,....... |
| 2500 | 20 20 20 20 20 22 61 70 69 5f 6b 65 79 22 3a 20 41 50 49 5f 4b 45 59 2c 00 00 00 11 20 20 20 20 | ....."api_key":.API_KEY,........ |
| 2520 | 20 20 20 20 22 73 6b 22 3a 20 73 6b 2c 00 00 00 05 20 20 20 20 7d 00 00 00 24 20 20 20 20 70 61 | ...."sk":.sk,........}...$....pa |
| 2540 | 72 61 6d 73 5b 22 61 70 69 5f 73 69 67 22 5d 20 3d 20 73 69 67 6e 28 70 61 72 61 6d 73 29 00 00 | rams["api_sig"].=.sign(params).. |
| 2560 | 00 1d 20 20 20 20 70 61 72 61 6d 73 5b 22 66 6f 72 6d 61 74 22 5d 20 3d 20 22 6a 73 6f 6e 22 00 | ......params["format"].=."json". |
| 2580 | 00 00 44 20 20 20 20 72 65 71 75 65 73 74 73 2e 70 6f 73 74 28 22 68 74 74 70 73 3a 2f 2f 77 73 | ..D....requests.post("https://ws |
| 25a0 | 2e 61 75 64 69 6f 73 63 72 6f 62 62 6c 65 72 2e 63 6f 6d 2f 32 2e 30 2f 22 2c 20 64 61 74 61 3d | .audioscrobbler.com/2.0/",.data= |
| 25c0 | 70 61 72 61 6d 73 29 00 00 00 00 00 00 00 12 64 65 66 20 6d 70 64 5f 63 6f 6e 6e 65 63 74 28 29 | params)........def.mpd_connect() |
| 25e0 | 3a 00 00 00 17 20 20 20 20 73 20 3d 20 73 6f 63 6b 65 74 2e 73 6f 63 6b 65 74 28 29 00 00 00 23 | :........s.=.socket.socket()...# |
| 2600 | 20 20 20 20 73 2e 63 6f 6e 6e 65 63 74 28 28 4d 50 44 5f 48 4f 53 54 2c 20 4d 50 44 5f 50 4f 52 | ....s.connect((MPD_HOST,.MPD_POR |
| 2620 | 54 29 29 00 00 00 10 20 20 20 20 73 2e 72 65 63 76 28 31 30 32 34 29 00 00 00 0c 20 20 20 20 72 | T))........s.recv(1024)........r |
| 2640 | 65 74 75 72 6e 20 73 00 00 00 00 00 00 00 14 64 65 66 20 6d 70 64 5f 63 6d 64 28 73 2c 20 63 6d | eturn.s........def.mpd_cmd(s,.cm |
| 2660 | 64 29 3a 00 00 00 24 20 20 20 20 73 2e 73 65 6e 64 61 6c 6c 28 28 63 6d 64 20 2b 20 22 5c 6e 22 | d):...$....s.sendall((cmd.+."\n" |
| 2680 | 29 2e 65 6e 63 6f 64 65 28 29 29 00 00 00 0e 20 20 20 20 72 65 73 70 20 3d 20 62 22 22 00 00 00 | ).encode())........resp.=.b""... |
| 26a0 | 0f 20 20 20 20 77 68 69 6c 65 20 54 72 75 65 3a 00 00 00 1c 20 20 20 20 20 20 20 20 63 68 75 6e | .....while.True:............chun |
| 26c0 | 6b 20 3d 20 73 2e 72 65 63 76 28 34 30 39 36 29 00 00 00 15 20 20 20 20 20 20 20 20 72 65 73 70 | k.=.s.recv(4096)............resp |
| 26e0 | 20 2b 3d 20 63 68 75 6e 6b 00 00 00 2d 20 20 20 20 20 20 20 20 69 66 20 62 22 4f 4b 5c 6e 22 20 | .+=.chunk...-........if.b"OK\n". |
| 2700 | 69 6e 20 72 65 73 70 20 6f 72 20 62 22 41 43 4b 22 20 69 6e 20 72 65 73 70 3a 00 00 00 11 20 20 | in.resp.or.b"ACK".in.resp:...... |
| 2720 | 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b 00 00 00 18 20 20 20 20 72 65 74 75 72 6e 20 72 65 | ..........break........return.re |
| 2740 | 73 70 2e 64 65 63 6f 64 65 28 29 00 00 00 00 00 00 00 16 64 65 66 20 70 61 72 73 65 5f 73 74 61 | sp.decode()........def.parse_sta |
| 2760 | 74 75 73 28 72 61 77 29 3a 00 00 00 0d 20 20 20 20 64 61 74 61 20 3d 20 7b 7d 00 00 00 21 20 20 | tus(raw):........data.=.{}...!.. |
| 2780 | 20 20 66 6f 72 20 6c 69 6e 65 20 69 6e 20 72 61 77 2e 73 70 6c 69 74 6c 69 6e 65 73 28 29 3a 00 | ..for.line.in.raw.splitlines():. |
| 27a0 | 00 00 17 20 20 20 20 20 20 20 20 69 66 20 22 3a 22 20 69 6e 20 6c 69 6e 65 3a 00 00 00 25 20 20 | ...........if.":".in.line:...%.. |
| 27c0 | 20 20 20 20 20 20 20 20 20 20 6b 2c 20 76 20 3d 20 6c 69 6e 65 2e 73 70 6c 69 74 28 22 3a 22 2c | ..........k,.v.=.line.split(":", |
| 27e0 | 20 31 29 00 00 00 27 20 20 20 20 20 20 20 20 20 20 20 20 64 61 74 61 5b 6b 2e 73 74 72 69 70 28 | .1)...'............data[k.strip( |
| 2800 | 29 5d 20 3d 20 76 2e 73 74 72 69 70 28 29 00 00 00 0f 20 20 20 20 72 65 74 75 72 6e 20 64 61 74 | )].=.v.strip()........return.dat |
| 2820 | 61 00 00 00 00 00 00 00 0b 64 65 66 20 6d 61 69 6e 28 29 3a 00 00 00 1a 20 20 20 20 73 6b 20 3d | a........def.main():........sk.= |
| 2840 | 20 67 65 74 5f 73 65 73 73 69 6f 6e 5f 6b 65 79 28 29 00 00 00 29 20 20 20 20 70 72 69 6e 74 28 | .get_session_key()...)....print( |
| 2860 | 66 22 41 75 74 68 65 6e 74 69 63 61 74 65 64 20 61 73 20 7b 55 53 45 52 4e 41 4d 45 7d 22 29 00 | f"Authenticated.as.{USERNAME}"). |
| 2880 | 00 00 00 00 00 00 17 20 20 20 20 6d 70 64 20 3d 20 6d 70 64 5f 63 6f 6e 6e 65 63 74 28 29 00 00 | ...........mpd.=.mpd_connect().. |
| 28a0 | 00 15 20 20 20 20 6c 61 73 74 5f 74 69 74 6c 65 20 3d 20 4e 6f 6e 65 00 00 00 15 20 20 20 20 6c | ......last_title.=.None........l |
| 28c0 | 61 73 74 5f 73 74 61 72 74 20 3d 20 4e 6f 6e 65 00 00 00 18 20 20 20 20 6c 61 73 74 5f 64 75 72 | ast_start.=.None........last_dur |
| 28e0 | 61 74 69 6f 6e 20 3d 20 4e 6f 6e 65 00 00 00 16 20 20 20 20 6c 61 73 74 5f 61 72 74 69 73 74 20 | ation.=.None........last_artist. |
| 2900 | 3d 20 4e 6f 6e 65 00 00 00 15 20 20 20 20 6c 61 73 74 5f 61 6c 62 75 6d 20 3d 20 4e 6f 6e 65 00 | =.None........last_album.=.None. |
| 2920 | 00 00 15 20 20 20 20 73 63 72 6f 62 62 6c 65 64 20 3d 20 46 61 6c 73 65 00 00 00 00 00 00 00 0f | .......scrobbled.=.False........ |
| 2940 | 20 20 20 20 77 68 69 6c 65 20 54 72 75 65 3a 00 00 00 2b 20 20 20 20 20 20 20 20 73 74 61 74 75 | ....while.True:...+........statu |
| 2960 | 73 5f 72 61 77 20 3d 20 6d 70 64 5f 63 6d 64 28 6d 70 64 2c 20 22 73 74 61 74 75 73 22 29 00 00 | s_raw.=.mpd_cmd(mpd,."status").. |
| 2980 | 00 31 20 20 20 20 20 20 20 20 63 75 72 72 65 6e 74 5f 72 61 77 20 3d 20 6d 70 64 5f 63 6d 64 28 | .1........current_raw.=.mpd_cmd( |
| 29a0 | 6d 70 64 2c 20 22 63 75 72 72 65 6e 74 73 6f 6e 67 22 29 00 00 00 29 20 20 20 20 20 20 20 20 73 | mpd,."currentsong")...)........s |
| 29c0 | 74 61 74 75 73 20 3d 20 70 61 72 73 65 5f 73 74 61 74 75 73 28 73 74 61 74 75 73 5f 72 61 77 29 | tatus.=.parse_status(status_raw) |
| 29e0 | 00 00 00 2b 20 20 20 20 20 20 20 20 63 75 72 72 65 6e 74 20 3d 20 70 61 72 73 65 5f 73 74 61 74 | ...+........current.=.parse_stat |
| 2a00 | 75 73 28 63 75 72 72 65 6e 74 5f 72 61 77 29 00 00 00 00 00 00 00 28 20 20 20 20 20 20 20 20 74 | us(current_raw).......(........t |
| 2a20 | 69 74 6c 65 20 3d 20 63 75 72 72 65 6e 74 2e 67 65 74 28 22 54 69 74 6c 65 22 2c 20 22 22 29 00 | itle.=.current.get("Title",.""). |
| 2a40 | 00 00 2a 20 20 20 20 20 20 20 20 61 72 74 69 73 74 20 3d 20 63 75 72 72 65 6e 74 2e 67 65 74 28 | ..*........artist.=.current.get( |
| 2a60 | 22 41 72 74 69 73 74 22 2c 20 22 22 29 00 00 00 28 20 20 20 20 20 20 20 20 61 6c 62 75 6d 20 3d | "Artist",."")...(........album.= |
| 2a80 | 20 63 75 72 72 65 6e 74 2e 67 65 74 28 22 41 6c 62 75 6d 22 2c 20 22 22 29 00 00 00 2b 20 20 20 | .current.get("Album",."")...+... |
| 2aa0 | 20 20 20 20 20 73 74 61 74 65 20 3d 20 73 74 61 74 75 73 2e 67 65 74 28 22 73 74 61 74 65 22 2c | .....state.=.status.get("state", |
| 2ac0 | 20 22 73 74 6f 70 22 29 00 00 00 31 20 20 20 20 20 20 20 20 65 6c 61 70 73 65 64 20 3d 20 66 6c | ."stop")...1........elapsed.=.fl |
| 2ae0 | 6f 61 74 28 73 74 61 74 75 73 2e 67 65 74 28 22 65 6c 61 70 73 65 64 22 2c 20 30 29 29 00 00 00 | oat(status.get("elapsed",.0))... |
| 2b00 | 33 20 20 20 20 20 20 20 20 64 75 72 61 74 69 6f 6e 20 3d 20 66 6c 6f 61 74 28 73 74 61 74 75 73 | 3........duration.=.float(status |
| 2b20 | 2e 67 65 74 28 22 64 75 72 61 74 69 6f 6e 22 2c 20 30 29 29 00 00 00 00 00 00 00 3d 20 20 20 20 | .get("duration",.0)).......=.... |
| 2b40 | 20 20 20 20 69 66 20 73 74 61 74 65 20 3d 3d 20 22 70 6c 61 79 22 20 61 6e 64 20 74 69 74 6c 65 | ....if.state.==."play".and.title |
| 2b60 | 20 61 6e 64 20 74 69 74 6c 65 20 21 3d 20 6c 61 73 74 5f 74 69 74 6c 65 3a 00 00 00 1e 20 20 20 | .and.title.!=.last_title:....... |
| 2b80 | 20 20 20 20 20 20 20 20 20 6c 61 73 74 5f 74 69 74 6c 65 20 3d 20 74 69 74 6c 65 00 00 00 20 20 | .........last_title.=.title..... |
| 2ba0 | 20 20 20 20 20 20 20 20 20 20 20 6c 61 73 74 5f 61 72 74 69 73 74 20 3d 20 61 72 74 69 73 74 00 | ...........last_artist.=.artist. |
| 2bc0 | 00 00 1e 20 20 20 20 20 20 20 20 20 20 20 20 6c 61 73 74 5f 61 6c 62 75 6d 20 3d 20 61 6c 62 75 | ...............last_album.=.albu |
| 2be0 | 6d 00 00 00 29 20 20 20 20 20 20 20 20 20 20 20 20 6c 61 73 74 5f 73 74 61 72 74 20 3d 20 69 6e | m...)............last_start.=.in |
| 2c00 | 74 28 74 69 6d 65 2e 74 69 6d 65 28 29 29 00 00 00 24 20 20 20 20 20 20 20 20 20 20 20 20 6c 61 | t(time.time())...$............la |
| 2c20 | 73 74 5f 64 75 72 61 74 69 6f 6e 20 3d 20 64 75 72 61 74 69 6f 6e 00 00 00 1d 20 20 20 20 20 20 | st_duration.=.duration.......... |
| 2c40 | 20 20 20 20 20 20 73 63 72 6f 62 62 6c 65 64 20 3d 20 46 61 6c 73 65 00 00 00 38 20 20 20 20 20 | ......scrobbled.=.False...8..... |
| 2c60 | 20 20 20 20 20 20 20 75 70 64 61 74 65 5f 6e 6f 77 5f 70 6c 61 79 69 6e 67 28 73 6b 2c 20 61 72 | .......update_now_playing(sk,.ar |
| 2c80 | 74 69 73 74 2c 20 74 69 74 6c 65 2c 20 61 6c 62 75 6d 29 00 00 00 35 20 20 20 20 20 20 20 20 20 | tist,.title,.album)...5......... |
| 2ca0 | 20 20 20 70 72 69 6e 74 28 66 22 4e 6f 77 20 70 6c 61 79 69 6e 67 3a 20 7b 61 72 74 69 73 74 7d | ...print(f"Now.playing:.{artist} |
| 2cc0 | 20 2d 20 7b 74 69 74 6c 65 7d 22 29 00 00 00 00 00 00 00 3e 20 20 20 20 20 20 20 20 69 66 20 28 | .-.{title}").......>........if.( |
| 2ce0 | 6e 6f 74 20 73 63 72 6f 62 62 6c 65 64 20 61 6e 64 20 6c 61 73 74 5f 74 69 74 6c 65 20 61 6e 64 | not.scrobbled.and.last_title.and |
| 2d00 | 20 6c 61 73 74 5f 64 75 72 61 74 69 6f 6e 20 61 6e 64 00 00 00 42 20 20 20 20 20 20 20 20 20 20 | .last_duration.and...B.......... |
| 2d20 | 20 20 20 20 20 20 28 65 6c 61 70 73 65 64 20 3e 3d 20 6c 61 73 74 5f 64 75 72 61 74 69 6f 6e 20 | ......(elapsed.>=.last_duration. |
| 2d40 | 2f 20 32 20 6f 72 20 65 6c 61 70 73 65 64 20 3e 3d 20 32 34 30 29 29 3a 00 00 00 49 20 20 20 20 | /.2.or.elapsed.>=.240)):...I.... |
| 2d60 | 20 20 20 20 20 20 20 20 73 63 72 6f 62 62 6c 65 28 73 6b 2c 20 6c 61 73 74 5f 61 72 74 69 73 74 | ........scrobble(sk,.last_artist |
| 2d80 | 2c 20 6c 61 73 74 5f 74 69 74 6c 65 2c 20 6c 61 73 74 5f 61 6c 62 75 6d 2c 20 6c 61 73 74 5f 73 | ,.last_title,.last_album,.last_s |
| 2da0 | 74 61 72 74 29 00 00 00 1c 20 20 20 20 20 20 20 20 20 20 20 20 73 63 72 6f 62 62 6c 65 64 20 3d | tart)................scrobbled.= |
| 2dc0 | 20 54 72 75 65 00 00 00 3d 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 6e 74 28 66 22 53 63 72 | .True...=............print(f"Scr |
| 2de0 | 6f 62 62 6c 65 64 3a 20 7b 6c 61 73 74 5f 61 72 74 69 73 74 7d 20 2d 20 7b 6c 61 73 74 5f 74 69 | obbled:.{last_artist}.-.{last_ti |
| 2e00 | 74 6c 65 7d 22 29 00 00 00 00 00 00 00 23 20 20 20 20 20 20 20 20 6d 70 64 5f 63 6d 64 28 6d 70 | tle}").......#........mpd_cmd(mp |
| 2e20 | 64 2c 20 22 69 64 6c 65 20 70 6c 61 79 65 72 22 29 00 00 00 00 00 00 00 1a 69 66 20 5f 5f 6e 61 | d,."idle.player")........if.__na |
| 2e40 | 6d 65 5f 5f 20 3d 3d 20 22 5f 5f 6d 61 69 6e 5f 5f 22 3a 00 00 00 0a 20 20 20 20 6d 61 69 6e 28 | me__.==."__main__":........main( |
| 2e60 | 29 35 81 f5 18 00 00 00 00 00 00 00 00 00 00 00 00 8d 00 00 00 00 00 00 00 01 00 00 00 00 00 00 | )5.............................. |
| 2e80 | 00 00 00 00 00 00 00 00 00 07 0f 00 00 00 00 00 00 01 00 00 00 00 00 00 00 35 81 5f d0 00 00 00 | .........................5._.... |
| 2ea0 | 08 00 00 00 0a 00 00 00 00 00 00 00 00 00 00 00 09 00 00 00 01 00 00 00 00 00 00 00 00 ff ff ff | ................................ |
| 2ec0 | ff 00 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2ee0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2f00 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2f20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2f40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2f60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2f80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2fa0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2fc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2fe0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3000 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 69 | ...............................i |
| 3020 | 98 f3 07 04 01 00 00 00 09 00 f5 18 00 00 00 92 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 0a | ................................ |
| 3040 | 20 20 20 20 6d 61 69 6e 28 29 f5 18 00 00 00 93 00 00 00 00 00 00 00 00 00 00 00 00 f5 18 00 00 | ....main()...................... |
| 3060 | 00 7d 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 32 20 20 20 20 20 20 20 20 64 75 72 61 74 69 | .}...............2........durati |
| 3080 | 6f 6e 20 3d 20 66 6c 6f 61 74 28 73 74 61 74 75 73 2e 67 65 74 28 22 64 75 72 61 74 69 6f 6e 22 | on.=.float(status.get("duration" |
| 30a0 | 2c 20 30 29 f5 18 00 00 00 7e 00 00 00 00 00 00 00 00 00 00 00 00 f5 18 00 00 00 00 00 00 00 00 | ,.0).....~...................... |
| 30c0 | 00 00 00 00 00 00 00 01 00 00 00 00 f5 18 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 35 81 | ..............................5. |
| 30e0 | f5 18 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 7d 00 00 00 32 00 00 00 00 00 | ......................}...2..... |
| 3100 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0d 00 00 00 00 00 00 f5 18 00 00 00 00 7d 00 00 00 | ............................}... |
| 3120 | 32 00 00 00 00 00 00 00 00 00 00 00 15 00 00 00 0a 00 00 00 00 0d 00 00 00 00 00 00 00 00 00 00 | 2............................... |
| 3140 | 00 00 00 00 ef 02 00 00 00 00 00 00 35 81 5f d0 00 00 00 09 00 00 00 0b 00 00 00 00 00 00 00 00 | ............5._................. |
| 3160 | 00 00 00 0a 00 00 00 0c 00 00 00 0c 00 00 00 00 ff ff ff ff 00 01 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3180 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 31a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 31c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 31e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3200 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3220 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3240 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3260 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3280 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 32a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0c 00 00 00 0c 00 00 00 00 00 00 00 0c 00 00 | ................................ |
| 32c0 | 00 1d 00 00 00 00 00 00 00 76 00 00 00 1d 00 00 00 00 69 98 f3 0d 04 01 00 00 00 00 00 f5 18 00 | .........v........i............. |
| 32e0 | 00 00 0b 00 00 00 0d 00 00 00 93 00 00 00 01 00 00 00 1f 50 41 53 53 57 4f 52 44 20 3d 20 22 59 | ...................PASSWORD.=."Y |
| 3300 | 4f 55 52 5f 50 41 53 53 57 4f 52 44 5f 48 45 52 45 22 35 81 f5 18 00 00 00 00 0b 00 00 00 0c 00 | OUR_PASSWORD_HERE"5............. |
| 3320 | 00 00 00 00 00 00 12 00 00 00 00 00 00 00 00 00 00 00 db 00 00 00 00 00 00 00 12 00 00 00 00 00 | ................................ |
| 3340 | 00 00 00 00 00 00 00 00 00 00 35 81 5f d0 00 00 00 0a 00 00 00 0c 00 00 00 00 00 00 00 00 00 00 | ..........5._................... |
| 3360 | 00 0b 00 00 00 0c 00 00 00 0c 00 00 00 00 ff ff ff ff 00 01 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3380 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 33a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 33c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 33e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3400 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3420 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3440 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3460 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3480 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 34a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0c 00 00 00 0c 00 00 00 00 00 00 00 0c 00 00 00 1d | ................................ |
| 34c0 | 00 00 00 00 00 00 00 76 00 00 00 1d 00 00 00 00 69 98 f3 0e 04 01 00 00 00 0b 00 f5 18 00 00 00 | .......v........i............... |
| 34e0 | 0b 00 00 00 0d 00 00 00 93 00 00 00 01 00 00 00 0d 50 41 53 53 57 4f 52 44 20 3d 20 22 22 f5 18 | .................PASSWORD.=."".. |
| 3500 | 00 00 00 0c 00 00 00 0d 00 00 00 93 00 00 00 00 35 81 f5 18 00 00 00 00 0b 00 00 00 0c 00 00 00 | ................5............... |
| 3520 | 00 00 00 00 00 00 00 00 00 00 00 00 0e 00 00 00 db 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3540 | 0e 00 00 00 00 00 00 00 35 81 5f d0 00 00 00 0b 00 00 00 0d 00 00 00 00 00 00 00 00 00 00 00 0c | ........5._..................... |
| 3560 | 00 00 00 2a 00 00 00 14 00 00 00 00 ff ff ff ff 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ...*............................ |
| 3580 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 35a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 35c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 35e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3600 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3620 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3640 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3660 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3680 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 36a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 36c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 69 98 f3 3b 04 01 00 00 00 00 00 f5 18 00 00 00 29 00 | ..............i..;............). |
| 36e0 | 00 00 2b 00 00 00 93 00 00 00 01 00 00 00 22 20 20 20 20 20 20 20 20 22 70 61 73 73 77 6f 72 64 | ..+..........."........"password |
| 3700 | 22 3a 20 6d 64 35 28 50 41 53 53 57 4f 52 44 29 2c 35 81 f5 18 00 00 00 00 29 00 00 00 14 00 00 | ":.md5(PASSWORD),5.......)...... |
| 3720 | 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 ce 03 00 00 00 00 00 00 01 00 00 00 00 00 00 | ................................ |
| 3740 | 00 00 00 00 00 00 00 00 00 35 81 5f d0 00 00 00 0c 00 00 00 0e 00 00 00 00 00 00 00 00 00 00 00 | .........5._.................... |
| 3760 | 0d 00 00 00 2a 00 00 00 14 00 00 00 00 ff ff ff ff 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 | ....*........................... |
| 3780 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 37a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 37c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 37e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3800 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3820 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3840 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3860 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3880 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 38a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 38c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 69 98 f3 3b 04 01 00 00 00 00 00 f5 18 00 00 00 29 | ...............i..;............) |
| 38e0 | 00 00 00 2b 00 00 00 93 00 00 00 01 00 00 00 21 20 20 20 20 20 20 20 20 22 70 61 73 73 77 6f 72 | ...+...........!........"passwor |
| 3900 | 64 22 3a 20 64 35 28 50 41 53 53 57 4f 52 44 29 2c 35 81 f5 18 00 00 00 00 29 00 00 00 14 00 00 | d":.d5(PASSWORD),5.......)...... |
| 3920 | 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 ce 03 00 00 00 00 00 00 01 00 00 00 00 00 00 | ................................ |
| 3940 | 00 00 00 00 00 00 00 00 00 35 81 5f d0 00 00 00 0d 00 00 00 0f 00 00 00 00 00 00 00 00 00 00 00 | .........5._.................... |
| 3960 | 0e 00 00 00 2a 00 00 00 14 00 00 00 00 ff ff ff ff 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 | ....*........................... |
| 3980 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 39a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 39c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 39e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3a00 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3a20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3a40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3a60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3a80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3aa0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3ac0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 69 98 f3 3b 04 01 00 00 00 00 00 f5 18 00 00 00 29 | ...............i..;............) |
| 3ae0 | 00 00 00 2b 00 00 00 93 00 00 00 01 00 00 00 20 20 20 20 20 20 20 20 20 22 70 61 73 73 77 6f 72 | ...+...................."passwor |
| 3b00 | 64 22 3a 20 35 28 50 41 53 53 57 4f 52 44 29 2c 35 81 f5 18 00 00 00 00 29 00 00 00 14 00 00 00 | d":.5(PASSWORD),5.......)....... |
| 3b20 | 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 ce 03 00 00 00 00 00 00 01 00 00 00 00 00 00 00 | ................................ |
| 3b40 | 00 00 00 00 00 00 00 00 35 81 5f d0 00 00 00 0e 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 0f | ........5._..................... |
| 3b60 | 00 00 00 2a 00 00 00 14 00 00 00 00 ff ff ff ff 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ...*............................ |
| 3b80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3ba0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3bc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3be0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3c00 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3c20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3c40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3c60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3c80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3ca0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3cc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 69 98 f3 3c 04 01 00 00 00 00 00 f5 18 00 00 00 29 00 | ..............i..<............). |
| 3ce0 | 00 00 2b 00 00 00 93 00 00 00 01 00 00 00 1f 20 20 20 20 20 20 20 20 22 70 61 73 73 77 6f 72 64 | ..+...................."password |
| 3d00 | 22 3a 20 28 50 41 53 53 57 4f 52 44 29 2c 35 81 f5 18 00 00 00 00 29 00 00 00 14 00 00 00 00 00 | ":.(PASSWORD),5.......)......... |
| 3d20 | 00 00 01 00 00 00 00 00 00 00 00 00 00 00 ce 03 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 | ................................ |
| 3d40 | 00 00 00 00 00 00 35 81 5f d0 00 00 00 0f 00 00 00 11 00 00 00 00 00 00 00 00 00 00 00 10 00 00 | ......5._....................... |
| 3d60 | 00 2a 00 00 00 1c 00 00 00 00 ff ff ff ff 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .*.............................. |
| 3d80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3da0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3dc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3de0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3e00 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3e20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3e40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3e60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3e80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3ea0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3ec0 | 00 00 00 00 00 00 00 00 00 00 00 00 69 98 f3 3c 04 01 00 00 00 0c 00 f5 18 00 00 00 29 00 00 00 | ............i..<............)... |
| 3ee0 | 2b 00 00 00 93 00 00 00 01 00 00 00 1e 20 20 20 20 20 20 20 20 22 70 61 73 73 77 6f 72 64 22 3a | +...................."password": |
| 3f00 | 20 50 41 53 53 57 4f 52 44 29 2c 35 81 f5 18 00 00 00 00 29 00 00 00 1c 00 00 00 00 00 00 00 01 | .PASSWORD),5.......)............ |
| 3f20 | 00 00 00 00 00 00 00 00 00 00 00 d6 03 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3f40 | 00 00 00 35 81 5f d0 00 00 00 10 00 00 00 12 00 00 00 00 00 00 00 00 00 00 00 11 00 00 00 01 00 | ...5._.......................... |
| 3f60 | 00 00 08 00 00 00 00 ff ff ff ff 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3f80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3fa0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3fc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3fe0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 4000 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 4020 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 4040 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 4060 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 4080 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 40a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 40c0 | 00 00 00 00 00 00 00 00 00 69 98 f3 97 04 01 00 00 00 00 00 f5 18 00 00 00 00 00 00 00 02 00 00 | .........i...................... |
| 40e0 | 00 00 00 00 00 93 00 00 00 16 23 21 2f 75 73 72 2f 62 69 6e 2f 65 6e 76 20 70 79 74 68 6f 6e 33 | ..........#!/usr/bin/env.python3 |
| 4100 | 00 00 00 00 00 00 00 0e 69 6d 70 6f 72 74 20 68 61 73 68 6c 69 62 00 00 00 0b 69 6d 70 6f 72 74 | ........import.hashlib....import |
| 4120 | 20 74 69 6d 65 00 00 00 0d 69 6d 70 6f 72 74 20 73 6f 63 6b 65 74 00 00 00 0f 69 6d 70 6f 72 74 | .time....import.socket....import |
| 4140 | 20 72 65 71 75 65 73 74 73 00 00 00 09 69 6d 70 6f 72 74 20 6f 73 00 00 00 00 00 00 00 2c 41 50 | .requests....import.os.......,AP |
| 4160 | 49 5f 4b 45 59 20 3d 20 22 39 34 32 33 65 33 34 30 33 37 31 61 35 39 63 31 33 38 34 62 34 34 38 | I_KEY.=."9423e340371a59c1384b448 |
| 4180 | 63 34 66 62 39 61 34 37 38 22 00 00 00 2f 41 50 49 5f 53 45 43 52 45 54 20 3d 20 22 38 35 38 64 | c4fb9a478".../API_SECRET.=."858d |
| 41a0 | 35 61 38 33 63 38 37 35 30 62 65 35 64 64 65 30 30 30 36 65 64 35 38 61 33 61 35 38 22 00 00 00 | 5a83c8750be5dde0006ed58a3a58"... |
| 41c0 | 15 55 53 45 52 4e 41 4d 45 20 3d 20 22 56 65 74 74 65 72 69 61 22 00 00 00 1b 50 41 53 53 57 4f | .USERNAME.=."Vetteria"....PASSWO |
| 41e0 | 52 44 20 3d 20 22 32 53 30 79 54 70 55 34 58 35 51 36 26 68 22 00 00 00 16 4d 50 44 5f 48 4f 53 | RD.=."2S0yTpU4X5Q6&h"....MPD_HOS |
| 4200 | 54 20 3d 20 22 6c 6f 63 61 6c 68 6f 73 74 22 00 00 00 0f 4d 50 44 5f 50 4f 52 54 20 3d 20 36 36 | T.=."localhost"....MPD_PORT.=.66 |
| 4220 | 30 30 00 00 00 00 00 00 00 0b 50 52 4f 58 49 45 53 20 3d 20 7b 00 00 00 27 20 20 20 20 22 68 74 | 00........PROXIES.=.{...'...."ht |
| 4240 | 74 70 22 3a 20 22 73 6f 63 6b 73 35 3a 2f 2f 31 32 37 2e 30 2e 30 2e 31 3a 36 35 30 30 30 22 2c | tp":."socks5://127.0.0.1:65000", |
| 4260 | 00 00 00 27 20 20 20 20 22 68 74 74 70 73 22 3a 20 22 73 6f 63 6b 73 35 3a 2f 2f 31 32 37 2e 30 | ...'...."https":."socks5://127.0 |
| 4280 | 2e 30 2e 31 3a 36 35 30 30 30 22 00 00 00 01 7d 00 00 00 00 00 00 00 0b 64 65 66 20 6d 64 35 28 | .0.1:65000"....}........def.md5( |
| 42a0 | 73 29 3a 00 00 00 2e 20 20 20 20 72 65 74 75 72 6e 20 68 61 73 68 6c 69 62 2e 6d 64 35 28 73 2e | s):........return.hashlib.md5(s. |
| 42c0 | 65 6e 63 6f 64 65 28 29 29 2e 68 65 78 64 69 67 65 73 74 28 29 00 00 00 00 00 00 00 11 64 65 66 | encode()).hexdigest()........def |
| 42e0 | 20 73 69 67 6e 28 70 61 72 61 6d 73 29 3a 00 00 00 20 20 20 20 20 6b 65 79 73 20 3d 20 73 6f 72 | .sign(params):........keys.=.sor |
| 4300 | 74 65 64 28 70 61 72 61 6d 73 2e 6b 65 79 73 28 29 29 00 00 00 2e 20 20 20 20 73 69 67 20 3d 20 | ted(params.keys())........sig.=. |
| 4320 | 22 22 2e 6a 6f 69 6e 28 6b 20 2b 20 70 61 72 61 6d 73 5b 6b 5d 20 66 6f 72 20 6b 20 69 6e 20 6b | "".join(k.+.params[k].for.k.in.k |
| 4340 | 65 79 73 29 00 00 00 15 20 20 20 20 73 69 67 20 2b 3d 20 41 50 49 5f 53 45 43 52 45 54 00 00 00 | eys)........sig.+=.API_SECRET... |
| 4360 | 13 20 20 20 20 72 65 74 75 72 6e 20 6d 64 35 28 73 69 67 29 00 00 00 00 00 00 00 16 64 65 66 20 | .....return.md5(sig)........def. |
| 4380 | 67 65 74 5f 73 65 73 73 69 6f 6e 5f 6b 65 79 28 29 3a 00 00 00 4b 20 20 20 20 74 6f 6b 65 6e 5f | get_session_key():...K....token_ |
| 43a0 | 72 65 73 20 3d 20 72 65 71 75 65 73 74 73 2e 67 65 74 28 22 68 74 74 70 73 3a 2f 2f 77 73 2e 61 | res.=.requests.get("https://ws.a |
| 43c0 | 75 64 69 6f 73 63 72 6f 62 62 6c 65 72 2e 63 6f 6d 2f 32 2e 30 2f 22 2c 20 70 61 72 61 6d 73 3d | udioscrobbler.com/2.0/",.params= |
| 43e0 | 7b 00 00 00 22 20 20 20 20 20 20 20 20 22 6d 65 74 68 6f 64 22 3a 20 22 61 75 74 68 2e 67 65 74 | {..."........"method":."auth.get |
| 4400 | 54 6f 6b 65 6e 22 2c 00 00 00 1b 20 20 20 20 20 20 20 20 22 61 70 69 5f 6b 65 79 22 3a 20 41 50 | Token",............"api_key":.AP |
| 4420 | 49 5f 4b 45 59 2c 00 00 00 18 20 20 20 20 20 20 20 20 22 66 6f 72 6d 61 74 22 3a 20 22 6a 73 6f | I_KEY,............"format":."jso |
| 4440 | 6e 22 00 00 00 17 20 20 20 20 7d 2c 20 70 72 6f 78 69 65 73 3d 50 52 4f 58 49 45 53 29 00 00 00 | n"........},.proxies=PROXIES)... |
| 4460 | 2c 20 20 20 20 70 72 69 6e 74 28 22 54 6f 6b 65 6e 20 72 65 73 70 6f 6e 73 65 3a 22 2c 20 74 6f | ,....print("Token.response:",.to |
| 4480 | 6b 65 6e 5f 72 65 73 2e 74 65 78 74 29 00 00 00 25 20 20 20 20 74 6f 6b 65 6e 20 3d 20 74 6f 6b | ken_res.text)...%....token.=.tok |
| 44a0 | 65 6e 5f 72 65 73 2e 6a 73 6f 6e 28 29 5b 22 74 6f 6b 65 6e 22 5d 00 00 00 00 00 00 00 0e 20 20 | en_res.json()["token"].......... |
| 44c0 | 20 20 70 61 72 61 6d 73 20 3d 20 7b 00 00 00 2a 20 20 20 20 20 20 20 20 22 6d 65 74 68 6f 64 22 | ..params.=.{...*........"method" |
| 44e0 | 3a 20 22 61 75 74 68 2e 67 65 74 4d 6f 62 69 6c 65 53 65 73 73 69 6f 6e 22 2c 00 00 00 1d 20 20 | :."auth.getMobileSession",...... |
| 4500 | 20 20 20 20 20 20 22 75 73 65 72 6e 61 6d 65 22 3a 20 55 53 45 52 4e 41 4d 45 2c 00 00 00 1d 20 | ......"username":.USERNAME,..... |
| 4520 | 20 20 20 20 20 20 20 22 70 61 73 73 77 6f 72 64 22 3a 20 50 41 53 53 57 4f 52 44 2c 00 00 00 1b | ......."password":.PASSWORD,.... |
| 4540 | 20 20 20 20 20 20 20 20 22 61 70 69 5f 6b 65 79 22 3a 20 41 50 49 5f 4b 45 59 2c 00 00 00 05 20 | ........"api_key":.API_KEY,..... |
| 4560 | 20 20 20 7d 00 00 00 24 20 20 20 20 70 61 72 61 6d 73 5b 22 61 70 69 5f 73 69 67 22 5d 20 3d 20 | ...}...$....params["api_sig"].=. |
| 4580 | 73 69 67 6e 28 70 61 72 61 6d 73 29 00 00 00 1d 20 20 20 20 70 61 72 61 6d 73 5b 22 66 6f 72 6d | sign(params)........params["form |
| 45a0 | 61 74 22 5d 20 3d 20 22 6a 73 6f 6e 22 00 00 00 00 00 00 00 5b 20 20 20 20 72 65 73 20 3d 20 72 | at"].=."json".......[....res.=.r |
| 45c0 | 65 71 75 65 73 74 73 2e 70 6f 73 74 28 22 68 74 74 70 73 3a 2f 2f 77 73 2e 61 75 64 69 6f 73 63 | equests.post("https://ws.audiosc |
| 45e0 | 72 6f 62 62 6c 65 72 2e 63 6f 6d 2f 32 2e 30 2f 22 2c 20 64 61 74 61 3d 70 61 72 61 6d 73 2c 20 | robbler.com/2.0/",.data=params,. |
| 4600 | 70 72 6f 78 69 65 73 3d 50 52 4f 58 49 45 53 29 00 00 00 28 20 20 20 20 70 72 69 6e 74 28 22 53 | proxies=PROXIES)...(....print("S |
| 4620 | 65 73 73 69 6f 6e 20 72 65 73 70 6f 6e 73 65 3a 22 2c 20 72 65 73 2e 74 65 78 74 29 00 00 00 27 | ession.response:",.res.text)...' |
| 4640 | 20 20 20 20 72 65 74 75 72 6e 20 72 65 73 2e 6a 73 6f 6e 28 29 5b 22 73 65 73 73 69 6f 6e 22 5d | ....return.res.json()["session"] |
| 4660 | 5b 22 6b 65 79 22 5d 00 00 00 00 00 00 00 32 64 65 66 20 73 63 72 6f 62 62 6c 65 28 73 6b 2c 20 | ["key"].......2def.scrobble(sk,. |
| 4680 | 61 72 74 69 73 74 2c 20 74 69 74 6c 65 2c 20 61 6c 62 75 6d 2c 20 74 69 6d 65 73 74 61 6d 70 29 | artist,.title,.album,.timestamp) |
| 46a0 | 3a 00 00 00 0e 20 20 20 20 70 61 72 61 6d 73 20 3d 20 7b 00 00 00 23 20 20 20 20 20 20 20 20 22 | :........params.=.{...#........" |
| 46c0 | 6d 65 74 68 6f 64 22 3a 20 22 74 72 61 63 6b 2e 73 63 72 6f 62 62 6c 65 22 2c 00 00 00 1c 20 20 | method":."track.scrobble",...... |
| 46e0 | 20 20 20 20 20 20 22 61 72 74 69 73 74 5b 30 5d 22 3a 20 61 72 74 69 73 74 2c 00 00 00 1a 20 20 | ......"artist[0]":.artist,...... |
| 4700 | 20 20 20 20 20 20 22 74 72 61 63 6b 5b 30 5d 22 3a 20 74 69 74 6c 65 2c 00 00 00 1a 20 20 20 20 | ......"track[0]":.title,........ |
| 4720 | 20 20 20 20 22 61 6c 62 75 6d 5b 30 5d 22 3a 20 61 6c 62 75 6d 2c 00 00 00 27 20 20 20 20 20 20 | ...."album[0]":.album,...'...... |
| 4740 | 20 20 22 74 69 6d 65 73 74 61 6d 70 5b 30 5d 22 3a 20 73 74 72 28 74 69 6d 65 73 74 61 6d 70 29 | .."timestamp[0]":.str(timestamp) |
| 4760 | 2c 00 00 00 1b 20 20 20 20 20 20 20 20 22 61 70 69 5f 6b 65 79 22 3a 20 41 50 49 5f 4b 45 59 2c | ,............"api_key":.API_KEY, |
| 4780 | 00 00 00 11 20 20 20 20 20 20 20 20 22 73 6b 22 3a 20 73 6b 2c 00 00 00 05 20 20 20 20 7d 00 00 | ............"sk":.sk,........}.. |
| 47a0 | 00 24 20 20 20 20 70 61 72 61 6d 73 5b 22 61 70 69 5f 73 69 67 22 5d 20 3d 20 73 69 67 6e 28 70 | .$....params["api_sig"].=.sign(p |
| 47c0 | 61 72 61 6d 73 29 00 00 00 1d 20 20 20 20 70 61 72 61 6d 73 5b 22 66 6f 72 6d 61 74 22 5d 20 3d | arams)........params["format"].= |
| 47e0 | 20 22 6a 73 6f 6e 22 00 00 00 55 20 20 20 20 72 65 71 75 65 73 74 73 2e 70 6f 73 74 28 22 68 74 | ."json"...U....requests.post("ht |
| 4800 | 74 70 73 3a 2f 2f 77 73 2e 61 75 64 69 6f 73 63 72 6f 62 62 6c 65 72 2e 63 6f 6d 2f 32 2e 30 2f | tps://ws.audioscrobbler.com/2.0/ |
| 4820 | 22 2c 20 64 61 74 61 3d 70 61 72 61 6d 73 2c 20 70 72 6f 78 69 65 73 3d 50 52 4f 58 49 45 53 29 | ",.data=params,.proxies=PROXIES) |
| 4840 | 00 00 00 00 00 00 00 31 64 65 66 20 75 70 64 61 74 65 5f 6e 6f 77 5f 70 6c 61 79 69 6e 67 28 73 | .......1def.update_now_playing(s |
| 4860 | 6b 2c 20 61 72 74 69 73 74 2c 20 74 69 74 6c 65 2c 20 61 6c 62 75 6d 29 3a 00 00 00 0e 20 20 20 | k,.artist,.title,.album):....... |
| 4880 | 20 70 61 72 61 6d 73 20 3d 20 7b 00 00 00 2b 20 20 20 20 20 20 20 20 22 6d 65 74 68 6f 64 22 3a | .params.=.{...+........"method": |
| 48a0 | 20 22 74 72 61 63 6b 2e 75 70 64 61 74 65 4e 6f 77 50 6c 61 79 69 6e 67 22 2c 00 00 00 19 20 20 | ."track.updateNowPlaying",...... |
| 48c0 | 20 20 20 20 20 20 22 61 72 74 69 73 74 22 3a 20 61 72 74 69 73 74 2c 00 00 00 17 20 20 20 20 20 | ......"artist":.artist,......... |
| 48e0 | 20 20 20 22 74 72 61 63 6b 22 3a 20 74 69 74 6c 65 2c 00 00 00 17 20 20 20 20 20 20 20 20 22 61 | ..."track":.title,............"a |
| 4900 | 6c 62 75 6d 22 3a 20 61 6c 62 75 6d 2c 00 00 00 1b 20 20 20 20 20 20 20 20 22 61 70 69 5f 6b 65 | lbum":.album,............"api_ke |
| 4920 | 79 22 3a 20 41 50 49 5f 4b 45 59 2c 00 00 00 11 20 20 20 20 20 20 20 20 22 73 6b 22 3a 20 73 6b | y":.API_KEY,............"sk":.sk |
| 4940 | 2c 00 00 00 05 20 20 20 20 7d 00 00 00 24 20 20 20 20 70 61 72 61 6d 73 5b 22 61 70 69 5f 73 69 | ,........}...$....params["api_si |
| 4960 | 67 22 5d 20 3d 20 73 69 67 6e 28 70 61 72 61 6d 73 29 00 00 00 1d 20 20 20 20 70 61 72 61 6d 73 | g"].=.sign(params)........params |
| 4980 | 5b 22 66 6f 72 6d 61 74 22 5d 20 3d 20 22 6a 73 6f 6e 22 00 00 00 55 20 20 20 20 72 65 71 75 65 | ["format"].=."json"...U....reque |
| 49a0 | 73 74 73 2e 70 6f 73 74 28 22 68 74 74 70 73 3a 2f 2f 77 73 2e 61 75 64 69 6f 73 63 72 6f 62 62 | sts.post("https://ws.audioscrobb |
| 49c0 | 6c 65 72 2e 63 6f 6d 2f 32 2e 30 2f 22 2c 20 64 61 74 61 3d 70 61 72 61 6d 73 2c 20 70 72 6f 78 | ler.com/2.0/",.data=params,.prox |
| 49e0 | 69 65 73 3d 50 52 4f 58 49 45 53 29 00 00 00 00 00 00 00 12 64 65 66 20 6d 70 64 5f 63 6f 6e 6e | ies=PROXIES)........def.mpd_conn |
| 4a00 | 65 63 74 28 29 3a 00 00 00 17 20 20 20 20 73 20 3d 20 73 6f 63 6b 65 74 2e 73 6f 63 6b 65 74 28 | ect():........s.=.socket.socket( |
| 4a20 | 29 00 00 00 23 20 20 20 20 73 2e 63 6f 6e 6e 65 63 74 28 28 4d 50 44 5f 48 4f 53 54 2c 20 4d 50 | )...#....s.connect((MPD_HOST,.MP |
| 4a40 | 44 5f 50 4f 52 54 29 29 00 00 00 10 20 20 20 20 73 2e 72 65 63 76 28 31 30 32 34 29 00 00 00 0c | D_PORT))........s.recv(1024).... |
| 4a60 | 20 20 20 20 72 65 74 75 72 6e 20 73 00 00 00 00 00 00 00 14 64 65 66 20 6d 70 64 5f 63 6d 64 28 | ....return.s........def.mpd_cmd( |
| 4a80 | 73 2c 20 63 6d 64 29 3a 00 00 00 24 20 20 20 20 73 2e 73 65 6e 64 61 6c 6c 28 28 63 6d 64 20 2b | s,.cmd):...$....s.sendall((cmd.+ |
| 4aa0 | 20 22 5c 6e 22 29 2e 65 6e 63 6f 64 65 28 29 29 00 00 00 0e 20 20 20 20 72 65 73 70 20 3d 20 62 | ."\n").encode())........resp.=.b |
| 4ac0 | 22 22 00 00 00 0f 20 20 20 20 77 68 69 6c 65 20 54 72 75 65 3a 00 00 00 1c 20 20 20 20 20 20 20 | ""........while.True:........... |
| 4ae0 | 20 63 68 75 6e 6b 20 3d 20 73 2e 72 65 63 76 28 34 30 39 36 29 00 00 00 15 20 20 20 20 20 20 20 | .chunk.=.s.recv(4096)........... |
| 4b00 | 20 72 65 73 70 20 2b 3d 20 63 68 75 6e 6b 00 00 00 2d 20 20 20 20 20 20 20 20 69 66 20 62 22 4f | .resp.+=.chunk...-........if.b"O |
| 4b20 | 4b 5c 6e 22 20 69 6e 20 72 65 73 70 20 6f 72 20 62 22 41 43 4b 22 20 69 6e 20 72 65 73 70 3a 00 | K\n".in.resp.or.b"ACK".in.resp:. |
| 4b40 | 00 00 11 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b 00 00 00 18 20 20 20 20 72 65 74 75 | ...............break........retu |
| 4b60 | 72 6e 20 72 65 73 70 2e 64 65 63 6f 64 65 28 29 00 00 00 00 00 00 00 16 64 65 66 20 70 61 72 73 | rn.resp.decode()........def.pars |
| 4b80 | 65 5f 73 74 61 74 75 73 28 72 61 77 29 3a 00 00 00 0d 20 20 20 20 64 61 74 61 20 3d 20 7b 7d 00 | e_status(raw):........data.=.{}. |
| 4ba0 | 00 00 21 20 20 20 20 66 6f 72 20 6c 69 6e 65 20 69 6e 20 72 61 77 2e 73 70 6c 69 74 6c 69 6e 65 | ..!....for.line.in.raw.splitline |
| 4bc0 | 73 28 29 3a 00 00 00 17 20 20 20 20 20 20 20 20 69 66 20 22 3a 22 20 69 6e 20 6c 69 6e 65 3a 00 | s():............if.":".in.line:. |
| 4be0 | 00 00 25 20 20 20 20 20 20 20 20 20 20 20 20 6b 2c 20 76 20 3d 20 6c 69 6e 65 2e 73 70 6c 69 74 | ..%............k,.v.=.line.split |
| 4c00 | 28 22 3a 22 2c 20 31 29 00 00 00 27 20 20 20 20 20 20 20 20 20 20 20 20 64 61 74 61 5b 6b 2e 73 | (":",.1)...'............data[k.s |
| 4c20 | 74 72 69 70 28 29 5d 20 3d 20 76 2e 73 74 72 69 70 28 29 00 00 00 0f 20 20 20 20 72 65 74 75 72 | trip()].=.v.strip()........retur |
| 4c40 | 6e 20 64 61 74 61 00 00 00 00 00 00 00 0b 64 65 66 20 6d 61 69 6e 28 29 3a 00 00 00 1a 20 20 20 | n.data........def.main():....... |
| 4c60 | 20 73 6b 20 3d 20 67 65 74 5f 73 65 73 73 69 6f 6e 5f 6b 65 79 28 29 00 00 00 29 20 20 20 20 70 | .sk.=.get_session_key()...)....p |
| 4c80 | 72 69 6e 74 28 66 22 41 75 74 68 65 6e 74 69 63 61 74 65 64 20 61 73 20 7b 55 53 45 52 4e 41 4d | rint(f"Authenticated.as.{USERNAM |
| 4ca0 | 45 7d 22 29 00 00 00 00 00 00 00 17 20 20 20 20 6d 70 64 20 3d 20 6d 70 64 5f 63 6f 6e 6e 65 63 | E}")............mpd.=.mpd_connec |
| 4cc0 | 74 28 29 00 00 00 15 20 20 20 20 6c 61 73 74 5f 74 69 74 6c 65 20 3d 20 4e 6f 6e 65 00 00 00 15 | t()........last_title.=.None.... |
| 4ce0 | 20 20 20 20 6c 61 73 74 5f 73 74 61 72 74 20 3d 20 4e 6f 6e 65 00 00 00 18 20 20 20 20 6c 61 73 | ....last_start.=.None........las |
| 4d00 | 74 5f 64 75 72 61 74 69 6f 6e 20 3d 20 4e 6f 6e 65 00 00 00 16 20 20 20 20 6c 61 73 74 5f 61 72 | t_duration.=.None........last_ar |
| 4d20 | 74 69 73 74 20 3d 20 4e 6f 6e 65 00 00 00 15 20 20 20 20 6c 61 73 74 5f 61 6c 62 75 6d 20 3d 20 | tist.=.None........last_album.=. |
| 4d40 | 4e 6f 6e 65 00 00 00 15 20 20 20 20 73 63 72 6f 62 62 6c 65 64 20 3d 20 46 61 6c 73 65 00 00 00 | None........scrobbled.=.False... |
| 4d60 | 00 00 00 00 0f 20 20 20 20 77 68 69 6c 65 20 54 72 75 65 3a 00 00 00 2b 20 20 20 20 20 20 20 20 | .........while.True:...+........ |
| 4d80 | 73 74 61 74 75 73 5f 72 61 77 20 3d 20 6d 70 64 5f 63 6d 64 28 6d 70 64 2c 20 22 73 74 61 74 75 | status_raw.=.mpd_cmd(mpd,."statu |
| 4da0 | 73 22 29 00 00 00 31 20 20 20 20 20 20 20 20 63 75 72 72 65 6e 74 5f 72 61 77 20 3d 20 6d 70 64 | s")...1........current_raw.=.mpd |
| 4dc0 | 5f 63 6d 64 28 6d 70 64 2c 20 22 63 75 72 72 65 6e 74 73 6f 6e 67 22 29 00 00 00 29 20 20 20 20 | _cmd(mpd,."currentsong")...).... |
| 4de0 | 20 20 20 20 73 74 61 74 75 73 20 3d 20 70 61 72 73 65 5f 73 74 61 74 75 73 28 73 74 61 74 75 73 | ....status.=.parse_status(status |
| 4e00 | 5f 72 61 77 29 00 00 00 2b 20 20 20 20 20 20 20 20 63 75 72 72 65 6e 74 20 3d 20 70 61 72 73 65 | _raw)...+........current.=.parse |
| 4e20 | 5f 73 74 61 74 75 73 28 63 75 72 72 65 6e 74 5f 72 61 77 29 00 00 00 00 00 00 00 28 20 20 20 20 | _status(current_raw).......(.... |
| 4e40 | 20 20 20 20 74 69 74 6c 65 20 3d 20 63 75 72 72 65 6e 74 2e 67 65 74 28 22 54 69 74 6c 65 22 2c | ....title.=.current.get("Title", |
| 4e60 | 20 22 22 29 00 00 00 2a 20 20 20 20 20 20 20 20 61 72 74 69 73 74 20 3d 20 63 75 72 72 65 6e 74 | ."")...*........artist.=.current |
| 4e80 | 2e 67 65 74 28 22 41 72 74 69 73 74 22 2c 20 22 22 29 00 00 00 28 20 20 20 20 20 20 20 20 61 6c | .get("Artist",."")...(........al |
| 4ea0 | 62 75 6d 20 3d 20 63 75 72 72 65 6e 74 2e 67 65 74 28 22 41 6c 62 75 6d 22 2c 20 22 22 29 00 00 | bum.=.current.get("Album",."").. |
| 4ec0 | 00 2b 20 20 20 20 20 20 20 20 73 74 61 74 65 20 3d 20 73 74 61 74 75 73 2e 67 65 74 28 22 73 74 | .+........state.=.status.get("st |
| 4ee0 | 61 74 65 22 2c 20 22 73 74 6f 70 22 29 00 00 00 31 20 20 20 20 20 20 20 20 65 6c 61 70 73 65 64 | ate",."stop")...1........elapsed |
| 4f00 | 20 3d 20 66 6c 6f 61 74 28 73 74 61 74 75 73 2e 67 65 74 28 22 65 6c 61 70 73 65 64 22 2c 20 30 | .=.float(status.get("elapsed",.0 |
| 4f20 | 29 29 00 00 00 33 20 20 20 20 20 20 20 20 64 75 72 61 74 69 6f 6e 20 3d 20 66 6c 6f 61 74 28 73 | ))...3........duration.=.float(s |
| 4f40 | 74 61 74 75 73 2e 67 65 74 28 22 64 75 72 61 74 69 6f 6e 22 2c 20 30 29 29 00 00 00 00 00 00 00 | tatus.get("duration",.0))....... |
| 4f60 | 3d 20 20 20 20 20 20 20 20 69 66 20 73 74 61 74 65 20 3d 3d 20 22 70 6c 61 79 22 20 61 6e 64 20 | =........if.state.==."play".and. |
| 4f80 | 74 69 74 6c 65 20 61 6e 64 20 74 69 74 6c 65 20 21 3d 20 6c 61 73 74 5f 74 69 74 6c 65 3a 00 00 | title.and.title.!=.last_title:.. |
| 4fa0 | 00 1e 20 20 20 20 20 20 20 20 20 20 20 20 6c 61 73 74 5f 74 69 74 6c 65 20 3d 20 74 69 74 6c 65 | ..............last_title.=.title |
| 4fc0 | 00 00 00 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 61 73 74 5f 61 72 74 69 73 74 20 3d 20 61 72 | ................last_artist.=.ar |
| 4fe0 | 74 69 73 74 00 00 00 1e 20 20 20 20 20 20 20 20 20 20 20 20 6c 61 73 74 5f 61 6c 62 75 6d 20 3d | tist................last_album.= |
| 5000 | 20 61 6c 62 75 6d 00 00 00 29 20 20 20 20 20 20 20 20 20 20 20 20 6c 61 73 74 5f 73 74 61 72 74 | .album...)............last_start |
| 5020 | 20 3d 20 69 6e 74 28 74 69 6d 65 2e 74 69 6d 65 28 29 29 00 00 00 24 20 20 20 20 20 20 20 20 20 | .=.int(time.time())...$......... |
| 5040 | 20 20 20 6c 61 73 74 5f 64 75 72 61 74 69 6f 6e 20 3d 20 64 75 72 61 74 69 6f 6e 00 00 00 1d 20 | ...last_duration.=.duration..... |
| 5060 | 20 20 20 20 20 20 20 20 20 20 20 73 63 72 6f 62 62 6c 65 64 20 3d 20 46 61 6c 73 65 00 00 00 38 | ...........scrobbled.=.False...8 |
| 5080 | 20 20 20 20 20 20 20 20 20 20 20 20 75 70 64 61 74 65 5f 6e 6f 77 5f 70 6c 61 79 69 6e 67 28 73 | ............update_now_playing(s |
| 50a0 | 6b 2c 20 61 72 74 69 73 74 2c 20 74 69 74 6c 65 2c 20 61 6c 62 75 6d 29 00 00 00 35 20 20 20 20 | k,.artist,.title,.album)...5.... |
| 50c0 | 20 20 20 20 20 20 20 20 70 72 69 6e 74 28 66 22 4e 6f 77 20 70 6c 61 79 69 6e 67 3a 20 7b 61 72 | ........print(f"Now.playing:.{ar |
| 50e0 | 74 69 73 74 7d 20 2d 20 7b 74 69 74 6c 65 7d 22 29 00 00 00 00 00 00 00 3e 20 20 20 20 20 20 20 | tist}.-.{title}").......>....... |
| 5100 | 20 69 66 20 28 6e 6f 74 20 73 63 72 6f 62 62 6c 65 64 20 61 6e 64 20 6c 61 73 74 5f 74 69 74 6c | .if.(not.scrobbled.and.last_titl |
| 5120 | 65 20 61 6e 64 20 6c 61 73 74 5f 64 75 72 61 74 69 6f 6e 20 61 6e 64 00 00 00 42 20 20 20 20 20 | e.and.last_duration.and...B..... |
| 5140 | 20 20 20 20 20 20 20 20 20 20 20 28 65 6c 61 70 73 65 64 20 3e 3d 20 6c 61 73 74 5f 64 75 72 61 | ...........(elapsed.>=.last_dura |
| 5160 | 74 69 6f 6e 20 2f 20 32 20 6f 72 20 65 6c 61 70 73 65 64 20 3e 3d 20 32 34 30 29 29 3a 00 00 00 | tion./.2.or.elapsed.>=.240)):... |
| 5180 | 49 20 20 20 20 20 20 20 20 20 20 20 20 73 63 72 6f 62 62 6c 65 28 73 6b 2c 20 6c 61 73 74 5f 61 | I............scrobble(sk,.last_a |
| 51a0 | 72 74 69 73 74 2c 20 6c 61 73 74 5f 74 69 74 6c 65 2c 20 6c 61 73 74 5f 61 6c 62 75 6d 2c 20 6c | rtist,.last_title,.last_album,.l |
| 51c0 | 61 73 74 5f 73 74 61 72 74 29 00 00 00 1c 20 20 20 20 20 20 20 20 20 20 20 20 73 63 72 6f 62 62 | ast_start)................scrobb |
| 51e0 | 6c 65 64 20 3d 20 54 72 75 65 00 00 00 3d 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 6e 74 28 | led.=.True...=............print( |
| 5200 | 66 22 53 63 72 6f 62 62 6c 65 64 3a 20 7b 6c 61 73 74 5f 61 72 74 69 73 74 7d 20 2d 20 7b 6c 61 | f"Scrobbled:.{last_artist}.-.{la |
| 5220 | 73 74 5f 74 69 74 6c 65 7d 22 29 00 00 00 00 00 00 00 23 20 20 20 20 20 20 20 20 6d 70 64 5f 63 | st_title}").......#........mpd_c |
| 5240 | 6d 64 28 6d 70 64 2c 20 22 69 64 6c 65 20 70 6c 61 79 65 72 22 29 00 00 00 00 00 00 00 1a 69 66 | md(mpd,."idle.player")........if |
| 5260 | 20 5f 5f 6e 61 6d 65 5f 5f 20 3d 3d 20 22 5f 5f 6d 61 69 6e 5f 5f 22 3a 00 00 00 0a 20 20 20 20 | .__name__.==."__main__":........ |
| 5280 | 6d 61 69 6e 28 29 35 81 f5 18 00 00 00 00 00 00 00 00 00 00 00 00 93 00 00 00 00 00 00 00 01 00 | main()5......................... |
| 52a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 e7 0f 00 00 00 00 00 00 01 00 00 00 00 00 00 00 35 81 | ..............................5. |
| 52c0 | 5f d0 00 00 00 11 00 00 00 13 00 00 00 00 00 00 00 00 00 00 00 12 00 00 00 01 00 00 00 00 00 00 | _............................... |
| 52e0 | 00 00 ff ff ff ff 00 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 5300 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 5320 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 5340 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 5360 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 5380 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 53a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 53c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 53e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 5400 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 5420 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 5440 | 00 00 00 00 69 98 f3 98 04 01 00 00 00 0d 00 f5 18 00 00 00 98 00 00 00 00 00 00 00 00 00 00 00 | ....i........................... |
| 5460 | 01 00 00 00 0a 20 20 20 20 6d 61 69 6e 28 29 f5 18 00 00 00 99 00 00 00 00 00 00 00 00 00 00 00 | .........main()................. |
| 5480 | 00 f5 18 00 00 00 7a 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 01 20 f5 18 00 00 00 7b 00 00 | ......z......................{.. |
| 54a0 | 00 00 00 00 00 00 00 00 00 00 f5 18 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 | ................................ |
| 54c0 | f5 18 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 35 81 f5 18 00 00 00 00 00 00 00 00 00 00 | ..................5............. |
| 54e0 | 00 00 00 00 00 00 00 00 00 00 7a 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ..........z..................... |
| 5500 | 00 00 00 0c 00 00 00 00 00 00 f5 18 00 00 00 00 7a 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 | ................z............... |
| 5520 | 1e 00 00 00 0a 00 00 00 00 0c 00 00 00 00 00 00 00 00 00 00 00 00 00 00 84 04 00 00 00 00 00 00 | ................................ |
| 5540 | 35 81 5f d0 00 00 00 12 00 00 00 14 00 00 00 00 00 00 00 00 00 00 00 13 00 00 00 0a 00 00 00 2c | 5._............................, |
| 5560 | 00 00 00 00 ff ff ff ff 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 5580 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 55a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 55c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 55e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 5600 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 5620 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 5640 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 5660 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 5680 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 56a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 56c0 | 00 00 00 00 00 00 69 98 f3 a3 04 01 00 00 00 00 00 f5 18 00 00 00 09 00 00 00 0b 00 00 00 99 00 | ......i......................... |
| 56e0 | 00 00 01 00 00 00 42 43 4f 4e 46 49 47 5f 50 41 54 48 20 3d 20 6f 73 2e 70 61 74 68 2e 65 78 70 | ......BCONFIG_PATH.=.os.path.exp |
| 5700 | 61 6e 64 75 73 65 72 28 22 7e 2f 2e 63 6f 6e 66 69 67 2f 73 63 72 6f 62 62 6c 65 72 2f 63 6f 6e | anduser("~/.config/scrobbler/con |
| 5720 | 66 69 67 2e 69 6e 69 22 29 35 81 f5 18 00 00 00 00 09 00 00 00 2c 00 00 00 00 00 00 00 00 00 00 | fig.ini")5...........,.......... |
| 5740 | 00 00 00 00 00 03 00 00 00 9c 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 03 00 00 00 00 00 00 | ................................ |
| 5760 | 00 35 81 5f d0 00 00 00 13 00 00 00 15 00 00 00 00 00 00 00 00 00 00 00 14 00 00 00 0a 00 00 00 | .5._............................ |
| 5780 | 37 00 00 00 00 ff ff ff ff 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | 7............................... |
| 57a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 57c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 57e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 5800 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 5820 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 5840 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 5860 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 5880 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 58a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 58c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 58e0 | 00 00 00 00 00 00 00 69 98 f3 a5 04 01 00 00 00 0f 00 f5 18 00 00 00 09 00 00 00 0b 00 00 00 99 | .......i........................ |
| 5900 | 00 00 00 01 00 00 00 45 43 4f 4e 46 49 47 5f 50 41 54 48 20 3d 20 6f 73 2e 70 61 74 68 2e 65 78 | .......ECONFIG_PATH.=.os.path.ex |
| 5920 | 70 61 6e 64 75 73 65 72 28 22 7e 2f 2e 63 6f 6e 66 69 67 2f 61 73 68 73 63 72 6f 62 62 6c 65 72 | panduser("~/.config/ashscrobbler |
| 5940 | 2f 63 6f 6e 66 69 67 2e 69 6e 69 22 29 35 81 f5 18 00 00 00 00 09 00 00 00 37 00 00 00 00 00 00 | /config.ini")5...........7...... |
| 5960 | 00 01 00 00 00 00 00 00 00 00 00 00 00 a7 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 5980 | 00 00 00 00 00 35 81 5f d0 00 00 00 14 00 00 00 16 00 00 00 00 00 00 00 00 00 00 00 15 00 00 00 | .....5._........................ |
| 59a0 | 0f 00 00 00 00 00 00 00 00 ff ff ff ff 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 59c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 59e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 5a00 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 5a20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 5a40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 5a60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 5a80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 5aa0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 5ac0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 5ae0 | 00 00 00 00 00 00 00 00 00 00 0f 00 00 00 24 00 00 00 00 00 00 00 15 00 00 00 22 00 00 00 00 00 | ..............$..........."..... |
| 5b00 | 00 00 56 00 00 00 24 00 00 00 00 69 98 f4 6f 04 01 00 00 00 00 00 f5 18 00 00 00 0e 00 00 00 0f | ..V...$....i..o................. |
| 5b20 | 00 00 00 00 00 00 00 07 00 00 00 25 41 50 49 5f 4b 45 59 20 3d 20 63 6f 6e 66 69 67 5b 22 6c 61 | ...........%API_KEY.=.config["la |
| 5b40 | 73 74 66 6d 22 5d 5b 22 61 70 69 5f 6b 65 79 22 5d 00 00 00 2b 41 50 49 5f 53 45 43 52 45 54 20 | stfm"]["api_key"]...+API_SECRET. |
| 5b60 | 3d 20 63 6f 6e 66 69 67 5b 22 6c 61 73 74 66 6d 22 5d 5b 22 61 70 69 5f 73 65 63 72 65 74 22 5d | =.config["lastfm"]["api_secret"] |
| 5b80 | 00 00 00 27 55 53 45 52 4e 41 4d 45 20 3d 20 63 6f 6e 66 69 67 5b 22 6c 61 73 74 66 6d 22 5d 5b | ...'USERNAME.=.config["lastfm"][ |
| 5ba0 | 22 75 73 65 72 6e 61 6d 65 22 5d 00 00 00 27 50 41 53 53 57 4f 52 44 20 3d 20 63 6f 6e 66 69 67 | "username"]...'PASSWORD.=.config |
| 5bc0 | 5b 22 6c 61 73 74 66 6d 22 5d 5b 22 70 61 73 73 77 6f 72 64 22 5d 00 00 00 20 4d 50 44 5f 48 4f | ["lastfm"]["password"]....MPD_HO |
| 5be0 | 53 54 20 3d 20 63 6f 6e 66 69 67 5b 22 6d 70 64 22 5d 5b 22 68 6f 73 74 22 5d 00 00 00 25 4d 50 | ST.=.config["mpd"]["host"]...%MP |
| 5c00 | 44 5f 50 4f 52 54 20 3d 20 69 6e 74 28 63 6f 6e 66 69 67 5b 22 6d 70 64 22 5d 5b 22 70 6f 72 74 | D_PORT.=.int(config["mpd"]["port |
| 5c20 | 22 5d 29 00 00 00 22 50 52 4f 58 59 5f 55 52 4c 20 3d 20 63 6f 6e 66 69 67 5b 22 70 72 6f 78 79 | "])..."PROXY_URL.=.config["proxy |
| 5c40 | 22 5d 5b 22 75 72 6c 22 5d 35 81 f5 18 00 00 00 00 0e 00 00 00 00 00 00 00 07 00 00 00 00 00 00 | "]["url"]5...................... |
| 5c60 | 00 00 00 00 00 00 00 00 00 f5 00 00 00 00 00 00 00 0c 01 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 5c80 | 00 35 81 5f d0 00 00 00 15 00 00 00 17 00 00 00 00 00 00 00 00 00 00 00 16 00 00 00 0f 00 00 00 | .5._............................ |
| 5ca0 | 00 00 00 00 00 ff ff ff ff 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 5cc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 5ce0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 5d00 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 5d20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 5d40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 5d60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 5d80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 5da0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 5dc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 5de0 | 00 00 00 00 00 00 0f 00 00 00 24 00 00 00 00 00 00 00 0f 00 00 00 22 00 00 00 00 00 00 00 56 00 | ..........$...........".......V. |
| 5e00 | 00 00 24 00 00 00 00 69 98 f4 6f 04 01 00 00 00 10 00 f5 18 00 00 00 14 00 00 00 16 00 00 00 99 | ..$....i..o..................... |
| 5e20 | 00 00 00 01 00 00 00 26 50 52 4f 58 59 5f 55 52 4c 20 3d 20 22 73 6f 63 6b 73 35 3a 2f 2f 31 32 | .......&PROXY_URL.=."socks5://12 |
| 5e40 | 37 2e 30 2e 30 2e 31 3a 36 35 30 30 30 22 f5 18 00 00 00 15 00 00 00 16 00 00 00 99 00 00 00 00 | 7.0.0.1:65000".................. |
| 5e60 | f5 18 00 00 00 0e 00 00 00 16 00 00 00 93 00 00 00 01 00 00 00 00 f5 18 00 00 00 0f 00 00 00 10 | ................................ |
| 5e80 | 00 00 00 93 00 00 00 00 f5 18 00 00 00 0e 00 00 00 10 00 00 00 92 00 00 00 00 35 81 f5 18 00 00 | ..........................5..... |
| 5ea0 | 00 00 0e 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 f5 00 00 00 00 00 | ................................ |
| 5ec0 | 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 f5 18 00 00 00 00 0e 00 00 00 00 00 00 00 | ................................ |
| 5ee0 | 00 00 00 00 00 00 00 00 06 00 00 00 26 00 00 00 f5 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ............&................... |
| 5f00 | e8 00 00 00 00 00 00 00 35 81 5f d0 00 00 00 16 00 00 00 18 00 00 00 00 00 00 00 00 00 00 00 17 | ........5._..................... |
| 5f20 | 00 00 00 15 00 00 00 0a 00 00 00 00 ff ff ff ff 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 5f40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 5f60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 5f80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 5fa0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 5fc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 5fe0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 6000 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 6020 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 6040 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 6060 | 00 00 00 00 00 00 00 00 00 00 00 00 00 16 00 00 00 24 00 00 00 00 00 00 00 16 00 00 00 22 00 00 | .................$...........".. |
| 6080 | 00 00 00 00 00 56 00 00 00 24 00 00 00 00 69 98 f4 7f 04 01 00 00 00 00 00 f5 18 00 00 00 15 00 | .....V...$....i................. |
| 60a0 | 00 00 17 00 00 00 9a 00 00 00 01 00 00 00 00 f5 18 00 00 00 16 00 00 00 17 00 00 00 9a 00 00 00 | ................................ |
| 60c0 | 00 f5 18 00 00 00 16 00 00 00 17 00 00 00 9a 00 00 00 00 f5 18 00 00 00 15 00 00 00 17 00 00 00 | ................................ |
| 60e0 | 99 00 00 00 00 35 81 f5 18 00 00 00 00 15 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 | .....5.......................... |
| 6100 | 00 00 00 00 00 de 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 f5 18 00 | ................................ |
| 6120 | 00 00 00 15 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 4c 00 00 00 de 01 00 00 00 | .......................L........ |
| 6140 | 00 00 00 00 00 00 00 00 00 00 00 4c 00 00 00 00 00 00 00 35 81 5f d0 00 00 00 17 00 00 00 19 00 | ...........L.......5._.......... |
| 6160 | 00 00 00 00 00 00 00 00 00 00 18 00 00 00 18 00 00 00 00 00 00 00 00 ff ff ff ff 00 01 00 00 00 | ................................ |
| 6180 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 61a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 61c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 61e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 6200 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 6220 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 6240 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 6260 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 6280 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 62a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 18 00 00 00 0a 00 00 00 | ................................ |
| 62c0 | 00 00 00 00 1b 00 00 00 01 00 00 00 00 00 00 00 56 00 00 00 4b 00 00 00 00 69 98 f4 81 04 01 00 | ................V...K....i...... |
| 62e0 | 00 00 00 00 f5 18 00 00 00 17 00 00 00 18 00 00 00 00 00 00 00 04 00 00 00 0b 50 52 4f 58 49 45 | ..........................PROXIE |
| 6300 | 53 20 3d 20 7b 00 00 00 16 20 20 20 20 22 68 74 74 70 22 3a 20 50 52 4f 58 59 5f 55 52 4c 2c 00 | S.=.{........"http":.PROXY_URL,. |
| 6320 | 00 00 16 20 20 20 20 22 68 74 74 70 73 22 3a 20 50 52 4f 58 59 5f 55 52 4c 00 00 00 01 7d 35 81 | ......."https":.PROXY_URL....}5. |
| 6340 | f5 18 00 00 00 00 17 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 2c 02 | ..............................,. |
| 6360 | 00 00 00 00 00 00 3c 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 35 81 5f d0 00 00 00 18 00 00 | ......<...............5._....... |
| 6380 | 00 1a 00 00 00 00 00 00 00 00 00 00 00 19 00 00 00 18 00 00 00 00 00 00 00 00 ff ff ff ff 00 01 | ................................ |
| 63a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 63c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 63e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 6400 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 6420 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 6440 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 6460 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 6480 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 64a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 64c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 18 00 00 00 0a | ................................ |
| 64e0 | 00 00 00 00 00 00 00 18 00 00 00 01 00 00 00 00 00 00 00 56 00 00 00 4b 00 00 00 00 69 98 f4 82 | ...................V...K....i... |
| 6500 | 04 01 00 00 00 11 00 f5 18 00 00 00 17 00 00 00 18 00 00 00 00 00 00 00 01 00 00 00 00 35 81 f5 | .............................5.. |
| 6520 | 18 00 00 00 00 17 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 2c 02 00 | .............................,.. |
| 6540 | 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 35 81 5f d0 00 00 00 19 00 00 00 | .....................5._........ |
| 6560 | 1b 00 00 00 00 00 00 00 00 00 00 00 1a 00 00 00 12 00 00 00 1f 00 00 00 00 ff ff ff ff 00 01 00 | ................................ |
| 6580 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 65a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 65c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 65e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 6600 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 6620 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 6640 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 6660 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 6680 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 66a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 12 00 00 00 20 00 | ................................ |
| 66c0 | 00 00 00 00 00 00 12 00 00 00 1f 00 00 00 00 00 00 00 76 00 00 00 1f 00 00 00 00 69 98 f4 98 04 | ..................v........i.... |
| 66e0 | 01 00 00 00 00 00 f5 18 00 00 00 11 00 00 00 13 00 00 00 95 00 00 00 01 00 00 00 27 50 41 53 53 | ...........................'PASS |
| 6700 | 57 4f 52 44 20 3d 20 63 6f 6e 66 69 67 5b 22 6c 61 73 74 66 6d 22 5d 5b 22 70 61 73 73 77 6f 72 | WORD.=.config["lastfm"]["passwor |
| 6720 | 64 22 5d 35 81 f5 18 00 00 00 00 11 00 00 00 1f 00 00 00 00 00 00 00 02 00 00 00 00 00 00 00 02 | d"]5............................ |
| 6740 | 00 00 00 87 01 00 00 00 00 00 00 02 00 00 00 00 00 00 00 02 00 00 00 00 00 00 00 35 81 5f d0 00 | ...........................5._.. |
| 6760 | 00 00 1a 00 00 00 1c 00 00 00 00 00 00 00 00 00 00 00 1b 00 00 00 12 00 00 00 1d 00 00 00 00 ff | ................................ |
| 6780 | ff ff ff 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 67a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 67c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 67e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 6800 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 6820 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 6840 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 6860 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 6880 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 68a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 68c0 | 12 00 00 00 20 00 00 00 00 00 00 00 12 00 00 00 1f 00 00 00 00 00 00 00 76 00 00 00 1f 00 00 00 | ........................v....... |
| 68e0 | 00 69 98 f4 99 04 01 00 00 00 13 00 f5 18 00 00 00 11 00 00 00 13 00 00 00 95 00 00 00 01 00 00 | .i.............................. |
| 6900 | 00 27 50 41 53 53 57 4f 52 44 20 3d 20 63 6f 6e 66 69 67 5b 22 6c 61 73 74 66 6d 22 5d 5b 22 70 | .'PASSWORD.=.config["lastfm"]["p |
| 6920 | 61 69 77 77 6f 72 64 22 5d f5 18 00 00 00 12 00 00 00 13 00 00 00 95 00 00 00 00 f5 18 00 00 00 | aiwword"]....................... |
| 6940 | 12 00 00 00 13 00 00 00 95 00 00 00 00 35 81 f5 18 00 00 00 00 11 00 00 00 1d 00 00 00 00 00 00 | .............5.................. |
| 6960 | 00 08 00 00 00 00 00 00 00 0e 00 00 00 85 01 00 00 00 00 00 00 08 00 00 00 00 00 00 00 0e 00 00 | ................................ |
| 6980 | 00 00 00 00 00 35 81 5f d0 00 00 00 1b 00 00 00 1d 00 00 00 00 00 00 00 00 00 00 00 1c 00 00 00 | .....5._........................ |
| 69a0 | 01 00 00 00 00 00 00 00 00 ff ff ff ff 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 69c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 69e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 6a00 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 6a20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 6a40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 6a60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 6a80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 6aa0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 6ac0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 6ae0 | 00 00 00 00 00 00 00 00 00 00 01 00 00 00 0a 00 00 00 00 00 00 00 95 00 00 00 0a 00 00 00 00 00 | ................................ |
| 6b00 | 00 00 56 00 00 00 0a 00 00 00 00 69 98 f7 45 04 01 00 00 00 00 00 f5 18 00 00 00 00 00 00 00 02 | ..V........i..E................. |
| 6b20 | 00 00 00 00 00 00 00 95 00 00 00 16 23 21 2f 75 73 72 2f 62 69 6e 2f 65 6e 76 20 70 79 74 68 6f | ............#!/usr/bin/env.pytho |
| 6b40 | 6e 33 00 00 00 00 00 00 00 0e 69 6d 70 6f 72 74 20 68 61 73 68 6c 69 62 00 00 00 0b 69 6d 70 6f | n3........import.hashlib....impo |
| 6b60 | 72 74 20 74 69 6d 65 00 00 00 0d 69 6d 70 6f 72 74 20 73 6f 63 6b 65 74 00 00 00 0f 69 6d 70 6f | rt.time....import.socket....impo |
| 6b80 | 72 74 20 72 65 71 75 65 73 74 73 00 00 00 13 69 6d 70 6f 72 74 20 63 6f 6e 66 69 67 70 61 72 73 | rt.requests....import.configpars |
| 6ba0 | 65 72 00 00 00 09 69 6d 70 6f 72 74 20 6f 73 00 00 00 00 00 00 00 44 43 4f 4e 46 49 47 5f 50 41 | er....import.os.......DCONFIG_PA |
| 6bc0 | 54 48 20 3d 20 6f 73 2e 70 61 74 68 2e 65 78 70 61 6e 64 75 73 65 72 28 22 7e 2f 2e 63 6f 6e 66 | TH.=.os.path.expanduser("~/.conf |
| 6be0 | 69 67 2f 61 73 68 73 63 72 6f 62 62 6c 65 2f 63 6f 6e 66 69 67 2e 69 6e 69 22 29 00 00 00 00 00 | ig/ashscrobble/config.ini")..... |
| 6c00 | 00 00 24 63 6f 6e 66 69 67 20 3d 20 63 6f 6e 66 69 67 70 61 72 73 65 72 2e 43 6f 6e 66 69 67 50 | ..$config.=.configparser.ConfigP |
| 6c20 | 61 72 73 65 72 28 29 00 00 00 18 63 6f 6e 66 69 67 2e 72 65 61 64 28 43 4f 4e 46 49 47 5f 50 41 | arser()....config.read(CONFIG_PA |
| 6c40 | 54 48 29 00 00 00 00 00 00 00 2c 41 50 49 5f 4b 45 59 20 3d 20 22 39 34 32 33 65 33 34 30 33 37 | TH).......,API_KEY.=."9423e34037 |
| 6c60 | 31 61 35 39 63 31 33 38 34 62 34 34 38 63 34 66 62 39 61 34 37 38 22 00 00 00 2f 41 50 49 5f 53 | 1a59c1384b448c4fb9a478".../API_S |
| 6c80 | 45 43 52 45 54 20 3d 20 22 38 35 38 64 35 61 38 33 63 38 37 35 30 62 65 35 64 64 65 30 30 30 36 | ECRET.=."858d5a83c8750be5dde0006 |
| 6ca0 | 65 64 35 38 61 33 61 35 38 22 00 00 00 15 55 53 45 52 4e 41 4d 45 20 3d 20 22 56 65 74 74 65 72 | ed58a3a58"....USERNAME.=."Vetter |
| 6cc0 | 69 61 22 00 00 00 2d 50 41 53 53 57 4f 52 44 20 3d 20 63 6f 6e 66 69 67 5b 22 6c 61 73 74 66 6d | ia"...-PASSWORD.=.config["lastfm |
| 6ce0 | 22 5d 5b 22 32 53 30 79 54 70 55 34 58 35 51 36 26 68 22 5d 00 00 00 16 4d 50 44 5f 48 4f 53 54 | "]["2S0yTpU4X5Q6&h"]....MPD_HOST |
| 6d00 | 20 3d 20 22 6c 6f 63 61 6c 68 6f 73 74 22 00 00 00 0f 4d 50 44 5f 50 4f 52 54 20 3d 20 36 36 30 | .=."localhost"....MPD_PORT.=.660 |
| 6d20 | 30 00 00 00 26 50 52 4f 58 59 5f 55 52 4c 20 3d 20 22 73 6f 63 6b 73 35 3a 2f 2f 31 32 37 2e 30 | 0...&PROXY_URL.=."socks5://127.0 |
| 6d40 | 2e 30 2e 31 3a 36 35 30 30 30 22 00 00 00 4c 50 52 4f 58 49 45 53 20 3d 20 7b 22 68 74 74 70 22 | .0.1:65000"...LPROXIES.=.{"http" |
| 6d60 | 3a 20 50 52 4f 58 59 5f 55 52 4c 2c 20 22 68 74 74 70 73 22 3a 20 50 52 4f 58 59 5f 55 52 4c 7d | :.PROXY_URL,."https":.PROXY_URL} |
| 6d80 | 20 69 66 20 50 52 4f 58 59 5f 45 4e 41 42 4c 45 44 20 65 6c 73 65 20 4e 6f 6e 65 00 00 00 00 00 | .if.PROXY_ENABLED.else.None..... |
| 6da0 | 00 00 0b 64 65 66 20 6d 64 35 28 73 29 3a 00 00 00 2e 20 20 20 20 72 65 74 75 72 6e 20 68 61 73 | ...def.md5(s):........return.has |
| 6dc0 | 68 6c 69 62 2e 6d 64 35 28 73 2e 65 6e 63 6f 64 65 28 29 29 2e 68 65 78 64 69 67 65 73 74 28 29 | hlib.md5(s.encode()).hexdigest() |
| 6de0 | 00 00 00 00 00 00 00 11 64 65 66 20 73 69 67 6e 28 70 61 72 61 6d 73 29 3a 00 00 00 20 20 20 20 | ........def.sign(params):....... |
| 6e00 | 20 6b 65 79 73 20 3d 20 73 6f 72 74 65 64 28 70 61 72 61 6d 73 2e 6b 65 79 73 28 29 29 00 00 00 | .keys.=.sorted(params.keys())... |
| 6e20 | 2e 20 20 20 20 73 69 67 20 3d 20 22 22 2e 6a 6f 69 6e 28 6b 20 2b 20 70 61 72 61 6d 73 5b 6b 5d | .....sig.=."".join(k.+.params[k] |
| 6e40 | 20 66 6f 72 20 6b 20 69 6e 20 6b 65 79 73 29 00 00 00 15 20 20 20 20 73 69 67 20 2b 3d 20 41 50 | .for.k.in.keys)........sig.+=.AP |
| 6e60 | 49 5f 53 45 43 52 45 54 00 00 00 13 20 20 20 20 72 65 74 75 72 6e 20 6d 64 35 28 73 69 67 29 00 | I_SECRET........return.md5(sig). |
| 6e80 | 00 00 00 00 00 00 16 64 65 66 20 67 65 74 5f 73 65 73 73 69 6f 6e 5f 6b 65 79 28 29 3a 00 00 00 | .......def.get_session_key():... |
| 6ea0 | 4b 20 20 20 20 74 6f 6b 65 6e 5f 72 65 73 20 3d 20 72 65 71 75 65 73 74 73 2e 67 65 74 28 22 68 | K....token_res.=.requests.get("h |
| 6ec0 | 74 74 70 73 3a 2f 2f 77 73 2e 61 75 64 69 6f 73 63 72 6f 62 62 6c 65 72 2e 63 6f 6d 2f 32 2e 30 | ttps://ws.audioscrobbler.com/2.0 |
| 6ee0 | 2f 22 2c 20 70 61 72 61 6d 73 3d 7b 00 00 00 22 20 20 20 20 20 20 20 20 22 6d 65 74 68 6f 64 22 | /",.params={..."........"method" |
| 6f00 | 3a 20 22 61 75 74 68 2e 67 65 74 54 6f 6b 65 6e 22 2c 00 00 00 1b 20 20 20 20 20 20 20 20 22 61 | :."auth.getToken",............"a |
| 6f20 | 70 69 5f 6b 65 79 22 3a 20 41 50 49 5f 4b 45 59 2c 00 00 00 18 20 20 20 20 20 20 20 20 22 66 6f | pi_key":.API_KEY,............"fo |
| 6f40 | 72 6d 61 74 22 3a 20 22 6a 73 6f 6e 22 00 00 00 17 20 20 20 20 7d 2c 20 70 72 6f 78 69 65 73 3d | rmat":."json"........},.proxies= |
| 6f60 | 50 52 4f 58 49 45 53 29 00 00 00 25 20 20 20 20 74 6f 6b 65 6e 20 3d 20 74 6f 6b 65 6e 5f 72 65 | PROXIES)...%....token.=.token_re |
| 6f80 | 73 2e 6a 73 6f 6e 28 29 5b 22 74 6f 6b 65 6e 22 5d 00 00 00 00 00 00 00 0e 20 20 20 20 70 61 72 | s.json()["token"]............par |
| 6fa0 | 61 6d 73 20 3d 20 7b 00 00 00 2a 20 20 20 20 20 20 20 20 22 6d 65 74 68 6f 64 22 3a 20 22 61 75 | ams.=.{...*........"method":."au |
| 6fc0 | 74 68 2e 67 65 74 4d 6f 62 69 6c 65 53 65 73 73 69 6f 6e 22 2c 00 00 00 1d 20 20 20 20 20 20 20 | th.getMobileSession",........... |
| 6fe0 | 20 22 75 73 65 72 6e 61 6d 65 22 3a 20 55 53 45 52 4e 41 4d 45 2c 00 00 00 1d 20 20 20 20 20 20 | ."username":.USERNAME,.......... |
| 7000 | 20 20 22 70 61 73 73 77 6f 72 64 22 3a 20 50 41 53 53 57 4f 52 44 2c 00 00 00 1b 20 20 20 20 20 | .."password":.PASSWORD,......... |
| 7020 | 20 20 20 22 61 70 69 5f 6b 65 79 22 3a 20 41 50 49 5f 4b 45 59 2c 00 00 00 05 20 20 20 20 7d 00 | ..."api_key":.API_KEY,........}. |
| 7040 | 00 00 24 20 20 20 20 70 61 72 61 6d 73 5b 22 61 70 69 5f 73 69 67 22 5d 20 3d 20 73 69 67 6e 28 | ..$....params["api_sig"].=.sign( |
| 7060 | 70 61 72 61 6d 73 29 00 00 00 1d 20 20 20 20 70 61 72 61 6d 73 5b 22 66 6f 72 6d 61 74 22 5d 20 | params)........params["format"]. |
| 7080 | 3d 20 22 6a 73 6f 6e 22 00 00 00 00 00 00 00 5b 20 20 20 20 72 65 73 20 3d 20 72 65 71 75 65 73 | =."json".......[....res.=.reques |
| 70a0 | 74 73 2e 70 6f 73 74 28 22 68 74 74 70 73 3a 2f 2f 77 73 2e 61 75 64 69 6f 73 63 72 6f 62 62 6c | ts.post("https://ws.audioscrobbl |
| 70c0 | 65 72 2e 63 6f 6d 2f 32 2e 30 2f 22 2c 20 64 61 74 61 3d 70 61 72 61 6d 73 2c 20 70 72 6f 78 69 | er.com/2.0/",.data=params,.proxi |
| 70e0 | 65 73 3d 50 52 4f 58 49 45 53 29 00 00 00 28 20 20 20 20 70 72 69 6e 74 28 22 53 65 73 73 69 6f | es=PROXIES)...(....print("Sessio |
| 7100 | 6e 20 72 65 73 70 6f 6e 73 65 3a 22 2c 20 72 65 73 2e 74 65 78 74 29 00 00 00 27 20 20 20 20 72 | n.response:",.res.text)...'....r |
| 7120 | 65 74 75 72 6e 20 72 65 73 2e 6a 73 6f 6e 28 29 5b 22 73 65 73 73 69 6f 6e 22 5d 5b 22 6b 65 79 | eturn.res.json()["session"]["key |
| 7140 | 22 5d 00 00 00 00 00 00 00 32 64 65 66 20 73 63 72 6f 62 62 6c 65 28 73 6b 2c 20 61 72 74 69 73 | "].......2def.scrobble(sk,.artis |
| 7160 | 74 2c 20 74 69 74 6c 65 2c 20 61 6c 62 75 6d 2c 20 74 69 6d 65 73 74 61 6d 70 29 3a 00 00 00 0e | t,.title,.album,.timestamp):.... |
| 7180 | 20 20 20 20 70 61 72 61 6d 73 20 3d 20 7b 00 00 00 23 20 20 20 20 20 20 20 20 22 6d 65 74 68 6f | ....params.=.{...#........"metho |
| 71a0 | 64 22 3a 20 22 74 72 61 63 6b 2e 73 63 72 6f 62 62 6c 65 22 2c 00 00 00 1c 20 20 20 20 20 20 20 | d":."track.scrobble",........... |
| 71c0 | 20 22 61 72 74 69 73 74 5b 30 5d 22 3a 20 61 72 74 69 73 74 2c 00 00 00 1a 20 20 20 20 20 20 20 | ."artist[0]":.artist,........... |
| 71e0 | 20 22 74 72 61 63 6b 5b 30 5d 22 3a 20 74 69 74 6c 65 2c 00 00 00 1a 20 20 20 20 20 20 20 20 22 | ."track[0]":.title,............" |
| 7200 | 61 6c 62 75 6d 5b 30 5d 22 3a 20 61 6c 62 75 6d 2c 00 00 00 27 20 20 20 20 20 20 20 20 22 74 69 | album[0]":.album,...'........"ti |
| 7220 | 6d 65 73 74 61 6d 70 5b 30 5d 22 3a 20 73 74 72 28 74 69 6d 65 73 74 61 6d 70 29 2c 00 00 00 1b | mestamp[0]":.str(timestamp),.... |
| 7240 | 20 20 20 20 20 20 20 20 22 61 70 69 5f 6b 65 79 22 3a 20 41 50 49 5f 4b 45 59 2c 00 00 00 11 20 | ........"api_key":.API_KEY,..... |
| 7260 | 20 20 20 20 20 20 20 22 73 6b 22 3a 20 73 6b 2c 00 00 00 05 20 20 20 20 7d 00 00 00 24 20 20 20 | ......."sk":.sk,........}...$... |
| 7280 | 20 70 61 72 61 6d 73 5b 22 61 70 69 5f 73 69 67 22 5d 20 3d 20 73 69 67 6e 28 70 61 72 61 6d 73 | .params["api_sig"].=.sign(params |
| 72a0 | 29 00 00 00 1d 20 20 20 20 70 61 72 61 6d 73 5b 22 66 6f 72 6d 61 74 22 5d 20 3d 20 22 6a 73 6f | )........params["format"].=."jso |
| 72c0 | 6e 22 00 00 00 55 20 20 20 20 72 65 71 75 65 73 74 73 2e 70 6f 73 74 28 22 68 74 74 70 73 3a 2f | n"...U....requests.post("https:/ |
| 72e0 | 2f 77 73 2e 61 75 64 69 6f 73 63 72 6f 62 62 6c 65 72 2e 63 6f 6d 2f 32 2e 30 2f 22 2c 20 64 61 | /ws.audioscrobbler.com/2.0/",.da |
| 7300 | 74 61 3d 70 61 72 61 6d 73 2c 20 70 72 6f 78 69 65 73 3d 50 52 4f 58 49 45 53 29 00 00 00 00 00 | ta=params,.proxies=PROXIES)..... |
| 7320 | 00 00 31 64 65 66 20 75 70 64 61 74 65 5f 6e 6f 77 5f 70 6c 61 79 69 6e 67 28 73 6b 2c 20 61 72 | ..1def.update_now_playing(sk,.ar |
| 7340 | 74 69 73 74 2c 20 74 69 74 6c 65 2c 20 61 6c 62 75 6d 29 3a 00 00 00 0e 20 20 20 20 70 61 72 61 | tist,.title,.album):........para |
| 7360 | 6d 73 20 3d 20 7b 00 00 00 2b 20 20 20 20 20 20 20 20 22 6d 65 74 68 6f 64 22 3a 20 22 74 72 61 | ms.=.{...+........"method":."tra |
| 7380 | 63 6b 2e 75 70 64 61 74 65 4e 6f 77 50 6c 61 79 69 6e 67 22 2c 00 00 00 19 20 20 20 20 20 20 20 | ck.updateNowPlaying",........... |
| 73a0 | 20 22 61 72 74 69 73 74 22 3a 20 61 72 74 69 73 74 2c 00 00 00 17 20 20 20 20 20 20 20 20 22 74 | ."artist":.artist,............"t |
| 73c0 | 72 61 63 6b 22 3a 20 74 69 74 6c 65 2c 00 00 00 17 20 20 20 20 20 20 20 20 22 61 6c 62 75 6d 22 | rack":.title,............"album" |
| 73e0 | 3a 20 61 6c 62 75 6d 2c 00 00 00 1b 20 20 20 20 20 20 20 20 22 61 70 69 5f 6b 65 79 22 3a 20 41 | :.album,............"api_key":.A |
| 7400 | 50 49 5f 4b 45 59 2c 00 00 00 11 20 20 20 20 20 20 20 20 22 73 6b 22 3a 20 73 6b 2c 00 00 00 05 | PI_KEY,............"sk":.sk,.... |
| 7420 | 20 20 20 20 7d 00 00 00 24 20 20 20 20 70 61 72 61 6d 73 5b 22 61 70 69 5f 73 69 67 22 5d 20 3d | ....}...$....params["api_sig"].= |
| 7440 | 20 73 69 67 6e 28 70 61 72 61 6d 73 29 00 00 00 1d 20 20 20 20 70 61 72 61 6d 73 5b 22 66 6f 72 | .sign(params)........params["for |
| 7460 | 6d 61 74 22 5d 20 3d 20 22 6a 73 6f 6e 22 00 00 00 55 20 20 20 20 72 65 71 75 65 73 74 73 2e 70 | mat"].=."json"...U....requests.p |
| 7480 | 6f 73 74 28 22 68 74 74 70 73 3a 2f 2f 77 73 2e 61 75 64 69 6f 73 63 72 6f 62 62 6c 65 72 2e 63 | ost("https://ws.audioscrobbler.c |
| 74a0 | 6f 6d 2f 32 2e 30 2f 22 2c 20 64 61 74 61 3d 70 61 72 61 6d 73 2c 20 70 72 6f 78 69 65 73 3d 50 | om/2.0/",.data=params,.proxies=P |
| 74c0 | 52 4f 58 49 45 53 29 00 00 00 00 00 00 00 12 64 65 66 20 6d 70 64 5f 63 6f 6e 6e 65 63 74 28 29 | ROXIES)........def.mpd_connect() |
| 74e0 | 3a 00 00 00 17 20 20 20 20 73 20 3d 20 73 6f 63 6b 65 74 2e 73 6f 63 6b 65 74 28 29 00 00 00 23 | :........s.=.socket.socket()...# |
| 7500 | 20 20 20 20 73 2e 63 6f 6e 6e 65 63 74 28 28 4d 50 44 5f 48 4f 53 54 2c 20 4d 50 44 5f 50 4f 52 | ....s.connect((MPD_HOST,.MPD_POR |
| 7520 | 54 29 29 00 00 00 10 20 20 20 20 73 2e 72 65 63 76 28 31 30 32 34 29 00 00 00 0c 20 20 20 20 72 | T))........s.recv(1024)........r |
| 7540 | 65 74 75 72 6e 20 73 00 00 00 00 00 00 00 14 64 65 66 20 6d 70 64 5f 63 6d 64 28 73 2c 20 63 6d | eturn.s........def.mpd_cmd(s,.cm |
| 7560 | 64 29 3a 00 00 00 24 20 20 20 20 73 2e 73 65 6e 64 61 6c 6c 28 28 63 6d 64 20 2b 20 22 5c 6e 22 | d):...$....s.sendall((cmd.+."\n" |
| 7580 | 29 2e 65 6e 63 6f 64 65 28 29 29 00 00 00 0e 20 20 20 20 72 65 73 70 20 3d 20 62 22 22 00 00 00 | ).encode())........resp.=.b""... |
| 75a0 | 0f 20 20 20 20 77 68 69 6c 65 20 54 72 75 65 3a 00 00 00 1c 20 20 20 20 20 20 20 20 63 68 75 6e | .....while.True:............chun |
| 75c0 | 6b 20 3d 20 73 2e 72 65 63 76 28 34 30 39 36 29 00 00 00 15 20 20 20 20 20 20 20 20 72 65 73 70 | k.=.s.recv(4096)............resp |
| 75e0 | 20 2b 3d 20 63 68 75 6e 6b 00 00 00 2d 20 20 20 20 20 20 20 20 69 66 20 62 22 4f 4b 5c 6e 22 20 | .+=.chunk...-........if.b"OK\n". |
| 7600 | 69 6e 20 72 65 73 70 20 6f 72 20 62 22 41 43 4b 22 20 69 6e 20 72 65 73 70 3a 00 00 00 11 20 20 | in.resp.or.b"ACK".in.resp:...... |
| 7620 | 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b 00 00 00 18 20 20 20 20 72 65 74 75 72 6e 20 72 65 | ..........break........return.re |
| 7640 | 73 70 2e 64 65 63 6f 64 65 28 29 00 00 00 00 00 00 00 16 64 65 66 20 70 61 72 73 65 5f 73 74 61 | sp.decode()........def.parse_sta |
| 7660 | 74 75 73 28 72 61 77 29 3a 00 00 00 0d 20 20 20 20 64 61 74 61 20 3d 20 7b 7d 00 00 00 21 20 20 | tus(raw):........data.=.{}...!.. |
| 7680 | 20 20 66 6f 72 20 6c 69 6e 65 20 69 6e 20 72 61 77 2e 73 70 6c 69 74 6c 69 6e 65 73 28 29 3a 00 | ..for.line.in.raw.splitlines():. |
| 76a0 | 00 00 17 20 20 20 20 20 20 20 20 69 66 20 22 3a 22 20 69 6e 20 6c 69 6e 65 3a 00 00 00 25 20 20 | ...........if.":".in.line:...%.. |
| 76c0 | 20 20 20 20 20 20 20 20 20 20 6b 2c 20 76 20 3d 20 6c 69 6e 65 2e 73 70 6c 69 74 28 22 3a 22 2c | ..........k,.v.=.line.split(":", |
| 76e0 | 20 31 29 00 00 00 27 20 20 20 20 20 20 20 20 20 20 20 20 64 61 74 61 5b 6b 2e 73 74 72 69 70 28 | .1)...'............data[k.strip( |
| 7700 | 29 5d 20 3d 20 76 2e 73 74 72 69 70 28 29 00 00 00 0f 20 20 20 20 72 65 74 75 72 6e 20 64 61 74 | )].=.v.strip()........return.dat |
| 7720 | 61 00 00 00 00 00 00 00 0b 64 65 66 20 6d 61 69 6e 28 29 3a 00 00 00 1a 20 20 20 20 73 6b 20 3d | a........def.main():........sk.= |
| 7740 | 20 67 65 74 5f 73 65 73 73 69 6f 6e 5f 6b 65 79 28 29 00 00 00 29 20 20 20 20 70 72 69 6e 74 28 | .get_session_key()...)....print( |
| 7760 | 66 22 41 75 74 68 65 6e 74 69 63 61 74 65 64 20 61 73 20 7b 55 53 45 52 4e 41 4d 45 7d 22 29 00 | f"Authenticated.as.{USERNAME}"). |
| 7780 | 00 00 00 00 00 00 17 20 20 20 20 6d 70 64 20 3d 20 6d 70 64 5f 63 6f 6e 6e 65 63 74 28 29 00 00 | ...........mpd.=.mpd_connect().. |
| 77a0 | 00 15 20 20 20 20 6c 61 73 74 5f 74 69 74 6c 65 20 3d 20 4e 6f 6e 65 00 00 00 15 20 20 20 20 6c | ......last_title.=.None........l |
| 77c0 | 61 73 74 5f 73 74 61 72 74 20 3d 20 4e 6f 6e 65 00 00 00 18 20 20 20 20 6c 61 73 74 5f 64 75 72 | ast_start.=.None........last_dur |
| 77e0 | 61 74 69 6f 6e 20 3d 20 4e 6f 6e 65 00 00 00 16 20 20 20 20 6c 61 73 74 5f 61 72 74 69 73 74 20 | ation.=.None........last_artist. |
| 7800 | 3d 20 4e 6f 6e 65 00 00 00 15 20 20 20 20 6c 61 73 74 5f 61 6c 62 75 6d 20 3d 20 4e 6f 6e 65 00 | =.None........last_album.=.None. |
| 7820 | 00 00 15 20 20 20 20 73 63 72 6f 62 62 6c 65 64 20 3d 20 46 61 6c 73 65 00 00 00 00 00 00 00 0f | .......scrobbled.=.False........ |
| 7840 | 20 20 20 20 77 68 69 6c 65 20 54 72 75 65 3a 00 00 00 2b 20 20 20 20 20 20 20 20 73 74 61 74 75 | ....while.True:...+........statu |
| 7860 | 73 5f 72 61 77 20 3d 20 6d 70 64 5f 63 6d 64 28 6d 70 64 2c 20 22 73 74 61 74 75 73 22 29 00 00 | s_raw.=.mpd_cmd(mpd,."status").. |
| 7880 | 00 31 20 20 20 20 20 20 20 20 63 75 72 72 65 6e 74 5f 72 61 77 20 3d 20 6d 70 64 5f 63 6d 64 28 | .1........current_raw.=.mpd_cmd( |
| 78a0 | 6d 70 64 2c 20 22 63 75 72 72 65 6e 74 73 6f 6e 67 22 29 00 00 00 29 20 20 20 20 20 20 20 20 73 | mpd,."currentsong")...)........s |
| 78c0 | 74 61 74 75 73 20 3d 20 70 61 72 73 65 5f 73 74 61 74 75 73 28 73 74 61 74 75 73 5f 72 61 77 29 | tatus.=.parse_status(status_raw) |
| 78e0 | 00 00 00 2b 20 20 20 20 20 20 20 20 63 75 72 72 65 6e 74 20 3d 20 70 61 72 73 65 5f 73 74 61 74 | ...+........current.=.parse_stat |
| 7900 | 75 73 28 63 75 72 72 65 6e 74 5f 72 61 77 29 00 00 00 00 00 00 00 28 20 20 20 20 20 20 20 20 74 | us(current_raw).......(........t |
| 7920 | 69 74 6c 65 20 3d 20 63 75 72 72 65 6e 74 2e 67 65 74 28 22 54 69 74 6c 65 22 2c 20 22 22 29 00 | itle.=.current.get("Title",.""). |
| 7940 | 00 00 2a 20 20 20 20 20 20 20 20 61 72 74 69 73 74 20 3d 20 63 75 72 72 65 6e 74 2e 67 65 74 28 | ..*........artist.=.current.get( |
| 7960 | 22 41 72 74 69 73 74 22 2c 20 22 22 29 00 00 00 28 20 20 20 20 20 20 20 20 61 6c 62 75 6d 20 3d | "Artist",."")...(........album.= |
| 7980 | 20 63 75 72 72 65 6e 74 2e 67 65 74 28 22 41 6c 62 75 6d 22 2c 20 22 22 29 00 00 00 2b 20 20 20 | .current.get("Album",."")...+... |
| 79a0 | 20 20 20 20 20 73 74 61 74 65 20 3d 20 73 74 61 74 75 73 2e 67 65 74 28 22 73 74 61 74 65 22 2c | .....state.=.status.get("state", |
| 79c0 | 20 22 73 74 6f 70 22 29 00 00 00 31 20 20 20 20 20 20 20 20 65 6c 61 70 73 65 64 20 3d 20 66 6c | ."stop")...1........elapsed.=.fl |
| 79e0 | 6f 61 74 28 73 74 61 74 75 73 2e 67 65 74 28 22 65 6c 61 70 73 65 64 22 2c 20 30 29 29 00 00 00 | oat(status.get("elapsed",.0))... |
| 7a00 | 33 20 20 20 20 20 20 20 20 64 75 72 61 74 69 6f 6e 20 3d 20 66 6c 6f 61 74 28 73 74 61 74 75 73 | 3........duration.=.float(status |
| 7a20 | 2e 67 65 74 28 22 64 75 72 61 74 69 6f 6e 22 2c 20 30 29 29 00 00 00 00 00 00 00 3d 20 20 20 20 | .get("duration",.0)).......=.... |
| 7a40 | 20 20 20 20 69 66 20 73 74 61 74 65 20 3d 3d 20 22 70 6c 61 79 22 20 61 6e 64 20 74 69 74 6c 65 | ....if.state.==."play".and.title |
| 7a60 | 20 61 6e 64 20 74 69 74 6c 65 20 21 3d 20 6c 61 73 74 5f 74 69 74 6c 65 3a 00 00 00 1e 20 20 20 | .and.title.!=.last_title:....... |
| 7a80 | 20 20 20 20 20 20 20 20 20 6c 61 73 74 5f 74 69 74 6c 65 20 3d 20 74 69 74 6c 65 00 00 00 20 20 | .........last_title.=.title..... |
| 7aa0 | 20 20 20 20 20 20 20 20 20 20 20 6c 61 73 74 5f 61 72 74 69 73 74 20 3d 20 61 72 74 69 73 74 00 | ...........last_artist.=.artist. |
| 7ac0 | 00 00 1e 20 20 20 20 20 20 20 20 20 20 20 20 6c 61 73 74 5f 61 6c 62 75 6d 20 3d 20 61 6c 62 75 | ...............last_album.=.albu |
| 7ae0 | 6d 00 00 00 29 20 20 20 20 20 20 20 20 20 20 20 20 6c 61 73 74 5f 73 74 61 72 74 20 3d 20 69 6e | m...)............last_start.=.in |
| 7b00 | 74 28 74 69 6d 65 2e 74 69 6d 65 28 29 29 00 00 00 24 20 20 20 20 20 20 20 20 20 20 20 20 6c 61 | t(time.time())...$............la |
| 7b20 | 73 74 5f 64 75 72 61 74 69 6f 6e 20 3d 20 64 75 72 61 74 69 6f 6e 00 00 00 1d 20 20 20 20 20 20 | st_duration.=.duration.......... |
| 7b40 | 20 20 20 20 20 20 73 63 72 6f 62 62 6c 65 64 20 3d 20 46 61 6c 73 65 00 00 00 38 20 20 20 20 20 | ......scrobbled.=.False...8..... |
| 7b60 | 20 20 20 20 20 20 20 75 70 64 61 74 65 5f 6e 6f 77 5f 70 6c 61 79 69 6e 67 28 73 6b 2c 20 61 72 | .......update_now_playing(sk,.ar |
| 7b80 | 74 69 73 74 2c 20 74 69 74 6c 65 2c 20 61 6c 62 75 6d 29 00 00 00 35 20 20 20 20 20 20 20 20 20 | tist,.title,.album)...5......... |
| 7ba0 | 20 20 20 70 72 69 6e 74 28 66 22 4e 6f 77 20 70 6c 61 79 69 6e 67 3a 20 7b 61 72 74 69 73 74 7d | ...print(f"Now.playing:.{artist} |
| 7bc0 | 20 2d 20 7b 74 69 74 6c 65 7d 22 29 00 00 00 00 00 00 00 3e 20 20 20 20 20 20 20 20 69 66 20 28 | .-.{title}").......>........if.( |
| 7be0 | 6e 6f 74 20 73 63 72 6f 62 62 6c 65 64 20 61 6e 64 20 6c 61 73 74 5f 74 69 74 6c 65 20 61 6e 64 | not.scrobbled.and.last_title.and |
| 7c00 | 20 6c 61 73 74 5f 64 75 72 61 74 69 6f 6e 20 61 6e 64 00 00 00 42 20 20 20 20 20 20 20 20 20 20 | .last_duration.and...B.......... |
| 7c20 | 20 20 20 20 20 20 28 65 6c 61 70 73 65 64 20 3e 3d 20 6c 61 73 74 5f 64 75 72 61 74 69 6f 6e 20 | ......(elapsed.>=.last_duration. |
| 7c40 | 2f 20 32 20 6f 72 20 65 6c 61 70 73 65 64 20 3e 3d 20 32 34 30 29 29 3a 00 00 00 49 20 20 20 20 | /.2.or.elapsed.>=.240)):...I.... |
| 7c60 | 20 20 20 20 20 20 20 20 73 63 72 6f 62 62 6c 65 28 73 6b 2c 20 6c 61 73 74 5f 61 72 74 69 73 74 | ........scrobble(sk,.last_artist |
| 7c80 | 2c 20 6c 61 73 74 5f 74 69 74 6c 65 2c 20 6c 61 73 74 5f 61 6c 62 75 6d 2c 20 6c 61 73 74 5f 73 | ,.last_title,.last_album,.last_s |
| 7ca0 | 74 61 72 74 29 00 00 00 1c 20 20 20 20 20 20 20 20 20 20 20 20 73 63 72 6f 62 62 6c 65 64 20 3d | tart)................scrobbled.= |
| 7cc0 | 20 54 72 75 65 00 00 00 3d 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 6e 74 28 66 22 53 63 72 | .True...=............print(f"Scr |
| 7ce0 | 6f 62 62 6c 65 64 3a 20 7b 6c 61 73 74 5f 61 72 74 69 73 74 7d 20 2d 20 7b 6c 61 73 74 5f 74 69 | obbled:.{last_artist}.-.{last_ti |
| 7d00 | 74 6c 65 7d 22 29 00 00 00 00 00 00 00 23 20 20 20 20 20 20 20 20 6d 70 64 5f 63 6d 64 28 6d 70 | tle}").......#........mpd_cmd(mp |
| 7d20 | 64 2c 20 22 69 64 6c 65 20 70 6c 61 79 65 72 22 29 00 00 00 00 00 00 00 1a 69 66 20 5f 5f 6e 61 | d,."idle.player")........if.__na |
| 7d40 | 6d 65 5f 5f 20 3d 3d 20 22 5f 5f 6d 61 69 6e 5f 5f 22 3a 00 00 00 0a 20 20 20 20 6d 61 69 6e 28 | me__.==."__main__":........main( |
| 7d60 | 29 35 81 f5 18 00 00 00 00 00 00 00 00 00 00 00 00 95 00 00 00 00 00 00 00 01 00 00 00 00 00 00 | )5.............................. |
| 7d80 | 00 00 00 00 00 00 00 00 00 7a 10 00 00 00 00 00 00 01 00 00 00 00 00 00 00 35 81 5f d0 00 00 00 | .........z...............5._.... |
| 7da0 | 1c 00 00 00 1e 00 00 00 00 00 00 00 00 00 00 00 1d 00 00 00 01 00 00 00 00 00 00 00 00 ff ff ff | ................................ |
| 7dc0 | ff 00 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7de0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7e00 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7e20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7e40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7e60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7e80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7ea0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7ec0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7ee0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 | ................................ |
| 7f00 | 00 00 0a 00 00 00 00 00 00 00 01 00 00 00 0a 00 00 00 00 00 00 00 56 00 00 00 0a 00 00 00 00 69 | ......................V........i |
| 7f20 | 98 f7 46 04 01 00 00 00 15 00 f5 18 00 00 00 83 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 0a | ..F............................. |
| 7f40 | 20 20 20 20 6d 61 69 6e 28 29 f5 18 00 00 00 84 00 00 00 00 00 00 00 00 00 00 00 00 f5 18 00 00 | ....main()...................... |
| 7f60 | 00 68 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 12 20 20 20 20 20 20 20 20 73 74 61 74 75 73 | .h........................status |
| 7f80 | 5f 72 61 77 f5 18 00 00 00 69 00 00 00 00 00 00 00 00 00 00 00 00 f5 18 00 00 00 00 00 00 00 00 | _raw.....i...................... |
| 7fa0 | 00 00 00 00 00 00 00 01 00 00 00 00 f5 18 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 35 81 | ..............................5. |
| 7fc0 | f5 18 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 68 00 00 00 12 00 00 00 00 00 | ......................h......... |
| 7fe0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0b 00 00 00 00 00 00 f5 18 00 00 00 00 68 00 00 00 | ............................h... |
| 8000 | 12 00 00 00 00 00 00 00 00 00 00 00 1b 00 00 00 0a 00 00 00 00 0b 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 8020 | 00 00 00 00 9b 04 00 00 00 00 00 00 35 81 5f d0 00 00 00 1d 00 00 00 1f 00 00 00 00 00 00 00 00 | ............5._................. |
| 8040 | 00 00 00 1e 00 00 00 01 00 00 00 04 00 00 00 00 ff ff ff ff 00 01 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 8060 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 8080 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 80a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 80c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 80e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 8100 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 8120 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 8140 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 8160 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 8180 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 81a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 69 98 f9 cd 04 01 00 00 00 00 00 f5 18 00 | ..................i............. |
| 81c0 | 00 00 00 00 00 00 02 00 00 00 00 00 00 00 84 00 00 00 16 23 21 2f 75 73 72 2f 62 69 6e 2f 65 6e | ...................#!/usr/bin/en |
| 81e0 | 76 20 70 79 74 68 6f 6e 33 00 00 00 0e 69 6d 70 6f 72 74 20 68 61 73 68 6c 69 62 00 00 00 0b 69 | v.python3....import.hashlib....i |
| 8200 | 6d 70 6f 72 74 20 74 69 6d 65 00 00 00 0d 69 6d 70 6f 72 74 20 73 6f 63 6b 65 74 00 00 00 0f 69 | mport.time....import.socket....i |
| 8220 | 6d 70 6f 72 74 20 72 65 71 75 65 73 74 73 00 00 00 00 00 00 00 2c 41 50 49 5f 4b 45 59 20 3d 20 | mport.requests.......,API_KEY.=. |
| 8240 | 22 39 34 32 33 65 33 34 30 33 37 31 61 35 39 63 31 33 38 34 62 34 34 38 63 34 66 62 39 61 34 37 | "9423e340371a59c1384b448c4fb9a47 |
| 8260 | 38 22 00 00 00 2f 41 50 49 5f 53 45 43 52 45 54 20 3d 20 22 38 35 38 64 35 61 38 33 63 38 37 35 | 8".../API_SECRET.=."858d5a83c875 |
| 8280 | 30 62 65 35 64 64 65 30 30 30 36 65 64 35 38 61 33 61 35 38 22 00 00 00 15 55 53 45 52 4e 41 4d | 0be5dde0006ed58a3a58"....USERNAM |
| 82a0 | 45 20 3d 20 22 56 65 74 74 65 72 69 61 22 00 00 00 1b 50 41 53 53 57 4f 52 44 20 3d 20 22 32 53 | E.=."Vetteria"....PASSWORD.=."2S |
| 82c0 | 30 79 54 70 55 34 58 35 51 36 26 68 22 00 00 00 16 4d 50 44 5f 48 4f 53 54 20 3d 20 22 6c 6f 63 | 0yTpU4X5Q6&h"....MPD_HOST.=."loc |
| 82e0 | 61 6c 68 6f 73 74 22 00 00 00 0f 4d 50 44 5f 50 4f 52 54 20 3d 20 36 36 30 30 00 00 00 53 50 52 | alhost"....MPD_PORT.=.6600...SPR |
| 8300 | 4f 58 49 45 53 20 3d 20 7b 22 68 74 74 70 22 3a 20 22 73 6f 63 6b 73 35 3a 2f 2f 31 32 37 2e 30 | OXIES.=.{"http":."socks5://127.0 |
| 8320 | 2e 30 2e 31 3a 36 35 30 30 30 22 2c 20 22 68 74 74 70 73 22 3a 20 22 73 6f 63 6b 73 35 3a 2f 2f | .0.1:65000",."https":."socks5:// |
| 8340 | 31 32 37 2e 30 2e 30 2e 31 3a 36 35 30 30 30 22 7d 00 00 00 00 00 00 00 0b 64 65 66 20 6d 64 35 | 127.0.0.1:65000"}........def.md5 |
| 8360 | 28 73 29 3a 00 00 00 2e 20 20 20 20 72 65 74 75 72 6e 20 68 61 73 68 6c 69 62 2e 6d 64 35 28 73 | (s):........return.hashlib.md5(s |
| 8380 | 2e 65 6e 63 6f 64 65 28 29 29 2e 68 65 78 64 69 67 65 73 74 28 29 00 00 00 00 00 00 00 11 64 65 | .encode()).hexdigest()........de |
| 83a0 | 66 20 73 69 67 6e 28 70 61 72 61 6d 73 29 3a 00 00 00 20 20 20 20 20 6b 65 79 73 20 3d 20 73 6f | f.sign(params):........keys.=.so |
| 83c0 | 72 74 65 64 28 70 61 72 61 6d 73 2e 6b 65 79 73 28 29 29 00 00 00 2e 20 20 20 20 73 69 67 20 3d | rted(params.keys())........sig.= |
| 83e0 | 20 22 22 2e 6a 6f 69 6e 28 6b 20 2b 20 70 61 72 61 6d 73 5b 6b 5d 20 66 6f 72 20 6b 20 69 6e 20 | ."".join(k.+.params[k].for.k.in. |
| 8400 | 6b 65 79 73 29 00 00 00 15 20 20 20 20 73 69 67 20 2b 3d 20 41 50 49 5f 53 45 43 52 45 54 00 00 | keys)........sig.+=.API_SECRET.. |
| 8420 | 00 13 20 20 20 20 72 65 74 75 72 6e 20 6d 64 35 28 73 69 67 29 00 00 00 00 00 00 00 16 64 65 66 | ......return.md5(sig)........def |
| 8440 | 20 67 65 74 5f 73 65 73 73 69 6f 6e 5f 6b 65 79 28 29 3a 00 00 00 4b 20 20 20 20 74 6f 6b 65 6e | .get_session_key():...K....token |
| 8460 | 5f 72 65 73 20 3d 20 72 65 71 75 65 73 74 73 2e 67 65 74 28 22 68 74 74 70 73 3a 2f 2f 77 73 2e | _res.=.requests.get("https://ws. |
| 8480 | 61 75 64 69 6f 73 63 72 6f 62 62 6c 65 72 2e 63 6f 6d 2f 32 2e 30 2f 22 2c 20 70 61 72 61 6d 73 | audioscrobbler.com/2.0/",.params |
| 84a0 | 3d 7b 00 00 00 22 20 20 20 20 20 20 20 20 22 6d 65 74 68 6f 64 22 3a 20 22 61 75 74 68 2e 67 65 | ={..."........"method":."auth.ge |
| 84c0 | 74 54 6f 6b 65 6e 22 2c 00 00 00 1b 20 20 20 20 20 20 20 20 22 61 70 69 5f 6b 65 79 22 3a 20 41 | tToken",............"api_key":.A |
| 84e0 | 50 49 5f 4b 45 59 2c 00 00 00 18 20 20 20 20 20 20 20 20 22 66 6f 72 6d 61 74 22 3a 20 22 6a 73 | PI_KEY,............"format":."js |
| 8500 | 6f 6e 22 00 00 00 17 20 20 20 20 7d 2c 20 70 72 6f 78 69 65 73 3d 50 52 4f 58 49 45 53 29 00 00 | on"........},.proxies=PROXIES).. |
| 8520 | 00 25 20 20 20 20 74 6f 6b 65 6e 20 3d 20 74 6f 6b 65 6e 5f 72 65 73 2e 6a 73 6f 6e 28 29 5b 22 | .%....token.=.token_res.json()[" |
| 8540 | 74 6f 6b 65 6e 22 5d 00 00 00 0e 20 20 20 20 70 61 72 61 6d 73 20 3d 20 7b 00 00 00 2a 20 20 20 | token"]........params.=.{...*... |
| 8560 | 20 20 20 20 20 22 6d 65 74 68 6f 64 22 3a 20 22 61 75 74 68 2e 67 65 74 4d 6f 62 69 6c 65 53 65 | ....."method":."auth.getMobileSe |
| 8580 | 73 73 69 6f 6e 22 2c 00 00 00 1d 20 20 20 20 20 20 20 20 22 75 73 65 72 6e 61 6d 65 22 3a 20 55 | ssion",............"username":.U |
| 85a0 | 53 45 52 4e 41 4d 45 2c 00 00 00 1d 20 20 20 20 20 20 20 20 22 70 61 73 73 77 6f 72 64 22 3a 20 | SERNAME,............"password":. |
| 85c0 | 50 41 53 53 57 4f 52 44 2c 00 00 00 1b 20 20 20 20 20 20 20 20 22 61 70 69 5f 6b 65 79 22 3a 20 | PASSWORD,............"api_key":. |
| 85e0 | 41 50 49 5f 4b 45 59 2c 00 00 00 05 20 20 20 20 7d 00 00 00 24 20 20 20 20 70 61 72 61 6d 73 5b | API_KEY,........}...$....params[ |
| 8600 | 22 61 70 69 5f 73 69 67 22 5d 20 3d 20 73 69 67 6e 28 70 61 72 61 6d 73 29 00 00 00 1d 20 20 20 | "api_sig"].=.sign(params)....... |
| 8620 | 20 70 61 72 61 6d 73 5b 22 66 6f 72 6d 61 74 22 5d 20 3d 20 22 6a 73 6f 6e 22 00 00 00 5b 20 20 | .params["format"].=."json"...[.. |
| 8640 | 20 20 72 65 73 20 3d 20 72 65 71 75 65 73 74 73 2e 70 6f 73 74 28 22 68 74 74 70 73 3a 2f 2f 77 | ..res.=.requests.post("https://w |
| 8660 | 73 2e 61 75 64 69 6f 73 63 72 6f 62 62 6c 65 72 2e 63 6f 6d 2f 32 2e 30 2f 22 2c 20 64 61 74 61 | s.audioscrobbler.com/2.0/",.data |
| 8680 | 3d 70 61 72 61 6d 73 2c 20 70 72 6f 78 69 65 73 3d 50 52 4f 58 49 45 53 29 00 00 00 28 20 20 20 | =params,.proxies=PROXIES)...(... |
| 86a0 | 20 70 72 69 6e 74 28 22 53 65 73 73 69 6f 6e 20 72 65 73 70 6f 6e 73 65 3a 22 2c 20 72 65 73 2e | .print("Session.response:",.res. |
| 86c0 | 74 65 78 74 29 00 00 00 27 20 20 20 20 72 65 74 75 72 6e 20 72 65 73 2e 6a 73 6f 6e 28 29 5b 22 | text)...'....return.res.json()[" |
| 86e0 | 73 65 73 73 69 6f 6e 22 5d 5b 22 6b 65 79 22 5d 00 00 00 00 00 00 00 32 64 65 66 20 73 63 72 6f | session"]["key"].......2def.scro |
| 8700 | 62 62 6c 65 28 73 6b 2c 20 61 72 74 69 73 74 2c 20 74 69 74 6c 65 2c 20 61 6c 62 75 6d 2c 20 74 | bble(sk,.artist,.title,.album,.t |
| 8720 | 69 6d 65 73 74 61 6d 70 29 3a 00 00 00 0e 20 20 20 20 70 61 72 61 6d 73 20 3d 20 7b 00 00 00 23 | imestamp):........params.=.{...# |
| 8740 | 20 20 20 20 20 20 20 20 22 6d 65 74 68 6f 64 22 3a 20 22 74 72 61 63 6b 2e 73 63 72 6f 62 62 6c | ........"method":."track.scrobbl |
| 8760 | 65 22 2c 00 00 00 1c 20 20 20 20 20 20 20 20 22 61 72 74 69 73 74 5b 30 5d 22 3a 20 61 72 74 69 | e",............"artist[0]":.arti |
| 8780 | 73 74 2c 00 00 00 1a 20 20 20 20 20 20 20 20 22 74 72 61 63 6b 5b 30 5d 22 3a 20 74 69 74 6c 65 | st,............"track[0]":.title |
| 87a0 | 2c 00 00 00 1a 20 20 20 20 20 20 20 20 22 61 6c 62 75 6d 5b 30 5d 22 3a 20 61 6c 62 75 6d 2c 00 | ,............"album[0]":.album,. |
| 87c0 | 00 00 27 20 20 20 20 20 20 20 20 22 74 69 6d 65 73 74 61 6d 70 5b 30 5d 22 3a 20 73 74 72 28 74 | ..'........"timestamp[0]":.str(t |
| 87e0 | 69 6d 65 73 74 61 6d 70 29 2c 00 00 00 1b 20 20 20 20 20 20 20 20 22 61 70 69 5f 6b 65 79 22 3a | imestamp),............"api_key": |
| 8800 | 20 41 50 49 5f 4b 45 59 2c 00 00 00 11 20 20 20 20 20 20 20 20 22 73 6b 22 3a 20 73 6b 2c 00 00 | .API_KEY,............"sk":.sk,.. |
| 8820 | 00 05 20 20 20 20 7d 00 00 00 24 20 20 20 20 70 61 72 61 6d 73 5b 22 61 70 69 5f 73 69 67 22 5d | ......}...$....params["api_sig"] |
| 8840 | 20 3d 20 73 69 67 6e 28 70 61 72 61 6d 73 29 00 00 00 1d 20 20 20 20 70 61 72 61 6d 73 5b 22 66 | .=.sign(params)........params["f |
| 8860 | 6f 72 6d 61 74 22 5d 20 3d 20 22 6a 73 6f 6e 22 00 00 00 55 20 20 20 20 72 65 71 75 65 73 74 73 | ormat"].=."json"...U....requests |
| 8880 | 2e 70 6f 73 74 28 22 68 74 74 70 73 3a 2f 2f 77 73 2e 61 75 64 69 6f 73 63 72 6f 62 62 6c 65 72 | .post("https://ws.audioscrobbler |
| 88a0 | 2e 63 6f 6d 2f 32 2e 30 2f 22 2c 20 64 61 74 61 3d 70 61 72 61 6d 73 2c 20 70 72 6f 78 69 65 73 | .com/2.0/",.data=params,.proxies |
| 88c0 | 3d 50 52 4f 58 49 45 53 29 00 00 00 00 00 00 00 31 64 65 66 20 75 70 64 61 74 65 5f 6e 6f 77 5f | =PROXIES).......1def.update_now_ |
| 88e0 | 70 6c 61 79 69 6e 67 28 73 6b 2c 20 61 72 74 69 73 74 2c 20 74 69 74 6c 65 2c 20 61 6c 62 75 6d | playing(sk,.artist,.title,.album |
| 8900 | 29 3a 00 00 00 0e 20 20 20 20 70 61 72 61 6d 73 20 3d 20 7b 00 00 00 2b 20 20 20 20 20 20 20 20 | ):........params.=.{...+........ |
| 8920 | 22 6d 65 74 68 6f 64 22 3a 20 22 74 72 61 63 6b 2e 75 70 64 61 74 65 4e 6f 77 50 6c 61 79 69 6e | "method":."track.updateNowPlayin |
| 8940 | 67 22 2c 00 00 00 19 20 20 20 20 20 20 20 20 22 61 72 74 69 73 74 22 3a 20 61 72 74 69 73 74 2c | g",............"artist":.artist, |
| 8960 | 00 00 00 17 20 20 20 20 20 20 20 20 22 74 72 61 63 6b 22 3a 20 74 69 74 6c 65 2c 00 00 00 17 20 | ............"track":.title,..... |
| 8980 | 20 20 20 20 20 20 20 22 61 6c 62 75 6d 22 3a 20 61 6c 62 75 6d 2c 00 00 00 1b 20 20 20 20 20 20 | ......."album":.album,.......... |
| 89a0 | 20 20 22 61 70 69 5f 6b 65 79 22 3a 20 41 50 49 5f 4b 45 59 2c 00 00 00 11 20 20 20 20 20 20 20 | .."api_key":.API_KEY,........... |
| 89c0 | 20 22 73 6b 22 3a 20 73 6b 2c 00 00 00 05 20 20 20 20 7d 00 00 00 24 20 20 20 20 70 61 72 61 6d | ."sk":.sk,........}...$....param |
| 89e0 | 73 5b 22 61 70 69 5f 73 69 67 22 5d 20 3d 20 73 69 67 6e 28 70 61 72 61 6d 73 29 00 00 00 1d 20 | s["api_sig"].=.sign(params)..... |
| 8a00 | 20 20 20 70 61 72 61 6d 73 5b 22 66 6f 72 6d 61 74 22 5d 20 3d 20 22 6a 73 6f 6e 22 00 00 00 55 | ...params["format"].=."json"...U |
| 8a20 | 20 20 20 20 72 65 71 75 65 73 74 73 2e 70 6f 73 74 28 22 68 74 74 70 73 3a 2f 2f 77 73 2e 61 75 | ....requests.post("https://ws.au |
| 8a40 | 64 69 6f 73 63 72 6f 62 62 6c 65 72 2e 63 6f 6d 2f 32 2e 30 2f 22 2c 20 64 61 74 61 3d 70 61 72 | dioscrobbler.com/2.0/",.data=par |
| 8a60 | 61 6d 73 2c 20 70 72 6f 78 69 65 73 3d 50 52 4f 58 49 45 53 29 00 00 00 00 00 00 00 12 64 65 66 | ams,.proxies=PROXIES)........def |
| 8a80 | 20 6d 70 64 5f 63 6f 6e 6e 65 63 74 28 29 3a 00 00 00 17 20 20 20 20 73 20 3d 20 73 6f 63 6b 65 | .mpd_connect():........s.=.socke |
| 8aa0 | 74 2e 73 6f 63 6b 65 74 28 29 00 00 00 23 20 20 20 20 73 2e 63 6f 6e 6e 65 63 74 28 28 4d 50 44 | t.socket()...#....s.connect((MPD |
| 8ac0 | 5f 48 4f 53 54 2c 20 4d 50 44 5f 50 4f 52 54 29 29 00 00 00 10 20 20 20 20 73 2e 72 65 63 76 28 | _HOST,.MPD_PORT))........s.recv( |
| 8ae0 | 31 30 32 34 29 00 00 00 0c 20 20 20 20 72 65 74 75 72 6e 20 73 00 00 00 00 00 00 00 14 64 65 66 | 1024)........return.s........def |
| 8b00 | 20 6d 70 64 5f 63 6d 64 28 73 2c 20 63 6d 64 29 3a 00 00 00 24 20 20 20 20 73 2e 73 65 6e 64 61 | .mpd_cmd(s,.cmd):...$....s.senda |
| 8b20 | 6c 6c 28 28 63 6d 64 20 2b 20 22 5c 6e 22 29 2e 65 6e 63 6f 64 65 28 29 29 00 00 00 0e 20 20 20 | ll((cmd.+."\n").encode())....... |
| 8b40 | 20 72 65 73 70 20 3d 20 62 22 22 00 00 00 0f 20 20 20 20 77 68 69 6c 65 20 54 72 75 65 3a 00 00 | .resp.=.b""........while.True:.. |
| 8b60 | 00 1c 20 20 20 20 20 20 20 20 63 68 75 6e 6b 20 3d 20 73 2e 72 65 63 76 28 34 30 39 36 29 00 00 | ..........chunk.=.s.recv(4096).. |
| 8b80 | 00 15 20 20 20 20 20 20 20 20 72 65 73 70 20 2b 3d 20 63 68 75 6e 6b 00 00 00 2d 20 20 20 20 20 | ..........resp.+=.chunk...-..... |
| 8ba0 | 20 20 20 69 66 20 62 22 4f 4b 5c 6e 22 20 69 6e 20 72 65 73 70 20 6f 72 20 62 22 41 43 4b 22 20 | ...if.b"OK\n".in.resp.or.b"ACK". |
| 8bc0 | 69 6e 20 72 65 73 70 3a 00 00 00 11 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b 00 00 00 | in.resp:................break... |
| 8be0 | 18 20 20 20 20 72 65 74 75 72 6e 20 72 65 73 70 2e 64 65 63 6f 64 65 28 29 00 00 00 00 00 00 00 | .....return.resp.decode()....... |
| 8c00 | 16 64 65 66 20 70 61 72 73 65 5f 73 74 61 74 75 73 28 72 61 77 29 3a 00 00 00 0d 20 20 20 20 64 | .def.parse_status(raw):........d |
| 8c20 | 61 74 61 20 3d 20 7b 7d 00 00 00 21 20 20 20 20 66 6f 72 20 6c 69 6e 65 20 69 6e 20 72 61 77 2e | ata.=.{}...!....for.line.in.raw. |
| 8c40 | 73 70 6c 69 74 6c 69 6e 65 73 28 29 3a 00 00 00 17 20 20 20 20 20 20 20 20 69 66 20 22 3a 22 20 | splitlines():............if.":". |
| 8c60 | 69 6e 20 6c 69 6e 65 3a 00 00 00 25 20 20 20 20 20 20 20 20 20 20 20 20 6b 2c 20 76 20 3d 20 6c | in.line:...%............k,.v.=.l |
| 8c80 | 69 6e 65 2e 73 70 6c 69 74 28 22 3a 22 2c 20 31 29 00 00 00 27 20 20 20 20 20 20 20 20 20 20 20 | ine.split(":",.1)...'........... |
| 8ca0 | 20 64 61 74 61 5b 6b 2e 73 74 72 69 70 28 29 5d 20 3d 20 76 2e 73 74 72 69 70 28 29 00 00 00 0f | .data[k.strip()].=.v.strip().... |
| 8cc0 | 20 20 20 20 72 65 74 75 72 6e 20 64 61 74 61 00 00 00 00 00 00 00 0b 64 65 66 20 6d 61 69 6e 28 | ....return.data........def.main( |
| 8ce0 | 29 3a 00 00 00 1a 20 20 20 20 73 6b 20 3d 20 67 65 74 5f 73 65 73 73 69 6f 6e 5f 6b 65 79 28 29 | ):........sk.=.get_session_key() |
| 8d00 | 00 00 00 29 20 20 20 20 70 72 69 6e 74 28 66 22 41 75 74 68 65 6e 74 69 63 61 74 65 64 20 61 73 | ...)....print(f"Authenticated.as |
| 8d20 | 20 7b 55 53 45 52 4e 41 4d 45 7d 22 29 00 00 00 17 20 20 20 20 6d 70 64 20 3d 20 6d 70 64 5f 63 | .{USERNAME}")........mpd.=.mpd_c |
| 8d40 | 6f 6e 6e 65 63 74 28 29 00 00 00 15 20 20 20 20 6c 61 73 74 5f 74 69 74 6c 65 20 3d 20 4e 6f 6e | onnect()........last_title.=.Non |
| 8d60 | 65 00 00 00 15 20 20 20 20 6c 61 73 74 5f 73 74 61 72 74 20 3d 20 4e 6f 6e 65 00 00 00 18 20 20 | e........last_start.=.None...... |
| 8d80 | 20 20 6c 61 73 74 5f 64 75 72 61 74 69 6f 6e 20 3d 20 4e 6f 6e 65 00 00 00 16 20 20 20 20 6c 61 | ..last_duration.=.None........la |
| 8da0 | 73 74 5f 61 72 74 69 73 74 20 3d 20 4e 6f 6e 65 00 00 00 15 20 20 20 20 6c 61 73 74 5f 61 6c 62 | st_artist.=.None........last_alb |
| 8dc0 | 75 6d 20 3d 20 4e 6f 6e 65 00 00 00 15 20 20 20 20 73 63 72 6f 62 62 6c 65 64 20 3d 20 46 61 6c | um.=.None........scrobbled.=.Fal |
| 8de0 | 73 65 00 00 00 0f 20 20 20 20 77 68 69 6c 65 20 54 72 75 65 3a 00 00 00 2b 20 20 20 20 20 20 20 | se........while.True:...+....... |
| 8e00 | 20 73 74 61 74 75 73 5f 72 61 77 20 3d 20 6d 70 64 5f 63 6d 64 28 6d 70 64 2c 20 22 73 74 61 74 | .status_raw.=.mpd_cmd(mpd,."stat |
| 8e20 | 75 73 22 29 00 00 00 31 20 20 20 20 20 20 20 20 63 75 72 72 65 6e 74 5f 72 61 77 20 3d 20 6d 70 | us")...1........current_raw.=.mp |
| 8e40 | 64 5f 63 6d 64 28 6d 70 64 2c 20 22 63 75 72 72 65 6e 74 73 6f 6e 67 22 29 00 00 00 29 20 20 20 | d_cmd(mpd,."currentsong")...)... |
| 8e60 | 20 20 20 20 20 73 74 61 74 75 73 20 3d 20 70 61 72 73 65 5f 73 74 61 74 75 73 28 73 74 61 74 75 | .....status.=.parse_status(statu |
| 8e80 | 73 5f 72 61 77 29 00 00 00 2b 20 20 20 20 20 20 20 20 63 75 72 72 65 6e 74 20 3d 20 70 61 72 73 | s_raw)...+........current.=.pars |
| 8ea0 | 65 5f 73 74 61 74 75 73 28 63 75 72 72 65 6e 74 5f 72 61 77 29 00 00 00 28 20 20 20 20 20 20 20 | e_status(current_raw)...(....... |
| 8ec0 | 20 74 69 74 6c 65 20 3d 20 63 75 72 72 65 6e 74 2e 67 65 74 28 22 54 69 74 6c 65 22 2c 20 22 22 | .title.=.current.get("Title",."" |
| 8ee0 | 29 00 00 00 2a 20 20 20 20 20 20 20 20 61 72 74 69 73 74 20 3d 20 63 75 72 72 65 6e 74 2e 67 65 | )...*........artist.=.current.ge |
| 8f00 | 74 28 22 41 72 74 69 73 74 22 2c 20 22 22 29 00 00 00 28 20 20 20 20 20 20 20 20 61 6c 62 75 6d | t("Artist",."")...(........album |
| 8f20 | 20 3d 20 63 75 72 72 65 6e 74 2e 67 65 74 28 22 41 6c 62 75 6d 22 2c 20 22 22 29 00 00 00 2b 20 | .=.current.get("Album",."")...+. |
| 8f40 | 20 20 20 20 20 20 20 73 74 61 74 65 20 3d 20 73 74 61 74 75 73 2e 67 65 74 28 22 73 74 61 74 65 | .......state.=.status.get("state |
| 8f60 | 22 2c 20 22 73 74 6f 70 22 29 00 00 00 31 20 20 20 20 20 20 20 20 65 6c 61 70 73 65 64 20 3d 20 | ",."stop")...1........elapsed.=. |
| 8f80 | 66 6c 6f 61 74 28 73 74 61 74 75 73 2e 67 65 74 28 22 65 6c 61 70 73 65 64 22 2c 20 30 29 29 00 | float(status.get("elapsed",.0)). |
| 8fa0 | 00 00 33 20 20 20 20 20 20 20 20 64 75 72 61 74 69 6f 6e 20 3d 20 66 6c 6f 61 74 28 73 74 61 74 | ..3........duration.=.float(stat |
| 8fc0 | 75 73 2e 67 65 74 28 22 64 75 72 61 74 69 6f 6e 22 2c 20 30 29 29 00 00 00 3d 20 20 20 20 20 20 | us.get("duration",.0))...=...... |
| 8fe0 | 20 20 69 66 20 73 74 61 74 65 20 3d 3d 20 22 70 6c 61 79 22 20 61 6e 64 20 74 69 74 6c 65 20 61 | ..if.state.==."play".and.title.a |
| 9000 | 6e 64 20 74 69 74 6c 65 20 21 3d 20 6c 61 73 74 5f 74 69 74 6c 65 3a 00 00 00 1e 20 20 20 20 20 | nd.title.!=.last_title:......... |
| 9020 | 20 20 20 20 20 20 20 6c 61 73 74 5f 74 69 74 6c 65 20 3d 20 74 69 74 6c 65 00 00 00 20 20 20 20 | .......last_title.=.title....... |
| 9040 | 20 20 20 20 20 20 20 20 20 6c 61 73 74 5f 61 72 74 69 73 74 20 3d 20 61 72 74 69 73 74 00 00 00 | .........last_artist.=.artist... |
| 9060 | 1e 20 20 20 20 20 20 20 20 20 20 20 20 6c 61 73 74 5f 61 6c 62 75 6d 20 3d 20 61 6c 62 75 6d 00 | .............last_album.=.album. |
| 9080 | 00 00 29 20 20 20 20 20 20 20 20 20 20 20 20 6c 61 73 74 5f 73 74 61 72 74 20 3d 20 69 6e 74 28 | ..)............last_start.=.int( |
| 90a0 | 74 69 6d 65 2e 74 69 6d 65 28 29 29 00 00 00 24 20 20 20 20 20 20 20 20 20 20 20 20 6c 61 73 74 | time.time())...$............last |
| 90c0 | 5f 64 75 72 61 74 69 6f 6e 20 3d 20 64 75 72 61 74 69 6f 6e 00 00 00 1d 20 20 20 20 20 20 20 20 | _duration.=.duration............ |
| 90e0 | 20 20 20 20 73 63 72 6f 62 62 6c 65 64 20 3d 20 46 61 6c 73 65 00 00 00 38 20 20 20 20 20 20 20 | ....scrobbled.=.False...8....... |
| 9100 | 20 20 20 20 20 75 70 64 61 74 65 5f 6e 6f 77 5f 70 6c 61 79 69 6e 67 28 73 6b 2c 20 61 72 74 69 | .....update_now_playing(sk,.arti |
| 9120 | 73 74 2c 20 74 69 74 6c 65 2c 20 61 6c 62 75 6d 29 00 00 00 35 20 20 20 20 20 20 20 20 20 20 20 | st,.title,.album)...5........... |
| 9140 | 20 70 72 69 6e 74 28 66 22 4e 6f 77 20 70 6c 61 79 69 6e 67 3a 20 7b 61 72 74 69 73 74 7d 20 2d | .print(f"Now.playing:.{artist}.- |
| 9160 | 20 7b 74 69 74 6c 65 7d 22 29 00 00 00 3e 20 20 20 20 20 20 20 20 69 66 20 28 6e 6f 74 20 73 63 | .{title}")...>........if.(not.sc |
| 9180 | 72 6f 62 62 6c 65 64 20 61 6e 64 20 6c 61 73 74 5f 74 69 74 6c 65 20 61 6e 64 20 6c 61 73 74 5f | robbled.and.last_title.and.last_ |
| 91a0 | 64 75 72 61 74 69 6f 6e 20 61 6e 64 00 00 00 42 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | duration.and...B................ |
| 91c0 | 28 65 6c 61 70 73 65 64 20 3e 3d 20 6c 61 73 74 5f 64 75 72 61 74 69 6f 6e 20 2f 20 32 20 6f 72 | (elapsed.>=.last_duration./.2.or |
| 91e0 | 20 65 6c 61 70 73 65 64 20 3e 3d 20 32 34 30 29 29 3a 00 00 00 49 20 20 20 20 20 20 20 20 20 20 | .elapsed.>=.240)):...I.......... |
| 9200 | 20 20 73 63 72 6f 62 62 6c 65 28 73 6b 2c 20 6c 61 73 74 5f 61 72 74 69 73 74 2c 20 6c 61 73 74 | ..scrobble(sk,.last_artist,.last |
| 9220 | 5f 74 69 74 6c 65 2c 20 6c 61 73 74 5f 61 6c 62 75 6d 2c 20 6c 61 73 74 5f 73 74 61 72 74 29 00 | _title,.last_album,.last_start). |
| 9240 | 00 00 1c 20 20 20 20 20 20 20 20 20 20 20 20 73 63 72 6f 62 62 6c 65 64 20 3d 20 54 72 75 65 00 | ...............scrobbled.=.True. |
| 9260 | 00 00 3d 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 6e 74 28 66 22 53 63 72 6f 62 62 6c 65 64 | ..=............print(f"Scrobbled |
| 9280 | 3a 20 7b 6c 61 73 74 5f 61 72 74 69 73 74 7d 20 2d 20 7b 6c 61 73 74 5f 74 69 74 6c 65 7d 22 29 | :.{last_artist}.-.{last_title}") |
| 92a0 | 00 00 00 23 20 20 20 20 20 20 20 20 6d 70 64 5f 63 6d 64 28 6d 70 64 2c 20 22 69 64 6c 65 20 70 | ...#........mpd_cmd(mpd,."idle.p |
| 92c0 | 6c 61 79 65 72 22 29 00 00 00 00 00 00 00 1a 69 66 20 5f 5f 6e 61 6d 65 5f 5f 20 3d 3d 20 22 5f | layer")........if.__name__.==."_ |
| 92e0 | 5f 6d 61 69 6e 5f 5f 22 3a 00 00 00 0a 20 20 20 20 6d 61 69 6e 28 29 35 81 f5 18 00 00 00 00 00 | _main__":........main()5........ |
| 9300 | 00 00 00 00 00 00 00 84 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 9c | ................................ |
| 9320 | 0f 00 00 00 00 00 00 01 00 00 00 00 00 00 00 35 81 5f d0 00 00 00 1e 00 00 00 20 00 00 00 00 00 | ...............5._.............. |
| 9340 | 00 00 00 00 00 00 1f 00 00 00 01 00 00 00 00 00 00 00 00 ff ff ff ff 00 03 00 00 00 00 00 00 00 | ................................ |
| 9360 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 9380 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 93a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 93c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 93e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 9400 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 9420 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 9440 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 9460 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 9480 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 94a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 69 98 f9 cd 04 01 00 00 00 00 00 | .....................i.......... |
| 94c0 | f5 18 00 00 00 84 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 f5 18 00 00 00 85 00 00 00 00 | ................................ |
| 94e0 | 00 00 00 00 00 00 00 00 f5 18 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 f5 18 | ................................ |
| 9500 | 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 35 81 f5 18 00 00 00 00 00 00 00 00 00 00 00 00 | ................5............... |
| 9520 | 00 00 00 00 00 00 00 00 84 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 9540 | 9c 0f 00 00 00 00 00 00 35 81 5f d0 00 00 00 1f 00 00 00 21 00 00 00 00 00 00 00 00 00 00 00 20 | ........5._........!............ |
| 9560 | 00 00 00 01 00 00 00 00 00 00 00 00 ff ff ff ff 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 9580 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 95a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 95c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 95e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 9600 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 9620 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 9640 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 9660 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 9680 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 96a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 96c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 69 98 f9 d0 04 01 00 00 00 00 00 f5 18 00 00 00 00 00 | ..............i................. |
| 96e0 | 00 00 02 00 00 00 00 00 00 00 85 00 00 00 16 23 21 2f 75 73 72 2f 62 69 6e 2f 65 6e 76 20 70 79 | ...............#!/usr/bin/env.py |
| 9700 | 74 68 6f 6e 33 00 00 00 0e 69 6d 70 6f 72 74 20 68 61 73 68 6c 69 62 00 00 00 0b 69 6d 70 6f 72 | thon3....import.hashlib....impor |
| 9720 | 74 20 74 69 6d 65 00 00 00 0d 69 6d 70 6f 72 74 20 73 6f 63 6b 65 74 00 00 00 0f 69 6d 70 6f 72 | t.time....import.socket....impor |
| 9740 | 74 20 72 65 71 75 65 73 74 73 00 00 00 00 00 00 00 2c 41 50 49 5f 4b 45 59 20 3d 20 22 39 34 32 | t.requests.......,API_KEY.=."942 |
| 9760 | 33 65 33 34 30 33 37 31 61 35 39 63 31 33 38 34 62 34 34 38 63 34 66 62 39 61 34 37 38 22 00 00 | 3e340371a59c1384b448c4fb9a478".. |
| 9780 | 00 2f 41 50 49 5f 53 45 43 52 45 54 20 3d 20 22 38 35 38 64 35 61 38 33 63 38 37 35 30 62 65 35 | ./API_SECRET.=."858d5a83c8750be5 |
| 97a0 | 64 64 65 30 30 30 36 65 64 35 38 61 33 61 35 38 22 00 00 00 15 55 53 45 52 4e 41 4d 45 20 3d 20 | dde0006ed58a3a58"....USERNAME.=. |
| 97c0 | 22 56 65 74 74 65 72 69 61 22 00 00 00 1b 50 41 53 53 57 4f 52 44 20 3d 20 22 32 53 30 79 54 70 | "Vetteria"....PASSWORD.=."2S0yTp |
| 97e0 | 55 34 58 35 51 36 26 68 22 00 00 00 16 4d 50 44 5f 48 4f 53 54 20 3d 20 22 6c 6f 63 61 6c 68 6f | U4X5Q6&h"....MPD_HOST.=."localho |
| 9800 | 73 74 22 00 00 00 0f 4d 50 44 5f 50 4f 52 54 20 3d 20 36 36 30 30 00 00 00 53 50 52 4f 58 49 45 | st"....MPD_PORT.=.6600...SPROXIE |
| 9820 | 53 20 3d 20 7b 22 68 74 74 70 22 3a 20 22 73 6f 63 6b 73 35 3a 2f 2f 31 32 37 2e 30 2e 30 2e 31 | S.=.{"http":."socks5://127.0.0.1 |
| 9840 | 3a 36 35 30 30 30 22 2c 20 22 68 74 74 70 73 22 3a 20 22 73 6f 63 6b 73 35 3a 2f 2f 31 32 37 2e | :65000",."https":."socks5://127. |
| 9860 | 30 2e 30 2e 31 3a 36 35 30 30 30 22 7d 00 00 00 00 00 00 00 0b 64 65 66 20 6d 64 35 28 73 29 3a | 0.0.1:65000"}........def.md5(s): |
| 9880 | 00 00 00 2e 20 20 20 20 72 65 74 75 72 6e 20 68 61 73 68 6c 69 62 2e 6d 64 35 28 73 2e 65 6e 63 | ........return.hashlib.md5(s.enc |
| 98a0 | 6f 64 65 28 29 29 2e 68 65 78 64 69 67 65 73 74 28 29 00 00 00 00 00 00 00 11 64 65 66 20 73 69 | ode()).hexdigest()........def.si |
| 98c0 | 67 6e 28 70 61 72 61 6d 73 29 3a 00 00 00 20 20 20 20 20 6b 65 79 73 20 3d 20 73 6f 72 74 65 64 | gn(params):........keys.=.sorted |
| 98e0 | 28 70 61 72 61 6d 73 2e 6b 65 79 73 28 29 29 00 00 00 2e 20 20 20 20 73 69 67 20 3d 20 22 22 2e | (params.keys())........sig.=."". |
| 9900 | 6a 6f 69 6e 28 6b 20 2b 20 70 61 72 61 6d 73 5b 6b 5d 20 66 6f 72 20 6b 20 69 6e 20 6b 65 79 73 | join(k.+.params[k].for.k.in.keys |
| 9920 | 29 00 00 00 15 20 20 20 20 73 69 67 20 2b 3d 20 41 50 49 5f 53 45 43 52 45 54 00 00 00 13 20 20 | )........sig.+=.API_SECRET...... |
| 9940 | 20 20 72 65 74 75 72 6e 20 6d 64 35 28 73 69 67 29 00 00 00 00 00 00 00 16 64 65 66 20 67 65 74 | ..return.md5(sig)........def.get |
| 9960 | 5f 73 65 73 73 69 6f 6e 5f 6b 65 79 28 29 3a 00 00 00 4b 20 20 20 20 74 6f 6b 65 6e 5f 72 65 73 | _session_key():...K....token_res |
| 9980 | 20 3d 20 72 65 71 75 65 73 74 73 2e 67 65 74 28 22 68 74 74 70 73 3a 2f 2f 77 73 2e 61 75 64 69 | .=.requests.get("https://ws.audi |
| 99a0 | 6f 73 63 72 6f 62 62 6c 65 72 2e 63 6f 6d 2f 32 2e 30 2f 22 2c 20 70 61 72 61 6d 73 3d 7b 00 00 | oscrobbler.com/2.0/",.params={.. |
| 99c0 | 00 22 20 20 20 20 20 20 20 20 22 6d 65 74 68 6f 64 22 3a 20 22 61 75 74 68 2e 67 65 74 54 6f 6b | ."........"method":."auth.getTok |
| 99e0 | 65 6e 22 2c 00 00 00 1b 20 20 20 20 20 20 20 20 22 61 70 69 5f 6b 65 79 22 3a 20 41 50 49 5f 4b | en",............"api_key":.API_K |
| 9a00 | 45 59 2c 00 00 00 18 20 20 20 20 20 20 20 20 22 66 6f 72 6d 61 74 22 3a 20 22 6a 73 6f 6e 22 00 | EY,............"format":."json". |
| 9a20 | 00 00 17 20 20 20 20 7d 2c 20 70 72 6f 78 69 65 73 3d 50 52 4f 58 49 45 53 29 00 00 00 25 20 20 | .......},.proxies=PROXIES)...%.. |
| 9a40 | 20 20 74 6f 6b 65 6e 20 3d 20 74 6f 6b 65 6e 5f 72 65 73 2e 6a 73 6f 6e 28 29 5b 22 74 6f 6b 65 | ..token.=.token_res.json()["toke |
| 9a60 | 6e 22 5d 00 00 00 0e 20 20 20 20 70 61 72 61 6d 73 20 3d 20 7b 00 00 00 2a 20 20 20 20 20 20 20 | n"]........params.=.{...*....... |
| 9a80 | 20 22 6d 65 74 68 6f 64 22 3a 20 22 61 75 74 68 2e 67 65 74 4d 6f 62 69 6c 65 53 65 73 73 69 6f | ."method":."auth.getMobileSessio |
| 9aa0 | 6e 22 2c 00 00 00 1d 20 20 20 20 20 20 20 20 22 75 73 65 72 6e 61 6d 65 22 3a 20 55 53 45 52 4e | n",............"username":.USERN |
| 9ac0 | 41 4d 45 2c 00 00 00 1d 20 20 20 20 20 20 20 20 22 70 61 73 73 77 6f 72 64 22 3a 20 50 41 53 53 | AME,............"password":.PASS |
| 9ae0 | 57 4f 52 44 2c 00 00 00 1b 20 20 20 20 20 20 20 20 22 61 70 69 5f 6b 65 79 22 3a 20 41 50 49 5f | WORD,............"api_key":.API_ |
| 9b00 | 4b 45 59 2c 00 00 00 05 20 20 20 20 7d 00 00 00 24 20 20 20 20 70 61 72 61 6d 73 5b 22 61 70 69 | KEY,........}...$....params["api |
| 9b20 | 5f 73 69 67 22 5d 20 3d 20 73 69 67 6e 28 70 61 72 61 6d 73 29 00 00 00 1d 20 20 20 20 70 61 72 | _sig"].=.sign(params)........par |
| 9b40 | 61 6d 73 5b 22 66 6f 72 6d 61 74 22 5d 20 3d 20 22 6a 73 6f 6e 22 00 00 00 5b 20 20 20 20 72 65 | ams["format"].=."json"...[....re |
| 9b60 | 73 20 3d 20 72 65 71 75 65 73 74 73 2e 70 6f 73 74 28 22 68 74 74 70 73 3a 2f 2f 77 73 2e 61 75 | s.=.requests.post("https://ws.au |
| 9b80 | 64 69 6f 73 63 72 6f 62 62 6c 65 72 2e 63 6f 6d 2f 32 2e 30 2f 22 2c 20 64 61 74 61 3d 70 61 72 | dioscrobbler.com/2.0/",.data=par |
| 9ba0 | 61 6d 73 2c 20 70 72 6f 78 69 65 73 3d 50 52 4f 58 49 45 53 29 00 00 00 28 20 20 20 20 70 72 69 | ams,.proxies=PROXIES)...(....pri |
| 9bc0 | 6e 74 28 22 53 65 73 73 69 6f 6e 20 72 65 73 70 6f 6e 73 65 3a 22 2c 20 72 65 73 2e 74 65 78 74 | nt("Session.response:",.res.text |
| 9be0 | 29 00 00 00 27 20 20 20 20 72 65 74 75 72 6e 20 72 65 73 2e 6a 73 6f 6e 28 29 5b 22 73 65 73 73 | )...'....return.res.json()["sess |
| 9c00 | 69 6f 6e 22 5d 5b 22 6b 65 79 22 5d 00 00 00 00 00 00 00 32 64 65 66 20 73 63 72 6f 62 62 6c 65 | ion"]["key"].......2def.scrobble |
| 9c20 | 28 73 6b 2c 20 61 72 74 69 73 74 2c 20 74 69 74 6c 65 2c 20 61 6c 62 75 6d 2c 20 74 69 6d 65 73 | (sk,.artist,.title,.album,.times |
| 9c40 | 74 61 6d 70 29 3a 00 00 00 0e 20 20 20 20 70 61 72 61 6d 73 20 3d 20 7b 00 00 00 23 20 20 20 20 | tamp):........params.=.{...#.... |
| 9c60 | 20 20 20 20 22 6d 65 74 68 6f 64 22 3a 20 22 74 72 61 63 6b 2e 73 63 72 6f 62 62 6c 65 22 2c 00 | ...."method":."track.scrobble",. |
| 9c80 | 00 00 1c 20 20 20 20 20 20 20 20 22 61 72 74 69 73 74 5b 30 5d 22 3a 20 61 72 74 69 73 74 2c 00 | ..........."artist[0]":.artist,. |
| 9ca0 | 00 00 1a 20 20 20 20 20 20 20 20 22 74 72 61 63 6b 5b 30 5d 22 3a 20 74 69 74 6c 65 2c 00 00 00 | ..........."track[0]":.title,... |
| 9cc0 | 1a 20 20 20 20 20 20 20 20 22 61 6c 62 75 6d 5b 30 5d 22 3a 20 61 6c 62 75 6d 2c 00 00 00 27 20 | ........."album[0]":.album,...'. |
| 9ce0 | 20 20 20 20 20 20 20 22 74 69 6d 65 73 74 61 6d 70 5b 30 5d 22 3a 20 73 74 72 28 74 69 6d 65 73 | ......."timestamp[0]":.str(times |
| 9d00 | 74 61 6d 70 29 2c 00 00 00 1b 20 20 20 20 20 20 20 20 22 61 70 69 5f 6b 65 79 22 3a 20 41 50 49 | tamp),............"api_key":.API |
| 9d20 | 5f 4b 45 59 2c 00 00 00 11 20 20 20 20 20 20 20 20 22 73 6b 22 3a 20 73 6b 2c 00 00 00 05 20 20 | _KEY,............"sk":.sk,...... |
| 9d40 | 20 20 7d 00 00 00 24 20 20 20 20 70 61 72 61 6d 73 5b 22 61 70 69 5f 73 69 67 22 5d 20 3d 20 73 | ..}...$....params["api_sig"].=.s |
| 9d60 | 69 67 6e 28 70 61 72 61 6d 73 29 00 00 00 1d 20 20 20 20 70 61 72 61 6d 73 5b 22 66 6f 72 6d 61 | ign(params)........params["forma |
| 9d80 | 74 22 5d 20 3d 20 22 6a 73 6f 6e 22 00 00 00 55 20 20 20 20 72 65 71 75 65 73 74 73 2e 70 6f 73 | t"].=."json"...U....requests.pos |
| 9da0 | 74 28 22 68 74 74 70 73 3a 2f 2f 77 73 2e 61 75 64 69 6f 73 63 72 6f 62 62 6c 65 72 2e 63 6f 6d | t("https://ws.audioscrobbler.com |
| 9dc0 | 2f 32 2e 30 2f 22 2c 20 64 61 74 61 3d 70 61 72 61 6d 73 2c 20 70 72 6f 78 69 65 73 3d 50 52 4f | /2.0/",.data=params,.proxies=PRO |
| 9de0 | 58 49 45 53 29 00 00 00 00 00 00 00 31 64 65 66 20 75 70 64 61 74 65 5f 6e 6f 77 5f 70 6c 61 79 | XIES).......1def.update_now_play |
| 9e00 | 69 6e 67 28 73 6b 2c 20 61 72 74 69 73 74 2c 20 74 69 74 6c 65 2c 20 61 6c 62 75 6d 29 3a 00 00 | ing(sk,.artist,.title,.album):.. |
| 9e20 | 00 0e 20 20 20 20 70 61 72 61 6d 73 20 3d 20 7b 00 00 00 2b 20 20 20 20 20 20 20 20 22 6d 65 74 | ......params.=.{...+........"met |
| 9e40 | 68 6f 64 22 3a 20 22 74 72 61 63 6b 2e 75 70 64 61 74 65 4e 6f 77 50 6c 61 79 69 6e 67 22 2c 00 | hod":."track.updateNowPlaying",. |
| 9e60 | 00 00 19 20 20 20 20 20 20 20 20 22 61 72 74 69 73 74 22 3a 20 61 72 74 69 73 74 2c 00 00 00 17 | ..........."artist":.artist,.... |
| 9e80 | 20 20 20 20 20 20 20 20 22 74 72 61 63 6b 22 3a 20 74 69 74 6c 65 2c 00 00 00 17 20 20 20 20 20 | ........"track":.title,......... |
| 9ea0 | 20 20 20 22 61 6c 62 75 6d 22 3a 20 61 6c 62 75 6d 2c 00 00 00 1b 20 20 20 20 20 20 20 20 22 61 | ..."album":.album,............"a |
| 9ec0 | 70 69 5f 6b 65 79 22 3a 20 41 50 49 5f 4b 45 59 2c 00 00 00 11 20 20 20 20 20 20 20 20 22 73 6b | pi_key":.API_KEY,............"sk |
| 9ee0 | 22 3a 20 73 6b 2c 00 00 00 05 20 20 20 20 7d 00 00 00 24 20 20 20 20 70 61 72 61 6d 73 5b 22 61 | ":.sk,........}...$....params["a |
| 9f00 | 70 69 5f 73 69 67 22 5d 20 3d 20 73 69 67 6e 28 70 61 72 61 6d 73 29 00 00 00 1d 20 20 20 20 70 | pi_sig"].=.sign(params)........p |
| 9f20 | 61 72 61 6d 73 5b 22 66 6f 72 6d 61 74 22 5d 20 3d 20 22 6a 73 6f 6e 22 00 00 00 55 20 20 20 20 | arams["format"].=."json"...U.... |
| 9f40 | 72 65 71 75 65 73 74 73 2e 70 6f 73 74 28 22 68 74 74 70 73 3a 2f 2f 77 73 2e 61 75 64 69 6f 73 | requests.post("https://ws.audios |
| 9f60 | 63 72 6f 62 62 6c 65 72 2e 63 6f 6d 2f 32 2e 30 2f 22 2c 20 64 61 74 61 3d 70 61 72 61 6d 73 2c | crobbler.com/2.0/",.data=params, |
| 9f80 | 20 70 72 6f 78 69 65 73 3d 50 52 4f 58 49 45 53 29 00 00 00 00 00 00 00 12 64 65 66 20 6d 70 64 | .proxies=PROXIES)........def.mpd |
| 9fa0 | 5f 63 6f 6e 6e 65 63 74 28 29 3a 00 00 00 17 20 20 20 20 73 20 3d 20 73 6f 63 6b 65 74 2e 73 6f | _connect():........s.=.socket.so |
| 9fc0 | 63 6b 65 74 28 29 00 00 00 23 20 20 20 20 73 2e 63 6f 6e 6e 65 63 74 28 28 4d 50 44 5f 48 4f 53 | cket()...#....s.connect((MPD_HOS |
| 9fe0 | 54 2c 20 4d 50 44 5f 50 4f 52 54 29 29 00 00 00 10 20 20 20 20 73 2e 72 65 63 76 28 31 30 32 34 | T,.MPD_PORT))........s.recv(1024 |
| a000 | 29 00 00 00 0c 20 20 20 20 72 65 74 75 72 6e 20 73 00 00 00 00 00 00 00 14 64 65 66 20 6d 70 64 | )........return.s........def.mpd |
| a020 | 5f 63 6d 64 28 73 2c 20 63 6d 64 29 3a 00 00 00 24 20 20 20 20 73 2e 73 65 6e 64 61 6c 6c 28 28 | _cmd(s,.cmd):...$....s.sendall(( |
| a040 | 63 6d 64 20 2b 20 22 5c 6e 22 29 2e 65 6e 63 6f 64 65 28 29 29 00 00 00 0e 20 20 20 20 72 65 73 | cmd.+."\n").encode())........res |
| a060 | 70 20 3d 20 62 22 22 00 00 00 0f 20 20 20 20 77 68 69 6c 65 20 54 72 75 65 3a 00 00 00 1c 20 20 | p.=.b""........while.True:...... |
| a080 | 20 20 20 20 20 20 63 68 75 6e 6b 20 3d 20 73 2e 72 65 63 76 28 34 30 39 36 29 00 00 00 15 20 20 | ......chunk.=.s.recv(4096)...... |
| a0a0 | 20 20 20 20 20 20 72 65 73 70 20 2b 3d 20 63 68 75 6e 6b 00 00 00 2d 20 20 20 20 20 20 20 20 69 | ......resp.+=.chunk...-........i |
| a0c0 | 66 20 62 22 4f 4b 5c 6e 22 20 69 6e 20 72 65 73 70 20 6f 72 20 62 22 41 43 4b 22 20 69 6e 20 72 | f.b"OK\n".in.resp.or.b"ACK".in.r |
| a0e0 | 65 73 70 3a 00 00 00 11 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b 00 00 00 18 20 20 20 | esp:................break....... |
| a100 | 20 72 65 74 75 72 6e 20 72 65 73 70 2e 64 65 63 6f 64 65 28 29 00 00 00 00 00 00 00 16 64 65 66 | .return.resp.decode()........def |
| a120 | 20 70 61 72 73 65 5f 73 74 61 74 75 73 28 72 61 77 29 3a 00 00 00 0d 20 20 20 20 64 61 74 61 20 | .parse_status(raw):........data. |
| a140 | 3d 20 7b 7d 00 00 00 21 20 20 20 20 66 6f 72 20 6c 69 6e 65 20 69 6e 20 72 61 77 2e 73 70 6c 69 | =.{}...!....for.line.in.raw.spli |
| a160 | 74 6c 69 6e 65 73 28 29 3a 00 00 00 17 20 20 20 20 20 20 20 20 69 66 20 22 3a 22 20 69 6e 20 6c | tlines():............if.":".in.l |
| a180 | 69 6e 65 3a 00 00 00 25 20 20 20 20 20 20 20 20 20 20 20 20 6b 2c 20 76 20 3d 20 6c 69 6e 65 2e | ine:...%............k,.v.=.line. |
| a1a0 | 73 70 6c 69 74 28 22 3a 22 2c 20 31 29 00 00 00 27 20 20 20 20 20 20 20 20 20 20 20 20 64 61 74 | split(":",.1)...'............dat |
| a1c0 | 61 5b 6b 2e 73 74 72 69 70 28 29 5d 20 3d 20 76 2e 73 74 72 69 70 28 29 00 00 00 0f 20 20 20 20 | a[k.strip()].=.v.strip()........ |
| a1e0 | 72 65 74 75 72 6e 20 64 61 74 61 00 00 00 00 00 00 00 0b 64 65 66 20 6d 61 69 6e 28 29 3a 00 00 | return.data........def.main():.. |
| a200 | 00 1a 20 20 20 20 73 6b 20 3d 20 67 65 74 5f 73 65 73 73 69 6f 6e 5f 6b 65 79 28 29 00 00 00 29 | ......sk.=.get_session_key()...) |
| a220 | 20 20 20 20 70 72 69 6e 74 28 66 22 41 75 74 68 65 6e 74 69 63 61 74 65 64 20 61 73 20 7b 55 53 | ....print(f"Authenticated.as.{US |
| a240 | 45 52 4e 41 4d 45 7d 22 29 00 00 00 17 20 20 20 20 6d 70 64 20 3d 20 6d 70 64 5f 63 6f 6e 6e 65 | ERNAME}")........mpd.=.mpd_conne |
| a260 | 63 74 28 29 00 00 00 15 20 20 20 20 6c 61 73 74 5f 74 69 74 6c 65 20 3d 20 4e 6f 6e 65 00 00 00 | ct()........last_title.=.None... |
| a280 | 15 20 20 20 20 6c 61 73 74 5f 73 74 61 72 74 20 3d 20 4e 6f 6e 65 00 00 00 18 20 20 20 20 6c 61 | .....last_start.=.None........la |
| a2a0 | 73 74 5f 64 75 72 61 74 69 6f 6e 20 3d 20 4e 6f 6e 65 00 00 00 16 20 20 20 20 6c 61 73 74 5f 61 | st_duration.=.None........last_a |
| a2c0 | 72 74 69 73 74 20 3d 20 4e 6f 6e 65 00 00 00 15 20 20 20 20 6c 61 73 74 5f 61 6c 62 75 6d 20 3d | rtist.=.None........last_album.= |
| a2e0 | 20 4e 6f 6e 65 00 00 00 15 20 20 20 20 73 63 72 6f 62 62 6c 65 64 20 3d 20 46 61 6c 73 65 00 00 | .None........scrobbled.=.False.. |
| a300 | 00 0f 20 20 20 20 77 68 69 6c 65 20 54 72 75 65 3a 00 00 00 2b 20 20 20 20 20 20 20 20 73 74 61 | ......while.True:...+........sta |
| a320 | 74 75 73 5f 72 61 77 20 3d 20 6d 70 64 5f 63 6d 64 28 6d 70 64 2c 20 22 73 74 61 74 75 73 22 29 | tus_raw.=.mpd_cmd(mpd,."status") |
| a340 | 00 00 00 31 20 20 20 20 20 20 20 20 63 75 72 72 65 6e 74 5f 72 61 77 20 3d 20 6d 70 64 5f 63 6d | ...1........current_raw.=.mpd_cm |
| a360 | 64 28 6d 70 64 2c 20 22 63 75 72 72 65 6e 74 73 6f 6e 67 22 29 00 00 00 29 20 20 20 20 20 20 20 | d(mpd,."currentsong")...)....... |
| a380 | 20 73 74 61 74 75 73 20 3d 20 70 61 72 73 65 5f 73 74 61 74 75 73 28 73 74 61 74 75 73 5f 72 61 | .status.=.parse_status(status_ra |
| a3a0 | 77 29 00 00 00 2b 20 20 20 20 20 20 20 20 63 75 72 72 65 6e 74 20 3d 20 70 61 72 73 65 5f 73 74 | w)...+........current.=.parse_st |
| a3c0 | 61 74 75 73 28 63 75 72 72 65 6e 74 5f 72 61 77 29 00 00 00 28 20 20 20 20 20 20 20 20 74 69 74 | atus(current_raw)...(........tit |
| a3e0 | 6c 65 20 3d 20 63 75 72 72 65 6e 74 2e 67 65 74 28 22 54 69 74 6c 65 22 2c 20 22 22 29 00 00 00 | le.=.current.get("Title",."")... |
| a400 | 2a 20 20 20 20 20 20 20 20 61 72 74 69 73 74 20 3d 20 63 75 72 72 65 6e 74 2e 67 65 74 28 22 41 | *........artist.=.current.get("A |
| a420 | 72 74 69 73 74 22 2c 20 22 22 29 00 00 00 28 20 20 20 20 20 20 20 20 61 6c 62 75 6d 20 3d 20 63 | rtist",."")...(........album.=.c |
| a440 | 75 72 72 65 6e 74 2e 67 65 74 28 22 41 6c 62 75 6d 22 2c 20 22 22 29 00 00 00 2b 20 20 20 20 20 | urrent.get("Album",."")...+..... |
| a460 | 20 20 20 73 74 61 74 65 20 3d 20 73 74 61 74 75 73 2e 67 65 74 28 22 73 74 61 74 65 22 2c 20 22 | ...state.=.status.get("state",." |
| a480 | 73 74 6f 70 22 29 00 00 00 31 20 20 20 20 20 20 20 20 65 6c 61 70 73 65 64 20 3d 20 66 6c 6f 61 | stop")...1........elapsed.=.floa |
| a4a0 | 74 28 73 74 61 74 75 73 2e 67 65 74 28 22 65 6c 61 70 73 65 64 22 2c 20 30 29 29 00 00 00 33 20 | t(status.get("elapsed",.0))...3. |
| a4c0 | 20 20 20 20 20 20 20 64 75 72 61 74 69 6f 6e 20 3d 20 66 6c 6f 61 74 28 73 74 61 74 75 73 2e 67 | .......duration.=.float(status.g |
| a4e0 | 65 74 28 22 64 75 72 61 74 69 6f 6e 22 2c 20 30 29 29 00 00 00 3d 20 20 20 20 20 20 20 20 69 66 | et("duration",.0))...=........if |
| a500 | 20 73 74 61 74 65 20 3d 3d 20 22 70 6c 61 79 22 20 61 6e 64 20 74 69 74 6c 65 20 61 6e 64 20 74 | .state.==."play".and.title.and.t |
| a520 | 69 74 6c 65 20 21 3d 20 6c 61 73 74 5f 74 69 74 6c 65 3a 00 00 00 1e 20 20 20 20 20 20 20 20 20 | itle.!=.last_title:............. |
| a540 | 20 20 20 6c 61 73 74 5f 74 69 74 6c 65 20 3d 20 74 69 74 6c 65 00 00 00 20 20 20 20 20 20 20 20 | ...last_title.=.title........... |
| a560 | 20 20 20 20 20 6c 61 73 74 5f 61 72 74 69 73 74 20 3d 20 61 72 74 69 73 74 00 00 00 1e 20 20 20 | .....last_artist.=.artist....... |
| a580 | 20 20 20 20 20 20 20 20 20 6c 61 73 74 5f 61 6c 62 75 6d 20 3d 20 61 6c 62 75 6d 00 00 00 29 20 | .........last_album.=.album...). |
| a5a0 | 20 20 20 20 20 20 20 20 20 20 20 6c 61 73 74 5f 73 74 61 72 74 20 3d 20 69 6e 74 28 74 69 6d 65 | ...........last_start.=.int(time |
| a5c0 | 2e 74 69 6d 65 28 29 29 00 00 00 24 20 20 20 20 20 20 20 20 20 20 20 20 6c 61 73 74 5f 64 75 72 | .time())...$............last_dur |
| a5e0 | 61 74 69 6f 6e 20 3d 20 64 75 72 61 74 69 6f 6e 00 00 00 1d 20 20 20 20 20 20 20 20 20 20 20 20 | ation.=.duration................ |
| a600 | 73 63 72 6f 62 62 6c 65 64 20 3d 20 46 61 6c 73 65 00 00 00 38 20 20 20 20 20 20 20 20 20 20 20 | scrobbled.=.False...8........... |
| a620 | 20 75 70 64 61 74 65 5f 6e 6f 77 5f 70 6c 61 79 69 6e 67 28 73 6b 2c 20 61 72 74 69 73 74 2c 20 | .update_now_playing(sk,.artist,. |
| a640 | 74 69 74 6c 65 2c 20 61 6c 62 75 6d 29 00 00 00 35 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 | title,.album)...5............pri |
| a660 | 6e 74 28 66 22 4e 6f 77 20 70 6c 61 79 69 6e 67 3a 20 7b 61 72 74 69 73 74 7d 20 2d 20 7b 74 69 | nt(f"Now.playing:.{artist}.-.{ti |
| a680 | 74 6c 65 7d 22 29 00 00 00 3e 20 20 20 20 20 20 20 20 69 66 20 28 6e 6f 74 20 73 63 72 6f 62 62 | tle}")...>........if.(not.scrobb |
| a6a0 | 6c 65 64 20 61 6e 64 20 6c 61 73 74 5f 74 69 74 6c 65 20 61 6e 64 20 6c 61 73 74 5f 64 75 72 61 | led.and.last_title.and.last_dura |
| a6c0 | 74 69 6f 6e 20 61 6e 64 00 00 00 42 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 6c 61 | tion.and...B................(ela |
| a6e0 | 70 73 65 64 20 3e 3d 20 6c 61 73 74 5f 64 75 72 61 74 69 6f 6e 20 2f 20 32 20 6f 72 20 65 6c 61 | psed.>=.last_duration./.2.or.ela |
| a700 | 70 73 65 64 20 3e 3d 20 32 34 30 29 29 3a 00 00 00 49 20 20 20 20 20 20 20 20 20 20 20 20 73 63 | psed.>=.240)):...I............sc |
| a720 | 72 6f 62 62 6c 65 28 73 6b 2c 20 6c 61 73 74 5f 61 72 74 69 73 74 2c 20 6c 61 73 74 5f 74 69 74 | robble(sk,.last_artist,.last_tit |
| a740 | 6c 65 2c 20 6c 61 73 74 5f 61 6c 62 75 6d 2c 20 6c 61 73 74 5f 73 74 61 72 74 29 00 00 00 1c 20 | le,.last_album,.last_start)..... |
| a760 | 20 20 20 20 20 20 20 20 20 20 20 73 63 72 6f 62 62 6c 65 64 20 3d 20 54 72 75 65 00 00 00 3d 20 | ...........scrobbled.=.True...=. |
| a780 | 20 20 20 20 20 20 20 20 20 20 20 70 72 69 6e 74 28 66 22 53 63 72 6f 62 62 6c 65 64 3a 20 7b 6c | ...........print(f"Scrobbled:.{l |
| a7a0 | 61 73 74 5f 61 72 74 69 73 74 7d 20 2d 20 7b 6c 61 73 74 5f 74 69 74 6c 65 7d 22 29 00 00 00 23 | ast_artist}.-.{last_title}")...# |
| a7c0 | 20 20 20 20 20 20 20 20 6d 70 64 5f 63 6d 64 28 6d 70 64 2c 20 22 69 64 6c 65 20 70 6c 61 79 65 | ........mpd_cmd(mpd,."idle.playe |
| a7e0 | 72 22 29 00 00 00 00 00 00 00 1a 69 66 20 5f 5f 6e 61 6d 65 5f 5f 20 3d 3d 20 22 5f 5f 6d 61 69 | r")........if.__name__.==."__mai |
| a800 | 6e 5f 5f 22 3a 00 00 00 0a 20 20 20 20 6d 61 69 6e 28 29 00 00 00 00 35 81 f5 18 00 00 00 00 00 | n__":........main()....5........ |
| a820 | 00 00 00 00 00 00 00 85 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 9d | ................................ |
| a840 | 0f 00 00 00 00 00 00 01 00 00 00 00 00 00 00 35 81 5f d0 00 00 00 20 00 00 00 24 00 00 00 00 00 | ...............5._........$..... |
| a860 | 00 00 00 00 00 00 21 00 00 00 01 00 00 00 00 00 00 00 00 ff ff ff ff 00 03 00 00 00 00 00 00 00 | ......!......................... |
| a880 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| a8a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| a8c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| a8e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| a900 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| a920 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| a940 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| a960 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| a980 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| a9a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| a9c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 69 98 f9 d1 04 01 00 00 00 19 00 | .....................i.......... |
| a9e0 | f5 18 00 00 00 84 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 f5 18 00 00 00 85 00 00 00 00 | ................................ |
| aa00 | 00 00 00 00 00 00 00 00 f5 18 00 00 00 6e 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 0a 20 20 | .............n.................. |
| aa20 | 20 20 20 20 20 20 61 6c f5 18 00 00 00 6f 00 00 00 00 00 00 00 00 00 00 00 00 f5 18 00 00 00 00 | ......al.....o.................. |
| aa40 | 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 f5 18 00 00 00 01 00 00 00 00 00 00 00 00 00 00 | ................................ |
| aa60 | 00 00 35 81 f5 18 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 6e 00 00 00 0a 00 | ..5.......................n..... |
| aa80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0c 00 00 00 00 00 00 f5 18 00 00 00 00 | ................................ |
| aaa0 | 6e 00 00 00 0a 00 00 00 00 00 00 00 00 00 00 00 16 00 00 00 00 00 00 00 00 0c 00 00 00 00 00 00 | n............................... |
| aac0 | 00 00 00 00 00 00 00 00 9c 03 00 00 00 00 00 00 35 81 5f d0 00 00 00 21 00 00 00 25 00 00 00 23 | ................5._....!...%...# |
| aae0 | 00 00 00 00 00 00 00 24 00 00 00 01 00 00 00 04 00 00 00 00 ff ff ff ff 00 01 00 00 00 00 00 00 | .......$........................ |
| ab00 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| ab20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| ab40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| ab60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| ab80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| aba0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| abc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| abe0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| ac00 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| ac20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| ac40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 69 98 fd 04 04 01 00 00 00 00 | ......................i......... |
| ac60 | 00 f5 18 00 00 00 00 00 00 00 02 00 00 00 00 00 00 00 85 00 00 00 16 23 21 2f 75 73 72 2f 62 69 | .......................#!/usr/bi |
| ac80 | 6e 2f 65 6e 76 20 70 79 74 68 6f 6e 33 00 00 00 0e 69 6d 70 6f 72 74 20 68 61 73 68 6c 69 62 00 | n/env.python3....import.hashlib. |
| aca0 | 00 00 0b 69 6d 70 6f 72 74 20 74 69 6d 65 00 00 00 0d 69 6d 70 6f 72 74 20 73 6f 63 6b 65 74 00 | ...import.time....import.socket. |
| acc0 | 00 00 0f 69 6d 70 6f 72 74 20 72 65 71 75 65 73 74 73 00 00 00 00 00 00 00 2c 41 50 49 5f 4b 45 | ...import.requests.......,API_KE |
| ace0 | 59 20 3d 20 22 39 34 32 33 65 33 34 30 33 37 31 61 35 39 63 31 33 38 34 62 34 34 38 63 34 66 62 | Y.=."9423e340371a59c1384b448c4fb |
| ad00 | 39 61 34 37 38 22 00 00 00 2f 41 50 49 5f 53 45 43 52 45 54 20 3d 20 22 38 35 38 64 35 61 38 33 | 9a478".../API_SECRET.=."858d5a83 |
| ad20 | 63 38 37 35 30 62 65 35 64 64 65 30 30 30 36 65 64 35 38 61 33 61 35 38 22 00 00 00 15 55 53 45 | c8750be5dde0006ed58a3a58"....USE |
| ad40 | 52 4e 41 4d 45 20 3d 20 22 56 65 74 74 65 72 69 61 22 00 00 00 1b 50 41 53 53 57 4f 52 44 20 3d | RNAME.=."Vetteria"....PASSWORD.= |
| ad60 | 20 22 32 53 30 79 54 70 55 34 58 35 51 36 26 68 22 00 00 00 16 4d 50 44 5f 48 4f 53 54 20 3d 20 | ."2S0yTpU4X5Q6&h"....MPD_HOST.=. |
| ad80 | 22 6c 6f 63 61 6c 68 6f 73 74 22 00 00 00 0f 4d 50 44 5f 50 4f 52 54 20 3d 20 36 36 30 30 00 00 | "localhost"....MPD_PORT.=.6600.. |
| ada0 | 00 53 50 52 4f 58 49 45 53 20 3d 20 7b 22 68 74 74 70 22 3a 20 22 73 6f 63 6b 73 35 3a 2f 2f 31 | .SPROXIES.=.{"http":."socks5://1 |
| adc0 | 32 37 2e 30 2e 30 2e 31 3a 36 35 30 30 30 22 2c 20 22 68 74 74 70 73 22 3a 20 22 73 6f 63 6b 73 | 27.0.0.1:65000",."https":."socks |
| ade0 | 35 3a 2f 2f 31 32 37 2e 30 2e 30 2e 31 3a 36 35 30 30 30 22 7d 00 00 00 00 00 00 00 0b 64 65 66 | 5://127.0.0.1:65000"}........def |
| ae00 | 20 6d 64 35 28 73 29 3a 00 00 00 2e 20 20 20 20 72 65 74 75 72 6e 20 68 61 73 68 6c 69 62 2e 6d | .md5(s):........return.hashlib.m |
| ae20 | 64 35 28 73 2e 65 6e 63 6f 64 65 28 29 29 2e 68 65 78 64 69 67 65 73 74 28 29 00 00 00 00 00 00 | d5(s.encode()).hexdigest()...... |
| ae40 | 00 11 64 65 66 20 73 69 67 6e 28 70 61 72 61 6d 73 29 3a 00 00 00 20 20 20 20 20 6b 65 79 73 20 | ..def.sign(params):........keys. |
| ae60 | 3d 20 73 6f 72 74 65 64 28 70 61 72 61 6d 73 2e 6b 65 79 73 28 29 29 00 00 00 2e 20 20 20 20 73 | =.sorted(params.keys())........s |
| ae80 | 69 67 20 3d 20 22 22 2e 6a 6f 69 6e 28 6b 20 2b 20 70 61 72 61 6d 73 5b 6b 5d 20 66 6f 72 20 6b | ig.=."".join(k.+.params[k].for.k |
| aea0 | 20 69 6e 20 6b 65 79 73 29 00 00 00 15 20 20 20 20 73 69 67 20 2b 3d 20 41 50 49 5f 53 45 43 52 | .in.keys)........sig.+=.API_SECR |
| aec0 | 45 54 00 00 00 13 20 20 20 20 72 65 74 75 72 6e 20 6d 64 35 28 73 69 67 29 00 00 00 00 00 00 00 | ET........return.md5(sig)....... |
| aee0 | 16 64 65 66 20 67 65 74 5f 73 65 73 73 69 6f 6e 5f 6b 65 79 28 29 3a 00 00 00 4b 20 20 20 20 74 | .def.get_session_key():...K....t |
| af00 | 6f 6b 65 6e 5f 72 65 73 20 3d 20 72 65 71 75 65 73 74 73 2e 67 65 74 28 22 68 74 74 70 73 3a 2f | oken_res.=.requests.get("https:/ |
| af20 | 2f 77 73 2e 61 75 64 69 6f 73 63 72 6f 62 62 6c 65 72 2e 63 6f 6d 2f 32 2e 30 2f 22 2c 20 70 61 | /ws.audioscrobbler.com/2.0/",.pa |
| af40 | 72 61 6d 73 3d 7b 00 00 00 22 20 20 20 20 20 20 20 20 22 6d 65 74 68 6f 64 22 3a 20 22 61 75 74 | rams={..."........"method":."aut |
| af60 | 68 2e 67 65 74 54 6f 6b 65 6e 22 2c 00 00 00 1b 20 20 20 20 20 20 20 20 22 61 70 69 5f 6b 65 79 | h.getToken",............"api_key |
| af80 | 22 3a 20 41 50 49 5f 4b 45 59 2c 00 00 00 18 20 20 20 20 20 20 20 20 22 66 6f 72 6d 61 74 22 3a | ":.API_KEY,............"format": |
| afa0 | 20 22 6a 73 6f 6e 22 00 00 00 17 20 20 20 20 7d 2c 20 70 72 6f 78 69 65 73 3d 50 52 4f 58 49 45 | ."json"........},.proxies=PROXIE |
| afc0 | 53 29 00 00 00 25 20 20 20 20 74 6f 6b 65 6e 20 3d 20 74 6f 6b 65 6e 5f 72 65 73 2e 6a 73 6f 6e | S)...%....token.=.token_res.json |
| afe0 | 28 29 5b 22 74 6f 6b 65 6e 22 5d 00 00 00 0e 20 20 20 20 70 61 72 61 6d 73 20 3d 20 7b 00 00 00 | ()["token"]........params.=.{... |
| b000 | 2a 20 20 20 20 20 20 20 20 22 6d 65 74 68 6f 64 22 3a 20 22 61 75 74 68 2e 67 65 74 4d 6f 62 69 | *........"method":."auth.getMobi |
| b020 | 6c 65 53 65 73 73 69 6f 6e 22 2c 00 00 00 1d 20 20 20 20 20 20 20 20 22 75 73 65 72 6e 61 6d 65 | leSession",............"username |
| b040 | 22 3a 20 55 53 45 52 4e 41 4d 45 2c 00 00 00 1d 20 20 20 20 20 20 20 20 22 70 61 73 73 77 6f 72 | ":.USERNAME,............"passwor |
| b060 | 64 22 3a 20 50 41 53 53 57 4f 52 44 2c 00 00 00 1b 20 20 20 20 20 20 20 20 22 61 70 69 5f 6b 65 | d":.PASSWORD,............"api_ke |
| b080 | 79 22 3a 20 41 50 49 5f 4b 45 59 2c 00 00 00 05 20 20 20 20 7d 00 00 00 24 20 20 20 20 70 61 72 | y":.API_KEY,........}...$....par |
| b0a0 | 61 6d 73 5b 22 61 70 69 5f 73 69 67 22 5d 20 3d 20 73 69 67 6e 28 70 61 72 61 6d 73 29 00 00 00 | ams["api_sig"].=.sign(params)... |
| b0c0 | 1d 20 20 20 20 70 61 72 61 6d 73 5b 22 66 6f 72 6d 61 74 22 5d 20 3d 20 22 6a 73 6f 6e 22 00 00 | .....params["format"].=."json".. |
| b0e0 | 00 5b 20 20 20 20 72 65 73 20 3d 20 72 65 71 75 65 73 74 73 2e 70 6f 73 74 28 22 68 74 74 70 73 | .[....res.=.requests.post("https |
| b100 | 3a 2f 2f 77 73 2e 61 75 64 69 6f 73 63 72 6f 62 62 6c 65 72 2e 63 6f 6d 2f 32 2e 30 2f 22 2c 20 | ://ws.audioscrobbler.com/2.0/",. |
| b120 | 64 61 74 61 3d 70 61 72 61 6d 73 2c 20 70 72 6f 78 69 65 73 3d 50 52 4f 58 49 45 53 29 00 00 00 | data=params,.proxies=PROXIES)... |
| b140 | 28 20 20 20 20 70 72 69 6e 74 28 22 53 65 73 73 69 6f 6e 20 72 65 73 70 6f 6e 73 65 3a 22 2c 20 | (....print("Session.response:",. |
| b160 | 72 65 73 2e 74 65 78 74 29 00 00 00 27 20 20 20 20 72 65 74 75 72 6e 20 72 65 73 2e 6a 73 6f 6e | res.text)...'....return.res.json |
| b180 | 28 29 5b 22 73 65 73 73 69 6f 6e 22 5d 5b 22 6b 65 79 22 5d 00 00 00 00 00 00 00 32 64 65 66 20 | ()["session"]["key"].......2def. |
| b1a0 | 73 63 72 6f 62 62 6c 65 28 73 6b 2c 20 61 72 74 69 73 74 2c 20 74 69 74 6c 65 2c 20 61 6c 62 75 | scrobble(sk,.artist,.title,.albu |
| b1c0 | 6d 2c 20 74 69 6d 65 73 74 61 6d 70 29 3a 00 00 00 0e 20 20 20 20 70 61 72 61 6d 73 20 3d 20 7b | m,.timestamp):........params.=.{ |
| b1e0 | 00 00 00 23 20 20 20 20 20 20 20 20 22 6d 65 74 68 6f 64 22 3a 20 22 74 72 61 63 6b 2e 73 63 72 | ...#........"method":."track.scr |
| b200 | 6f 62 62 6c 65 22 2c 00 00 00 1c 20 20 20 20 20 20 20 20 22 61 72 74 69 73 74 5b 30 5d 22 3a 20 | obble",............"artist[0]":. |
| b220 | 61 72 74 69 73 74 2c 00 00 00 1a 20 20 20 20 20 20 20 20 22 74 72 61 63 6b 5b 30 5d 22 3a 20 74 | artist,............"track[0]":.t |
| b240 | 69 74 6c 65 2c 00 00 00 1a 20 20 20 20 20 20 20 20 22 61 6c 62 75 6d 5b 30 5d 22 3a 20 61 6c 62 | itle,............"album[0]":.alb |
| b260 | 75 6d 2c 00 00 00 27 20 20 20 20 20 20 20 20 22 74 69 6d 65 73 74 61 6d 70 5b 30 5d 22 3a 20 73 | um,...'........"timestamp[0]":.s |
| b280 | 74 72 28 74 69 6d 65 73 74 61 6d 70 29 2c 00 00 00 1b 20 20 20 20 20 20 20 20 22 61 70 69 5f 6b | tr(timestamp),............"api_k |
| b2a0 | 65 79 22 3a 20 41 50 49 5f 4b 45 59 2c 00 00 00 11 20 20 20 20 20 20 20 20 22 73 6b 22 3a 20 73 | ey":.API_KEY,............"sk":.s |
| b2c0 | 6b 2c 00 00 00 05 20 20 20 20 7d 00 00 00 24 20 20 20 20 70 61 72 61 6d 73 5b 22 61 70 69 5f 73 | k,........}...$....params["api_s |
| b2e0 | 69 67 22 5d 20 3d 20 73 69 67 6e 28 70 61 72 61 6d 73 29 00 00 00 1d 20 20 20 20 70 61 72 61 6d | ig"].=.sign(params)........param |
| b300 | 73 5b 22 66 6f 72 6d 61 74 22 5d 20 3d 20 22 6a 73 6f 6e 22 00 00 00 55 20 20 20 20 72 65 71 75 | s["format"].=."json"...U....requ |
| b320 | 65 73 74 73 2e 70 6f 73 74 28 22 68 74 74 70 73 3a 2f 2f 77 73 2e 61 75 64 69 6f 73 63 72 6f 62 | ests.post("https://ws.audioscrob |
| b340 | 62 6c 65 72 2e 63 6f 6d 2f 32 2e 30 2f 22 2c 20 64 61 74 61 3d 70 61 72 61 6d 73 2c 20 70 72 6f | bler.com/2.0/",.data=params,.pro |
| b360 | 78 69 65 73 3d 50 52 4f 58 49 45 53 29 00 00 00 00 00 00 00 31 64 65 66 20 75 70 64 61 74 65 5f | xies=PROXIES).......1def.update_ |
| b380 | 6e 6f 77 5f 70 6c 61 79 69 6e 67 28 73 6b 2c 20 61 72 74 69 73 74 2c 20 74 69 74 6c 65 2c 20 61 | now_playing(sk,.artist,.title,.a |
| b3a0 | 6c 62 75 6d 29 3a 00 00 00 0e 20 20 20 20 70 61 72 61 6d 73 20 3d 20 7b 00 00 00 2b 20 20 20 20 | lbum):........params.=.{...+.... |
| b3c0 | 20 20 20 20 22 6d 65 74 68 6f 64 22 3a 20 22 74 72 61 63 6b 2e 75 70 64 61 74 65 4e 6f 77 50 6c | ...."method":."track.updateNowPl |
| b3e0 | 61 79 69 6e 67 22 2c 00 00 00 19 20 20 20 20 20 20 20 20 22 61 72 74 69 73 74 22 3a 20 61 72 74 | aying",............"artist":.art |
| b400 | 69 73 74 2c 00 00 00 17 20 20 20 20 20 20 20 20 22 74 72 61 63 6b 22 3a 20 74 69 74 6c 65 2c 00 | ist,............"track":.title,. |
| b420 | 00 00 17 20 20 20 20 20 20 20 20 22 61 6c 62 75 6d 22 3a 20 61 6c 62 75 6d 2c 00 00 00 1b 20 20 | ..........."album":.album,...... |
| b440 | 20 20 20 20 20 20 22 61 70 69 5f 6b 65 79 22 3a 20 41 50 49 5f 4b 45 59 2c 00 00 00 11 20 20 20 | ......"api_key":.API_KEY,....... |
| b460 | 20 20 20 20 20 22 73 6b 22 3a 20 73 6b 2c 00 00 00 05 20 20 20 20 7d 00 00 00 24 20 20 20 20 70 | ....."sk":.sk,........}...$....p |
| b480 | 61 72 61 6d 73 5b 22 61 70 69 5f 73 69 67 22 5d 20 3d 20 73 69 67 6e 28 70 61 72 61 6d 73 29 00 | arams["api_sig"].=.sign(params). |
| b4a0 | 00 00 1d 20 20 20 20 70 61 72 61 6d 73 5b 22 66 6f 72 6d 61 74 22 5d 20 3d 20 22 6a 73 6f 6e 22 | .......params["format"].=."json" |
| b4c0 | 00 00 00 55 20 20 20 20 72 65 71 75 65 73 74 73 2e 70 6f 73 74 28 22 68 74 74 70 73 3a 2f 2f 77 | ...U....requests.post("https://w |
| b4e0 | 73 2e 61 75 64 69 6f 73 63 72 6f 62 62 6c 65 72 2e 63 6f 6d 2f 32 2e 30 2f 22 2c 20 64 61 74 61 | s.audioscrobbler.com/2.0/",.data |
| b500 | 3d 70 61 72 61 6d 73 2c 20 70 72 6f 78 69 65 73 3d 50 52 4f 58 49 45 53 29 00 00 00 00 00 00 00 | =params,.proxies=PROXIES)....... |
| b520 | 12 64 65 66 20 6d 70 64 5f 63 6f 6e 6e 65 63 74 28 29 3a 00 00 00 17 20 20 20 20 73 20 3d 20 73 | .def.mpd_connect():........s.=.s |
| b540 | 6f 63 6b 65 74 2e 73 6f 63 6b 65 74 28 29 00 00 00 23 20 20 20 20 73 2e 63 6f 6e 6e 65 63 74 28 | ocket.socket()...#....s.connect( |
| b560 | 28 4d 50 44 5f 48 4f 53 54 2c 20 4d 50 44 5f 50 4f 52 54 29 29 00 00 00 10 20 20 20 20 73 2e 72 | (MPD_HOST,.MPD_PORT))........s.r |
| b580 | 65 63 76 28 31 30 32 34 29 00 00 00 0c 20 20 20 20 72 65 74 75 72 6e 20 73 00 00 00 00 00 00 00 | ecv(1024)........return.s....... |
| b5a0 | 14 64 65 66 20 6d 70 64 5f 63 6d 64 28 73 2c 20 63 6d 64 29 3a 00 00 00 24 20 20 20 20 73 2e 73 | .def.mpd_cmd(s,.cmd):...$....s.s |
| b5c0 | 65 6e 64 61 6c 6c 28 28 63 6d 64 20 2b 20 22 5c 6e 22 29 2e 65 6e 63 6f 64 65 28 29 29 00 00 00 | endall((cmd.+."\n").encode())... |
| b5e0 | 0e 20 20 20 20 72 65 73 70 20 3d 20 62 22 22 00 00 00 0f 20 20 20 20 77 68 69 6c 65 20 54 72 75 | .....resp.=.b""........while.Tru |
| b600 | 65 3a 00 00 00 1c 20 20 20 20 20 20 20 20 63 68 75 6e 6b 20 3d 20 73 2e 72 65 63 76 28 34 30 39 | e:............chunk.=.s.recv(409 |
| b620 | 36 29 00 00 00 15 20 20 20 20 20 20 20 20 72 65 73 70 20 2b 3d 20 63 68 75 6e 6b 00 00 00 2d 20 | 6)............resp.+=.chunk...-. |
| b640 | 20 20 20 20 20 20 20 69 66 20 62 22 4f 4b 5c 6e 22 20 69 6e 20 72 65 73 70 20 6f 72 20 62 22 41 | .......if.b"OK\n".in.resp.or.b"A |
| b660 | 43 4b 22 20 69 6e 20 72 65 73 70 3a 00 00 00 11 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61 | CK".in.resp:................brea |
| b680 | 6b 00 00 00 18 20 20 20 20 72 65 74 75 72 6e 20 72 65 73 70 2e 64 65 63 6f 64 65 28 29 00 00 00 | k........return.resp.decode()... |
| b6a0 | 00 00 00 00 16 64 65 66 20 70 61 72 73 65 5f 73 74 61 74 75 73 28 72 61 77 29 3a 00 00 00 0d 20 | .....def.parse_status(raw):..... |
| b6c0 | 20 20 20 64 61 74 61 20 3d 20 7b 7d 00 00 00 21 20 20 20 20 66 6f 72 20 6c 69 6e 65 20 69 6e 20 | ...data.=.{}...!....for.line.in. |
| b6e0 | 72 61 77 2e 73 70 6c 69 74 6c 69 6e 65 73 28 29 3a 00 00 00 17 20 20 20 20 20 20 20 20 69 66 20 | raw.splitlines():............if. |
| b700 | 22 3a 22 20 69 6e 20 6c 69 6e 65 3a 00 00 00 25 20 20 20 20 20 20 20 20 20 20 20 20 6b 2c 20 76 | ":".in.line:...%............k,.v |
| b720 | 20 3d 20 6c 69 6e 65 2e 73 70 6c 69 74 28 22 3a 22 2c 20 31 29 00 00 00 27 20 20 20 20 20 20 20 | .=.line.split(":",.1)...'....... |
| b740 | 20 20 20 20 20 64 61 74 61 5b 6b 2e 73 74 72 69 70 28 29 5d 20 3d 20 76 2e 73 74 72 69 70 28 29 | .....data[k.strip()].=.v.strip() |
| b760 | 00 00 00 0f 20 20 20 20 72 65 74 75 72 6e 20 64 61 74 61 00 00 00 00 00 00 00 0b 64 65 66 20 6d | ........return.data........def.m |
| b780 | 61 69 6e 28 29 3a 00 00 00 1a 20 20 20 20 73 6b 20 3d 20 67 65 74 5f 73 65 73 73 69 6f 6e 5f 6b | ain():........sk.=.get_session_k |
| b7a0 | 65 79 28 29 00 00 00 29 20 20 20 20 70 72 69 6e 74 28 66 22 41 75 74 68 65 6e 74 69 63 61 74 65 | ey()...)....print(f"Authenticate |
| b7c0 | 64 20 61 73 20 7b 55 53 45 52 4e 41 4d 45 7d 22 29 00 00 00 17 20 20 20 20 6d 70 64 20 3d 20 6d | d.as.{USERNAME}")........mpd.=.m |
| b7e0 | 70 64 5f 63 6f 6e 6e 65 63 74 28 29 00 00 00 15 20 20 20 20 6c 61 73 74 5f 74 69 74 6c 65 20 3d | pd_connect()........last_title.= |
| b800 | 20 4e 6f 6e 65 00 00 00 15 20 20 20 20 6c 61 73 74 5f 73 74 61 72 74 20 3d 20 4e 6f 6e 65 00 00 | .None........last_start.=.None.. |
| b820 | 00 18 20 20 20 20 6c 61 73 74 5f 64 75 72 61 74 69 6f 6e 20 3d 20 4e 6f 6e 65 00 00 00 16 20 20 | ......last_duration.=.None...... |
| b840 | 20 20 6c 61 73 74 5f 61 72 74 69 73 74 20 3d 20 4e 6f 6e 65 00 00 00 15 20 20 20 20 6c 61 73 74 | ..last_artist.=.None........last |
| b860 | 5f 61 6c 62 75 6d 20 3d 20 4e 6f 6e 65 00 00 00 15 20 20 20 20 73 63 72 6f 62 62 6c 65 64 20 3d | _album.=.None........scrobbled.= |
| b880 | 20 46 61 6c 73 65 00 00 00 0f 20 20 20 20 77 68 69 6c 65 20 54 72 75 65 3a 00 00 00 2b 20 20 20 | .False........while.True:...+... |
| b8a0 | 20 20 20 20 20 73 74 61 74 75 73 5f 72 61 77 20 3d 20 6d 70 64 5f 63 6d 64 28 6d 70 64 2c 20 22 | .....status_raw.=.mpd_cmd(mpd,." |
| b8c0 | 73 74 61 74 75 73 22 29 00 00 00 31 20 20 20 20 20 20 20 20 63 75 72 72 65 6e 74 5f 72 61 77 20 | status")...1........current_raw. |
| b8e0 | 3d 20 6d 70 64 5f 63 6d 64 28 6d 70 64 2c 20 22 63 75 72 72 65 6e 74 73 6f 6e 67 22 29 00 00 00 | =.mpd_cmd(mpd,."currentsong")... |
| b900 | 29 20 20 20 20 20 20 20 20 73 74 61 74 75 73 20 3d 20 70 61 72 73 65 5f 73 74 61 74 75 73 28 73 | )........status.=.parse_status(s |
| b920 | 74 61 74 75 73 5f 72 61 77 29 00 00 00 2b 20 20 20 20 20 20 20 20 63 75 72 72 65 6e 74 20 3d 20 | tatus_raw)...+........current.=. |
| b940 | 70 61 72 73 65 5f 73 74 61 74 75 73 28 63 75 72 72 65 6e 74 5f 72 61 77 29 00 00 00 28 20 20 20 | parse_status(current_raw)...(... |
| b960 | 20 20 20 20 20 74 69 74 6c 65 20 3d 20 63 75 72 72 65 6e 74 2e 67 65 74 28 22 54 69 74 6c 65 22 | .....title.=.current.get("Title" |
| b980 | 2c 20 22 22 29 00 00 00 2a 20 20 20 20 20 20 20 20 61 72 74 69 73 74 20 3d 20 63 75 72 72 65 6e | ,."")...*........artist.=.curren |
| b9a0 | 74 2e 67 65 74 28 22 41 72 74 69 73 74 22 2c 20 22 22 29 00 00 00 28 20 20 20 20 20 20 20 20 61 | t.get("Artist",."")...(........a |
| b9c0 | 6c 62 75 6d 20 3d 20 63 75 72 72 65 6e 74 2e 67 65 74 28 22 41 6c 62 75 6d 22 2c 20 22 22 29 00 | lbum.=.current.get("Album",.""). |
| b9e0 | 00 00 2b 20 20 20 20 20 20 20 20 73 74 61 74 65 20 3d 20 73 74 61 74 75 73 2e 67 65 74 28 22 73 | ..+........state.=.status.get("s |
| ba00 | 74 61 74 65 22 2c 20 22 73 74 6f 70 22 29 00 00 00 31 20 20 20 20 20 20 20 20 65 6c 61 70 73 65 | tate",."stop")...1........elapse |
| ba20 | 64 20 3d 20 66 6c 6f 61 74 28 73 74 61 74 75 73 2e 67 65 74 28 22 65 6c 61 70 73 65 64 22 2c 20 | d.=.float(status.get("elapsed",. |
| ba40 | 30 29 29 00 00 00 33 20 20 20 20 20 20 20 20 64 75 72 61 74 69 6f 6e 20 3d 20 66 6c 6f 61 74 28 | 0))...3........duration.=.float( |
| ba60 | 73 74 61 74 75 73 2e 67 65 74 28 22 64 75 72 61 74 69 6f 6e 22 2c 20 30 29 29 00 00 00 3d 20 20 | status.get("duration",.0))...=.. |
| ba80 | 20 20 20 20 20 20 69 66 20 73 74 61 74 65 20 3d 3d 20 22 70 6c 61 79 22 20 61 6e 64 20 74 69 74 | ......if.state.==."play".and.tit |
| baa0 | 6c 65 20 61 6e 64 20 74 69 74 6c 65 20 21 3d 20 6c 61 73 74 5f 74 69 74 6c 65 3a 00 00 00 1e 20 | le.and.title.!=.last_title:..... |
| bac0 | 20 20 20 20 20 20 20 20 20 20 20 6c 61 73 74 5f 74 69 74 6c 65 20 3d 20 74 69 74 6c 65 00 00 00 | ...........last_title.=.title... |
| bae0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 61 73 74 5f 61 72 74 69 73 74 20 3d 20 61 72 74 69 73 | .............last_artist.=.artis |
| bb00 | 74 00 00 00 1e 20 20 20 20 20 20 20 20 20 20 20 20 6c 61 73 74 5f 61 6c 62 75 6d 20 3d 20 61 6c | t................last_album.=.al |
| bb20 | 62 75 6d 00 00 00 29 20 20 20 20 20 20 20 20 20 20 20 20 6c 61 73 74 5f 73 74 61 72 74 20 3d 20 | bum...)............last_start.=. |
| bb40 | 69 6e 74 28 74 69 6d 65 2e 74 69 6d 65 28 29 29 00 00 00 24 20 20 20 20 20 20 20 20 20 20 20 20 | int(time.time())...$............ |
| bb60 | 6c 61 73 74 5f 64 75 72 61 74 69 6f 6e 20 3d 20 64 75 72 61 74 69 6f 6e 00 00 00 1d 20 20 20 20 | last_duration.=.duration........ |
| bb80 | 20 20 20 20 20 20 20 20 73 63 72 6f 62 62 6c 65 64 20 3d 20 46 61 6c 73 65 00 00 00 38 20 20 20 | ........scrobbled.=.False...8... |
| bba0 | 20 20 20 20 20 20 20 20 20 75 70 64 61 74 65 5f 6e 6f 77 5f 70 6c 61 79 69 6e 67 28 73 6b 2c 20 | .........update_now_playing(sk,. |
| bbc0 | 61 72 74 69 73 74 2c 20 74 69 74 6c 65 2c 20 61 6c 62 75 6d 29 00 00 00 35 20 20 20 20 20 20 20 | artist,.title,.album)...5....... |
| bbe0 | 20 20 20 20 20 70 72 69 6e 74 28 66 22 4e 6f 77 20 70 6c 61 79 69 6e 67 3a 20 7b 61 72 74 69 73 | .....print(f"Now.playing:.{artis |
| bc00 | 74 7d 20 2d 20 7b 74 69 74 6c 65 7d 22 29 00 00 00 3e 20 20 20 20 20 20 20 20 69 66 20 28 6e 6f | t}.-.{title}")...>........if.(no |
| bc20 | 74 20 73 63 72 6f 62 62 6c 65 64 20 61 6e 64 20 6c 61 73 74 5f 74 69 74 6c 65 20 61 6e 64 20 6c | t.scrobbled.and.last_title.and.l |
| bc40 | 61 73 74 5f 64 75 72 61 74 69 6f 6e 20 61 6e 64 00 00 00 42 20 20 20 20 20 20 20 20 20 20 20 20 | ast_duration.and...B............ |
| bc60 | 20 20 20 20 28 65 6c 61 70 73 65 64 20 3e 3d 20 6c 61 73 74 5f 64 75 72 61 74 69 6f 6e 20 2f 20 | ....(elapsed.>=.last_duration./. |
| bc80 | 32 20 6f 72 20 65 6c 61 70 73 65 64 20 3e 3d 20 32 34 30 29 29 3a 00 00 00 49 20 20 20 20 20 20 | 2.or.elapsed.>=.240)):...I...... |
| bca0 | 20 20 20 20 20 20 73 63 72 6f 62 62 6c 65 28 73 6b 2c 20 6c 61 73 74 5f 61 72 74 69 73 74 2c 20 | ......scrobble(sk,.last_artist,. |
| bcc0 | 6c 61 73 74 5f 74 69 74 6c 65 2c 20 6c 61 73 74 5f 61 6c 62 75 6d 2c 20 6c 61 73 74 5f 73 74 61 | last_title,.last_album,.last_sta |
| bce0 | 72 74 29 00 00 00 1c 20 20 20 20 20 20 20 20 20 20 20 20 73 63 72 6f 62 62 6c 65 64 20 3d 20 54 | rt)................scrobbled.=.T |
| bd00 | 72 75 65 00 00 00 3d 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 6e 74 28 66 22 53 63 72 6f 62 | rue...=............print(f"Scrob |
| bd20 | 62 6c 65 64 3a 20 7b 6c 61 73 74 5f 61 72 74 69 73 74 7d 20 2d 20 7b 6c 61 73 74 5f 74 69 74 6c | bled:.{last_artist}.-.{last_titl |
| bd40 | 65 7d 22 29 00 00 00 23 20 20 20 20 20 20 20 20 6d 70 64 5f 63 6d 64 28 6d 70 64 2c 20 22 69 64 | e}")...#........mpd_cmd(mpd,."id |
| bd60 | 6c 65 20 70 6c 61 79 65 72 22 29 00 00 00 00 00 00 00 1a 69 66 20 5f 5f 6e 61 6d 65 5f 5f 20 3d | le.player")........if.__name__.= |
| bd80 | 3d 20 22 5f 5f 6d 61 69 6e 5f 5f 22 3a 00 00 00 0a 20 20 20 20 6d 61 69 6e 28 29 00 00 00 00 35 | =."__main__":........main()....5 |
| bda0 | 81 f5 18 00 00 00 00 00 00 00 00 00 00 00 00 85 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 | ................................ |
| bdc0 | 00 00 00 00 00 00 00 9d 0f 00 00 00 00 00 00 01 00 00 00 00 00 00 00 35 81 5f d0 00 00 00 24 00 | .......................5._....$. |
| bde0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 25 00 00 00 01 00 00 00 00 00 00 00 00 ff ff ff ff 00 | ..............%................. |
| be00 | 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| be20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| be40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| be60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| be80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| bea0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| bec0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| bee0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| bf00 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| bf20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| bf40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 69 98 fd | .............................i.. |
| bf60 | 04 04 01 00 00 00 1a 00 f5 18 00 00 00 8f 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 0a 20 20 | ................................ |
| bf80 | 20 20 6d 61 69 6e 28 29 f5 18 00 00 00 90 00 00 00 00 00 00 00 00 00 00 00 00 f5 18 00 00 00 87 | ..main()........................ |
| bfa0 | 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 2f 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | .............../................ |
| bfc0 | 28 65 6c 61 70 73 65 64 20 3e 3d 20 6c 61 73 74 5f 64 75 72 61 74 69 6f 6e 20 2f 20 32 20 6f f5 | (elapsed.>=.last_duration./.2.o. |
| bfe0 | 18 00 00 00 88 00 00 00 00 00 00 00 00 00 00 00 00 f5 18 00 00 00 7a 00 00 00 00 00 00 00 00 00 | ......................z......... |
| c000 | 00 00 01 00 00 00 1a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 63 72 6f 62 62 6c 65 64 | .......................scrobbled |
| c020 | 20 f5 18 00 00 00 7b 00 00 00 00 00 00 00 00 00 00 00 00 f5 18 00 00 00 3c 00 00 00 00 00 00 00 | ......{.................<....... |
| c040 | 00 00 00 00 01 00 00 00 0b 20 20 20 20 20 20 20 20 22 61 72 f5 18 00 00 00 3d 00 00 00 00 00 00 | ................."ar.....=...... |
| c060 | 00 00 00 00 00 00 f5 18 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 f5 18 00 00 | ................................ |
| c080 | 00 01 00 00 00 00 00 00 00 00 00 00 00 00 35 81 f5 18 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ..............5................. |
| c0a0 | 00 00 00 00 00 00 3c 00 00 00 0b 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 07 | ......<......................... |
| c0c0 | 00 00 00 00 00 00 f5 18 00 00 00 00 3c 00 00 00 0b 00 00 00 00 00 00 00 00 00 00 00 3e 00 00 00 | ............<...............>... |
| c0e0 | 1a 00 00 00 00 07 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 07 00 00 00 00 00 00 f5 18 00 00 | ................................ |
| c100 | 00 00 7a 00 00 00 1a 00 00 00 00 00 00 00 00 00 00 00 0d 00 00 00 2f 00 00 00 00 0e 00 00 00 00 | ..z.................../......... |
| c120 | 00 00 00 00 00 00 00 00 00 00 00 02 00 00 00 00 00 00 f5 18 00 00 00 00 87 00 00 00 2f 00 00 00 | ............................/... |
| c140 | 00 00 00 00 00 00 00 00 08 00 00 00 0a 00 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| c160 | 04 01 00 00 00 00 00 00 35 81 5f d0 00 00 00 21 00 00 00 00 00 00 00 22 00 00 00 24 00 00 00 23 | ........5._....!......."...$...# |
| c180 | 00 00 00 34 00 00 00 04 00 00 00 00 ff ff ff ff 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ...4............................ |
| c1a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| c1c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| c1e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| c200 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| c220 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| c240 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| c260 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| c280 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| c2a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| c2c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| c2e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 69 98 fc e3 04 01 00 00 00 18 00 f5 18 00 00 00 34 00 | ..............i...............4. |
| c300 | 00 00 35 00 00 00 85 00 00 00 01 00 00 00 04 20 20 20 20 f5 18 00 00 00 35 00 00 00 36 00 00 00 | ..5.....................5...6... |
| c320 | 86 00 00 00 00 f5 18 00 00 00 34 00 00 00 36 00 00 00 86 00 00 00 02 00 00 00 5b 20 20 20 20 72 | ..........4...6...........[....r |
| c340 | 65 73 20 3d 20 72 65 71 75 65 73 74 73 2e 70 6f 73 74 28 22 68 74 74 70 73 3a 2f 2f 77 73 2e 61 | es.=.requests.post("https://ws.a |
| c360 | 75 64 69 6f 73 63 72 6f 62 62 6c 65 72 2e 63 6f 6d 2f 32 2e 30 2f 22 2c 20 64 61 74 61 3d 70 61 | udioscrobbler.com/2.0/",.data=pa |
| c380 | 72 61 6d 73 2c 20 70 72 6f 78 69 65 73 3d 50 52 4f 58 49 45 53 29 00 00 00 27 70 72 69 6e 74 28 | rams,.proxies=PROXIES)...'print( |
| c3a0 | 66 22 53 63 72 6f 62 62 6c 65 20 72 65 73 70 6f 6e 73 65 3a 20 7b 72 65 73 2e 74 65 78 74 7d 22 | f"Scrobble.response:.{res.text}" |
| c3c0 | 29 f5 18 00 00 00 36 00 00 00 37 00 00 00 87 00 00 00 00 f5 18 00 00 00 35 00 00 00 37 00 00 00 | ).....6...7.............5...7... |
| c3e0 | 87 00 00 00 01 00 00 00 27 70 72 69 6e 74 28 66 22 53 63 72 6f 62 62 6c 65 20 72 65 73 70 6f 6e | ........'print(f"Scrobble.respon |
| c400 | 73 65 3a 20 7b 72 65 73 2e 74 65 78 74 7d 22 29 35 81 f5 18 00 00 00 00 34 00 00 00 00 00 00 00 | se:.{res.text}")5.......4....... |
| c420 | 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 bc 05 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| c440 | 05 00 00 00 00 00 00 00 f5 18 00 00 00 00 34 00 00 00 04 00 00 00 00 00 00 00 00 00 00 00 01 00 | ..............4................. |
| c460 | 00 00 27 00 00 00 c0 05 00 00 00 00 00 00 00 00 00 00 00 00 00 00 7f 00 00 00 00 00 00 00 35 81 | ..'...........................5. |
| c480 | 5f d0 00 00 00 21 00 00 00 00 00 00 00 00 00 00 00 23 00 00 00 22 00 00 00 01 00 00 00 00 00 00 | _....!...........#...".......... |
| c4a0 | 00 00 ff ff ff ff 00 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| c4c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| c4e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| c500 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| c520 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| c540 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| c560 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| c580 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| c5a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| c5c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| c5e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| c600 | 00 00 00 00 69 98 fc c9 04 01 00 00 00 00 00 f5 18 00 00 00 00 00 00 00 86 00 00 00 00 00 00 00 | ....i........................... |
| c620 | 01 00 00 00 00 35 81 f5 18 00 00 00 00 00 00 00 00 00 00 00 00 85 00 00 00 00 00 00 00 01 00 00 | .....5.......................... |
| c640 | 00 00 00 00 00 00 00 00 00 00 00 00 00 9d 0f 00 00 00 00 00 00 01 00 00 00 00 00 00 00 35 81 5f | .............................5._ |
| c660 | d0 00 00 00 05 00 00 00 07 00 00 00 00 00 00 00 08 00 00 00 06 00 00 00 1a 00 00 00 00 00 00 00 | ................................ |
| c680 | 00 ff ff ff ff 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| c6a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| c6c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| c6e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| c700 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| c720 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| c740 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| c760 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| c780 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| c7a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| c7c0 | 00 00 1a 00 00 00 1f 00 00 00 00 00 00 00 1a 00 00 00 00 00 00 00 00 00 00 00 76 00 00 00 00 00 | ..........................v..... |
| c7e0 | 00 00 00 69 98 f2 80 04 01 00 00 00 00 00 f5 18 00 00 00 19 00 00 00 2d 00 00 00 8d 00 00 00 01 | ...i...................-........ |
| c800 | 00 00 00 00 35 81 f5 18 00 00 00 00 19 00 00 00 00 00 00 00 12 00 00 00 20 00 00 00 00 00 00 00 | ....5........................... |
| c820 | 00 00 00 00 f0 01 00 00 00 00 00 00 3c 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 35 81 5f d0 | ............<...............5._. |
| c840 | 00 00 00 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 07 00 00 00 1a 00 00 00 00 00 00 00 00 | ................................ |
| c860 | ff ff ff ff 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| c880 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| c8a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| c8c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| c8e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| c900 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| c920 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| c940 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| c960 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| c980 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| c9a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| c9c0 | 00 00 69 98 f2 83 04 01 00 00 00 06 00 f5 18 00 00 00 1a 00 00 00 1b 00 00 00 7b 00 00 00 00 f5 | ..i.......................{..... |
| c9e0 | 18 00 00 00 19 00 00 00 1b 00 00 00 7b 00 00 00 15 00 00 00 16 64 65 66 20 67 65 74 5f 73 65 73 | ............{........def.get_ses |
| ca00 | 73 69 6f 6e 5f 6b 65 79 28 29 3a 00 00 00 4b 20 20 20 20 74 6f 6b 65 6e 5f 72 65 73 20 3d 20 72 | sion_key():...K....token_res.=.r |
| ca20 | 65 71 75 65 73 74 73 2e 67 65 74 28 22 68 74 74 70 73 3a 2f 2f 77 73 2e 61 75 64 69 6f 73 63 72 | equests.get("https://ws.audioscr |
| ca40 | 6f 62 62 6c 65 72 2e 63 6f 6d 2f 32 2e 30 2f 22 2c 20 70 61 72 61 6d 73 3d 7b 00 00 00 22 20 20 | obbler.com/2.0/",.params={...".. |
| ca60 | 20 20 20 20 20 20 22 6d 65 74 68 6f 64 22 3a 20 22 61 75 74 68 2e 67 65 74 54 6f 6b 65 6e 22 2c | ......"method":."auth.getToken", |
| ca80 | 00 00 00 1b 20 20 20 20 20 20 20 20 22 61 70 69 5f 6b 65 79 22 3a 20 41 50 49 5f 4b 45 59 2c 00 | ............"api_key":.API_KEY,. |
| caa0 | 00 00 18 20 20 20 20 20 20 20 20 22 66 6f 72 6d 61 74 22 3a 20 22 6a 73 6f 6e 22 00 00 00 06 20 | ..........."format":."json"..... |
| cac0 | 20 20 20 7d 29 00 00 00 2c 20 20 20 20 70 72 69 6e 74 28 22 54 6f 6b 65 6e 20 72 65 73 70 6f 6e | ...})...,....print("Token.respon |
| cae0 | 73 65 3a 22 2c 20 74 6f 6b 65 6e 5f 72 65 73 2e 74 65 78 74 29 00 00 00 25 20 20 20 20 74 6f 6b | se:",.token_res.text)...%....tok |
| cb00 | 65 6e 20 3d 20 74 6f 6b 65 6e 5f 72 65 73 2e 6a 73 6f 6e 28 29 5b 22 74 6f 6b 65 6e 22 5d 00 00 | en.=.token_res.json()["token"].. |
| cb20 | 00 00 00 00 00 0e 20 20 20 20 70 61 72 61 6d 73 20 3d 20 7b 00 00 00 2a 20 20 20 20 20 20 20 20 | ..........params.=.{...*........ |
| cb40 | 22 6d 65 74 68 6f 64 22 3a 20 22 61 75 74 68 2e 67 65 74 4d 6f 62 69 6c 65 53 65 73 73 69 6f 6e | "method":."auth.getMobileSession |
| cb60 | 22 2c 00 00 00 1d 20 20 20 20 20 20 20 20 22 75 73 65 72 6e 61 6d 65 22 3a 20 55 53 45 52 4e 41 | ",............"username":.USERNA |
| cb80 | 4d 45 2c 00 00 00 22 20 20 20 20 20 20 20 20 22 70 61 73 73 77 6f 72 64 22 3a 20 6d 64 35 28 50 | ME,..."........"password":.md5(P |
| cba0 | 41 53 53 57 4f 52 44 29 2c 00 00 00 1b 20 20 20 20 20 20 20 20 22 61 70 69 5f 6b 65 79 22 3a 20 | ASSWORD),............"api_key":. |
| cbc0 | 41 50 49 5f 4b 45 59 2c 00 00 00 05 20 20 20 20 7d 00 00 00 24 20 20 20 20 70 61 72 61 6d 73 5b | API_KEY,........}...$....params[ |
| cbe0 | 22 61 70 69 5f 73 69 67 22 5d 20 3d 20 73 69 67 6e 28 70 61 72 61 6d 73 29 00 00 00 1d 20 20 20 | "api_sig"].=.sign(params)....... |
| cc00 | 20 70 61 72 61 6d 73 5b 22 66 6f 72 6d 61 74 22 5d 20 3d 20 22 6a 73 6f 6e 22 00 00 00 00 00 00 | .params["format"].=."json"...... |
| cc20 | 00 4a 20 20 20 20 72 65 73 20 3d 20 72 65 71 75 65 73 74 73 2e 70 6f 73 74 28 22 68 74 74 70 73 | .J....res.=.requests.post("https |
| cc40 | 3a 2f 2f 77 73 2e 61 75 64 69 6f 73 63 72 6f 62 62 6c 65 72 2e 63 6f 6d 2f 32 2e 30 2f 22 2c 20 | ://ws.audioscrobbler.com/2.0/",. |
| cc60 | 64 61 74 61 3d 70 61 72 61 6d 73 29 00 00 00 28 20 20 20 20 70 72 69 6e 74 28 22 53 65 73 73 69 | data=params)...(....print("Sessi |
| cc80 | 6f 6e 20 72 65 73 70 6f 6e 73 65 3a 22 2c 20 72 65 73 2e 74 65 78 74 29 00 00 00 27 20 20 20 20 | on.response:",.res.text)...'.... |
| cca0 | 72 65 74 75 72 6e 20 72 65 73 2e 6a 73 6f 6e 28 29 5b 22 73 65 73 73 69 6f 6e 22 5d 5b 22 6b 65 | return.res.json()["session"]["ke |
| ccc0 | 79 22 5d 35 81 f5 18 00 00 00 00 19 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 14 00 00 00 27 | y"]5...........................' |
| cce0 | 00 00 00 f0 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 92 02 00 00 00 00 00 00 35 81 e7 aa | ...........................5... |