NX-Activity-Log : Transformer les activités console en vues
NX-Activity-Log est un fork d’un visualiseur d’activité homebrew Switch. L’application lit les traces de jeu de la console et présente des résumés par utilisateur et titre. Ces traces proviennent de la console, et non de l’interface.
Langages du dépôtC++ 92.17%4
Parts calculées à partir des octets GitHub Linguist.
| Langage | % | Octets |
|---|---|---|
| C++ | 394 579 | |
| Makefile | 17 822 | |
| C | 14 713 | |
| Assembly | 978 |
Aperçu
Pourquoi il existe
Analyseur télémétrique lisant les journaux de jeu Switch bruts sans risque de bannissement.
Cas d’usage
Suivi précis et analytique du temps de jeu sur Nintendo Switch.
Démarrage
Ces commandes viennent de la documentation du dépôt. Elles n’ont pas été exécutées pendant cette revue.
Références du dépôt
Extraits des guides du dépôt, dans leur langue d’origine. Les liens ouvrent la version du code consultée.
Prérequis et premier essai
Firmware / CFW requirements
README.md
- HOS 22.0.5 (and 22.x): Atmosphere ≥ 1.11.0 (1.11.2 recommended for 22.5.0). Homebrew launch on 22.0.0+ relies on Atmosphere’s am compatibility patches.
- HOS 21.0.0+: Rebuild with libnx ≥ 4.10.0 (TLS ABI change). This release targets current libnx (4.11.x / latest).
- Older firmwares: The same binary is intended to run under current Atmosphere on earlier HOS versions; use title/hbmenu launch rather than User Page if the forwarder path fails. Curious about what’s next? See the original to-do list on Trello
Fonctions et composants 2
- Cycle de vie de l’application
- main.cpp crée Main::Application, l’exécute puis le libère. L’arborescence sépare le code console dans nx, l’interface et les utilitaires. Les tâches d’import et d’export possèdent leurs propres fichiers source.
- Traces et présentation
- Les vues décrites organisent l’activité par utilisateur, jeu et période. L’extraction doit donc rester distincte du regroupement et de l’affichage. Les données exportées sont une sortie supplémentaire, pas un remplacement des traces d’origine.
Architecture
Les composants et leurs liens restent lisibles en texte. Le diagramme ajoute une vue interactive.
- Traces d’activité console
- Traitement des traces
- Regroupement utilisateur et titre
- Vues d’activité
- Tâche d’export
Liens vérifiés dans le dépôt.
Mermaid Diagramme interactif (chargement à l’ouverture)
Vue générale des composants et des échanges vérifiés dans le dépôt.

flowchart LR
n0["Traces d’activité console"]
n1["Traitement des traces"]
n2["Regroupement utilisateur et titre"]
n3["Vues d’activité"]
n4["Tâche d’export"]
n0 --> n1
n1 --> n2
n2 --> n3
n1 --> n4
Version texte du diagramme
- Traces d’activité console → Traitement des traces
- Traitement des traces → Regroupement utilisateur et titre
- Regroupement utilisateur et titre → Vues d’activité
- Traitement des traces → Tâche d’export
Suivre un parcours dans le code
Commencez par Main::Application et les modules nx avant les vues. Cela distingue une modification des regroupements d’une modification des traces disponibles sur la console.
Types et structure des fichiers
39 types déclarés, dont 12 dans l’aperçu des relations de base.
Diagramme des types
classDiagram
direction TB
class t4e1a8b16b16a["ExportJob"] {
work()
}
class t096aa39364ca["ImportJob"] {
work()
}
class t8e8298b1a9b7["Application"] {
createScreens()
deleteScreens()
checkForUpdate()
initThreadFunc()
}
class t041c3287dd04["AdjustmentValue"] {
<<struct>>
}
class t43e8dd03878e["Config"] {
readConfig()
writeConfig()
adjustmentValues()
hiddenTitles()
}
class t00560be273e6["PlayEvent"] {
<<struct>>
}
class t9b5b3b925b3c["PlaySession"] {
<<struct>>
}
class t54fded939917["PlayStatistics"] {
<<struct>>
}
class t5d5e193ce052["RecentPlayStatistics"] {
<<struct>>
}
class t7381507fcce0["PD_Session"] {
<<struct>>
}
class tecf3b954f1c7["PlayData"] {
getPDSessions()
readPlayDataFromPdm()
readPlayDataFromImport()
setProgressCallback()
}
class teaa6245a0ea3["Title"] {
titleID()
isInstalled()
name()
imgSize()
}
class b7eaf7d3050ac["Aether::ThreadPool::Job"] {
<<unresolved_base>>
}
b7eaf7d3050ac <|-- t4e1a8b16b16a
class bea58313e0e40["Aether::ThreadPool::Job"] {
<<unresolved_base>>
}
bea58313e0e40 <|-- t096aa39364ca
Les bases non résolues restent identifiées; les signatures complètes ne sont pas reconstruites.
Index des types
ExportJob(class) ·Application/include/Application.ExportJob.hpp:10Méthodes dans l’aperçu :
work.Bases déclarées :
Aether::ThreadPool::Job.ImportJob(class) ·Application/include/Application.ImportJob.hpp:10Méthodes dans l’aperçu :
work.Bases déclarées :
Aether::ThreadPool::Job.Application(class) ·Application/include/Application.hpp:35Méthodes dans l’aperçu :
createScreens, deleteScreens, checkForUpdate, initThreadFunc.AdjustmentValue(struct) ·Application/include/Config.hpp:8Config(class) ·Application/include/Config.hpp:16Méthodes dans l’aperçu :
readConfig, writeConfig, adjustmentValues, hiddenTitles.PlayEvent(struct) ·Application/include/nx/PlayData.hpp:32PlaySession(struct) ·Application/include/nx/PlayData.hpp:44PlayStatistics(struct) ·Application/include/nx/PlayData.hpp:51RecentPlayStatistics(struct) ·Application/include/nx/PlayData.hpp:62PD_Session(struct) ·Application/include/nx/PlayData.hpp:69PlayData(class) ·Application/include/nx/PlayData.hpp:80Méthodes dans l’aperçu :
getPDSessions, readPlayDataFromPdm, readPlayDataFromImport, setProgressCallback.Title(class) ·Application/include/nx/Title.hpp:7Méthodes dans l’aperçu :
titleID, isInstalled, name, imgSize.
Référence
90 / 90 fichiers admissibles lus (106 dans l’arbre); 0 trop volumineux, 0 échec de lecture et 3 diagnostic de syntaxe.
Ce que couvre l’analyse
Les dossiers connus de dépendances et de compilation, les fichiers d’identifiants et les binaires sont exclus. La collecte couvre les README, les manifestes reconnus et les fichiers source pris en charge.
Les statistiques Linguist couvrent l’ensemble du dépôt et peuvent inclure d’autres langages.
Carte des fichiers
flowchart TD
root["NX-Activity-Log"]
f0["Application/source/Application.ExportJob.cpp"]
root --> f0
f1["Application/source/Application.cpp"]
root --> f1
f2["Application/source/main.cpp"]
root --> f2
f3["Makefile"]
root --> f3
f4["README.md"]
root --> f4
f5["Application/Makefile"]
root --> f5
f6["Forwarder/Makefile"]
root --> f6
f7["Forwarder/README.md"]
root --> f7
f8["Application/include/Application.ExportJob.hpp"]
root --> f8
f9["Application/include/Application.ImportJob.hpp"]
root --> f9
f10["Application/include/Application.hpp"]
root --> f10
f11["Application/include/Config.hpp"]
root --> f11
f12["Application/include/Types.hpp"]
root --> f12
f13["Application/source/Application.ImportJob.cpp"]
root --> f13
f14["Application/source/Config.cpp"]
root --> f14
f15["Application/source/Types.cpp"]
root --> f15