나는 출판했다여기.
이 내 꺼야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=1
visit_count > 1
id
오늘 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