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

56 lines
7.0 KiB
Plaintext
Raw Normal View History

2025-01-14 17:25:45 +01:00
<EFBFBD>
2025-02-10 14:28:05 +01:00
<00><><EFBFBD>g<EFBFBD><00><00>d<00>ddlZddlZddlZddlmZmZddlmZddlm Z m
Z
Gd<05>d<06><00>Z dS)<07>N)<02>List<73>Dict)<01>FastAPI)<02> ImageService<63> FileHandlerc<00>D<00>eZdZdZd dededefd<06>Zdedefd <09>Zd
<EFBFBD>Z d <0B>Z
dS) <0A>MetadataProcessorzq
2025-01-14 17:25:45 +01:00
A class to scan Markdown files, extract front matter metadata,
and generate a structured JSON file.
2025-02-10 14:28:05 +01:00
N<> input_dir<69> output_file<6C>appc<00>D<00>||_||_||_ggd<01>|_dS)z<>
2025-01-14 17:25:45 +01:00
Initialize the MetadataProcessor.
Args:
input_dir (str): Directory containing Markdown files.
output_file (str): Path to save the generated JSON file.
)<02>
2025-02-10 14:28:05 +01:00
categories<EFBFBD> favoritesN)r
r r <00>data)<04>selfr
r r s <20>L/Users/lrihni/IdeaProjects/Privat/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<>7<><04> <09> <09> <09><00> file_path<74>returnc<00>6<00>t|dd<02><03><00>5}|<02><00><00>}tjgd<04><01><05><00>}|<04>|<03><00>|jr#d<06>|j<00><00><00>D<00><00>ni}|cddd<07><00>S#1swxYwYdS)z<>
2025-01-14 17:25:45 +01:00
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>
2025-02-10 14:28:05 +01:00
extensionsc<00>@<00>i|]\}}|d<00>|<02><00><00><02>S)<01> )<01>join)<03>.0<EFBFBD>key<65>values r<00>
<dictcomp>z7MetadataProcessor._extract_metadata.<locals>.<dictcomp>0s(<00><00>K<>K<>K<>Z<EFBFBD>S<EFBFBD>%<25>C<EFBFBD><13><18><18>%<25><1F><1F>K<>K<>KrN)<07>open<65>read<61>markdown<77>Markdown<77>convert<72>Meta<74>items)rr<00>file<6C>markdown_content<6E>mdrs r<00>_extract_metadataz#MetadataProcessor._extract_metadatas<><00><00><12>)<29>S<EFBFBD>7<EFBFBD> 3<> 3<> 3<> <18>t<EFBFBD>#<23>y<EFBFBD>y<EFBFBD>{<7B>{<7B> <1C><1A>"<22>.H<>.H<>.H<>I<>I<>I<>B<EFBFBD> <0E>J<EFBFBD>J<EFBFBD>'<27> (<28> (<28> (<28>PR<01>w<EFBFBD>^<5E>K<>K<>2<EFBFBD>7<EFBFBD>=<3D>=<3D>?<3F>?<3F>K<>K<>K<>K<>\^<5E>D<EFBFBD><17> <18> <18> <18> <18> <18> <18> <18> <18> <18> <18> <18> <18><><EFBFBD><EFBFBD> <18> <18> <18> <18> <18> s<00>A.B<03>B<07>Bc <00>6<00>tj|j<00><00>D<00>]}\}}}|D<00>]r}|<04>d<01><00><00>rYtj<00>||<04><00>}|<00>|<05><00>}|<06>r!|jd<00>|<06> dd<04><00>tj<00>
||j<00><00><00> tj d<05><00>|<06> dd<04><00>d<07><03><00>|<06> d<08><00><00>r~|d<00> <00><00>d k<00>r_d
}tj<00>
||j<00><00><00> tj d<05><00>}t|||<06> d <0B><00><00> <0C><00>} t|j<00><00>}
|
<EFBFBD>|<07><00>} | <0B> d <0A><00>} | <0B> d<0E><00>} |
<EFBFBD>|||<06> d d<0F><00><00><00>}t'| j<00><00>t'|<0E><00>|jd<00>|<06> dd<04><00>| j| | |<06> dd<12><00>|d<13><06><00><00><02>t<EFBFBD><02>dS)z<>
2025-01-14 17:25:45 +01:00
Recursively scan the input directory for Markdown files
and extract metadata to build the JSON structure.
2025-02-10 14:28:05 +01:00
z.mdr<00>name<6D>Unknown<77>/<2F>author)r3<00>pathr6<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)r3r;r@r?<00> descriptionr7N)<15>os<6F>walkr
<00>endswithr7r"r1r<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=r<<00> filehandler<65> imageservice<63> default_sizer?r@rNs r<00>_process_directoryz$MetadataProcessor._process_directory3sq<00><00>
!<21>g<EFBFBD>d<EFBFBD>n<EFBFBD>5<>5<># <1F># <1F>N<EFBFBD>D<EFBFBD>!<21>U<EFBFBD><1D>" <1F>" <1F><04><17>=<3D>=<3D><15>'<27>'<27>!<1F> "<22><07> <0C> <0C>T<EFBFBD>4<EFBFBD> 8<> 8<>I<EFBFBD>#<23>5<>5<>i<EFBFBD>@<40>@<40>H<EFBFBD><1F><1F><1C> <09>,<2C>/<2F>6<>6<>$,<2C>L<EFBFBD>L<EFBFBD><16><19>$C<>$C<>$&<26>G<EFBFBD>O<EFBFBD>O<EFBFBD>D<EFBFBD>$<24>.<2E>$I<>$I<>$Q<>$Q<>RT<52>RX<52>Z]<5D>$^<5E>$^<5E>&.<2E>l<EFBFBD>l<EFBFBD>8<EFBFBD>Y<EFBFBD>&G<>&G<>8<1A>8<1A><1B><1B><1B>$<24><<3C><<3C>
<EFBFBD>3<>3<><1F><08><1A>8L<38>8R<38>8R<38>8T<38>8T<38>X^<5E>8^<5E>8^<5E>)5<>J<EFBFBD>')<29>w<EFBFBD><EFBFBD><EFBFBD><04>d<EFBFBD>n<EFBFBD>'N<>'N<>'V<>'V<>XZ<58>X^<5E>`c<>'e<>'e<>H<EFBFBD>*5<>x<EFBFBD>T^<5E>iq<69>iu<69>iu<69>v}<7D>i~<7E>i~<7E>*<>*<>*<>K<EFBFBD>+7<><04><08>+A<>+A<>L<EFBFBD>+7<>+F<>+F<>
<EFBFBD>+T<>+T<>L<EFBFBD>%1<>%5<>%5<>w<EFBFBD>%@<40>%@<40>E<EFBFBD>&2<>&6<>&6<><08>&B<>&B<>F<EFBFBD>(4<>(><3E>(><3E>x<EFBFBD><1A>U]<5D>Ua<55>Ua<55>bi<62>jr<6A>Us<55>Us<55>(t<>(t<>I<EFBFBD>!<21>+<2B>"@<40>A<>A<>A<>!<21>)<29>,<2C>,<2C>,<2C> <20>I<EFBFBD>k<EFBFBD>2<>9<>9<>(0<> <0C> <0C>V<EFBFBD>Y<EFBFBD>(G<>(G<>)4<>)G<>*0<>).<2E>/7<>|<7C>|<7C>I<EFBFBD>G`<60>/a<>/a<>(0<> ;<1E>;<1E><1F><1F><1F><>5" <1F># <1F># rc<00><><00>|<00><00><00>d|jvr
2025-01-14 17:25:45 +01:00
g|jd<i}|jdD]6}t|t<00><00>r|<02>dd<03><00>}||vr|||<<00>7t |<01><00><00>d<04><00><05><00>|jd<t|jdd<07><08><00>5}tj
|j|d d
2025-02-10 14:28:05 +01:00
<EFBFBD> <0B><00>d d d <0C><00>n #1swxYwYtd |j<00><00><02><00>dS)z<>
2025-01-14 17:25:45 +01:00
Generate the JSON structure, deduplicate and sort categories by 'path',
then save it to the output file.
2025-02-10 14:28:05 +01:00
rr7<00>unknownc<00>.<00>|<00>dd<02><00>S)Nr7rZ)rH)<01>xs r<00><lambda>z1MetadataProcessor.generate_json.<locals>.<lambda>ss<00><00>A<EFBFBD>E<EFBFBD>E<EFBFBD>6<EFBFBD>9<EFBFBD>6<>6<>r)r$<00>wrr<00>F)<02>indent<6E> ensure_asciiNzGenerated JSON saved to T) rXr<00>
isinstance<EFBFBD>dictrH<00>sorted<65>valuesr'r <00>json<6F>dumprO)r<00>unique_categoriesr<r7<00> json_files r<00> generate_jsonzMetadataProcessor.generate_json]sv<00><00>
2025-01-14 17:25:45 +01:00
<0A><1F><1F>!<21>!<21>!<21> <18>t<EFBFBD>y<EFBFBD> (<28> (<28>&(<28>D<EFBFBD>I<EFBFBD>l<EFBFBD> #<23> <20><19><1C> <09>,<2C>/<2F> 7<> 7<>H<EFBFBD><19>8<EFBFBD>T<EFBFBD>+<2B>+<2B> 7<><1F>|<7C>|<7C>V<EFBFBD>Y<EFBFBD>8<>8<><04><17>0<>0<>0<>.6<EFBFBD>%<25>d<EFBFBD>+<2B><>#)<29> <1D> $<24> $<24> &<26> &<26>6<>6<>#
<EFBFBD>#
<EFBFBD>#
2025-02-10 14:28:05 +01:00
<EFBFBD><04> <09>,<2C><1F> <12>4<EFBFBD>#<23>S<EFBFBD>W<EFBFBD> ><3E> ><3E> ><3E> P<01>)<29> <10>I<EFBFBD>t<EFBFBD>y<EFBFBD>)<29>a<EFBFBD><05> O<> O<> O<> O<> P<01> P<01> P<01> P<01> P<01> P<01> P<01> P<01> P<01> P<01> P<01><><EFBFBD><EFBFBD> P<01> P<01> P<01> P<01> <0E><<3C>$<24>*:<3A><<3C><<3C>><3E>><3E>><3E><13>ts<00>1C<03>C<07>"C)N) <0B>__name__<5F>
__module__<EFBFBD> __qualname__<5F>__doc__<5F>strrrrr1rXrj<00>rrr r s<><00><00><00><00><00><00><08><08>
8<> 8<>#<23> 8<>C<EFBFBD> 8<>G<EFBFBD> 8<> 8<> 8<> 8<><18>3<EFBFBD><18>4<EFBFBD><18><18><18><18>*(<1F>(<1F>(<1F>T<14><14><14><14>rr ) rDr)rf<00>typingrr<00>fastapir<00>app.services.image_servicerrr rprr<00><module>rts<><00><01> <09> <09> <09> <09><0F><0F><0F><0F> <0B> <0B> <0B> <0B><1D><1D><1D><1D><1D><1D><1D><1D><1B><1B><1B><1B><1B><1B>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40>p<14>p<14>p<14>p<14>p<14>p<14>p<14>p<14>p<14>pr