Firefox 29: ¿cómo elimino las entradas del historial visitadas menos de x veces?

11

Contexto:

He estado usando mi perfil de Firefox durante un par de años. Mi archivo de historia se ha vuelto enorme, naturalmente. Configuré Firefox Sync entre mi PC de escritorio principal y mi computadora portátil.

HW configs:

  • PC: i5-3450, 8 GB DDR3 RAM, Crucial M4 128 GB SSD
  • computadora portátil: Pentium SU4100, 4 GB DDR3 RAM, WD 5400 rpm HDD

Acceder a las entradas del historial al escribir en la barra impresionante en mi escritorio lleva bastante tiempo a pesar de la configuración decente, la computadora portátil es aún más lenta. La experiencia es bastante insensible.

Pensé que si borraba un poco el historial, podría evitar crear un nuevo perfil para acelerar las cosas.

La pregunta en sí:

Para ilustrar:

historia

¿Hay alguna forma de eliminar todas las entradas del historial que se han visitado menos de x (digamos 5) veces y al mismo tiempo la visita reciente tiene menos de y (digamos 120) días de antigüedad?

afaik el archivo de historial es una especie de base de datos SQL, pero no estoy realmente seguro de cómo se guardan los datos, si hay una "forma segura" de editarlo y cómo sería la consulta para hacer lo que necesito.


Seguí navegando por las preguntas anteriores de SuperUser para ver si podía encontrar información relevante.

En mi directorio de perfil de Firefox, hay un archivo llamado places.sqlite. Abrirlo con sqlite revela (entre otros) las tablas moz_placesy moz_historyvisits. Parece que moz_historyvisitsusa el primario de moz_placespara referirse a las URL.

Como no estoy familiarizado con las bases de datos, realmente no entiendo la forma en que las dos tablas mencionadas en la cita están relacionadas.

captura de pantalla de una parte de las tablas places_sqlite

Me di cuenta de que visit_countestá en un formato estándar, por lo que es fácil trabajar con él. Las last_visit_datemiradas encriptadas a simple vista, pero no puedo ver de qué manera.

Espero que ayude, estoy al final de mi ingenio.

pésimo usuario
fuente
Para responder una de sus preguntas, de acuerdo con esta respuesta , Firefox de hecho usa SQL. Recomiendo activar SQLLite e ir desde allí.
AStopher
¿Qué intentaste hasta ahora? Antes de continuar, ¿puede confirmar que un nuevo perfil de Firefox proporciona una experiencia más ágil, especialmente en la computadora portátil?
y31415
1
Acabo de publicar una respuesta que contiene información nueva. En cuanto a la felicidad, no, no lo he intentado, pero recuerdo claramente que el Awesome Bar era mucho más ágil cuando el perfil era bastante nuevo (y el historial estaba despejado por muchas entradas), tanto en la computadora portátil como en la computadora de escritorio.
pésimo usuario
Entonces, ¿vio alguna mejora en el rendimiento después de borrar su historial? - edit: oops: ahora veo que has comentado la respuesta seleccionada y has notado una gran mejora.
ndemou

Respuestas:

9

Con un poco de investigación (ver al final para 'referencias'), he encontrado esta (tipo de) solución simple:


RESPALDO PRIMERO. CIERRE FIREFOX PRIMERO


Esto requiere que edite la Base de datos SQLite (una base de datos SQL autónoma; consulte el artículo de Wikipedia ) de Mozilla Firefox haciendo una consulta para encontrar todos los registros que satisfagan la condición (en su caso, visto menos de 5 veces y no visitado en el últimos 120 días).


RESPALDO PRIMERO. CIERRE FIREFOX PRIMERO

Instrucciones de inicio:


Esto funciona (probado y trabajando con mi Firefox v. 29.0.1). En 12 sencillos (ish) pasos:

  1. Instalar el navegador de base de datos SQLite

  2. Abrelo

  3. Haga clic en Abrir base de datos

  4. Navegue a la C:\Users\[USER]\AppData\Roaming\Mozilla\Firefox\Profiles\[PROFILE]edición según sea necesario

    Copia de seguridad del archivo siguiente PRIMERA !!

  5. Abra places.sqlitedesde el directorio que abrió en el paso 4.

    EN SERIO, RESPALDO PRIMERO !!

  6. Haga clic en la pestaña Ejecutar SQL.

  7. Ingrese esto:

    SELECT *
    FROM moz_places
    WHERE
        last_visit_date BETWEEN strftime('%s','2014-04-01')*1000000
                        AND strftime('%s','2014-05-30')*1000000
        AND visit_count < x(2)
    
  8. Reemplace x(2)a 5 (en su ejemplo)

  9. Reemplace 2014-04-01y 2014-05-30con el rango de fechas que desea

  10. Presione el botón azul de reproducción.

  11. Compruebe si los sitios que se muestran son correctos (deberían serlo, ¡pero verifique dos veces!)

  12. Si lo son, reemplace las dos primeras líneas del código anterior con:

    DELETE
    FROM moz_places
    

    entonces su código se parece a:

    DELETE
    FROM moz_places
    WHERE
        last_visit_date BETWEEN strftime('%s','2014-04-01')*1000000
                        AND strftime('%s','2014-05-30')*1000000
        AND visit_count < x(2)
    

¡HECHO! Cierre el programa y haga clic en guardar al cerrar.

Final de instrucciones


¿Qué pasa con el last_visit_date?

The last_visit_date parece cifrado a simple vista, pero no puedo ver de qué manera.

No lo llamaría 'encriptado' (aunque no estoy de acuerdo con que se vea encriptado). Es solo en otro 'sistema'. La fecha está en el Unixsistema horario (o Epoch/ POSIX). Es el número de segundos que han pasado desde las 00:00:00 (UTC) del 1 de enero de 1970. 1 hora es 3600 segundos. 1 año es 31556926 días.

Para más información. consulte este artículo de Wikipedia o este sitio web que convierte el tiempo de una época a otra.


Capturas de pantalla (ignore las consultas SQL en estas imágenes, están equivocadas. Estas son para decirle principalmente dónde buscar)

SQLite Database Browser SQLite Database Browser SQLite Database Browser

Gracias a ;):

ᔕᖺᘎᕊ
fuente
Para mayor seguridad, es posible que desee hacer una copia (copia de seguridad) de la base de datos antes de hacerlo.
Bob
Además, si desea hacer esto correctamente, también debe eliminar de moz_placeslas entradas que ya no tienen un correspondiente place_id.
Bob
Lo siento, quería decir de eliminación demoz_historyvisits
Bob
@Bob Y place_iden moz_historyvisits= iden moz_places?
ᔕᖺᘎᕊ
Debiera ser. Hay dos formas de manejarlo: 1. eliminar de moz_historyvists first ( delete from moz_historyvisits as hv left join moz_places as p on hv.place_id = p.id where p.visit_count...) o 2. después de borrar moz_places, puede eliminar de moz_historyvisitscualquier entrada que no tenga la entrada correspondiente . Prefiero la opción 1 personalmente. No lo use sin probar; mi SQL está bastante oxidado, y aprendí con pgsql, no sqlite. En realidad, es posible que pueda eliminar de ambos a la vez, déjame probar.
Bob