MadeInPierre / finalynx

A minimalistic companion (CLI & web) to organize your investment portfolio, simulate its future, and reach your life goals.
https://finalynx.readthedocs.io
GNU General Public License v3.0
64 stars 13 forks source link

feat(fetch): add support for multiple fetch sources #97

Closed MadeInPierre closed 1 year ago

MadeInPierre commented 1 year ago

Description

Add support for additional fetch sources. The user will be free to activate a collection of official sources available in the finalynx/fetch submodule, or to add custom sources (CSV, manual input, anything else, ...)

Actions

Usage

To activate official sources embedded in Finalynx:

python your_config.py --sources="finary,realt"

To activate local custom sources (defined in an external file):

from .source_base import SourceBase

class MySource(SourceBase):
    SOURCE_NAME = "MySourceName"

    def __init__(self, clear_cache: bool = False, ignore_orphans: bool = False) -> None:
        super().__init__(self.SOURCE_NAME, clear_cache, ignore_orphans)

    def _fetch_data(self, tree: Tree) -> None:
        # Display the lines found to the console, you can create a nested tree if you want
        tree.add("My Investment")

        # Register the real investment information, will be cached and matched to the portfolio
        self._register_fetchline(tree, "My Investment", "123", "Example Account", 10000, "€")

Steps

MadeInPierre commented 1 year ago

D'ailleurs ça pourrait être marrant de connecter le booklet finary_bookmarklet_export_csv de @lasconic en créant FetchFinaryCSV pour diversifier les sources x)

Voire même au futur de permettre à Finalynx d'uploader des lignes trouvées dans d'autres sources (RealT, CSV, PDF, wallet crypto, ...) vers Finary, comme ça Finalynx devient un "hub open source" qui étend les synchros disponibles dans Finary :eyes: bon l'idée m'amuse mais aucune idée si c'est vraiment utile

lasconic commented 1 year ago

D'ailleurs ça pourrait être marrant de connecter le booklet finary_bookmarklet_export_csv de @lasconic en créant FetchFinaryCSV pour diversifier les sources x)

Je vois pas vraiment l'intérêt puisque c'est les mêmes données non ?

Voire même au futur de permettre à Finalynx d'uploader des lignes trouvées dans d'autres sources (RealT, CSV, PDF, wallet crypto, ...) vers Finary, comme ça Finalynx devient un "hub open source" qui étend les synchros disponibles dans Finary 👀 bon l'idée m'amuse mais aucune idée si c'est vraiment utile

Par contre ici oui, mais je suis pas sûr que ce soit bon de le mettre dans Finalynx. "Write programs that do one thing and do it well"

Dans finary_uapi, j'ai un peu de code pour faire de l'import JSON et CSV de crypto (crypto.com ou général avec un format prédéfini) et d'actions, fonds etc... Je me demande si je vais pas le sortir pour faire un projet dédié.

MadeInPierre commented 1 year ago

Je vois pas vraiment l'intérêt puisque c'est les mêmes données non ?

Yes inutile pour le moment, mais qui sait si l'API ferme :upside_down_face: Enfin, question bête, ce booklet récupère les infos de la page web directement ou contacte l'API comme finary_uapi ?

oui, mais je suis pas sûr que ce soit bon de le mettre dans Finalynx. "Write programs that do one thing and do it well"

En effet, ça pourrait être bien d'avoir finary_uapi comme source de base capable aussi de modifier des investissements, d'autres projets qui récupèrent les données selon des formats/sources custom et qui utilisent finary_uapi pour upload ces données (e.g. upload JSON/CSV), et enfin un nouveau projet finary_sync qui récupère des infos de plusieurs projets pour fournir une vue unifiée de toutes les lignes (utilisée ensuite par finalynx), et pour orchestrer l'upload vers Finary pour avoir la même vue.

Je commence à le construire dans Finalynx par simplicité (car je me limite à la récupération pour l'instant) mais je pourrais le détacher dès qu'il sera fonctionnel tout seul :slightly_smiling_face:

lasconic commented 1 year ago

Yes inutile pour le moment, mais qui sait si l'API ferme 🙃 Enfin, question bête, ce booklet récupère les infos de la page web directement ou contacte l'API comme finary_uapi ?

L'api mais avec un signin différent. On est dans le browser, on a le cookie déjà. Il appelle just holdings_accounts et transforme le json en CSV.

En effet, ça pourrait être bien d'avoir finary_uapi comme source de base capable aussi de modifier des investissements, d'autres projets qui récupèrent les données selon des formats/sources custom et qui utilisent finary_uapi pour upload ces données (e.g. upload JSON/CSV), et enfin un nouveau projet finary_sync qui récupère des infos de plusieurs projets pour fournir une vue unifiée de toutes les lignes (utilisée ensuite par finalynx), et pour orchestrer l'upload vers Finary pour avoir la même vue.

Je commence à le construire dans Finalynx par simplicité (car je me limite à la récupération pour l'instant) mais je pourrais le détacher dès qu'il sera fonctionnel tout seul 🙂

Pour être sûr, finary_uapi a déjà pas mal de fonctions de modifications.