core.metadata
=============

.. py:module:: core.metadata

.. autoapi-nested-parse::

   Acts as a container for metadata and media objects associated with an archived item.

   Key Functionalities:
   - Store and retrieve metadata and associated media.
   - Merge metadata objects with conflict resolution.
   - Validate properties like URLs and timestamps.
   - Manage and deduplicate media objects.
   - Support for flexible metadata querying and appending.





Module Contents
---------------

.. py:class:: Metadata

   .. py:attribute:: status
      :type:  str
      :value: 'no archiver'



   .. py:attribute:: metadata
      :type:  Dict[str, Any]


   .. py:attribute:: media
      :type:  List[core.media.Media]
      :value: []



   .. py:method:: merge(right: Metadata, overwrite_left=True) -> Metadata

      Merges another `Metadata` instance into this one.

      Conflicts are resolved based on the `overwrite_left` flag:
      - If `True`, this instance's values are overwritten by `right`.
      - If `False`, the inverse applies.



   .. py:method:: store(storages=[])


   .. py:method:: set(key: str, val: Any) -> Metadata


   .. py:method:: append(key: str, val: Any) -> Metadata


   .. py:method:: get(key: str, default: Any = None, create_if_missing=False) -> Union[Metadata, str]


   .. py:method:: success(context: str = None) -> Metadata


   .. py:method:: is_success() -> bool


   .. py:method:: is_empty() -> bool


   .. py:property:: netloc
      :type: str



   .. py:method:: set_url(url: str) -> Metadata


   .. py:method:: get_url() -> str


   .. py:method:: set_content(content: str) -> Metadata


   .. py:method:: set_title(title: str) -> Metadata


   .. py:method:: get_title() -> str


   .. py:method:: set_timestamp(timestamp: datetime.datetime) -> Metadata


   .. py:method:: get_timestamp(utc=True, iso=True) -> datetime.datetime | str | None


   .. py:method:: add_media(media: core.media.Media, id: str = None) -> Metadata


   .. py:method:: get_media_by_id(id: str, default=None) -> core.media.Media


   .. py:method:: remove_duplicate_media_by_hash() -> None


   .. py:method:: get_first_image(default=None) -> core.media.Media


   .. py:method:: set_final_media(final: core.media.Media) -> Metadata

      final media is a special type of media: if you can show only 1 this is it, it's useful for some DBs like GsheetDb



   .. py:method:: get_final_media() -> core.media.Media


   .. py:method:: get_all_media() -> List[core.media.Media]


   .. py:method:: choose_most_complete(results: List[Metadata]) -> Metadata
      :staticmethod:



   .. py:method:: set_context(key: str, val: Any) -> Metadata


   .. py:method:: get_context(key: str, default: Any = None) -> Any


