Question Exportation de signets Firefox en tant que fichiers .URL distincts tout en préservant les horodatages


J'ai un grand nombre de signets Firefox que je veux supprimer et archiver en tant que fichiers de raccourci (.URL). Mais je voudrais aussi conserver la date à laquelle ils ont été ajoutés en tant que fichiers ' dernière modification Rendez-vous.

Firefox conserve ses signets avec un tas de méta-données telles que date ajoutée et dernière modification dans un seul fichier .json.

Ce que je dois faire c'est:

  1. Exportez les signets du fichier .json en tant que fichiers .URL individuels
  2. Extraire le date ajoutée méta-données et définissez-le comme la date de dernière modification du fichier .URL

Je ne m'attends à aucun utilitaire pour avoir cette fonction puisque c'est très spécifique. Mais je suis prêt à essayer toute combinaison d’outils tant que cela fonctionne


4
2018-01-08 18:26


origine




Réponses:


Créer des fichiers .URL tout en préservant l'horodatage de n'importe quel navigateur bookmarks.html

Cette macro VBA vous permet de convertir un fichier bookmarks.html standard (Firefox, Chrome, Opera) en plusieurs fichiers .URL (Internet Explorer)

En prime, il lit le créer un rendez-vous à partir de vos signets et modifie les nouveaux fichiers .URL pour refléter cette date dans votre explorateur Windows. Il conserve également la structure de votre dossier et de votre sous-dossier. Regardez la capture d'écran

enter image description here

Usage

  • lancez le navigateur désiré et exportez vos marque-pages en tant que Fichier HTML.
    Chaque navigateur majeur prend en charge cette capacité.
  • téléchargez et ouvrez votre version correspondante
  • Utilisez ce beau bouton de démarrage
  • Excel demande le chemin d'accès à votre fichier HTML que vous avez créé à la première étape
  • tous les nouveaux fichiers de raccourcis sont stockés dans un nouveau dossier au même endroit que votre fichier HTML
  • créer un fichier et fichier modifié la date est changée à leur date correspondante lorsque vous avez créé le signet pour la première fois dans votre navigateur

Comment ça marche

  • une macro VBA ouvre votre fichier HTML en tant que texte pur au format Unicode (les caractères spéciaux sont conservés)
  • il recherche "HREF =" ligne par ligne et extrait l'URL
  • il fait la même chose pour le date ajoutée et pour le signet utilisé Titre dans votre navigateur
  • il crée tous les sous-dossiers en fonction de la structure de vos favoris
  • il crée un nouveau fichier texte pour chaque signet et enregistre les données suivantes dans ce fichier
    [InternetShortcut]
    URL = http: //www.someaddress.com/
    
  • le fichier est enregistré sous <bookmarktitle>.url
  • le titre est tronqué à 100 caractères maximum et tous les caractères interdits sont supprimés
  • il vérifie si un raccourci existe déjà et si oui, il ajoute la date de création
  • le donné Date d'UNIX est converti dans un format lisible
  • la date de création du fichier et l'horodatage modifié du fichier sont modifiés à la date à laquelle vous avez enregistré le signet dans votre navigateur

Liens utiles 


6
2018-01-08 23:55



Pourrais tu s'il te plait tester cette version et dire si cela répond à vos besoins. Il crée des sous-dossiers en fonction de leurs homologues de firfox. Et il vérifie également si le fichier existe déjà. Si oui, il ajoute le add_date du fichier de signets. - nixda
Wow..il a vraiment dépassé les attentes - qwalter
J'ai essayé et tout fonctionne, c'est parfait. - qwalter
Encore une fois, merci beaucoup pour l’aide, vous avez toute ma gratitude. - qwalter
Vous êtes les bienvenus, c'était amusant pour moi - nixda


Si vous voulez simplement créer des fichiers de raccourcis depuis n'importe quel navigateur sans conserver les horodatages, que c'est la voie facile

  1. Exportez vos signets au format HTML.
    Internet Explorer, Firefox, Chrome et Opera ont cette capacité intégrée
  2. TypeGagner+R et entrez %USERPROFILE%\Favorites
  3. Sauvegarde temporaire du contenu entier quelque part
  4. Ouvrez Internet Explorer → Fichier → Importer et exporter enter image description here
  5. Sélectionnez votre fichier HTML et importez-les
  6. TypeGagner+R et entrez %USERPROFILE%\Favorites encore

Maintenant, vous avez tous les signets en tant que fichiers .URL simples. Vous pouvez les déplacer où vous voulez.
Internet Explorer ne stocke pas les signets de la même manière que les autres navigateurs (dans un seul fichier). Il crée simplement des fichiers .URL pour chaque signet dans le dossier Favoris.

Remarque: N'oubliez pas de supprimer les nouveaux favoris d'IE et de les restaurer avec votre sauvegarde


2
2018-01-13 14:57





Voici le code de nixda pour 2013 qui a été modifié pour corriger quelques fautes de frappe et supprimer la date de dernière modification qui n'a pas été trouvée sur la même ligne que le lien hypertexte dans un fichier html exporté à partir de Google Chrome.

Le script de clic suivant sur le bouton a été modifié pour mettre en commentaire la dernière partie modifiée du code.

Private Sub CommandButton1_Click()
Dim shortcutfile As String
Dim myadddate As Double
forbidden = Array("\", "/", ":", "*", "?", """", "<", ">", "|", "&quot;", "&amp;", "&#39;")

    Application.ScreenUpdating = False
    ChDir ThisWorkbook.Path
    myfullfilename = Application.GetOpenFilename(fileFilter:="HTML Files, *.html")

    If myfullfilename = False Then Exit Sub
    mypath = Left$(myfullfilename, InStrRev(myfullfilename, "\")) & "InternetShortCuts" & " " & Format(Now, "yyyy.mm.dd hh-mm-ss")
    Workbooks.OpenText FileName:=myfullfilename, Origin:=-535, DataType:=xlDelimited, Tab:=False, semicolon:=False, comma:=False, Space:=False

    On Error Resume Next
    MkDir mypath
    On Error GoTo 0

    Set mysheet = ActiveWorkbook.Sheets(1)
    With mysheet
    For i = 1 To .UsedRange.SpecialCells(xlCellTypeLastCell).Row

        If InStr(UCase(.Cells(i, 1)), "<DT><H3 ADD_DATE=") <> 0 Then
            folderend = InStrRev(.Cells(i, 1), "<")
            folderstart = InStrRev(.Cells(i, 1), ">", folderend)
            newfolder = Mid(.Cells(i, 1), folderstart + 1, folderend - folderstart - 1)

            For j = 0 To UBound(forbidden)
                newfolder = Replace(newfolder, forbidden(j), "")
            Next j

            mypath = mypath & "\" & newfolder

            On Error Resume Next
            MkDir mypath
            On Error GoTo 0
        End If

        If InStr(UCase(.Cells(i, 1)), "</DL><P>") <> 0 Then
            mypath = Left(mypath, InStrRev(mypath, "\") - 1)
        End If

        If InStr(UCase(.Cells(i, 1)), "HREF=") <> 0 Then
            urlstart = InStr(.Cells(i, 1), "HREF=")
            urlend = InStr(.Cells(i, 1), "ADD_DATE=")
            myurl = Mid(.Cells(i, 1), urlstart + 6, urlend - urlstart - 8)

            'adddateend = InStr(.Cells(i, 1), "LAST_")
            'myadddate = Mid(.Cells(i, 1), urlend + 10, adddateend - urlend - 12)
            'myadddate = DateAdd("s", myadddate, DateSerial(1970, 1, 1))

            titleend = InStrRev(.Cells(i, 1), "<")
            titlestart = InStrRev(.Cells(i, 1), ">", titleend)
            mytitle = Mid(.Cells(i, 1), titlestart + 1, titleend - titlestart - 1)
            mytitle = Left(mytitle, 100)

            For j = 0 To UBound(forbidden)
                mytitle = Replace(mytitle, forbidden(j), "")
            Next j

            shortcutfile = mypath & "\" & Trim(mytitle) & ".url"

            With CreateObject("Scripting.FileSystemObject")
                'If .FileExists(shortcutfile) Then shortcutfile = mypath & "\" & Trim(mytitle) & " " & Format(myadddate, "yyyy.mm.dd hh-mm-ss") & ".url"
                If .FileExists(shortcutfile) Then shortcutfile = mypath & "\" & Trim(mytitle) & " " & ".url"
                With .CreateTextFile(shortcutfile, , True)
                    .write "[InternetShortcut]" & vbNewLine
                    .write "URL=" & myurl
                    .Close
                End With
            End With

            Call Settimestamp(shortcutfile, myadddate)

        End If
    Next i

    Close
    .Parent.Close False

    End With

    Application.ScreenUpdating = True
End Sub

Le module change_timestamp suivant a été modifié pour corriger une erreur de frappe lors de la déclaration de la fonction CreateFileW où lpFileName a été déclaré comme LongLong au lieu de Long sous # VBA7 section et continuation lors de la déclaration de la fonction CreateFileW sous #Else.

Option Explicit

Private Const OPEN_EXISTING = &H3
Private Const FILE_SHARE_READ = &H1
Private Const FILE_SHARE_WRITE = &H2
Private Const GENERIC_WRITE = &H40000000

Public Type FileTime
    dwLowDateTime As Long
    dwHighDateTime As Long
End Type

Public Type SYSTEMTIME
    wYear As Integer
    wMonth As Integer
    wDayOfWeek As Integer
    wDay As Integer
    wHour As Integer
    wMinute As Integer
    wSecond As Integer
    wMilliseconds As Integer
End Type

#If VBA7 Then
    Private Declare PtrSafe Function LocalFileTimeToFileTime Lib "kernel32" (lpLocalFileTime As FileTime, lpFileTime As FileTime) As Long
    Private Declare PtrSafe Function SystemTimeToFileTime Lib "kernel32" (lpSystemTime As SYSTEMTIME, lpFileTime As FileTime) As Long
    Private Declare PtrSafe Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long

    Private Declare PtrSafe Function CreateFileW Lib "kernel32.dll" _
        (ByVal lpFileName As Long, _
        ByVal dwDesiredAccess As Long, _
        ByVal dwShareMode As Long, _
        ByVal lpSecurityAttributes As Long, _
        ByVal dwCreationDisposition As Long, _
        ByVal dwFlagsAndAttributes As Long, _
        ByVal hTemplateFile As Long) As Long

    Private Declare PtrSafe Function SetFileTimeCreate Lib "kernel32" Alias "SetFileTime" _
       (ByVal hFile As Long, _
        CreateTime As FileTime, _
        ByVal LastAccessTime As Long, _
        LastModified As FileTime) As Long
#Else
    Private Declare Function LocalFileTimeToFileTime Lib "kernel32" (lpLocalFileTime As FileTime, lpFileTime As FileTime) As Long
    Private Declare Function SystemTimeToFileTime Lib "kernel32" (lpSystemTime As SYSTEMTIME, lpFileTime As FileTime) As Long
    Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long

    Private Declare Function CreateFileW Lib "kernel32.dll" _
        (ByVal lpFileName As Long, _
        ByVal dwDesiredAccess As Long, _
        ByVal dwShareMode As Long, _
        ByVal lpSecurityAttributes As Long, _
        ByVal dwCreationDisposition As Long, _
        ByVal dwFlagsAndAttributes As Long, _
        ByVal hTemplateFile As Long) As Long

    Private Declare Function SetFileTimeCreate Lib "kernel32" Alias "SetFileTime" _
       (ByVal hFile As Long, _
        CreateTime As FileTime, _
        ByVal LastAccessTime As Long, _
        LastModified As FileTime) As Long
#End If

'=======================================================================================================================
'=======================================================================================================================
'=======================================================================================================================

Function Settimestamp(FileName, FileDateTime)

Dim FileHandle As Long
Dim Res As Long
Dim ErrNum As Long
Dim ErrText As String
Dim tFileTime As FileTime
Dim tLocalTime As FileTime
Dim tSystemTime As SYSTEMTIME

With tSystemTime
    .wYear = Year(FileDateTime)
    .wMonth = Month(FileDateTime)
    .wDay = Day(FileDateTime)
    .wDayOfWeek = Weekday(FileDateTime) - 1
    .wHour = Hour(FileDateTime)
    .wMinute = Minute(FileDateTime)
    .wSecond = Second(FileDateTime)
End With

Res = SystemTimeToFileTime(lpSystemTime:=tSystemTime, lpFileTime:=tLocalTime)
Res = LocalFileTimeToFileTime(lpLocalFileTime:=tLocalTime, lpFileTime:=tFileTime)

FileHandle = CreateFileW(lpFileName:=StrPtr(FileName), _
                        dwDesiredAccess:=GENERIC_WRITE, _
                        dwShareMode:=FILE_SHARE_READ Or FILE_SHARE_WRITE, _
                        lpSecurityAttributes:=ByVal 0&, _
                        dwCreationDisposition:=OPEN_EXISTING, _
                        dwFlagsAndAttributes:=0, _
                        hTemplateFile:=0)

Res = SetFileTimeCreate( _
            hFile:=FileHandle, _
            CreateTime:=tFileTime, _
            LastAccessTime:=0&, _
            LastModified:=tFileTime)

CloseHandle FileHandle

End Function

1
2018-04-17 17:47