Files
LifeFaq/app/services/__pycache__/metadata_processor.cpython-312.pyc

51 lines
6.2 KiB
Plaintext
Raw Normal View History

2024-12-12 19:58:26 +01:00
<EFBFBD>
2025-01-03 09:52:21 +01:00
!wg<77><00><00>\<00>ddlZddlZddlZddlmZmZddlmZddlm Z m
2024-12-30 21:37:36 +01:00
Z
Gd<05>d<06>Z y)<07>N)<02>List<73>Dict)<01>FastAPI)<02> ImageService<63> FileHandlerc<00>B<00>eZdZdZd dededefd<06>Zdedefd <09>Zd
2024-12-29 04:34:25 +01:00
<EFBFBD>Z d <0B>Z
y) <0A>MetadataProcessorzq
2024-12-12 19:58:26 +01:00
A class to scan Markdown files, extract front matter metadata,
and generate a structured JSON file.
2024-12-30 21:37:36 +01:00
N<> input_dir<69> output_file<6C>appc<00>B<00>||_||_||_ggd<01>|_y)z<>
2024-12-12 19:58:26 +01:00
Initialize the MetadataProcessor.
Args:
input_dir (str): Directory containing Markdown files.
output_file (str): Path to save the generated JSON file.
)<02>
2024-12-30 21:37:36 +01:00
categories<EFBFBD> favoritesN)r
r r <00>data)<04>selfr
r r s <20>F/home/hjess/PycharmProjects/LifeFaq/app/services/metadata_processor.py<70>__init__zMetadataProcessor.__init__s&<00><00>#<23><04><0E>&<26><04><18><16><04><08>#%<25>B<EFBFBD>7<><04> <09><00> file_path<74>returnc <00>b<00>t|dd<02><03>5}|j<00>}tjgd<04><01><05>}|j |<03>|j
2024-12-12 19:58:26 +01:00
r=|j
j <00>D<00><05>cic]\}}|dj|<06><00><02>c}}ni}|cddd<07>Scc}}w#1swYyxYw)z<>
Extract front matter metadata using the 'markdown' package.
Args:
file_path (str): Path to the Markdown file.
Returns:
dict: A dictionary containing the extracted metadata.
<20>r<>utf-8<><01>encoding)<03>extra<72>nl2br<62>meta)<01>
2024-12-30 21:37:36 +01:00
extensions<EFBFBD> N)<08>open<65>read<61>markdown<77>Markdown<77>convert<72>Meta<74>items<6D>join)rr<00>file<6C>markdown_content<6E>md<6D>key<65>valuers r<00>_extract_metadataz#MetadataProcessor._extract_metadatas<><00><00><12>)<29>S<EFBFBD>7<EFBFBD> 3<>t<EFBFBD>#<23>y<EFBFBD>y<EFBFBD>{<7B> <1C><1A>"<22>"<22>.H<>I<>B<EFBFBD> <0E>J<EFBFBD>J<EFBFBD>'<27> (<28>PR<01>w<EFBFBD>w<EFBFBD>2<EFBFBD>7<EFBFBD>7<EFBFBD>=<3D>=<3D>?<3F>K<>?<3F>Z<EFBFBD>S<EFBFBD>%<25>C<EFBFBD><13><18><18>%<25><1F>(<28>?<3F>K<>\^<5E>D<EFBFBD><17>4<> 3<><33>L<01>4<> 3<>s<00>A#B%<03>2B<08>B%<03>B%<03>%B.c <00><><00>tj|j<00>D<00>]H\}}}|D<00>];}|jd<01>s<01>tjj ||<04>}|j |<05>}|s<01>J|jdj|jdd<04>tjj||j<00>jtjd<05>|jdd<04>d<07><03>|jd<08>s<01><>|dj<00>d k(s<01><>d
}tjj||j<00>jtjd<05>}t|||jd <0B><00> <0C>} t|j <00>}
|
j#|<07>} | jd <0A>} | jd<0E>} |
j%|||jd d<0F><00>}t'| j(<00>t'|<0E>|jdj|jdd<04>| j(| | |jdd<12>|d<13><06><00><02>><00><02>Ky)z<>
2024-12-12 19:58:26 +01:00
Recursively scan the input directory for Markdown files
and extract metadata to build the JSON structure.
2024-12-30 21:37:36 +01:00
z.mdr<00>name<6D>Unknown<77>/<2F>author)r0<00>pathr3<00>favorite<74>true<75>
thumbnails<EFBFBD>image)<03>category<72>
image_type<EFBFBD>filename<6D>width<74>height<68>Unkownr<00>summaryzNo description provided)r0r8r=r<<00> descriptionr4N)<15>os<6F>walkr
<00>endswithr4r(r.r<00>append<6E>get<65>relpath<74>replace<63>sep<65>lowerrrr <00>get_image_size<7A> image_tag<61>print<6E>dest_filename_webp)r<00>root<6F>_<>filesr)r<00>metadatar:r9<00> filehandler<65> imageservice<63> default_sizer<r=rKs r<00>_process_directoryz$MetadataProcessor._process_directory3s<><00><00>
2024-12-12 19:58:26 +01:00
!<21>g<EFBFBD>g<EFBFBD>d<EFBFBD>n<EFBFBD>n<EFBFBD>5<>N<EFBFBD>D<EFBFBD>!<21>U<EFBFBD><1D><04><17>=<3D>=<3D><15>'<27> "<22><07><07> <0C> <0C>T<EFBFBD>4<EFBFBD> 8<>I<EFBFBD>#<23>5<>5<>i<EFBFBD>@<40>H<EFBFBD><1F><1C> <09> <09>,<2C>/<2F>6<>6<>$,<2C>L<EFBFBD>L<EFBFBD><16><19>$C<>$&<26>G<EFBFBD>G<EFBFBD>O<EFBFBD>O<EFBFBD>D<EFBFBD>$<24>.<2E>.<2E>$I<>$Q<>$Q<>RT<52>RX<52>RX<52>Z]<5D>$^<5E>&.<2E>l<EFBFBD>l<EFBFBD>8<EFBFBD>Y<EFBFBD>&G<>8<1A><1B>$<24><<3C><<3C>
2024-12-30 21:37:36 +01:00
<EFBFBD>3<><08><1A>8L<38>8R<38>8R<38>8T<38>X^<5E>8^<5E>)5<>J<EFBFBD>')<29>w<EFBFBD>w<EFBFBD><EFBFBD><EFBFBD><04>d<EFBFBD>n<EFBFBD>n<EFBFBD>'N<>'V<>'V<>XZ<58>X^<5E>X^<5E>`c<>'e<>H<EFBFBD>*5<>x<EFBFBD>T^<5E>iq<69>iu<69>iu<69>v}<7D>i~<7E>*<>K<EFBFBD>+7<><04><08><08>+A<>L<EFBFBD>+7<>+F<>+F<>
<EFBFBD>+T<>L<EFBFBD>%1<>%5<>%5<>w<EFBFBD>%@<40>E<EFBFBD>&2<>&6<>&6<><08>&B<>F<EFBFBD>(4<>(><3E>(><3E>x<EFBFBD><1A>U]<5D>Ua<55>Ua<55>bi<62>jr<6A>Us<55>(t<>I<EFBFBD>!<21>+<2B>"@<40>"@<40>A<>!<21>)<29>,<2C> <20>I<EFBFBD>I<EFBFBD>k<EFBFBD>2<>9<>9<>(0<> <0C> <0C>V<EFBFBD>Y<EFBFBD>(G<>)4<>)G<>)G<>*0<>).<2E>/7<>|<7C>|<7C>I<EFBFBD>G`<60>/a<>(0<> ;<1E><1F>5<1E>6rc<00><00>|j<00>d|jvrg|jd<i}|jdD]/}t|t<00>s<01>|j dd<03>}||vs<01>+|||<<00>1t |j <00>d<04><00><05>|jd<t|jdd<07><08>5}tj|j|d d
2025-01-03 09:52:21 +01:00
<EFBFBD> <0B>d d d <0C>td |j<00><00><02>y#1swY<00>"xYw)z<>
2024-12-21 02:16:29 +01:00
Generate the JSON structure, deduplicate and sort categories by 'path',
then save it to the output file.
2025-01-03 09:52:21 +01:00
rr4<00>unknownc<00>&<00>|jdd<02>S)Nr4rW)rE)<01>xs r<00><lambda>z1MetadataProcessor.generate_json.<locals>.<lambda>ss<00><00>A<EFBFBD>E<EFBFBD>E<EFBFBD>6<EFBFBD>9<EFBFBD>6r)r,<00>wrr<00>F)<02>indent<6E> ensure_asciiNzGenerated JSON saved to T) rUr<00>
isinstance<EFBFBD>dictrE<00>sorted<65>valuesr!r <00>json<6F>dumprL)r<00>unique_categoriesr9r4<00> json_files r<00> generate_jsonzMetadataProcessor.generate_json]s<><00><00>
2024-12-21 02:16:29 +01:00
<0A><1F><1F>!<21> <18>t<EFBFBD>y<EFBFBD>y<EFBFBD> (<28>&(<28>D<EFBFBD>I<EFBFBD>I<EFBFBD>l<EFBFBD> #<23> <20><19><1C> <09> <09>,<2C>/<2F>H<EFBFBD><19>8<EFBFBD>T<EFBFBD>+<2B><1F>|<7C>|<7C>V<EFBFBD>Y<EFBFBD>8<><04><17>0<>0<>.6<EFBFBD>%<25>d<EFBFBD>+<2B> 0<>#)<29> <1D> $<24> $<24> &<26>6<>#
2025-01-03 09:52:21 +01:00
<EFBFBD><04> <09> <09>,<2C><1F> <12>4<EFBFBD>#<23>#<23>S<EFBFBD>W<EFBFBD> ><3E>)<29> <10>I<EFBFBD>I<EFBFBD>t<EFBFBD>y<EFBFBD>y<EFBFBD>)<29>a<EFBFBD><05> O<>?<3F> <0E>)<29>$<24>*:<3A>*:<3A>);<3B><<3C>><3E><13> ?<3F> ><3E>s <00>2$C7<03>7D)N) <0B>__name__<5F>
2024-12-30 21:37:36 +01:00
__module__<EFBFBD> __qualname__<5F>__doc__<5F>strrrrr.rUrg<00>rrr r s?<00><00><08>
2025-01-03 09:52:21 +01:00
8<>#<23> 8<>C<EFBFBD> 8<>G<EFBFBD> 8<><18>3<EFBFBD><18>4<EFBFBD><18>*(<1F>Trr ) rAr#rc<00>typingrr<00>fastapir<00>app.services.image_servicerrr rmrr<00><module>rqs#<00><01> <09><0F> <0B><1D><1B>@<40>p<14>pr