Aller au contenu principal
Sujet: Sauvegarder la date de dernier visionnage de ses médias. (Lu 541 fois) sujet précédent - sujet suivant
0 Membres et 1 Invitédans ce sujet

Sauvegarder la date de dernier visionnage de ses médias.

Salut,

Je me suis fait un petit outil SQL (à lancer manuellement) pour svg à quelle date vous avez visionné vos médias.
Utile en cas de perte de BDD, ou besoin de re-scrap intégral, il y aura juste à remettre les dates dans la foulée.

NB : Je parle ici d'une BDD créée sur un NAS par modification du ADVANCEDSETTINGS.xml (section videodatabase).

1) Aller sur l'interface MySQL : http://192.168.1.xx/phpMyAdmin/. Se loguer en user 'root'. Choisissez le bon serveur MariaDB (5 ou 10)

2) Créer une nouvelle BDD :
CREATE DATABASE MyVideosLUES;
' pouvez changer le nom, mais il faudra le remplacer partout plus bas.

3) Y créer la table qui va recevoir les dates par fichier (Film ou épisode d'une série) :
CREATE TABLE `FilesLus` (`strFilename` text, `playCount` int(11) DEFAULT NULL, `lastPlayed` text, 
`dateAdded` text ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

4) L'alimenter - genre une fois par semaine, ou implémenter un script qui tourne quotidiennement en auto sur le NAS (celui qui peut indiquer comment faire, ça m'intéresse) :
# Màj la table des vidéos lues :
INSERT into MyVideosLUES.FilesLus
SELECT lower(REPLACE(`strFilename`, Concat('.', SUBSTRING_INDEX(`strFilename`, '.', -1)), '')) as strFilename, `playCount`, `lastPlayed`, `dateAdded`
FROM MyVideos107.`files`
WHERE `lastPlayed` is not null and  playCount is not null and
lower(REPLACE(`strFilename`, Concat('.', SUBSTRING_INDEX(`strFilename`, '.', -1)), '')) not in (Select
lower(REPLACE(`strFilename`, Concat('.', SUBSTRING_INDEX(`strFilename`, '.', -1)), '')) from MyVideosLUES.FilesLus);

NB : Je stocke le fichier sans son extension, d'où la toutouille à rallonge..

5) L'exploiter en cas de besoin :
# Mettre à jour les dates de lecture depuis la précedente svg.
Update MyVideos107.files a
Set    `playCount`  = (Select `playCount` from MyVideosLUES.`FilesLus`  b
                      WHERE     lower(REPLACE(a.strFilename, Concat('.', SUBSTRING_INDEX(a.strFilename, '.', -1)), '')) = b.strFilename),
       `lastPlayed` = (Select `lastPlayed` from MyVideosLUES.`FilesLus` c
                      WHERE     lower(REPLACE(a.strFilename, Concat('.', SUBSTRING_INDEX(a.strFilename, '.', -1)), '')) = c.strFilename)
Where `playCount` is null And `lastPlayed` is null
and lower(REPLACE(a.strFilename, Concat('.', SUBSTRING_INDEX(a.strFilename, '.', -1)), '')) in(select strFilename from MyVideosLUES.FilesLus);

NB : Inversement je mets une date sur le fichier 'Rintintin.mkv' si vous avez visionné un fichier 'Rintintin'.. peut-être êtes vous passé d'un avi à un mkv, depuis..

NB2 : Me concernant, je nomme tous mes films (pas mes séries) avec leur id. IMDB. Tous mes films se nomment donc tt1234567.ext Je ferai sans doute un petit article sur le comment, si quelqu'un est intéressé.

Si cela peut être utile à d'autre.. c'est sans doute perfectible, n'étant pas très doué en MySQL...
Par exemple j'ai découvert sur le tard que cette version de SQL n'est pas sensible à la casse en Select, mais l'est en Update  :eye: Donc améliorations possibles.. si testées. J'ai du faire quelques usines à gaz car la 'solution simple' ne marchait pas, toujours pas compris pourquoi, d'ailleurs ?!

Re : Sauvegarder la date de dernier visionnage de ses médias.

Répondre #1
Salut,
Tres intéressant cette fonction.
Et au passage le nommage de tes fichiers permet-il des scraps avec 100% de réussite ??

Re : Sauvegarder la date de dernier visionnage de ses médias.

Répondre #2
Et au passage le nommage de tes fichiers permet-il des scraps avec 100% de réussite ??

Salut Tubecatodix !
Pour mes films, scrapés avec IMDB, oui :)

Je me suis fait un outil avec Excel & Automate2 afin d'automatiser le renommage au maximum, à la main passé 100 fichiers ; ce n'aurait pas été gérable. Il subsiste une tâche de contrôle visuel quand il reste un doute entre le nom de mon fichier et le nom ramené par Google par recherche du même fichier sur IMDB(*).. mais obligatoire si on veut de la qualité. Automate2 est un shareware, qu'on pourra remplacer par n'importe quel autre outil de saisie macro clavier/souris, mais ceux que je connais (Super macro ou Auto-it) sont usines à gaz et pas assez fiables à mon goût.

Cela permet de découvrir des doublons : tiens, "Every which way But loose.avi" et "Doux, dur et dingue.mkv" c'est le même film ?!

Voilà voilà.. si tu as d'autres questions..

(*) Exemple, j'ai un fichier "Tout peut arriver (2003)". Ma macro copie ce nom, va dans la fenêtre Google, y tape Ctrl+K, IMDB Ctrl+V Entrée.. et me ramène le film "Tout peut arriver (1969)".. car je prends le premier résultat trouvé, fiable dans 99% des cas, même si l'année est fausse à un ou deux an près, Google a le bon goût de corriger, alors que le moteur IMDB aurait ramené un résultat vide. (vide quelque fois, mais statistiquement moins fiable que les résultats Google, d'après mon expérience)
'fin bref ce que je voulais dire c'est que le contrôle de l'oeil humain est toujours nécessaire. Donc ne pas s'attendre à lancer une macro et à avoir un rename qui se fait tout seul. Sauf à ignorer l'étape de contrôle.

Re : Sauvegarder la date de dernier visionnage de ses médias.

Répondre #3
Une fois qu'on a la date de dernier visionnage de ses films ou séries, on peut imaginer une vue qui affiche ceux-ci :

A lancer une fois pour créer la vue :

# Quel films/épisodes ont été vus, triés par date décroissante.
Create VIEW MyVideosLUES.vus AS
SELECT
'Films  :', c00, c16, b.lastPlayed
FROM MyVideos107.movie a, MyVideos107.files b, MyVideosLUES.FilesLus c
where a.idFile=b.idFile and
lower(REPLACE(b.strFilename, Concat('.', SUBSTRING_INDEX(b.strFilename, '.', -1)), '')) = c.strFilename
union
SELECT
Concat('Séries :', y.c00), concat('S', z.season, ' E', x.c13), x.c00, b.lastPlayed
FROM MyVideos107.episode x, MyVideos107.tvshow y, MyVideos107.seasons z, MyVideos107.files b, MyVideosLUES.FilesLus c
where x.idShow = y.idShow and x.idSeason = z.idSeason and x.idFile=b.idfile and
lower(REPLACE(b.strFilename, Concat('.', SUBSTRING_INDEX(b.strFilename, '.', -1)), '')) = c.strFilename
Order by lastPlayed desc

Ensuite, quand la base MyVideosLUES est raffraîchie, il n'y a plus qu'à lancer ceci :

Select  *from MyVideosLUES.vus

NB : replacer '107' par '116' pour utiliser avec Kodi 18. au lieu de 17

Re : Sauvegarder la date de dernier visionnage de ses médias.

Répondre #4
Merci pour les détails CCX, mais je scrappe plutot sur MPDB... :gniark:

En tout cas, très intéressant ton travail.

@+

 
Simple Audio Video Embedder