Code Monkey home page Code Monkey logo

ddfguide's Introduction

DDF Guide

Eine Open-Source-Datenbank-App für alle "Die drei ???"- Fans unter Android!

alt text

Grundidee

Meine Frau hat mich all drei Tage gefragt, wann denn nochmal die nächste "Die drei ???"-Folge erscheint. Da ich das Datum nach drei Tage auch wieder vergessen hatte, musste ich wieder und wieder danach googlen. Es enstand die Idee, eine App zu entwickeln, in der die nächsten Releasetermine immer aktuell zu finden sind - der DDF Guide. Bei der Entwicklung sind immer mehr und mehr Features hinzugekommen. Mittlerweile ist die App eine große Datenbank-App für "Die drei ???"-Hörspiele.

Features

  • Die App enthält alle bisher erschienenen Folgen inklusive Sonderfolgen von "Die drei ???", "Die drei ??? Kids" und "DiE DR3i".
  • Jede Folge kann als "gehört" und/oder Lieblingsfolge markiert werden. So behälst du immer den Überblick.
  • Es gibt eine Vorschaufunktion, die die Folgen enthält, die als nächstes veröffentlicht werden (soweit bereits bekannt). Am Releasetag erhälst du dann sogar eine Benachrichtigung auf dein Handy: So verpasst du nie wieder eine neue Folge!
  • Es ist eine Zufallsfunktion vorhanden, die eine willkürliche Folge anzeigt. Lass doch einfach mal den Zufall entscheiden, welche Folge du heute hörst!
  • Mit den Such-/Filter- und Sortierfunktionen können Folgen organisiert werden. Es lassen sich so z.B. alle Folgen suchen, in denen Skinny Norris mitspielt oder in denen Bastian Pastewka spricht. "Wie hieß die Folge noch gleich?" war gestern!
  • Du hast dir eine Folge ausgesucht? Dann lass dich vom DDF Guide direkt zu Spotify weiterleiten, um sie zu hören!
  • Deine Daten können im- und exportiert werden. Dadurch kannst du mehrere Android-Geräte synchronisieren oder einfach deine Daten sichern, wenn du mal dein Gerät wechselst.

alt text alt text

Installation

Es gibt drei Installationsmöglichkeiten für den DdfGuide:

Da der offizielle F-Droid Build Server (bislang) keine Xamarin Apps unterstützt, muss Izzy's Repo zum F-Droid Client hinzugefügt werden. In der offiziellen F-Droid App öffnet man dazu die Einstellungen, wählt Paketquellen aus und fügt https://apt.izzysoft.de/fdroid/repo hinzu oder man scannt einfach diesen QR Code.

Contributing

„Die drei ???“ sind eine eingetragene Marke der Franckh-Kosmos Verlags-GmbH & Co. KG, Stuttgart. Copyright Diese App ist NICHT im Besitz von Kosmos, Europa, der Familie Roberts oder anderen Personen, die in die Produktion der Serie Die drei ??? eingebunden sind. Alle Schutzmarken, Logos und Copyrights gehören ihren jeweiligen Besitzern. Alle Bilder © copyright by Kosmos, Europa, Studios Hamburg, USM oder Random House.

ddfguide's People

Contributors

cbaum99 avatar dependabot[bot] avatar ftpproxy avatar kerstinmaur avatar selmaohneh avatar selmaohneh-draeger avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar  avatar

Forkers

cbaum99

ddfguide's Issues

Ladezeit beim Appstart visualisieren

Beim Start der App wird versucht, die Folgeninfos zu aktualisieren.

Bei schlechten internetverbindungen kann das länger dauern. Ein Timeout gibt es erst nach circa 10 Sekunden.

Das Starten der App fühlt sich dadurch bei schlechten Internetverbindungen etwas träge an.

Ich denke, dass es angenehmer ist, wenn die Zeit während des Aktualisierens visualisiert wird. Das kann klassischer Weise durch den 'Ladekreis' von Android passieren. Dort steht dann, dass nach neuen Folgeninformationen geladen werden. Zusätzlich könnte man die Zeit bis zum Timeout anzeigen und dem Benutzer so transparenter zu machen, was grade passiert.

Import/Export der Benutzerdaten

Damit die gehörten und favorisierten Folgen nicht erneut verloren gehen, muss es eine Import/Export-Funktion der Benutzerdaten geben.

Export wird in .json erfolgen, da die Daten bereits so vorhanden sind. Die Datei kann geteilt werden; so kann sie via Email, WhatsApp, etc. gesichert werden.

Das ganze ist ebenfalls Grundvoraussetzung für eine Synchronisation zwischen verschiedenen Geräten.

Dark mode

Die App sollte "natürlich" auch einen dark mode anbieten. :-)

Gehört-Historie aufzeichnen

Indem man einen Button "Gerade gehört" implementiert, ließe sich eine Historie der zuletzt gehörten Folgen erzeugen. Dadurch würden weitere Features ermöglicht, z.B.:

  • Alle Folgen sortieren nach "zuletzt gehört"
  • Benachrichtigungen: "Du hast Folge xy lange nicht mehr gehört, wie wär's?"

Um Bewertung im Play Store bitten

Ich finde solche Popups extrem nervig - deshalb sollte auch nur selten gefragt werden. Beispielsweise bei jedem 50sten Start der App.

Über den Popup kann man entweder

  • direkt zum Play Store
  • 'später' klicken, dadurch wird das Erscheinen des Popups auf x Appstarts nach hinten verschoben
  • 'nicht mehr fragen' klicken, dadurch wird der Popup in Zukunft nie wieder erscheinen

Ziel ist es, mehr Bewertungen von den Powerusern zu erhalten.

Links/Rechts wischen zum Markieren als "gehört" bzw. "Favorit" in der Listenansicht

Viele vermissen das Feature, direkt in der Listenansicht Folgen als gehört oder Favorit zu markieren.

Da Checkboxen in der Listenansicht gegen die Androidkonventionen sind, habe ich an Wischgesten gedacht.

Wischt man eine Folge nach links erscheint ein blauer Hintergrund und beim loslassen wird die Folge als gehört markiert.

Wischt man eine Folge nach rechts erscheint ein roter Hintergrund und beim loslassen wird die Folge als Favorit markiert.

Optional, je nach Aufwand, kann man in den farbigen Hintergrund auch noch das jeweilige Symbol packen (Herz/Box).

So könnte man sich wild durch die Liste wischen und schnell abhaken und hat trotzdem nicht den Nachteil, eine Folge versehentlich zu markieren.

Benachrichtung öffnet nicht die App / Folge

Neue Folgen werden bei mir zwar in der Benachrichtigungszeile angezeigt. Das Drücken auf die Benachrichtigung öffnet aber nicht wie erwartet die entsprechende Folge in der App.

Cover im Offlinemodus nicht korrekt

Wenn keine Internetverbindung vorhanden ist, sollten die Cover aus dem lokalen Cache geladen werden. Momentan passiert dies jedoch nicht und es wird das Standardbild gezeigt.

Ein dafür Grund könnte sein, dass im ImageViewFiller der Cache im Fehlerfall mit dem Standardbild überschrieben wird. Eventuell ist das hier bereits gefixt, wenn wir das rausnehmen...

Gehörte und favorisierte Folgen auch in der Liste erkennbar machen

Auch in der Listenansicht sollte erkennbar sein, ob eine Folge schon gehört wurde oder ein Favorit ist. Dafür könnten beispielsweise kleine Icons je Zeile eingefügt werden.
Hierbei geht es rein um das Anzeigen, nicht um das markieren. Dies soll weiterhin nur in der Einzelansicht passieren.

Tabwechsel während Markierung durch Wischen führt zu Absturz

Wischt man in der Listenansicht, um eine Folge als Favorit oder gehört zu markieren, und wechselt während des Markiervorgangs den Tab (beispielsweise von Die drei ??? auf Die drei ??? Kids), so kann es zu einem Absturz kommen.

Das Wischen schreit das Event "Hier hat jemand 'gehört' markiert an Position 122". Mittlerweile sind wir jedoch in der neuen Liste. Dort kann es diese Position im worst case garnicht geben und die App crasht.

Lösungsideen:

  • Tabwechsel sperren, während das Markieren läuft
  • Events auf synchronität prüfen --> sicherstellen, dass das Markieren fertig ist bevor das Tabwechselevent startet.

Json Definition

Jedes Objekt in dtos.json sollte die folgende Struktur haben:

  {
    "Id": "<STRING als UUID XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
    "Title": "<STRING>",
    "NumberEuropa": <UNSIGNED INT oder NULL>,
    "ReleaseDate": "DATE im Format YYYY-MM-DDThh:mm:ss",
    "CoverUrl": "https://github.com/selmaohneh/DdfGuide/raw/master/Covers/<$Id>.jpg",
    "Interpreter": "<STRING>",
    "SpotifyAlbumId": "<STRING oder NULL>",
    "Description": "<STRING optional with simple HTML tags>",
    "Roles": [
      {
        "Character": "<STRING>",
        "Speaker": "<STRING>"
      }
    ]
  }

Reglen:

  • Die Reihenfolge der Properties muss beachtet werden
  • Alle Properties bis auf "Roles" sind zwingend zu setzen
  • Die Einrückungen müssen entsprechend der Strukur mit den Werten 3,5,7,9 Whitespaces abgebildet werden
  • Nur Whitespaces, keine Tabs benutzen
  • Strings dürfen weder leading noch trailing Whitespaces enthalten
  • Nur in "Description "dürfen einfache HTML Tags wie "
    " zur Formatierung benutzt werden
  • Sollten die Properties "NumberEuropa" oder "SpotifyAlbumId" keinen Wert enthalten muss NULL gesetzt werden

Amazon Music-Support

Alternativ zu Spotify, soll es möglich sein, über den Playbutton in der Folgenansicht zu Amazon Music weitergeleitet zu werden.
Mögliche Umsetzung im UI:

  • Playbutton öffnet zunächst einen Listendialog mit der Auswahl Spotify /Amazon
  • ein komplett neues Menü "Einstellungen" in dem der Streaminganbieter ausgewählt werden kann.
  • für beide Anbieter ein eigener Playbutton, dann wahrscheinlich das entsprechende Icon des Anbieters, statt dem Play-Pfeil

Cleanup: Falsche Daten in Folge "Auge des Sturms"

  • Im JSON befinden sich unnötige Whitespaces vor dem Titel
  • Im JSON wird nicht auf das Cover auf Github sondern auf Hoerspiel.de verwiesen
  • Das Cover auf Github hat den falschen Namen / stimmt nicht mit der ID überein

Gehört- und Favoritcheckboxen in der Listenansicht sind klickbar (Dummyauswahl)

In der Listenansicht soll man nicht wählen können, ob man eine Folge gehört hat oder diese ein Favorit ist. Dies ist eine Androidkonvention. Es ist gewollt, dass man erst in die Einzelansicht der Folge geht und die Auswahl dort trifft. Ansonten kommt es außerdem zu Fehlklicks, z.B. beim Scrollen.

Die beiden kleinen Icons, die eigentlich nur die Auswahl zeigen sollten, sind jedoch noch aktiv. Das heißt man kann sie anhaken oder abhaken. Das ganze hat zwar keinerlei Einfluss auf die eigentlichen Benutzerdaten, sollte aber trotzdem deaktiviert werden.

Mehrere Filter erlauben

Aus dem Play Store: Die Filter sind auch gut. Hier wäre es schön, wenn man mehrere gleichzeitig anwendbar wären, wie z.B. ungehörte Sonderfolgen.

Gehört und Favorit innerhalb der Liste editierbar machen

Feedback aus dem Play Store: Leider kann man die Folgen nicht mehr so schnell abhaken und liken wie früher, sondern man muss die Folge vorher auswählen. So kann man sich auch nicht mehr so schnell eine Übersicht verschaffen.

Spotify-Support

Neben dem Gehört- und dem Favorit-Kästchen soll ein Spotify-Symbol hin, dass direkt die Folge in der Spotify-App start. Falls die App nicht installiert ist, soll zu der Web-App weitergeleitet werden.

Dafür müssen die entsprechenden URIs, soweit vorhanden, in die dtos.json eingetragen werden.

Cleanup der Bildergrößen

Die Coverbilder weisen unterschiedliche Größen auf.

Es sollte eine Größe definiert werden und die Bilder entsprechend angepasst werden.
Im Code ist 160dip festgelegt. Zu Gunsten der Ladezeit würde ich bei bei 220px bleiben, die bei der Mehrzahl der Bilder schon so ist.
Einwände?

00f2f9da-ffaf-4147-87cd-b3a53393c5c1.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 14190B 0.000u 0:00.000
0162eacf-7b9d-4f30-9e60-48062d828251.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 9037B 0.000u 0:00.000
0243b30a-0a9b-4d71-af1a-86209871a554.jpg JPEG 220x218 220x218+0+0 8-bit sRGB 48487B 0.000u 0:00.000
04301b97-53aa-40ae-8105-d2c2d8998ffb.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 12833B 0.000u 0:00.000
04e4ddf9-c65f-4be7-80cc-d079bc829e41.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 16689B 0.000u 0:00.000
0681af3c-279b-43fb-94ae-953166af481a.jpg JPEG 220x218 220x218+0+0 8-bit sRGB 58327B 0.000u 0:00.000
06f0e716-72e8-4da5-bdf1-bae9bce7320f.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 12087B 0.000u 0:00.000
070a61f0-69b7-4c3f-bdc5-741ddb2d00b8.jpg JPEG 220x218 220x218+0+0 8-bit sRGB 38789B 0.000u 0:00.000
07cfffc6-5c4e-4d78-b51e-3f92c2663319.jpg JPEG 220x218 220x218+0+0 8-bit sRGB 45805B 0.000u 0:00.000
0a445a84-5e7a-47e5-a8c5-493e7e91949e.jpg JPEG 220x218 220x218+0+0 8-bit sRGB 46678B 0.000u 0:00.000
0a87af7a-e5d4-45dd-a7bb-2cce36a38766.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 11222B 0.000u 0:00.000
0b4a90a6-e27d-4323-b7b3-e42e8aeef72f.jpg JPEG 220x218 220x218+0+0 8-bit sRGB 51845B 0.000u 0:00.000
0bcc6338-a7c1-41c2-b993-09c15b69e186.jpg JPEG 220x218 220x218+0+0 8-bit sRGB 37511B 0.000u 0:00.000
0c189e49-1a0f-408d-8334-b63eae0e2104.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 9695B 0.000u 0:00.000
0c7ae67f-556f-452f-986f-9284a1193574.jpg JPEG 220x218 220x218+0+0 8-bit sRGB 38780B 0.000u 0:00.000
0cd1b3b2-4a9a-4eee-ade7-e55d841c0c6d.jpg JPEG 220x218 220x218+0+0 8-bit sRGB 47189B 0.000u 0:00.000
0d4c2a53-67fa-4f47-a007-3d03d916d7b9.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 10746B 0.000u 0:00.000
0d900fe7-4a77-4e62-a3da-9673019d7e0f.jpg JPEG 220x218 220x218+0+0 8-bit sRGB 34734B 0.000u 0:00.000
0da3dcb0-ff4f-4689-8175-c4707e91dec1.jpg JPEG 220x218 220x218+0+0 8-bit sRGB 42154B 0.000u 0:00.000
0e0e543d-1cb0-4bab-bbe5-e281554eed33.jpg JPEG 220x218 220x218+0+0 8-bit sRGB 38824B 0.000u 0:00.000
0e7dab13-e311-484c-aa46-9dbc1e3a05e8.jpg JPEG 220x218 220x218+0+0 8-bit sRGB 55060B 0.000u 0:00.000
0ef50027-2ad7-4e8b-a65a-515343d8a0fc.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 10188B 0.000u 0:00.000
11112c50-764c-409a-ae27-79ce3369b242.jpg JPEG 220x205 220x205+0+0 8-bit sRGB 41346B 0.000u 0:00.000
1174f9c3-51a9-4098-947c-a12ae58e9e7a.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 10207B 0.000u 0:00.000
11c3df9e-bf3f-4f5e-bcec-411a8fbe9418.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 15348B 0.000u 0:00.000
12153CEB-7D82-4BEE-AE2C-CF784186EC06.jpg JPEG 220x220 220x220+0+0 8-bit sRGB 11993B 0.000u 0:00.000
13b39bf3-7ada-453c-82ba-98bd3ef600cc.jpg JPEG 220x218 220x218+0+0 8-bit sRGB 42892B 0.000u 0:00.000
14d7550a-c7f0-4728-951e-164710e2e843.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 13219B 0.000u 0:00.000
173c53c0-a1da-45f7-9596-bf35a2c8b470.jpg JPEG 220x218 220x218+0+0 8-bit sRGB 39466B 0.000u 0:00.000
18f5d45f-6f05-4dab-87c7-d34eaf33dcae.jpg JPEG 220x218 220x218+0+0 8-bit sRGB 52308B 0.000u 0:00.000
1b8e9213-cbc9-4140-8ef5-6fbd18635f56.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 12151B 0.000u 0:00.000
1bedbf5b-67dd-4ec0-83e0-946ae667e4a8.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 13067B 0.000u 0:00.000
1bfec31d-b514-4f82-a2b6-bfdcfabf7109.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 15272B 0.000u 0:00.000
1c6d16d0-b44e-49c3-b8c0-a54ebed14b78.jpg JPEG 220x218 220x218+0+0 8-bit sRGB 42587B 0.000u 0:00.000
1e065983-7281-495e-9a0d-6548f24b4365.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 8020B 0.000u 0:00.000
1f0024f6-e71f-4ac0-b554-0cad9e7e55a4.jpg JPEG 220x218 220x218+0+0 8-bit sRGB 44336B 0.000u 0:00.000
20032b68-1a7e-4d43-84ff-aa187805c843.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 16003B 0.000u 0:00.000
20b29902-3e5e-4631-84f0-1a7e20942cb7.jpg JPEG 220x218 220x218+0+0 8-bit sRGB 38980B 0.000u 0:00.000
21738f0c-319d-4eee-807c-e276df8e70e5.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 11028B 0.000u 0:00.000
22c37ac8-b69d-456d-b09c-78b9218da418.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 10559B 0.000u 0:00.000
2372b815-7365-4b0c-9ed5-3b6088b76b2a.jpg JPEG 220x217 220x217+0+0 8-bit sRGB 52924B 0.000u 0:00.000
247d7cca-45f3-48ea-9990-4856aebcfba9.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 9784B 0.000u 0:00.000
24ea07c3-c7c3-41f1-9e47-45d4053ce0bb.jpg JPEG 474x470 474x470+0+0 8-bit sRGB 41566B 0.000u 0:00.000
26ae8dd8-8b03-4533-9b42-1d5993f8e0f6.jpg JPEG 220x220 220x220+0+0 8-bit sRGB 39731B 0.000u 0:00.000
27bfb490-1d5a-4b9a-a410-65765c186abc.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 11073B 0.000u 0:00.000
28061190-f74e-4ad2-ba89-c71ecdf0346d.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 15060B 0.000u 0:00.000
281bf932-ae6a-48e6-9938-61bac8f06b23.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 10825B 0.000u 0:00.000
281cbcd6-2f17-4857-98e6-d3a683b0dd09.jpg JPEG 250x220 250x220+0+0 8-bit sRGB 14962B 0.000u 0:00.000
2874d454-5eff-41e6-89e4-a402f012d759.jpg JPEG 220x218 220x218+0+0 8-bit sRGB 50169B 0.000u 0:00.000
287dcea8-c8ee-4753-95e7-a1376e64eaef.jpg JPEG 450x450 450x450+0+0 8-bit sRGB 44602B 0.000u 0:00.000
2893419b-6d11-4cbb-ad9f-bc450d23105d.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 14967B 0.000u 0:00.000
28abb3a3-2a02-4b55-960d-dc32c35c4e5c.jpg JPEG 220x218 220x218+0+0 8-bit sRGB 45195B 0.000u 0:00.000
28adfb6d-7be3-4e4b-b976-c3cc7e07cb5b.jpg JPEG 220x218 220x218+0+0 8-bit sRGB 51390B 0.000u 0:00.000
28c9624d-4518-4d64-9324-88515324ab6f.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 11993B 0.000u 0:00.000
28f9e0a0-d0f0-4ddb-bd89-f651c93e356b.jpg JPEG 220x218 220x218+0+0 8-bit sRGB 56904B 0.000u 0:00.000
2a9052a9-4594-4145-92a7-0f9a6bc1afee.jpg JPEG 220x218 220x218+0+0 8-bit sRGB 41985B 0.000u 0:00.000
2ae9f20f-ffd8-46c2-9a67-68ebf51a7f27.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 12149B 0.000u 0:00.000
2aedc853-133a-4321-901f-ad14b13c43ea.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 10576B 0.000u 0:00.000
2c56a440-7877-48da-ab43-34239979c235.jpg JPEG 220x218 220x218+0+0 8-bit sRGB 40050B 0.000u 0:00.000
2e99f1bf-d63c-45bc-9092-5cb4875114b7.jpg JPEG 220x220 220x220+0+0 8-bit sRGB 10749B 0.000u 0:00.000
2fd12045-fb76-44ac-aa5b-3285094c50d5.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 10896B 0.000u 0:00.000
2FD6DC9F-4C15-4858-B456-0001797D6ACB.jpg JPEG 1200x1200 1200x1200+0+0 8-bit sRGB 134415B 0.000u 0:00.000
2ffa7ad6-41e1-4417-bd7c-f0c6beb3c981.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 15163B 0.000u 0:00.000
30c6a2aa-9dd3-4eb4-bacf-877748ee2bd0.jpg JPEG 220x218 220x218+0+0 8-bit sRGB 39122B 0.000u 0:00.000
34e38f0f-430e-49b9-8ff2-b26515872e0e.jpg JPEG 220x218 220x218+0+0 8-bit sRGB 54030B 0.000u 0:00.000
37584e5b-aa67-408c-b378-d09c83611577.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 10785B 0.000u 0:00.000
38d562f7-e072-4426-875a-fd9c848b3029.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 15690B 0.000u 0:00.000
38e436db-7fe3-4563-8435-60ce068a56a0.jpg JPEG 220x218 220x218+0+0 8-bit sRGB 44138B 0.000u 0:00.000
3918440c-684f-4268-9c61-8d823b7c8a2d.jpg JPEG 220x218 220x218+0+0 8-bit sRGB 43735B 0.000u 0:00.000
3937d059-8df6-472a-8704-2db83e9b0d5f.jpg JPEG 220x218 220x218+0+0 8-bit sRGB 55698B 0.000u 0:00.000
39c21de0-a2d8-46b0-875a-173539bf5e8c.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 10285B 0.000u 0:00.000
3af63392-0d61-4040-8384-5ff6361d0e33.jpg JPEG 130x129 130x129+0+0 8-bit sRGB 9526B 0.000u 0:00.000
3c280ab3-7d7e-4ecd-b05e-20b11cbd573f.jpg JPEG 220x218 220x218+0+0 8-bit sRGB 43391B 0.000u 0:00.000
3d8764c0-939d-45c1-9693-8764e195fbe7.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 9664B 0.000u 0:00.000
3e2294fb-ea72-4541-becc-687f6993c0f1.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 12059B 0.000u 0:00.000
3ed4e329-fc37-4943-aa79-b189d620595f.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 11927B 0.000u 0:00.010
3f59b130-5e9b-4bef-93dd-9f04b4b9ee19.jpg JPEG 600x600 600x600+0+0 8-bit sRGB 50634B 0.000u 0:00.000
3febaebe-7a40-4e14-8be2-15eefdfd2cff.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 9878B 0.000u 0:00.000
404f6c4f-4ca4-4ad0-bb14-e19664cd35f4.jpg JPEG 1200x1200 1200x1200+0+0 8-bit sRGB 199978B 0.000u 0:00.000
40f4eeee-9116-427a-9b93-ab93c5b28650.jpg JPEG 220x218 220x218+0+0 8-bit sRGB 58838B 0.000u 0:00.000
417e293d-7391-4f77-8969-fe84ec297b5a.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 12022B 0.000u 0:00.000
432fbdb6-243b-4e47-9946-106f807b4843.jpg JPEG 220x218 220x218+0+0 8-bit sRGB 38765B 0.000u 0:00.000
43f60b82-722f-46ce-9dce-33e6c7851e06.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 11136B 0.000u 0:00.000
44db0981-c8d8-42d5-9002-8e604fb1e5de.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 11423B 0.000u 0:00.000
4637e94b-ebb0-42ad-862f-647b883f72a9.jpg JPEG 220x218 220x218+0+0 8-bit sRGB 47547B 0.000u 0:00.000
474744b5-a6b7-41d7-8581-8530b5e76101.jpg JPEG 220x218 220x218+0+0 8-bit sRGB 43136B 0.000u 0:00.000
48b9e18f-300a-46a5-a503-404b3fd493bb.jpg JPEG 220x218 220x218+0+0 8-bit sRGB 56011B 0.000u 0:00.000
4b2bedef-9f82-44ee-93dd-afe4269affeb.jpg JPEG 220x218 220x218+0+0 8-bit sRGB 48970B 0.000u 0:00.000
4b4b4803-6bac-4a5d-8212-fbb64d4bbbbc.jpg JPEG 218x218 218x218+0+0 8-bit sRGB 12136B 0.000u 0:00.000
4b54ed94-9bf0-4a6e-b6e5-15046b2f9ddc.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 14735B 0.000u 0:00.000
4dd0aced-915a-4f69-afeb-47c60c2298e5.jpg JPEG 220x218 220x218+0+0 8-bit sRGB 51147B 0.000u 0:00.000
4ee19beb-0855-45f4-8638-2f6bdc219d91.jpg JPEG 220x218 220x218+0+0 8-bit sRGB 50037B 0.000u 0:00.000
4f72d198-e313-4896-a814-e210034e22ea.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 13063B 0.000u 0:00.000
50f94680-1d55-4850-b936-43fb52498e70.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 9074B 0.000u 0:00.000
52353481-cf2d-438d-94a2-5b785b35c0ea.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 12544B 0.000u 0:00.000
52635912-3ad6-4453-b826-2ac9a142913a.jpg JPEG 220x218 220x218+0+0 8-bit sRGB 58132B 0.000u 0:00.000
55399b34-1e27-46d1-8fa6-a3aa2871720b.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 12200B 0.000u 0:00.000
56368ee0-c822-4819-8c0a-24973a963d58.jpg JPEG 220x220 220x220+0+0 8-bit sRGB 15873B 0.000u 0:00.000
58651aa9-2afc-42e4-8ecd-3d0197e996f7.jpg JPEG 220x220 220x220+0+0 8-bit sRGB 10005B 0.000u 0:00.000
586bc389-6a39-47c4-9705-4054250ca51a.jpg JPEG 220x218 220x218+0+0 8-bit sRGB 53924B 0.000u 0:00.000
59B269E5-ECC2-45ED-8FCA-AA052DA76018.jpg JPEG 220x220 220x220+0+0 8-bit sRGB 11545B 0.000u 0:00.000
59fc8275-fb09-43bf-becb-a4cfb7541bac.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 10430B 0.000u 0:00.000
5aea0736-4946-46ec-8851-0d7b1892647e.jpg JPEG 220x218 220x218+0+0 8-bit sRGB 47834B 0.000u 0:00.000
5c4b9348-5b09-4281-ab6d-335c7b979131.jpg JPEG 220x220 220x220+0+0 8-bit sRGB 40945B 0.000u 0:00.000
5c6e13bc-f73a-4990-abc2-23c3e37245a5.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 11307B 0.000u 0:00.000
5c7f4b57-0af0-449e-8cee-75232e62561c.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 10301B 0.000u 0:00.000
5cba8809-dfa5-4369-8bea-f774eaaee017.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 12789B 0.000u 0:00.000
5d18b8f5-e1e2-4c71-89a6-93194786e283.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 11626B 0.000u 0:00.000
5f53a2d3-970e-41fd-a653-230176d9b598.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 10654B 0.000u 0:00.000
6009e166-a843-49dd-8eff-4fdc7cba7fac.jpg JPEG 220x218 220x218+0+0 8-bit sRGB 38967B 0.000u 0:00.000
6044a7fa-6473-4622-8490-97a3b142451d.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 8897B 0.000u 0:00.000
6048f641-35e1-4620-ac57-941d1e064ae8.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 7490B 0.000u 0:00.000
605abd50-17a7-4331-8dbf-f5ceda7c41a6.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 14017B 0.000u 0:00.000
6071d2fa-f405-4baa-8ade-d7dba9bbc927.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 9995B 0.000u 0:00.000
60a64aaa-01d2-4aee-950b-35c92cfcf47b.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 9892B 0.000u 0:00.000
61250a4c-ce2d-4d6e-864f-ca3bf39ad4b1.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 10082B 0.000u 0:00.000
618060ec-80bc-4c2d-bc91-df2d853f90e8.jpg JPEG 450x406 450x406+0+0 8-bit sRGB 50632B 0.000u 0:00.000
620654a3-3dd2-4541-882f-f7d5ddc10f53.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 10995B 0.000u 0:00.000
6290a71a-d904-4125-b0dd-728d41481afd.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 10885B 0.000u 0:00.000
635ac7ce-0cf6-4eb2-9e98-f2a6d8933f22.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 10592B 0.000u 0:00.000
636835cc-6d08-4a22-b702-759776b9e8fc.jpg JPEG 245x220 245x220+0+0 8-bit sRGB 12287B 0.000u 0:00.000
63f8a268-1ff1-4f22-a6cd-36077e2690f6.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 12866B 0.000u 0:00.000
643ef9bf-8d4c-40ac-aa4f-f7d136fe2abe.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 11767B 0.000u 0:00.000
6458387d-57e8-4e9f-9521-6e0c66a1330a.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 10919B 0.000u 0:00.000
6499078c-8107-4685-b301-5c714e39933a.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 12759B 0.000u 0:00.000
6803e364-b03e-457f-9f76-42a5e82654e1.jpg JPEG 220x218 220x218+0+0 8-bit sRGB 41507B 0.000u 0:00.000
68f22cfe-6814-4505-8fa2-76e5054a3740.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 10712B 0.000u 0:00.000
69a8e430-2b20-48e3-9336-2593cc202b8a.jpg JPEG 220x218 220x218+0+0 8-bit sRGB 54136B 0.000u 0:00.000
6d5f72f9-b40c-421d-a7a9-847ab012e195.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 14736B 0.000u 0:00.000
6e0dd27b-209f-4192-ab12-9c02d9875b04.jpg JPEG 220x218 220x218+0+0 8-bit sRGB 38907B 0.000u 0:00.000
6e5bcec2-dac9-4f89-9007-b859961a5136.jpg JPEG 220x218 220x218+0+0 8-bit sRGB 53836B 0.000u 0:00.000
6e5c804a-6051-4f68-ad1b-92ec848575ba.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 11068B 0.000u 0:00.000
6f1f3d2e-df79-48c1-b803-cf234c357c43.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 11842B 0.000u 0:00.000
6f6f8242-9cfe-4bbd-8351-5b99b9be1918.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 13192B 0.000u 0:00.000
6faa4bd9-5f71-4136-9111-db0b785468e5.jpg JPEG 220x218 220x218+0+0 8-bit sRGB 45913B 0.000u 0:00.000
7211dad1-42cf-46a2-b97d-c5b93fbf0f81.jpg JPEG 130x130 130x130+0+0 8-bit sRGB 8201B 0.000u 0:00.000
72bce23c-2e84-40e6-b944-02e641a0d0f5.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 9919B 0.000u 0:00.000
73037e52-7a11-4894-8076-da56e33d72fe.jpg JPEG 220x218 220x218+0+0 8-bit sRGB 56380B 0.000u 0:00.000
7323477e-dcaf-48ec-af84-0182c39fedd6.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 14313B 0.000u 0:00.000
738d228b-9af7-400e-a365-0541d864f976.jpg JPEG 220x218 220x218+0+0 8-bit sRGB 41910B 0.000u 0:00.000
7434be4e-beb7-44c1-9a86-b590fe4a2e82.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 15565B 0.000u 0:00.000
750b5e30-5739-4e15-b4aa-5c50fd8b9472.jpg JPEG 222x220 222x220+0+0 8-bit sRGB 16787B 0.000u 0:00.000
753f8803-7471-429b-aa46-951e37977dbd.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 10575B 0.000u 0:00.000
75b474ea-6e34-46e1-91f3-8ff0fcf4a6a4.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 9907B 0.000u 0:00.000
75ebe988-b423-467a-aa0e-bf0c1195012b.jpg JPEG 220x218 220x218+0+0 8-bit sRGB 54756B 0.000u 0:00.000
7622ecca-8c9d-4c07-ba69-d1bbeaeb0699.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 15961B 0.000u 0:00.000
7681bd91-51ba-4169-9090-df86211f7e4d.jpg JPEG 1500x1346 1500x1346+0+0 8-bit sRGB 233598B 0.000u 0:00.000
7745a34c-8756-41c1-9a2f-c99b8c0afdb6.jpg JPEG 220x220 220x220+0+0 8-bit sRGB 13022B 0.000u 0:00.000
798c940f-a0bf-48fd-8447-599acdfc59f3.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 10482B 0.000u 0:00.000
79e53724-82d5-431a-95be-5775643c8144.jpg JPEG 220x219 220x219+0+0 8-bit sRGB 51217B 0.000u 0:00.000
7b79afd8-643d-4e57-8ef7-6166ea1c2f81.jpg JPEG 130x129 130x129+0+0 8-bit sRGB 10875B 0.000u 0:00.000
7bb2d12d-2b8a-47ce-a0a5-092d5bf1615b.jpg JPEG 220x218 220x218+0+0 8-bit sRGB 39839B 0.000u 0:00.000
7e8fe391-83bc-48be-895d-a2c5f5324071.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 11439B 0.000u 0:00.000
7eea8d9f-61f9-4d23-b24d-b56c5fedf9e6.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 11582B 0.000u 0:00.000
7f651aed-ec88-4b32-a21c-6ba8ed237cb0.jpg JPEG 220x218 220x218+0+0 8-bit sRGB 49511B 0.000u 0:00.000
80e2b7be-75fd-4311-800e-ec6bd1041abc.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 9579B 0.000u 0:00.000
86df6b93-26cd-4f4a-bfb0-47e8e69bc242.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 12129B 0.000u 0:00.000
8711140b-4e65-4423-843f-1a6241658f0e.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 11047B 0.000u 0:00.000
88002a9b-5cfd-47a3-8328-5b2482303dcd.jpg JPEG 220x218 220x218+0+0 8-bit sRGB 56426B 0.000u 0:00.000
887c7efe-8d74-4cef-920e-73e1928606c9.jpg JPEG 220x220 220x220+0+0 8-bit sRGB 13882B 0.000u 0:00.000
8ab45e20-915e-4d24-b0c7-51f501eb0115.jpg JPEG 220x220 220x220+0+0 8-bit sRGB 14937B 0.000u 0:00.000
8ae98738-1da3-456a-9702-4f8fd8090022.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 10627B 0.000u 0:00.000
8b0fdb61-a625-4eb7-91b8-fb2cd0eeba44.jpg JPEG 220x218 220x218+0+0 8-bit sRGB 58551B 0.000u 0:00.000
8b612d78-4a59-468e-a150-18d6cd6b9adb.jpg JPEG 220x218 220x218+0+0 8-bit sRGB 33240B 0.000u 0:00.000
8b8d6334-2e30-48f1-a723-2061d9908779.jpg JPEG 220x218 220x218+0+0 8-bit sRGB 35838B 0.000u 0:00.000
8c668730-af11-4cba-9f27-0ebc2129c3a0.jpg JPEG 220x218 220x218+0+0 8-bit sRGB 52479B 0.000u 0:00.000
8d2b62b9-313e-41c1-9543-c5162f652775.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 9081B 0.000u 0:00.000
8d34f92a-dee7-4cda-9c2d-314b295c3576.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 12737B 0.000u 0:00.000
8ee8585e-f0ff-47c2-b773-98e05992a034.jpg JPEG 220x220 220x220+0+0 8-bit sRGB 13135B 0.000u 0:00.000
8f7bbe84-e5ad-41f1-a939-7d1f2344b6e2.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 16416B 0.000u 0:00.000
8fa4eadc-5dd2-4b84-a7cf-bc420ecfb2c1.jpg JPEG 220x218 220x218+0+0 8-bit sRGB 39639B 0.000u 0:00.000
920b65fb-2fe0-4fc3-b84a-c911b4d25419.jpg JPEG 220x218 220x218+0+0 8-bit sRGB 55408B 0.000u 0:00.000
92df38db-4761-412c-91aa-6f4a10d4ad8b.jpg JPEG 220x218 220x218+0+0 8-bit sRGB 44726B 0.000u 0:00.010
93dfb875-9484-4907-9170-1fe7c0765581.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 12203B 0.000u 0:00.000
94f4227f-3b8e-40ec-ada8-6e9017f1e101.jpg JPEG 220x218 220x218+0+0 8-bit sRGB 56048B 0.000u 0:00.000
953026da-5bf5-40e1-9a56-f1366c8c361c.jpg JPEG 223x220 223x220+0+0 8-bit sRGB 13232B 0.000u 0:00.000
959E19CE-8AF9-4577-9D20-A8BA3CF31DA9.jpg JPEG 220x220 220x220+0+0 8-bit sRGB 16028B 0.000u 0:00.000
95b81d93-8d0b-4319-88f9-b04fc8a46c43.jpg JPEG 220x218 220x218+0+0 8-bit sRGB 37793B 0.000u 0:00.000
9672bbe8-c3b2-4847-bd6d-ddf1f08885a7.jpg JPEG 220x218 220x218+0+0 8-bit sRGB 59124B 0.000u 0:00.000
96e6336f-400f-4447-a23d-6521eb97c647.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 11556B 0.000u 0:00.000
970e9d76-933a-4f9e-bde6-3247b77b4767.jpg JPEG 220x220 220x220+0+0 8-bit sRGB 14563B 0.000u 0:00.000
9b01a375-103a-496a-a31d-b82c8c7a82f7.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 10601B 0.000u 0:00.000
9b5fa5e1-83d6-4bd1-8fba-dc9a4e0b2f2a.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 13198B 0.000u 0:00.000
9b936002-2284-4611-8bdb-1b43939e9717.jpg JPEG 220x218 220x218+0+0 8-bit sRGB 63140B 0.000u 0:00.000
9ebac314-832c-4e4b-b713-4637cb97bca2.jpg JPEG 220x218 220x218+0+0 8-bit sRGB 55065B 0.000u 0:00.000
9ef52caa-c6cb-492d-82a6-8c9ec99793f7.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 11201B 0.000u 0:00.000
a129966b-8442-44f2-8a46-8d7c6e689a71.jpg JPEG 220x218 220x218+0+0 8-bit sRGB 43528B 0.000u 0:00.000
a3036bf3-a000-41bb-938f-cb0fd68bfd24.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 9775B 0.000u 0:00.000
a3519573-62d4-4b7a-aeac-44aaec3eabd7.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 13464B 0.000u 0:00.000
a45bce3a-097c-4145-9747-5613f3428b47.jpg JPEG 220x218 220x218+0+0 8-bit sRGB 57431B 0.000u 0:00.000
A5B2BA50-4004-4F31-9FA9-2A0133EBFC67.jpg JPEG 1200x1200 1200x1200+0+0 8-bit sRGB 195673B 0.000u 0:00.000
a6140b12-1c7a-4387-bf1d-a68858a3d083.jpg JPEG 220x218 220x218+0+0 8-bit sRGB 41343B 0.000u 0:00.000
a664f8dc-67b2-4671-acb1-57684500c38a.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 10728B 0.000u 0:00.000
a725fb3a-f2fa-49e2-9e46-933fc55f5cc5.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 11112B 0.000u 0:00.000
A778E6B0-A313-4488-8ED6-A674A6E160D3.jpg JPEG 1200x1200 1200x1200+0+0 8-bit sRGB 142161B 0.000u 0:00.000
a7a1af10-c5cf-41c6-9bdd-38fcf7506a5d.jpg JPEG 220x218 220x218+0+0 8-bit sRGB 38308B 0.000u 0:00.000
a9006ac1-76a2-49e6-ad7f-8de3da0aba13.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 15211B 0.000u 0:00.000
a98c28b8-f5cb-46ca-808b-910816b56245.jpg JPEG 220x218 220x218+0+0 8-bit sRGB 57288B 0.000u 0:00.000
aac65aa5-899e-44bb-8fda-19639aeecd10.jpg JPEG 220x220 220x220+0+0 8-bit sRGB 15872B 0.000u 0:00.000
ab040144-e4ea-4317-be46-776f4e107a42.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 10153B 0.000u 0:00.000
ab75f87a-923d-443f-83db-39c5c18f2829.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 10842B 0.000u 0:00.000
ad765116-1dbe-4044-b072-ac1a7dba3501.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 13240B 0.000u 0:00.000
af616b8b-f190-4cb7-96c8-bd01e715ba71.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 17045B 0.000u 0:00.000
afde672c-30c8-4b6c-865e-5b113980854e.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 11697B 0.000u 0:00.000
affac3bb-9424-4752-9234-1744166ae82a.jpg JPEG 220x218 220x218+0+0 8-bit sRGB 47498B 0.000u 0:00.000
b05734fa-747d-4df0-9441-cbda91745780.jpg JPEG 1200x1200 1200x1200+0+0 8-bit sRGB 157018B 0.000u 0:00.000
b0b2dffa-bcfe-4c8b-afe1-9b70f1239f36.jpg JPEG 220x218 220x218+0+0 8-bit sRGB 40496B 0.000u 0:00.000
b18a7cd4-eb21-42d4-b25c-a14907d439e4.jpg JPEG 220x218 220x218+0+0 8-bit sRGB 56957B 0.000u 0:00.000
b21f3795-0313-4be7-8b43-ce3442594670.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 14706B 0.000u 0:00.000
b2eea953-2372-4251-9aaf-78d6fc32f580.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 10177B 0.000u 0:00.000
b37d7dee-997d-4eef-9672-79651352ae77.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 10547B 0.000u 0:00.000
b39b8816-6bfc-4230-8b8a-1fdeba6d7c80.jpg JPEG 220x218 220x218+0+0 8-bit sRGB 58629B 0.000u 0:00.000
b406e62c-f04d-42f8-b615-07d8818eef6f.jpg JPEG 130x129 130x129+0+0 8-bit sRGB 11980B 0.000u 0:00.000
b4e9ff48-decd-4bfb-970d-3de019ecff98.jpg JPEG 1204x1200 1204x1200+0+0 8-bit sRGB 221018B 0.000u 0:00.000
b4f6bfd3-2699-4a76-bc82-f1e7521e54ec.jpg JPEG 220x218 220x218+0+0 8-bit sRGB 38253B 0.000u 0:00.000
b5a507b1-4501-4690-99b5-41266b252297.jpg JPEG 220x218 220x218+0+0 8-bit sRGB 52206B 0.000u 0:00.000
b68f3d30-292d-4cdb-b4a8-5c22984c517f.jpg JPEG 130x129 130x129+0+0 8-bit sRGB 8911B 0.000u 0:00.000
b70cd23c-acbb-428c-9b51-036864dbd9d9.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 8985B 0.000u 0:00.000
b835321a-84fd-4d4d-8ac4-1008f1904b67.jpg JPEG 220x218 220x218+0+0 8-bit sRGB 48848B 0.000u 0:00.000
b966c2a6-2deb-4106-a9f0-52ecb7f4929e.jpg JPEG 220x218 220x218+0+0 8-bit sRGB 54985B 0.000u 0:00.000
b984f8af-1a1f-4046-a32f-f071071303fe.jpg JPEG 220x218 220x218+0+0 8-bit sRGB 47348B 0.000u 0:00.000
b9c70d45-d025-4b21-bf22-587cfb9f2a72.jpg JPEG 220x194 220x194+0+0 8-bit sRGB 36085B 0.000u 0:00.000
b9cc34c3-dafc-4227-861e-e7f360be5db3.jpg JPEG 220x218 220x218+0+0 8-bit sRGB 59412B 0.000u 0:00.000
bac63a9b-76fa-4d83-994f-3e41de489870.jpg JPEG 220x218 220x218+0+0 8-bit sRGB 49738B 0.000u 0:00.000
bae16b14-a1b2-43d6-b13d-d744451c3471.jpg JPEG 220x218 220x218+0+0 8-bit sRGB 50928B 0.000u 0:00.000
bb4f6006-149b-4372-8efe-cbe6758edd6e.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 10051B 0.000u 0:00.000
bcbc5cc7-d373-417a-8969-c99a731dfd96.jpg JPEG 220x220 220x220+0+0 8-bit sRGB 12181B 0.000u 0:00.000
bcbeac87-82e0-4e11-afec-579b57f390b4.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 9253B 0.000u 0:00.000
bd655f6e-eff6-4475-b02a-9602b3305c97.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 8452B 0.000u 0:00.000
bdf7ebad-a2a4-4be8-9ad9-34a7d34d19ec.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 15072B 0.000u 0:00.000
beb8a62a-5412-44e2-bc9b-e2146fc1c42c.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 13910B 0.000u 0:00.000
bed66491-12d0-4976-91f4-0a55cec241f4.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 9882B 0.000u 0:00.000
bf26532d-bb0a-45cb-992b-55844f1c9ca7.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 17226B 0.000u 0:00.000
bfee38e1-f43e-4fcd-8d3f-2893171b33cc.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 11278B 0.000u 0:00.000
c06a15e2-2285-45a1-a39a-5f6d4faf5df4.jpg JPEG 600x594 600x594+0+0 8-bit sRGB 67922B 0.000u 0:00.000
c1d2627b-38e9-4eba-88c5-fffc4aaea506.jpg JPEG 220x218 220x218+0+0 8-bit sRGB 40675B 0.000u 0:00.000
c1efe7ce-2a80-4cf6-8fa8-4c4cec9d5407.jpg JPEG 220x218 220x218+0+0 8-bit sRGB 51301B 0.000u 0:00.000
C286A3B0-1D5D-46D0-BEE4-9EEDDC01C705.jpg JPEG 220x220 220x220+0+0 8-bit sRGB 13105B 0.000u 0:00.000
c42dc1e6-1ba0-4aeb-ad59-2076a827a3f3.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 8977B 0.000u 0:00.000
c459f8a7-7150-4675-ad76-5ee70d985529.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 9970B 0.000u 0:00.000
c4919f3a-1c63-46af-b9a2-edb582bd407c.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 12077B 0.000u 0:00.000
c4f41222-5f21-4156-8181-91e7b14a8d9a.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 10772B 0.000u 0:00.000
c528af2f-e471-46c6-a4ad-4af636cf0aa6.jpg JPEG 220x218 220x218+0+0 8-bit sRGB 49358B 0.000u 0:00.000
c6282068-bdc4-44a3-ba65-88742c274cb4.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 13021B 0.000u 0:00.000
c7ba024e-0f55-4525-9d5f-5ff5b1bb7393.jpg JPEG 220x218 220x218+0+0 8-bit sRGB 46876B 0.000u 0:00.000
c8863869-d448-49a4-8770-ae2718d5ff76.jpg JPEG 1200x1200 1200x1200+0+0 8-bit sRGB 163834B 0.000u 0:00.000
C914505C-BDE7-416E-9AEA-13F4816DBB46.jpg JPEG 220x220 220x220+0+0 8-bit sRGB 11689B 0.000u 0:00.000
ca1043dc-e20f-4d09-bd99-67cbfad594c6.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 10522B 0.000u 0:00.000
ca27f3fc-b38d-452b-8fe1-ca69a44bc04d.jpg JPEG 220x218 220x218+0+0 8-bit sRGB 51235B 0.000u 0:00.000
cb6c55a9-e5ab-4e03-8d43-331b0317fba3.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 11477B 0.000u 0:00.000
cb9ba81d-2775-4d67-b463-d60183b0e4ba.jpg JPEG 220x218 220x218+0+0 8-bit sRGB 61511B 0.000u 0:00.000
cbb66427-8cc8-47cc-bbbf-61a896f1584b.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 12157B 0.000u 0:00.000
cbc49718-de5d-4d0e-b084-34fbb46ed364.jpg JPEG 220x220 220x220+0+0 8-bit sRGB 11669B 0.000u 0:00.000
cd33927c-2573-4037-8eac-0ebd236e1260.jpg JPEG 130x130 130x130+0+0 8-bit sRGB 10134B 0.000u 0:00.000
ce46ca58-c049-41c4-817f-ef1d43fb860f.jpg JPEG 258x220 258x220+0+0 8-bit sRGB 13769B 0.000u 0:00.000
cee0c630-9e9a-42ee-acb0-b2370672d401.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 11016B 0.000u 0:00.000
CF4212C7-16E0-4612-A5AD-90EE76E8CEC6.jpg JPEG 526x522 526x522+0+0 8-bit sRGB 64358B 0.000u 0:00.000
d0885e1a-51c8-4794-9d00-343eda028f31.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 11601B 0.000u 0:00.000
d1163963-29cc-4491-a66a-0109b9cd1f45.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 10902B 0.000u 0:00.000
d29fb3fb-e153-416f-8585-627bd46b20f0.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 11323B 0.000u 0:00.000
d535f70a-33d1-467a-b792-4e2fb012e943.jpg JPEG 220x218 220x218+0+0 8-bit sRGB 48954B 0.000u 0:00.000
d673c83d-7f56-471f-ae64-5938ae94a82b.jpg JPEG 220x218 220x218+0+0 8-bit sRGB 52350B 0.000u 0:00.000
d80d26cc-ead8-48af-81bc-1b28ff9dfe51.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 8662B 0.000u 0:00.000
d923fc92-b6cb-43bf-8f58-ec86b2007efe.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 13839B 0.000u 0:00.000
d93481cc-bb3b-4fd2-883c-c62fc4d1ff21.jpg JPEG 220x218 220x218+0+0 8-bit sRGB 45379B 0.000u 0:00.000
d9386d2f-5945-49b3-af57-ab9e07476d95.jpg JPEG 220x218 220x218+0+0 8-bit sRGB 54778B 0.000u 0:00.000
DA7920E4-6B74-420B-AA20-FF54E2983E85.jpg JPEG 160x160 160x160+0+0 8-bit sRGB 9517B 0.000u 0:00.000
da7b5804-eb9b-4e89-962b-95c5cd885bbf.jpg JPEG 220x213 220x213+0+0 8-bit sRGB 46986B 0.000u 0:00.000
daf1a82b-99d5-4ca8-98ba-d58cf9014eaa.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 11028B 0.000u 0:00.000
dbf634b7-7f83-4306-b870-73a2cc8e3be9.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 8057B 0.000u 0:00.000
de55500e-e02d-4c20-b07c-f413a695599a.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 10021B 0.000u 0:00.000
de676c66-c15d-4054-83b0-6bcedb8449de.jpg JPEG 220x218 220x218+0+0 8-bit sRGB 44901B 0.000u 0:00.000
de842d61-a565-48fd-8e9f-ec1d0957c5ae.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 12495B 0.000u 0:00.000
deb22d59-5781-45b1-aceb-b72e085f2119.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 12030B 0.000u 0:00.000
deda8181-d596-40c2-8ba3-e46572b25344.jpg JPEG 130x129 130x129+0+0 8-bit sRGB 9412B 0.000u 0:00.000
df3f1d42-49fc-4dad-9041-36f2d6ace040.jpg JPEG 220x218 220x218+0+0 8-bit sRGB 54703B 0.000u 0:00.000
e15c3d68-6820-4e8c-9543-d034c6057005.jpg JPEG 130x129 130x129+0+0 8-bit sRGB 39645B 0.000u 0:00.000
e18fa4be-00e8-497a-ad35-79486d66fabc.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 10402B 0.000u 0:00.000
e231f274-64ba-466a-837a-eeb57750eeca.jpg JPEG 220x218 220x218+0+0 8-bit sRGB 34604B 0.000u 0:00.000
e2deaebf-3e48-4209-9940-f70e05537c48.jpg JPEG 220x218 220x218+0+0 8-bit sRGB 54171B 0.000u 0:00.000
e40c608d-005c-484a-b1a2-011e020f8422.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 18195B 0.000u 0:00.000
e510d153-2263-4694-aa01-8d43b1aad299.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 17397B 0.000u 0:00.000
e5586948-2740-4d00-8131-437d2df8a2a7.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 8994B 0.000u 0:00.000
e5847818-4cb0-4841-8de0-fbc6f20ab1b0.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 11924B 0.000u 0:00.000
e5861388-8745-44e0-9012-f617d4cdf1e7.jpg JPEG 220x220 220x220+0+0 8-bit sRGB 13921B 0.000u 0:00.000
e5c02905-e909-4830-989d-4120b9f9de19.jpg JPEG 220x220 220x220+0+0 8-bit sRGB 11673B 0.000u 0:00.000
e5f3cb68-149d-4503-8db6-851b018d6316.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 14259B 0.000u 0:00.000
e5f82d1d-6db9-4571-9d9e-85147bcbb493.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 8605B 0.000u 0:00.000
e61c5e56-9074-4e5a-a83b-863d56f1a9e5.jpg JPEG 220x218 220x218+0+0 8-bit sRGB 56232B 0.000u 0:00.000
e7e483f9-5d6e-4f2b-aca7-f60155d84c57.jpg JPEG 256x220 256x220+0+0 8-bit sRGB 16082B 0.000u 0:00.000
e86fcdc2-1334-4761-9054-b1e14acf494e.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 8992B 0.000u 0:00.000
e9abd2bb-1ab8-4db3-bb1c-7cab76a7af23.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 10705B 0.000u 0:00.010
eb05c46c-c8ca-4458-9614-9fdcabb132ab.jpg JPEG 220x218 220x218+0+0 8-bit sRGB 40507B 0.000u 0:00.000
ebc64109-3403-48b1-bd36-79152bd06a49.jpg JPEG 220x218 220x218+0+0 8-bit sRGB 40978B 0.000u 0:00.000
ed203f0b-e737-4755-b352-06164e220051.jpg JPEG 256x220 256x220+0+0 8-bit sRGB 17398B 0.000u 0:00.000
edcf14d6-505f-4d4e-af19-2e60c8732a8b.jpg JPEG 220x218 220x218+0+0 8-bit sRGB 46015B 0.000u 0:00.000
edeae14c-e800-401d-a6f5-d86f5e7a9084.jpg JPEG 220x220 220x220+0+0 8-bit sRGB 10574B 0.000u 0:00.000
f063523c-d6ee-4a2e-b098-b7cbd8369fba.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 15288B 0.000u 0:00.000
f17f4c43-30df-4fa4-8e25-c39c85b05480.jpg JPEG 450x385 450x385+0+0 8-bit sRGB 32225B 0.000u 0:00.000
f2478853-9775-4457-ac6b-8983d6789cba.jpg JPEG 220x218 220x218+0+0 8-bit sRGB 53385B 0.000u 0:00.000
f2771b6d-8fdc-43fa-827f-7ced9f54cb9a.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 15490B 0.000u 0:00.000
f30de412-fba6-4111-852f-1b883d3c22f0.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 11897B 0.000u 0:00.000
f351dcda-cde2-4c3c-9857-70a91c35189a.jpg JPEG 220x193 220x193+0+0 8-bit sRGB 55740B 0.000u 0:00.000
f3723e10-c42e-43ce-acde-ba4a4bf91bdb.jpg JPEG 220x218 220x218+0+0 8-bit sRGB 42109B 0.000u 0:00.000
f4310157-f724-465e-8a8f-773de351fb47.jpg JPEG 220x220 220x220+0+0 8-bit sRGB 10521B 0.000u 0:00.000
f467c234-683b-4193-b11d-2b9f95fa2cb0.jpg JPEG 220x218 220x218+0+0 8-bit sRGB 50423B 0.000u 0:00.000
f58cf2d1-ab78-4e66-929c-82241aabc231.jpg JPEG 220x218 220x218+0+0 8-bit sRGB 47496B 0.000u 0:00.000
f6483fb1-0e3f-45cb-832e-aeeeaaa8b005.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 16348B 0.000u 0:00.000
f81bb154-7866-469b-bcd2-33d91bf4a196.jpg JPEG 221x220 221x220+0+0 8-bit sRGB 11347B 0.000u 0:00.000
f865b79f-a7ba-4f26-93af-6c36ff191097.jpg JPEG 220x218 220x218+0+0 8-bit sRGB 54515B 0.000u 0:00.000
f95b23d4-17cd-4530-a164-9115c7b89e5c.jpg JPEG 220x218 220x218+0+0 8-bit sRGB 48737B 0.000u 0:00.000
f9bb2181-a7eb-4c7f-9b94-701ca99fa22e.jpg JPEG 220x218 220x218+0+0 8-bit sRGB 44113B 0.000u 0:00.000
fa7047cb-04d7-40eb-b977-0db1db9f174c.jpg JPEG 220x218 220x218+0+0 8-bit sRGB 46091B 0.000u 0:00.000
faff6e3e-9450-4bac-a59c-b6b660ee2318.jpg JPEG 220x218 220x218+0+0 8-bit sRGB 50152B 0.000u 0:00.000
fb7cd1b8-d814-48f7-8b70-3820dbd377bf.jpg JPEG 500x500 500x500+0+0 8-bit sRGB 48658B 0.000u 0:00.000
fca69a1b-5e67-4366-8193-0aae6f7d81e3.jpg JPEG 220x220 220x220+0+0 8-bit sRGB 14738B 0.000u 0:00.000
fd525f7b-1414-401b-83a7-a8013054b63b.jpg JPEG 220x218 220x218+0+0 8-bit sRGB 40135B 0.000u 0:00.000
ff77618d-ac56-4457-888f-a7327f6bc2a4.jpg JPEG 130x129 130x129+0+0 8-bit sRGB 9430B 0.000u 0:00.000

Statistiken

Zum Beispiel:

  • gehörte Folgen 112 / 213 oder 87%
  • Favoriten 24 oder 2,3%
  • ...

Manche Statistiken kann man vielleicht direkt in die Listenansicht einbauen. Vielleicht lohnt sich aber auch eine eigene Seite / View dafür...

Folgen teilen

In der Folgenansicht sollte es einen Teilen/Share-Button geben, mit dem man die Folgeninformationen an Freunde o.ä. weiterleiten kann.

Hierfür sollte wohl der Androidstandard verwendet werden, sowohl für das entsprechende Symbol des Buttons, als auch für den eigentlich Ablauf des Teilens. Vorteil: die gängigsten Formate wie z. B. WhatsApp oder Email sind dann direkt imementiert.

Was noch geklärt werden muss: Was wird alles geteilt?

  • Titel
  • Interpret
  • Nummer?
  • Releasedatum
  • Beschreibung?
  • Link zur App im Play Store
  • gehört / Favorit?

Screenshots zur Readme hinzufügen

Es sieht immer gut aus, wenn in der Readme Bilder und/oder gifs der App zu sehen sind. Ich denke da mindestens an die Screenshots aus dem Google Play Store, evtl. sogar an gifs von Funktionen wie z.B. den Benachrichtigungen oder der Swipefunktion in der Listenanischt.

Bilder im Play Store aktualisieren

Dort sieht man momentan nicht, dass man in der Listenansicht sieht, ob eine Folge gehört wurde und/oder ein Favorit ist.

In dem Zug kann man auch zeigen, dass man durch links/rechts-Swipen die Folgen als gehört/Favorit setzen kann.

Bewertungen je Folge

Nutzer sollten die Möglichkeit haben, folgen zu bewerten (5 Sterne, Prozent oder 1-10).

Die Durschnittsbewertung samt Gesamtanzahl der Bewertungen soll dann je Folge angezeigt werden.

Es soll dann auch eine Sortierung und einen Filter (bewertet/nicht bewertet, >4 Sterne, ...) nach Bewertung geben.

Die Bewertung muss änderbar sein und jeder Nutzer darf maximal eine Bewertung pro Folge haben dürfen.

Folgen 1 bis 12 der ??? Kids sortieren

Die ersten Folgen der drei ??? Kids sind alle am gleichen Tag erschienen. Sortiert man die Folgen nach Release Datum, sind sie daher wild durcheinander. Damit sie als zweite Sortierbedingung anhand der Nummer geordnet werden, sollte die Uhrzeit des Release Datums leicht angepasst werden.

Android-API-Level auf 28 erhöhen

Von Google so gefordert, auch wenn dadurch wieder alte Geräte rausfallen. Ansonsten wird die App aus dem Play-Store geschmissen. :-/

Hello Google Play Developer,

This is a reminder that starting November 1, 2019, updates to apps and games on Google Play will be required to target Android 9 (API level 28) or higher. After this date, the Play Console will prevent you from submitting new APKs with a targetSdkVersion less than 28.

Configuring your app to target a recent API level ensures that users benefit from significant security and performance improvements, while still allowing your app to run on older Android versions (down to the minSdkVersion).

Action required

Please ensure that your apps are configured to target at least Android 9 (API level 28) by November 1, 2019. For technical advice on how to change your app's target API level to meet these requirements, refer to the migration guide.

Affected apps

The apps included below have one or more APKs—in production or testing tracks—that aren't currently targeting API level 28 or higher. Apps are listed with the maximum version code and corresponding targetSdkVersion. If you have more than 20 apps that could be affected in your account, please check the Play Console for a full list.
celloapps.ddfguide 215 26

Zusätzlicher Button für "im Besitz"

Sobald man die Übersicht einer Folge geöffnet hat, kann man diese als gehört und Favorit markieren. Ich würde die Bedeutung ein wenig ändern. Der Haken bedeutet "besitzen" (ich möchte gerne alle Folgen auf CD haben und so den überblick behalten). Neu kommt ein Ohr hinzu, welcher für "gehört" steht.

Ich hoffe das ist verständlich. Gerne kannst du mich als Entwickler hinzufügen und ich helfe bei dieser und weiteren Issues.

MfG
Handballermann

App-Start mit existierender aber langsamer Internetverbindung sollte auf lokalen Daten basieren

Startet man die App ohne Internetverbindung, werden die lokalen Daten des Handys benutzt. Folgendetails samt Cover sind so auch offline vorhanden.

Startet man die App mit Internetverbindung, werden alle Daten aktualisiert (Cover mit einem Cache nur alle paar Monate).

Ist die Internetverbindung jedoch schlecht, dauert das Aktualisieren jedoch sehr lange. Deshalb sollten auch dann die lokalen Daten benutzt werden. Kriterien wären beispielsweise:

  • Nur aktualisieren, wenn im WLAN. Eventuell Problematisch für Leute, die kein Wifi haben sollten...
  • Die Aktualisierung nach einer gewissen Zeit x um die 10 Sekunden abbrechen.

Buchautoren hinzufügen

Viele wünschen sich, nach Autoren suchen und filtern zu können. Grundbedingung dafür ist natürlich, dass die zunächst einmal eingepflegt werden.

Deezer Support

Neben Spotify, soll auch Deezer unterstützt werden.
Hier soll dann das gleiche Vorgehen implementiert werden wie bei Amazon Music #58.

  • Deezer IDs hinzufügen
  • Streaminganbieter auswählbar machen

Resources.GetColor aus Code entfernen

Laut Compiler ist Resources.GetColor deprecated / obsolete. Die Warnung sollte behoben werden in dem der "neue" Weg recherchiert und eingebaut wird.

Betroffen sind:

  • DdfGuide.Android.AudioDramaView
  • DdfGuide.Android.AudioDramaListView

Android-Policy: Keine Spenden

Spenden via Drittanbieter (BuyMeACoffe oder Paypal) sind nicht erlaubt. Deshalb sollte einfach nur hier auf Github verlinkt werden.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.