ΠΡΠΎΠ΅ΠΊΡ Funkwhale ΠΏΡΡΠ½Π° ΠΏΡΡΠ²Π°ΡΠ° ΡΡΠ°Π±ΠΈΠ»Π½Π° Π²Π΅ΡΡΠΈΡ. ΠΠ°ΡΠΎ ΡΠ°ΡΡ ΠΎΡ ΠΈΠ½ΠΈΡΠΈΠ°ΡΠΈΠ²Π°ΡΠ° ΡΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ²Π° Π±Π΅Π·ΠΏΠ»Π°ΡΠ΅Π½ ΡΡΡΠ²ΡΡ, Π½Π°ΠΏΠΈΡΠ°Π½ Π½Π° Python Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΡΠ°ΠΌΠΊΠ°ΡΠ° Django, Π·Π° Ρ ΠΎΡΡΠ²Π°Π½Π΅ Π½Π° ΠΌΡΠ·ΠΈΠΊΠ° ΠΈ ΠΏΠΎΠ΄ΠΊΠ°ΡΡΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ΅ ΡΠ»ΡΡΠ°Ρ ΡΡΠ΅Π· ΡΠ΅Π± ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ. ΠΊΠ»ΠΈΠ΅Π½ΡΠΈ Ρ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° Subsonic API ΠΈΠ»ΠΈ ΡΠΎΠ±ΡΡΠ²Π΅Π½ Funkwhale APIΠ ΠΎΡ Π΄ΡΡΠ³ΠΈ ΠΊΠΎΠΏΠΈΡ Π½Π° FunkwhaleΠΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ ΠΠ±Π΅Π΄ΠΈΠ½Π΅Π½ ΠΌΡΠ΅ΠΆΠΎΠ² ΠΏΡΠΎΡΠΎΠΊΠΎΠ» ActivityPub.
ΠΠ·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ΡΠΎ Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Ρ Ρ Π°ΡΠ΄ΠΈΠΎΡΠΎ ΡΠ΅ ΠΎΡΡΡΠ΅ΡΡΠ²ΡΠ²Π° Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΈ ΠΊΠ°Π½Π°Π»ΠΈ: Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈΡΠ΅ ΡΠ° ΠΊΠΎΠ»Π΅ΠΊΡΠΈΠΈ ΠΎΡ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΠΈΠ·ΠΏΡΠ»Π½ΠΈΡΠ΅Π»ΠΈ Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»Π½ΠΎ ΡΡΠ·Π΄Π°Π΄Π΅Π½ UUID ΠΊΠ°ΡΠΎ Π°Π΄ΡΠ΅Ρ, Π° ΠΊΠ°Π½Π°Π»ΡΡ Π΅ Π΄ΠΈΡΠΊΠΎΠ³ΡΠ°ΡΠΈΡΡΠ° Π½Π° Π΅Π΄ΠΈΠ½ ΠΈΠ·ΠΏΡΠ»Π½ΠΈΡΠ΅Π», Π½Π° ΠΊΠΎΠΉΡΠΎ Π΅ Π΄Π°Π΄Π΅Π½ ΡΠ΅ΡΠΈΠΌ ΠΎΡ ΡΠΎΠ²Π΅ΠΊΠ° Π°Π΄ΡΠ΅Ρ; ΠΊΠ°Π½Π°Π»ΠΈΡΠ΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ ΠΏΠΎΠ»Π΅Π·Π½ΠΈ Π·Π° ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½Π΅ Π½Π° ΠΏΠΎΠ΄ΠΊΠ°ΡΡΠΈ. Π Π°Π±ΠΎΡΠ°ΡΠ° Ρ Π°Π±ΠΎΠ½Π°ΠΌΠ΅Π½ΡΠΈ Π΅ ΠΏΠΎΠ΄ΠΎΠ±Π½Π° Π½Π° ΡΠ°Π·ΠΈ Π² Π΄ΡΡΠ³ ΠΏΡΠΎΠ΅ΠΊΡ - PeerTube: ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΠ΅ Π°Π±ΠΎΠ½ΠΈΡΠ°ΡΠ΅ ΠΊΠ°ΠΊΡΠΎ Π·Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Ρ, ΡΠ°ΠΊΠ° ΠΈ Π·Π° Π½Π΅Π³ΠΎΠ²ΠΈΡΠ΅ ΠΎΡΠ΄Π΅Π»Π½ΠΎ ΡΡΠ·Π΄Π°Π΄Π΅Π½ΠΈ ΠΊΠ°Π½Π°Π»ΠΈ. Π’ΡΠΉ ΠΊΠ°ΡΠΎ ΡΡΡΠ²ΡΡΡΡ ΡΠ°Π±ΠΎΡΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π° ActivityPub, Π΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΄Π° ΡΠ΅ Π°Π±ΠΎΠ½ΠΈΡΠ°ΡΠ΅ ΠΎΡ Π΄ΡΡΠ³ΠΈ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ, ΠΊΠ°ΡΠΎ Π½Π°ΠΏΡ. ΠΠ°ΡΡΠΎΠ΄ΠΎΠ½ ΠΈ ΠΏΠ»Π΅ΡΠΎΠΌΠ°.
Π‘Π»Π΅Π΄ ΠΊΠ°ΡΠΎ ΡΡΠ·Π΄Π°Π΄Π΅ΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΠΈΠ»ΠΈ ΠΊΠ°Π½Π°Π», ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΊΠ°ΡΠ²Π°ΡΠ΅ ΠΌΡΠ·ΠΈΠΊΠ°. Π‘ΡΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ Π·Π° Π½Π΅Π³ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ Π»ΠΎΠΊΠ°Π»Π½ΠΎ ΠΈΠ»ΠΈ ΠΎΡΠ΄Π°Π»Π΅ΡΠ΅Π½ΠΎ, ΠΊΠ°ΡΠΎ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π²Π³ΡΠ°Π΄Π΅Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° ΡΠ°ΠΉΠ»ΠΎΠ²ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ, Π±Π°Π·ΠΈΡΠ°Π½ΠΈ Π½Π° ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π° Amazon S3. ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΊΠ°ΡΠΈΡΠ΅ Π²ΡΠ΅ΠΊΠΈ ΡΠ°ΠΉΠ» ΠΎΡ ΠΏΠΎΠΏΡΠ»ΡΡΠ΅Π½ ΡΠΎΡΠΌΠ°Ρ, Π±Π΅Π· Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΎ ΠΏΡΠ΅ΠΊΠΎΠ΄ΠΈΡΠ°Π½Π΅ ΠΈ Π·Π°Π³ΡΠ±Π° Π½Π° ΠΊΠ°ΡΠ΅ΡΡΠ²ΠΎ (ΠΊΠΎΠ΅ΡΠΎ Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΡΠ°Π²ΠΈ PeerTube, ΠΊΠΎΠΉΡΠΎ ΡΡΡΠΎ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° Π°ΡΠ΄ΠΈΠΎ ΠΊΠ°ΡΠ²Π°Π½Π΅). Funkwhale ΡΠ΅ΡΠ΅ ΠΌΡΠ·ΠΈΠΊΠ°Π»Π½ΠΈ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΠΈ ΠΈ ΠΎΠ±Π»ΠΎΠΆΠΊΠΈ, Π²Π³ΡΠ°Π΄Π΅Π½ΠΈ Π²ΡΠ² ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ΡΠ΅, ΠΈ Π°ΠΊΠΎ ΡΠ΅ Π»ΠΈΠΏΡΠ²Π°Ρ, Π³Π΅Π½Π΅ΡΠΈΡΠ° Π³ΡΠ΅ΡΠΊΠ°. ΠΠΎΡΠ°Π΄ΠΈ ΡΠΎΠ²Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈΡΠ΅ ΡΠ΅ ΡΡΠ²Π΅ΡΠ²Π°Ρ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΠΡΠ·ΠΈΠΊΠ° ΠΡΠ°Π΄ΡΡ ΠΠΈΠΊΠ°ΡΠ΄ Π·Π° Π΄Π° Π½Π°ΠΏΠΈΡΠ΅ΡΠ΅ ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΈΡΠ΅ ΡΠ°Π³ΠΎΠ²Π΅ ΠΏΡΠ΅Π΄ΠΈ ΠΊΠ°ΡΠ²Π°Π½Π΅. ΠΠ°Π»ΠΈΡΠ΅Π½ Π΅ ΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π·Π° ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΠΈ ΡΠ»Π΅Π΄ ΠΈΠ·ΡΠ΅Π³Π»ΡΠ½Π΅, ΡΠ°Π±ΠΎΡΠ΅Ρ ΠΏΠΎΠ΄ ΡΠΎΡΠΌΠ°ΡΠ° Π½Π° ΡΠ΅Π²ΠΈΠ·ΠΈΠΈ Ρ Π²ΠΈΠ΄ΠΈΠΌΠ° ΠΈΡΡΠΎΡΠΈΡ Π½Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅.
ΠΡ Π²Π΅ΡΠ΅ ΠΈΠ·ΡΠ΅Π³Π»Π΅Π½Π° ΠΌΡΠ·ΠΈΠΊΠ° Π΄ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΈ ΠΊΠ°Π½Π°Π»ΠΈ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΡΠ·Π΄Π°Π²Π°ΡΠ΅ ΠΏΠ»Π΅ΠΉΠ»ΠΈΡΡΠΈ, ΡΠ°Π΄ΠΈΠΎΡΡΠ°Π½ΡΠΈΠΈ ΠΈ Π΄Π° ΠΌΠ°ΡΠΊΠΈΡΠ°ΡΠ΅ ΠΏΠ΅ΡΠ½ΠΈ ΠΊΠ°ΡΠΎ Π»ΡΠ±ΠΈΠΌΠΈ. ΠΡΠ΄Π°Π»Π΅ΡΠ΅Π½ΠΈΡΠ΅ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈ ΡΠ΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΠΏΠΎΠΈΡΠΊΠ°Ρ Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ Π²Π°ΡΠ°ΡΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΠΈΠ»ΠΈ ΠΊΠ°Π½Π°Π», ΠΊΠ°ΡΠΎ ΠΏΡΠΎΡΡΠΎ ΠΏΠΎΡΡΠ°Π²ΡΡ Π²ΡΡΠ·ΠΊΠ° ΠΊΡΠΌ Π½Π΅Π³ΠΎ Π² Π»Π΅Π½ΡΠ°ΡΠ° Π·Π° ΡΡΡΡΠ΅Π½Π΅ Π½Π° ΡΠ²ΠΎΡ ΡΡΡΠ²ΡΡ. ΠΠ½ΠΎΠ½ΠΈΠΌΠ½ΠΈΡΠ΅ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈ ΡΠ΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ»ΡΡΠ°Ρ ΠΌΡΠ·ΠΈΠΊΠ° ΠΎΡ ΡΠ΅Π± ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°, Π°ΠΊΠΎ ΡΠΎΠ²Π° Π΅ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΎ Π² Π½Π°ΡΡΡΠΎΠΉΠΊΠΈΡΠ΅ Π½Π° ΡΡΡΠ²ΡΡΠ°. Π Π΅Π³ΠΈΡΡΡΠΈΡΠ°Π½ΠΈΡΠ΅ ΠΌΠ΅ΡΡΠ½ΠΈ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈ ΠΈΠΌΠ°Ρ Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ ΡΡΠ»Π°ΡΠ° ΠΌΡΠ·ΠΈΠΊΠ° Π½Π° ΡΡΡΠ²ΡΡΠ°, Π±Π΅Π· Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΡΠ΅Π± ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°, ΠΊΠ°ΡΠΎ Π²Π»ΡΠ·Π°Ρ ΠΏΡΠ΅Π· Π²ΡΠ΅ΠΊΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ Ρ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° Subsonic API - Π΄ΡΡΠ³ ΠΌΡΠ·ΠΈΠΊΠ°Π»Π΅Π½ ΡΡΡΠ²ΡΡ, ΡΠ΅Π³Π° ΠΏΠΎΠ΄ ΠΏΠ°ΡΠ΅Π½ΡΠΎΠ²Π°Π½ Π»ΠΈΡΠ΅Π½Π·, Ρ ΠΏΠ°ΡΠ°Π»Π΅Π»Π½ΠΎ ΡΠ°Π·Π²ΠΈΠ²Π°ΡΠΈ ΡΠ΅ ΠΊΠ»ΠΎΠ½ΠΎΠ²Π΅ Π½Π° ΡΡΠ°ΡΠ°ΡΠ° ΠΊΠΎΠ΄ΠΎΠ²Π° Π±Π°Π·Π° ΠΏΠΎΠ΄ Π±Π΅Π·ΠΏΠ»Π°ΡΠ΅Π½ Π»ΠΈΡΠ΅Π½Π·, - ΠΈΠ»ΠΈ ΡΠΎΠ΄Π½ΠΈΡ Funkwhale API, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Otter Π·Π° Android.
ΠΠ»ΠΈΠ΅Π½ΡΠΈΡΠ΅ ΠΌΠΎΠ³Π°Ρ ΡΡΡΠΎ Π΄Π° ΠΏΠΎΠΈΡΠΊΠ°Ρ ΠΎΡ ΡΡΡΠ²ΡΡΠ° ΡΡΠ°Π½ΡΠΊΠΎΠ΄ΠΈΡΠ°Π½Π° Π²Π΅ΡΡΠΈΡ Π½Π° ΠΏΠ΅ΡΠ½ΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΠΎΡ FLAC Π² MP3 Ρ ΠΏΠΎ-Π½ΠΈΡΡΠΊ Π±ΠΈΡΡΠ΅ΠΉΡ, ΠΈΠ·ΠΈΡΠΊΠ²Π°Ρ ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ ΠΈΠ½ΡΠ΅ΡΠ½Π΅Ρ ΡΡΠ°ΡΠΈΠΊ).
ΠΡΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΅ Π΄Π° ΡΠ΅ Π°Π±ΠΎΠ½ΠΈΡΠ°ΡΠ΅ Π·Π° RSS Π΅ΠΌΠΈΡΠΈΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Π·Π° Π²Π΅ΡΠ΅ ΡΠΏΠΎΠΌΠ΅Π½Π°ΡΠΈΡΠ΅ ΠΏΠΎΠ΄ΠΊΠ°ΡΡΠΈ.
ΠΡΠΎΠΌΠ΅Π½ΠΈ Π² ΡΠ°Π·ΠΈ Π²Π΅ΡΡΠΈΡ:
- ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½ΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠ°ΡΠ° Π²Π΅ΡΡΠΈΡ Π½Π° Python Π΅ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½Π° Π΄ΠΎ 3.6;
- ΠΏΡΠΎΠΌΠ΅Π½ΠΈ Π² ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈΡ API, ΠΊΠΎΠΈΡΠΎ Π½Π°ΡΡΡΠ°Π²Π°Ρ ΡΡΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡΠ°;
- ΠΎΡΠΌΡΠ½Π° Π½Π° JSON ΡΠΎΠΊΠ΅Π½ΠΈ (JWT) Π² ΠΏΠΎΠ»Π·Π° Π½Π° OAuth;
- ΠΏΠΎΠ΄ΠΎΠ±ΡΠ΅Π½ Π°Π»Π³ΠΎΡΠΈΡΡΠΌ Π·Π° Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½Π΅ Π½Π° Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π·Π° ΠΊΠΎΡΠΈΡΠΈ;
- ΠΊΡΠΌ ΡΠ΅Π± ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½ Π±ΡΡΠΎΠ½ Π·Π° ΠΈΠΌΠΏΠΎΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΌΡΠ·ΠΈΠΊΠ° ΠΎΡ ΡΠ°ΠΉΠ»ΠΎΠ²Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ° Π½Π° ΡΡΡΠ²ΡΡΠ°;
- ΠΏΠΎΡΠ²ΠΈ ΡΠ΅ Π΄ΠΈΡΠΏΠ»Π΅ΠΉ Π½Π° Π±ΡΠΎΡ ΠΈΠ·ΡΠ΅Π³Π»ΡΠ½ΠΈΡ Π½Π° ΠΏΠ΅ΡΠ½ΠΈ ΠΈ Π°Π»Π±ΡΠΌΠΈ;
- Π½ΠΎΠ²Π° ΡΡΡΠ°Π½ΠΈΡΠ° Π·Π° ΡΡΡΡΠ΅Π½Π΅;
- Π±ΡΡΠΎΠ½ΡΡ βΠ²ΡΠ·ΠΏΡΠΎΠΈΠ·Π²Π΅ΠΆΠ΄Π°Π½Π΅β Π½Π° ΠΏΠ΅ΡΠ½ΠΈ ΠΈ Π°Π»Π±ΡΠΌΠΈ Π²Π΅ΡΠ΅ Π·Π°ΠΌΠ΅ΡΡΠ²Π° ΠΎΠΏΠ°ΡΠΊΠ°ΡΠ°, Π²ΠΌΠ΅ΡΡΠΎ Π΄Π° Π΄ΠΎΠ±Π°Π²Ρ ΠΏΠ΅ΡΠ½ΠΈ ΠΊΡΠΌ Π½Π΅Ρ;
- ΠΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° ΡΠΊΡΠΎΠ±Π»ΠΈΠ½Π³ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° Last.fm API v2.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: linux.org.ru