place.sqlite에 문제가 있나요? 이상하게 행동하는 것 같습니다. $LAST_VISITED_URL을 얻는 방법은 무엇입니까?

place.sqlite에 문제가 있나요? 이상하게 행동하는 것 같습니다. $LAST_VISITED_URL을 얻는 방법은 무엇입니까?

나는 출판했다여기.

이 내 꺼야last-url.sh

    #!/bin/bash
    
    rm  -rf /tmp/db.sqlite 
    cp ~/.mozilla/firefox/*.default-esr/places.sqlite /tmp/db.sqlite ;
    LAST_URL=`sqlite3 /tmp/db.sqlite "select url from moz_places order by last_visit_date desc limit 1;"`;

    echo $LAST_URL

내 스크립트는 계속해서 예를 제공합니다.stackoverflow.com대신 URLyoutube.com하나, 페이지를 다시 로드하더라도 마찬가지입니다.

문제는 어디에 있습니까?

프로필이 하나뿐입니다 xxxxxx.default-esr.

스크린샷: 파이어폭스 역사 SQLite 데이터베이스

테스트 예: 'google test'는 새로 방문한 URL이고 다른 페이지는 새로고침됩니다.

이제 저는 Firefox가 (실제 기록을 반영하는) 기록 탭을 어떻게 생성하는지 자문하고 있습니다. 어떤 파일이나 SQL 요청을 사용했나요? SQLite?

답변1

스크립트 수정

 #!/bin/bash
    
    rm  -rf /tmp/db.sqlite 
    cp ~/.mozilla/firefox/*.default-esr/places.sqlite /tmp/db.sqlite ;
    ORIG_QUERY=`select url from moz_places order by last_visit_date desc limit 1;`
    NEW_QUERY=`SELECT url FROM moz_places WHERE visited_count >=1 GROUP BY last_visit_date DESC ORDER BY id LIMIT 1
    LAST_URL=`sqlite3 /tmp/db.sqlite ${QUERY}`;
    TEST_URL=`sqlite3 /tmp/db.sqlite ${NEW_QUERY};`

    #echo $LAST_URL
    echo $TEST_URL

설명하다

질문 아래의 설명을 기반으로 OP는 데이터베이스가 0 기반이 아닌지 확인했습니다. 내 SQL은 약간 녹슬었지만 저장된 쿼리는 "새( ) 또는 새로 고침( ) ${NEW_QUERY}중 하나의 URL의 첫 번째 행을 반환해야 합니다. 여기서 s는 가장 큰 것부터 가장 작은 것까지 날짜별로 그룹화됩니다." 다시 말해서:visit_count=1visit_count > 1id

오늘 1,000페이지, 어제 500페이지를 방문했고 제한이 없었다면 오늘 날짜 아래에 1,000페이지, 어제 날짜 아래에 500페이지가 나열되고 맨 위에 빅ID가 표시되어야 합니다. LIMIT를 설정하면 페이지 새로고침을 포함하여 날짜별로 id가장 높은 URL이 반환되어야 합니다.last_visited

답변2

대답은 다음과 같이 시작됩니다.여기jscher2000에게 감사하지만 아직 해결 방법이 없습니다.

일부 기록은 메모리에 캐시될 수 있지만 라이브러리 창에는 많은 항목이 표시되므로 정보를 디스크에서 조회할 수 있습니다. SQLite 엔진은 place.sqlite 파일과 해당 로그 파일에서 이 보기를 구축하므로 단순히 파일에서 작업하는 경우보다 더 완전한 보기를 갖습니다.

아마도 해결책은 이와 같은 도구에서 나올 수 있습니다.wal2jsonplace.sqlite.wal을 구문 분석해 보세요. 한번 시도해 보겠습니다.

@jscher2000이 말했듯이

Firefox는 -wal 및 -shm 파일을 작성합니다. ...SQLite3이 자동으로 처리하지 않는 이유가 혼란스럽습니다. ...https://www.sqlite.org/wal.html

관련 정보