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

53 lines
6.1 KiB
Plaintext
Raw Normal View History

2025-01-14 17:25:45 +01:00
<EFBFBD>
<00><>_g <00><00>H<00>ddlZddlZddlZddlmZmZGd<03>d<04><00>ZdS)<05>N)<02>List<73>Dictc<00>><00>eZdZdZdedefd<04>Zdedefd<07>Zd<08>Zd <09>Z d
S) <0B>MetadataProcessorzq
A class to scan Markdown files, extract front matter metadata,
and generate a structured JSON file.
<20> input_dir<69> output_filec<00>6<00>||_||_ggd<01>|_dS)z<>
Initialize the MetadataProcessor.
Args:
input_dir (str): Directory containing Markdown files.
output_file (str): Path to save the generated JSON file.
)<02>
categories<EFBFBD> favoritesN)rr<00>data)<03>selfrrs <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>#%<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<>
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>
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>+s(<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)r r<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><><00>tj|j<00><00>D<00>]<5D>\}}}|D<00>]<5D>}|<04>d<01><00><00>r<>tj<00>||<04><00>}|<00>|<05><00>}|<06>rb|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>r<>|d<00> <00><00>d kr<>|jd
<00>|<06> dd<04><00>|<06> d d <0C><00>|<06> d d<0E><00>tj<00>
||j<00><00><00> tj d<05><00>d<0F><04><00><00><01><><EFBFBD><01><>dS)z<>
Recursively scan the input directory for Markdown files
and extract metadata to build the JSON structure.
z.mdr
<00>name<6D>Unknown<77>/<2F>author)r/<00>pathr2<00>favorite<74>truer <00>imagezimages/default.jpg<70>summaryzNo description provided)r/r6<00> descriptionr3N)<0E>os<6F>walkr<00>endswithr3rr-r <00>append<6E>get<65>relpath<74>replace<63>sep<65>lower)r <00>root<6F>_<>filesr*r<00>metadatas r<00>_process_directoryz$MetadataProcessor._process_directory.s<><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> <20>I<EFBFBD>k<EFBFBD>2<>9<>9<>(0<> <0C> <0C>V<EFBFBD>Y<EFBFBD>(G<>(G<>)1<><1C><1C>g<EFBFBD>?S<>)T<>)T<>/7<>|<7C>|<7C>I<EFBFBD>G`<60>/a<>/a<>(*<2A><07><0F><0F><04>d<EFBFBD>n<EFBFBD>(M<>(M<>(U<>(U<>VX<56>V\<5C>^a<>(b<>(b<> ;<1E>;<1E><1F><1F><1F><> <1F> <1F> rc<00><><00>|<00><00><00>d|jvr
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
<EFBFBD> <0B><00>d d d <0C><00>n #1swxYwYtd |j<00><00><02><00>d S)z<>
Generate the JSON structure, deduplicate and sort categories by 'path',
then save it to the output file.
r
r3<00>unknownc<00>.<00>|<00>dd<02><00>S)Nr3rH)r=)<01>xs r<00><lambda>z1MetadataProcessor.generate_json.<locals>.<lambda>`s<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 ) rFr <00>
isinstance<EFBFBD>dictr=<00>sorted<65>valuesr#r<00>json<6F>dump<6D>print)r <00>unique_categories<65>categoryr3<00> json_files r<00> generate_jsonzMetadataProcessor.generate_jsonJsw<00><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>#
<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>><3E>>s<00>1C<03>C<07>"CN)
<EFBFBD>__name__<5F>
__module__<EFBFBD> __qualname__<5F>__doc__<5F>strrrr-rFrZ<00>rrrrs<><00><00><00><00><00><00><08><08>
8<>#<23>
8<>C<EFBFBD>
8<>
8<>
8<>
8<><18>3<EFBFBD><18>4<EFBFBD><18><18><18><18>*<1F><1F><1F>8?<3F>?<3F>?<3F>?<3F>?rr)r9r%rT<00>typingrrrr`rr<00><module>rbst<00><01> <09> <09> <09> <09><0F><0F><0F><0F> <0B> <0B> <0B> <0B><1D><1D><1D><1D><1D><1D><1D><1D>`?<3F>`?<3F>`?<3F>`?<3F>`?<3F>`?<3F>`?<3F>`?<3F>`?<3F>`?r