devnoname120 / google-play-book-downloader

Download and decrypt books purchased on Google Play Books without text reflowing
GNU Affero General Public License v3.0
54 stars 4 forks source link

Just replace the delimiters in raw date #14

Closed vladrevers closed 5 months ago

vladrevers commented 10 months ago

instead of separating and then joining. Helps to avoid an error if there is only a year in the line.

Summary by CodeRabbit

vladrevers commented 10 months ago

Separately made a PR #10, so that some commits do not wait for others to be finalized.

devnoname120 commented 5 months ago

@coderabbitai review

coderabbitai[bot] commented 5 months ago
Walkthrough ## Walkthrough The update in the script `play_book_pdf_tool.py` reflects an optimization in handling PDF metadata, particularly how the `xmp:CreateDate` is set. By directly utilizing the `pub_date` field and applying a format adjustment, the process becomes more straightforward and efficient, enhancing the tool's functionality in managing PDF creation dates. ## Changes | File(s) | Summary of Changes | |-------------------------------------|------------------------------------------------------------------------------------| | `play_book_pdf_tool/play_book_pdf_tool.py` | Updated the setting of `xmp:CreateDate` metadata by directly using `pub_date` with format adjustments. |

Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?

Share - [X](https://twitter.com/intent/tweet?text=I%20just%20used%20%40coderabbitai%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20the%20proprietary%20code.%20Check%20it%20out%3A&url=https%3A//coderabbit.ai) - [Mastodon](https://mastodon.social/share?text=I%20just%20used%20%40coderabbitai%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20the%20proprietary%20code.%20Check%20it%20out%3A%20https%3A%2F%2Fcoderabbit.ai) - [Reddit](https://www.reddit.com/submit?title=Great%20tool%20for%20code%20review%20-%20CodeRabbit&text=I%20just%20used%20CodeRabbit%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20proprietary%20code.%20Check%20it%20out%3A%20https%3A//coderabbit.ai) - [LinkedIn](https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fcoderabbit.ai&mini=true&title=Great%20tool%20for%20code%20review%20-%20CodeRabbit&summary=I%20just%20used%20CodeRabbit%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20proprietary%20code)

Tips ### Chat There are 3 ways to chat with [CodeRabbit](https://coderabbit.ai): - Review comments: Directly reply to a review comment made by CodeRabbit. Example: - `I pushed a fix in commit .` - `Generate unit testing code for this file.` - `Open a follow-up GitHub issue for this discussion.` - Files and specific lines of code (under the "Files changed" tab): Tag `@coderabbitai` in a new review comment at the desired location with your query. Examples: - `@coderabbitai generate unit testing code for this file.` - `@coderabbitai modularize this function.` - PR comments: Tag `@coderabbitai` in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples: - `@coderabbitai generate interesting stats about this repository and render them as a table.` - `@coderabbitai show all the console.log statements in this repository.` - `@coderabbitai read src/utils.ts and generate unit testing code.` - `@coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.` Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. ### CodeRabbit Commands (invoked as PR comments) - `@coderabbitai pause` to pause the reviews on a PR. - `@coderabbitai resume` to resume the paused reviews. - `@coderabbitai review` to trigger a review. This is useful when automatic reviews are disabled for the repository. - `@coderabbitai resolve` resolve all the CodeRabbit review comments. - `@coderabbitai help` to get help. Additionally, you can add `@coderabbitai ignore` anywhere in the PR description to prevent this PR from being reviewed. ### CodeRabbit Configration File (`.coderabbit.yaml`) - You can programmatically configure CodeRabbit by adding a `.coderabbit.yaml` file to the root of your repository. - Please see the [configuration documentation](https://docs.coderabbit.ai/guides/configure-coderabbit) for more information. - If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: `# yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json` ### Documentation and Community - Visit our [Documentation](https://coderabbit.ai/docs) for detailed information on how to use CodeRabbit. - Join our [Discord Community](https://discord.com/invite/GsXnASn26c) to get help, request features, and share feedback. - Follow us on [X/Twitter](https://twitter.com/coderabbitai) for updates and announcements.
vladrevers commented 5 months ago

@vladrevers I made some changes. What do you think?

It looks good, it may be worth swapping the third format with the first one, as the YYYY-MM-DD variant is the most frequent and it will be earlier than the output, but this is already micro-optimization...

"%Y", # YYYY "%Y-%m", # YYYY-MM "%Y-%m-%d", # YYYY-MM-DD"%Y-%m-%d", # YYYY-MM-DD "%Y-%m", # YYYY-MM "%Y", # YYYY

devnoname120 commented 5 months ago

Yeah it's completely negligible in terms of performances.

vladrevers commented 5 months ago

@devnoname120 an external warning appears even with valid variants such as "2014", "2014-01"; with "2014-01-01" it is not present. $HOME/.cache/pypoetry/virtualenvs/play-book-pdf-tool-7b70b7UK-py3.10/lib/python3.10/site-packages/pikepdf/models/metadata.py:520: UserWarning: The DocumentInfo field /CreationDate could not be updated from XMP.

~The pikepdf is updated, I looked in the metadata of the pdf that was created half a year ago when the incomplete date was added - pikepdf 7.1.1.~

devnoname120 commented 5 months ago

@vladrevers Do you mean that it works in pikepdf = "7.1.1" or do you mean that it works if you update this dependency?

Edit: OK, the problem is because PikePDF uses datetime.fromisoformat(), and it sucks like most of Python's standard library.

vladrevers commented 5 months ago

@vladrevers Do you mean that it works in pikepdf = "7.1.1" or do you mean that it works if you update this dependency?

~Worked with 7.1.1~

devnoname120 commented 5 months ago

@vladrevers Can you open an issue on the pikepdf repository? You can link in the issue this page that shows that 2014 and 2014-01 are accepted formats for the Date XMP Data Type: https://developer.adobe.com/xmp/docs/XMPNamespaces/XMPDataTypes/#date

devnoname120 commented 5 months ago

Worked with 7.1.1

Pikepdf 7.1.1 has the same exact problem so I doubt that.

vladrevers commented 5 months ago

Pikepdf 7.1.1 has the same exact problem so I doubt that.

hmm, yes, I just looked again in that pdf, I apparently then indicated the full date

@vladrevers Can you open an issue on the pikepdf repository?

Honestly wouldn't want to, I have problems with both English and Python)

devnoname120 commented 5 months ago

https://github.com/pikepdf/pikepdf/issues/576

devnoname120 commented 5 months ago

@vladrevers As far as I understand it doesn't prevent the PDF from being created (it will only lack this legacy metadata). Can you confirm?

vladrevers commented 5 months ago

Can you confirm?

Yes, it does not interfere with the creation of PDF, just in the final PDF file will not be this property