[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-9138":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":17,"stars7d":18,"stars30d":19,"stars90d":16,"forks30d":16,"starsTrendScore":20,"compositeScore":21,"rankGlobal":10,"rankLanguage":10,"license":22,"archived":23,"fork":23,"defaultBranch":24,"hasWiki":25,"hasPages":23,"topics":26,"createdAt":10,"pushedAt":10,"updatedAt":45,"readmeContent":46,"aiSummary":47,"trendingCount":16,"starSnapshotCount":16,"syncStatus":48,"lastSyncTime":49,"discoverSource":50},9138,"aves","deckerst\u002Faves","deckerst","Aves is a gallery and metadata explorer app, built for Android with Flutter.","",null,"Dart",4825,185,34,164,0,4,19,111,17,28.81,"BSD 3-Clause \"New\" or \"Revised\" License",false,"develop",true,[27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44],"android","exif","flutter","gallery","gdepth","geotiff","gpx","heic","heif","metadata","metadata-explorer","motion-photos","mpf","multipage","svg","tiff","topojson","xmp","2026-06-12 02:02:03","\u003Cdiv align=\"center\">\n\n\u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002Fdeckerst\u002Faves\u002Fdevelop\u002Faves_logo.svg\" alt='Aves logo' width=\"200\" \u002F>\n\n## Aves\n\n![Version badge][Version badge]\n![Build badge][Build badge]\n\nAves is a gallery and metadata explorer app. It is built for Android, with Flutter.\n\n[\u003Cimg src=\"https:\u002F\u002Fplay.google.com\u002Fintl\u002Fen_us\u002Fbadges\u002Fstatic\u002Fimages\u002Fbadges\u002Fen_badge_web_generic.png\"\n      alt='Get it on Google Play'\n      height=\"80\">](https:\u002F\u002Fplay.google.com\u002Fstore\u002Fapps\u002Fdetails?id=deckers.thibault.aves&pcampaignid=pcampaignidMKT-Other-global-all-co-prtnr-py-PartBadge-Mar2515-1)\n[\u003Cimg src=\"https:\u002F\u002Fgitlab.com\u002FIzzyOnDroid\u002Frepo\u002F-\u002Fraw\u002Fmaster\u002Fassets\u002FIzzyOnDroid.png\"\n      alt='Get it on IzzyOnDroid'\n      height=\"80\">](https:\u002F\u002Fapt.izzysoft.de\u002Ffdroid\u002Findex\u002Fapk\u002Fdeckers.thibault.aves)\n[\u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002Fdeckerst\u002Fcommon\u002Fmain\u002Fassets\u002Fobtainium-badge-english.png\"\n      alt='Get it on Obtainium'\n      height=\"80\">](https:\u002F\u002Fapps.obtainium.imranr.dev\u002Fredirect.html?r=obtainium:\u002F\u002Fadd\u002Fhttps:\u002F\u002Fgithub.com\u002Fdeckerst\u002Faves)\n[\u003Cimg src=\"https:\u002F\u002Ffdroid.gitlab.io\u002Fartwork\u002Fbadge\u002Fget-it-on.png\"\n      alt='Get it on F-Droid'\n      height=\"80\">](https:\u002F\u002Ff-droid.org\u002Fpackages\u002Fdeckers.thibault.aves.libre)\n[\u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002Fdeckerst\u002Fcommon\u002Fmain\u002Fassets\u002Fget-it-on-github.png\"\n      alt='Get it on GitHub'\n      height=\"80\">](https:\u002F\u002Fgithub.com\u002Fdeckerst\u002Faves\u002Freleases\u002Flatest)\n\n\n[Compare versions](https:\u002F\u002Fgithub.com\u002Fdeckerst\u002Faves\u002Fwiki\u002FApp-Versions)\n      \n\u003Cdiv align=\"left\">\n\n## Features\n\nAves can handle all sorts of images and videos, including your typical JPEGs and MP4s, but also more exotic things like **multi-page TIFFs, SVGs, old AVIs and more**!\n\nIt scans your media collection to identify **motion photos**, **panoramas** (aka photo spheres), **360° videos**, as well as **GeoTIFF** files.\n\n**Navigation and search** is an important part of Aves. The goal is for users to easily flow from albums to photos to tags to maps, etc.\n\nAves integrates with Android (including Android TV) with features such as **widgets**, **app shortcuts**, **screen saver** and **global search** handling. It also works as a **media viewer and picker**.\n\n## Screenshots\n\n\u003Cdiv align=\"center\">\n\n[\u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002Fdeckerst\u002Faves_extra\u002Fmain\u002Fscreenshots\u002Freadme\u002Fen\u002F1.png\"\n      alt='Collection screenshot'\n      width=\"130\" \u002F>](https:\u002F\u002Fraw.githubusercontent.com\u002Fdeckerst\u002Faves_extra\u002Fmain\u002Fscreenshots\u002Fplay\u002Fen\u002F1.png)\n[\u003Cimg\n      src=\"https:\u002F\u002Fraw.githubusercontent.com\u002Fdeckerst\u002Faves_extra\u002Fmain\u002Fscreenshots\u002Freadme\u002Fen\u002F2.png\"\n      alt='Image screenshot'\n      width=\"130\" \u002F>](https:\u002F\u002Fraw.githubusercontent.com\u002Fdeckerst\u002Faves_extra\u002Fmain\u002Fscreenshots\u002Fplay\u002Fen\u002F2.png)\n[\u003Cimg\n      src=\"https:\u002F\u002Fraw.githubusercontent.com\u002Fdeckerst\u002Faves_extra\u002Fmain\u002Fscreenshots\u002Freadme\u002Fen\u002F5.png\"\n      alt='Stats screenshot'\n      width=\"130\" \u002F>](https:\u002F\u002Fraw.githubusercontent.com\u002Fdeckerst\u002Faves_extra\u002Fmain\u002Fscreenshots\u002Fplay\u002Fen\u002F5.png)\n[\u003Cimg\n      src=\"https:\u002F\u002Fraw.githubusercontent.com\u002Fdeckerst\u002Faves_extra\u002Fmain\u002Fscreenshots\u002Freadme\u002Fen\u002F3.png\"\n      alt='Info (basic) screenshot'\n      width=\"130\" \u002F>](https:\u002F\u002Fraw.githubusercontent.com\u002Fdeckerst\u002Faves_extra\u002Fmain\u002Fscreenshots\u002Fplay\u002Fen\u002F3.png)\n[\u003Cimg\n      src=\"https:\u002F\u002Fraw.githubusercontent.com\u002Fdeckerst\u002Faves_extra\u002Fmain\u002Fscreenshots\u002Freadme\u002Fen\u002F4.png\"\n      alt='Info (metadata) screenshot'\n      width=\"130\" \u002F>](https:\u002F\u002Fraw.githubusercontent.com\u002Fdeckerst\u002Faves_extra\u002Fmain\u002Fscreenshots\u002Fplay\u002Fen\u002F4.png)\n[\u003Cimg\n      src=\"https:\u002F\u002Fraw.githubusercontent.com\u002Fdeckerst\u002Faves_extra\u002Fmain\u002Fscreenshots\u002Freadme\u002Fen\u002F6.png\"\n      alt='Countries screenshot'\n      width=\"130\" \u002F>](https:\u002F\u002Fraw.githubusercontent.com\u002Fdeckerst\u002Faves_extra\u002Fmain\u002Fscreenshots\u002Fplay\u002Fen\u002F6.png)\n\n\u003Cdiv align=\"left\">\n\n## Changelog\n\nThe list of changes for past and future releases is available [here](https:\u002F\u002Fgithub.com\u002Fdeckerst\u002Faves\u002Fblob\u002Fdevelop\u002FCHANGELOG.md).\n\n## Permissions\n\nAves requires a few permissions to do its job:\n- **read contents of shared storage**: the app only accesses media files, and modifying them requires explicit access grants from the user,\n- **read locations from media collection**: necessary to display the media coordinates, and to group them by country (via reverse geocoding),\n- **have network access**: necessary for the map view, and most likely for precise reverse geocoding too,\n- **view network connections**: checking for connection states allows Aves to gracefully degrade features that depend on internet.\n\n## Contributing\n\n### Issues\n\n[Bug reports](https:\u002F\u002Fgithub.com\u002Fdeckerst\u002Faves\u002Fissues\u002Fnew?assignees=&labels=type%3Abug&template=bug_report.md&title=) and [feature requests](https:\u002F\u002Fgithub.com\u002Fdeckerst\u002Faves\u002Fissues\u002Fnew?assignees=&labels=type%3Afeature&template=feature_request.md&title=) are welcome, but read the [guidelines](https:\u002F\u002Fgithub.com\u002Fdeckerst\u002Faves\u002Fissues\u002F234) first. If you have questions, check out the [discussions](https:\u002F\u002Fgithub.com\u002Fdeckerst\u002Faves\u002Fdiscussions).\n\n### Code\n\nAt this stage this project does *not* accept PRs.\n\n### Translations\n\nTranslations are powered by [Weblate](https:\u002F\u002Fhosted.weblate.org\u002Fengage\u002Faves\u002F) and the effort of wonderfully generous volunteers.\n\u003Ca href=\"https:\u002F\u002Fhosted.weblate.org\u002Fengage\u002Faves\u002F\">\n\u003Cimg src=\"https:\u002F\u002Fhosted.weblate.org\u002Fwidgets\u002Faves\u002F-\u002Fmulti-auto.svg\" alt=\"Translation status\" \u002F>\n\u003C\u002Fa>\n\nIf you want to translate this app in your language and share the result, [there is a guide](https:\u002F\u002Fgithub.com\u002Fdeckerst\u002Faves\u002Fwiki\u002FContributing-to-Translations).\n\n### Donations\n\nSome users have expressed the wish to financially support the project. Thanks! ❤️\n\n[\u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002Fdeckerst\u002Fcommon\u002Fmain\u002Fassets\u002Fpaypal-badge-cropped.png\"\n      alt='Donate with PayPal'\n      height=\"40\">](https:\u002F\u002Fwww.paypal.com\u002Fdonate\u002F?hosted_button_id=RWKQ4J7D8USX6)\n[\u003Cimg src=\"https:\u002F\u002Fliberapay.com\u002Fassets\u002Fwidgets\u002Fdonate.svg\"\n      alt='Donate using Liberapay'\n      height=\"40\">](https:\u002F\u002Fliberapay.com\u002Fdeckerst\u002Fdonate)\n\n## Project Setup\n\nBefore running or building the app, update the dependencies for the desired flavor:\n```\n# scripts\u002Fapply_flavor_play.sh\n```\n\nTo build the project, create a file named `\u003Capp dir>\u002Fandroid\u002Fkey.properties`. It should contain a reference to a keystore for app signing, and other necessary credentials. See [key_template.properties](https:\u002F\u002Fgithub.com\u002Fdeckerst\u002Faves\u002Fblob\u002Fdevelop\u002Fandroid\u002Fkey_template.properties) for the expected keys.\n\nTo run the app:\n```\n# .\u002Fflutterw run -t lib\u002Fmain_play.dart --flavor play\n```\n\n[Version badge]: https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fv\u002Frelease\u002Fdeckerst\u002Faves?include_prereleases&sort=semver\n[Build badge]: https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Factions\u002Fworkflow\u002Fstatus\u002Fdeckerst\u002Faves\u002Fquality-check.yml?branch=develop\n","Aves 是一款为 Android 设备设计的图库和元数据探索应用程序，使用 Flutter 框架构建。它支持多种图像和视频格式，包括多页 TIFF、SVG 以及全景照片等，并能识别运动照片、360° 视频及 GeoTIFF 文件。该应用提供了流畅的导航与搜索功能，允许用户轻松浏览相册、图片标签和地图信息。此外，Aves 还集成了 Android 系统特性，如小部件、快捷方式、屏保模式和全局搜索支持，同时也能作为媒体查看器和选择器使用。适用于需要高效管理和探索个人媒体文件集合的场景。",2,"2026-06-11 03:21:25","top_language"]