Open ncvescera opened 11 months ago
Hey, I came across this. I'd point out the Overleaf team introduced some changes last year, which may cause this issue. Since I'm an overleaf/overleaf-sync newbie, I'd appreciate experts' help! :heart:
The Overleaf team has been working on a migration project for the last year and completed it.
ol-projects
// consists of a project array
[
{"id": "...", "name": "..."},
{"id": "...", "name": "..."},
// ...
]
ol-prefetchedProjectsBlob
// became a children of an object
{
"totalSize": 5,
"projects": [
{ "id": "...", "name": "..." },
{ "id": "...", "name": "..." },
// ...
]
}
Gathered by me after digging the git history of overleaf/overleaf repository and may be incorrect.
Take a look at the commits that introduced these changes into Overleaf (CE edition).
Two versions of the project list page seem to have been maintained during migration, and the old one that contains ol-project
meta was removed at the commit https://github.com/overleaf/overleaf/commit/3e315eada1a99bdd6eee7db48b278118f69ced99 on May 26, 2023. I mentioned the removal of services/web/app/views/project/list.pug
.
One patch will be to have OverleafClient.filter_projects()
accept new structure dict and rename ol-projects
ol-prefetchedProjectsBlob
in each caller.
https://github.com/moritzgloeckl/overleaf-sync/blob/aa62165eb9eba48f8b8bf3d93358f9feed0bf5a9/olsync/olclient.py#L38-L41
to
@staticmethod
def filter_projects(json_content, more_attrs=None):
more_attrs = more_attrs or {}
+ projects = json_content.get("projects", []) # you have to check json_content is not None
- for p in json_content:
+ for p in projects:
json_content = json.loads(
- BeautifulSoup(projects_page.content, 'html.parser').find('meta', {'name': 'ol-projects'}).get('content'))
+ BeautifulSoup(projects_page.content, 'html.parser').find('meta', {'name': 'ol-prefetchedProjectsBlob'}).get('content'))
return list(OverleafClient.filter_projects(json_content))
My suggestion seems not intuitive because to call filter_project
with an object does not follow the standard. In other words, python's built-in filter
takes an array. So return list(OverleafClient.filter_projects(json_content).get("projects"))
should be better. Anyone has an idea? Thanks.
One of the folk already fixed this issue.
Hi sorry, I did not understand how I can fix this error. Again I am sorry as I am a noob on git.
Hi sorry, I did not understand how I can fix this error. Again I am sorry as I am a noob on git.
I think you have to use this repo: https://github.com/svennniiii/overleaf-sync
Just clone the project wherever you want git clone https://github.com/svennniiii/overleaf-sync
and run pip install .
inside the folder. This should install the script.
For PIPX users: pipx install git+https://github.com/svennniiii/overleaf-sync.git
Command
ols list
doesn't work. I am successfully logged in viaols login
. This is the output ofols list -v
: