使用Flutter SDK进行iOS -Linode + Dev Hackathon使用TunesNAP
#flutter #ios #linodehackathon

我建造的

我使用Flutter,Linode服务 - Linode,Object Storage,MySQL数据库,Spotify API和Python创建了一个iOS应用。

该应用程序的主要目标是在当前的心情中拍摄用户的照片,然后推荐一些歌曲,以帮助他们冷静,放松甚至为其播放列表获得一些新的酷歌。

我个人感到,当我有时会感到难过或生气时,音乐是最好的治疗师,这是我可以与该项目联系并从中获得最好的原因的主要原因。

类别提交:

集成创新者

应用链接

https://github.com/ameysunu/linode_flutter

  • 克隆项目,并通过运行flutter pub get安装所有依赖性。

  • 完成后,在文件夹controllers中创建一个secrets.dart文件,然后添加所有所需的API键,可以从linode中检索,Linode mysqldatabse。

屏幕截图

linode情感分析输出

emotion analysis sample output

emotion analyser

linode Spotify API代币检索

retrieve spotify api

生成令牌并添加到.env文件

Token generation

linode对象存储桶

Object Storage

linode服务器

Linode Server

linode mysql Server

Linode MySQL Server

MySQL Workbench

flutter应用程序屏幕截图

Home Screen

Analyser

Mood

Loader

Songs and mood

Saved SQL usermood

Saved SQL songdata

这是一个视频,展示了该应用程序如何工作的预览:

https://youtu.be/R7fBcWT9vE4

描述

该项目旨在根据用户当前的心情为用户提供一首歌列表,以给他们一些放松身心甚至获得很多新歌,具体取决于您的心情。

用户所需要做的就是简单地登录,拍照或上传,如果他们的设备不支持相机硬件,然后瞧,他们只是等待他们的歌曲列表,甚至可以将其保存在应用程序中,以后再听。

链接到源代码

linode_flutter

A new Flutter project.

Getting Started

This project is a starting point for a Flutter application.

A few resources to get you started if this is your first Flutter project:

为了帮助开始扑面而前,请查看 online documentation,提供教程 样本,移动开发指南和完整的API参考。

设置Python API进行情绪分析

  • 在Linode实例上部署代码。
  • 使用ngrok从linode实例向前移动到Local -Host到jupyter环境以处理代码。
  • 完成后,通过运行python3 api-emotion.py运行API,该python3 api-emotion.py将在linode实例中的localhost上运行。
  • 使用ngrok传递URL实例的参数并获取响应。示例:
将图像上传到Linode bucket
  • 替换访问键和bucket-upload.py中的区域
  • 运行Python文件

允许许可证

MIT许可证2023

背景

我个人认为音乐对人们有很大帮助,尤其是当他们的心情有些沮丧的情况下。我认为为什么不利用这个机会给用户有机会了解一些新歌,听听它们,甚至将它们保存到该应用程序中,以便用户可以始终访问这些歌曲。

我如何建造它

我使用Firebase身份验证,当然还有Linode Services构建了iOS的Flutter SDK。

如何? - >我使用了三个Linode服务:

  • linode-我创建了一个Linode,并使用机器学习库(例如fer)开发了Python程序,该程序是使用kerastensorflow进行面部识别的。然后,我使用flask为POST请求制作API,以使用nginx从移动设备上传图像。这些图像被保存在Linode上,为了改进这一点,我使用flask创建了另一个Python程序,该程序首先将图像上传到Linode对象存储,然后将其推进到我们的情感分析仪Python代码中。

  • linode对象存储 - 用于面部识别的图像存储在Linode对象存储上,以避免在Linode服务器上杂乱无章,并使计算和执行非常容易。

  • linode数据库mysql-使用颤音和飞镖代码,将数据保存到Linode MySQL数据库中。我对SQL非常粗糙,因此我需要大量刷牙来使用不同的表并执行大量的Crud操作。

这是我第一次使用Linode,并且集成所有Linode服务以使该项目的工作速度更快,按时非常容易,当然,我最喜欢的部分是,在Linode中使用FAA非常容易根本没有停机时间。

其他资源/信息

开发和创建这个项目很有趣,但是我想提到一些事情。

这是我第一次进行机器学习项目,因此我必须在制作此项目时经过大量文档和堆叠量。我什至感到恐惧,因为并非所有计算机都支持用于GPU操作的TensorFlow模块,但这与Linode完全不是这样。我已经决定使用ngrok,以便我可以执行POSTGET请求从linode服务器中获取响应,因此,这根本不是最好的解决方案,这两个原因是:

  1. ngrok免费版本仅允许将一个Localhost URL和端口公开向公众公开。我有两个 - >一个是Linode对象存储的上传器,另一个是情感分析器。

  2. 有一个暂停,每次都会加载服务器并将URL公开向公众公开,它会改变。因此,我很难每次都会在我的flutter代码中连续放置URL并重新加载应用程序。

因此,使用nginxgunicorn3flask,我可以直接将POSTGET的请求直接发送到Linode的IP地址,因此使我很容易(作为开发人员)专注于我的绘制代码,而不必花几个小时才能花费几个小时每次启动ngrok,然后使用其他URL。

分类后,另一个问题是Spotify的API令牌。 Spotify的API将在3600秒或1小时后到期。因此,每次我在应用程序上工作时,都会替换Spotify API,这不是理想的解决方案。

所以我想出了一个解决方案。我在Linode服务器上创建了一个.env文件来存储我的Spotify令牌,然后编写了一个Python脚本,该脚本每45分钟都会基于Spotify Client和Secret ID生成Spotify令牌,然后用.env File上的Token替换它。该应用程序可以使用简单的GET在linode服务器上获取.env文件。

还有一个Python程序每1小时运行一次,以从Linode对象存储中删除所有图像,当然是出于隐私原因。

长话短说,这些只是我面临的一些小挑战,我很容易专注于提出解决方案,而不是担心我的停机时间,服务器限制或SQL数据库,因为它们都得到了备份由Linode。