weltschmerz


Nameweltschmerz JSON
Version 0.0.1rc1 PyPI version JSON
download
home_pageNone
Summarylocal anime file database with deduplication and sorting
upload_time2024-09-29 18:39:11
maintainerzerimond
docs_urlNone
authorNone
requires_python>=3.6
licenseNone
keywords
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # weltschmerz

Maintain a (local) database for anime files.
Contains scripts to hash and sort anime files,
as well as looking up files in AniDB utilizing the `yumemi` Python module.

This project is licensed under the terms of the MIT license. These third-party files are included:

* `pyselect.py`: Copyright 2013 Matthew Behrens, under the terms of the MIT license.
* `sorttable.js`: Copyright 2007 Stuart Langridge, under the terms of the X11/MIT license.

See also [LICENSE.md](./LICENSE.md)

## Requirements

* Python 3 (>=3.6)
* [yumemi](https://pypi.org/project/yumemi/) Python module (optional, for interacting with AniDB)
* SQL database
  * PostgreSQL works, and is recommended
  * SQLite3 works, but does not support the `numeric` collation, edit `anime.py`: `ep = Column(String(collation="numeric"))` => `ep = Column(String)`

## Configuration file

Copy `weltschmerz.cfg.example` to `weltschmerz.cfg` or `$HOME/.config/weltschmerz/weltschmerz.cfg` and adjust as necessary.

## Import AniDB MyMist export

It is recommended to import your MyList first, as that will populate the Anime, Episode, and File tables.

1. Request an `xml-plain-full` export of your MyList at [AniDB - MyList Export](https://anidb.net/user/export)
1. Download export file
1. Extract the export file:`tar xf <mylist_export>.tgz`
1. Parse the export and populate the local database: `./parse_mylist_export.py --mylist-xml-files anime/a*.xml`

## Hash local files

`weltschmerz files hash --folder /anime/by-id/00/00/01/ --folder /anime/by-id/00/00/02/`

## Add files to your AniDB MyList

Lookup the local files in AniDB and add them to your MyList, if they are present in AniDB.
`weltschmerz anidb lookup-files --folder /anime/by-id/00 --folder /anime/by-id/01 --debug --online --add-to-mylist --mylist-state 4`

## Deduplicate local files

Interactively deduplicate local files, as well as set the modified time of duplicate files to the oldest one.
`weltschmerz files remove-duplicates --preferred-directory-pattern /anime/by-id`

## Sort local files

Sort/Move files, this will put the files into folders according to their anime ids (padded to 6 digits) from AniDB.
e.g. files for [Seikai no Monshou (anime id 1)](https://anidb.net/anime/1) will be put in `<target_basedir>/by-id/00/00/01`.

`weltschmerz files sort --source-basedir /anime/unsorted --target-basedir /anime`

## Create symlinks for local anime folders

To be able to look for local anime by name, create symlinks to point to the folders created by "Sort local files".
This creates a `by-name` folder under the target basedir.

1. Download anime titles dump (XML) from AniDB, see [AniDB Wiki - API/Anime Titles](https://wiki.anidb.net/API#Anime_Titles) for instructions.
1. Decompress the title dump: `gunzip anime-titles.xml.gz`
1. Run script to create the symlinks: `./animetitle.py anime-titles.xml /anime/`

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "weltschmerz",
    "maintainer": "zerimond",
    "docs_url": null,
    "requires_python": ">=3.6",
    "maintainer_email": null,
    "keywords": null,
    "author": null,
    "author_email": null,
    "download_url": "https://files.pythonhosted.org/packages/20/57/f874b5c5ae31004caf1e7cc7a827452c871aec75590c28fe2610173d0ff4/weltschmerz-0.0.1rc1.tar.gz",
    "platform": null,
    "description": "# weltschmerz\n\nMaintain a (local) database for anime files.\nContains scripts to hash and sort anime files,\nas well as looking up files in AniDB utilizing the `yumemi` Python module.\n\nThis project is licensed under the terms of the MIT license. These third-party files are included:\n\n* `pyselect.py`: Copyright 2013 Matthew Behrens, under the terms of the MIT license.\n* `sorttable.js`: Copyright 2007 Stuart Langridge, under the terms of the X11/MIT license.\n\nSee also [LICENSE.md](./LICENSE.md)\n\n## Requirements\n\n* Python 3 (>=3.6)\n* [yumemi](https://pypi.org/project/yumemi/) Python module (optional, for interacting with AniDB)\n* SQL database\n  * PostgreSQL works, and is recommended\n  * SQLite3 works, but does not support the `numeric` collation, edit `anime.py`: `ep = Column(String(collation=\"numeric\"))` => `ep = Column(String)`\n\n## Configuration file\n\nCopy `weltschmerz.cfg.example` to `weltschmerz.cfg` or `$HOME/.config/weltschmerz/weltschmerz.cfg` and adjust as necessary.\n\n## Import AniDB MyMist export\n\nIt is recommended to import your MyList first, as that will populate the Anime, Episode, and File tables.\n\n1. Request an `xml-plain-full` export of your MyList at [AniDB - MyList Export](https://anidb.net/user/export)\n1. Download export file\n1. Extract the export file:`tar xf <mylist_export>.tgz`\n1. Parse the export and populate the local database: `./parse_mylist_export.py --mylist-xml-files anime/a*.xml`\n\n## Hash local files\n\n`weltschmerz files hash --folder /anime/by-id/00/00/01/ --folder /anime/by-id/00/00/02/`\n\n## Add files to your AniDB MyList\n\nLookup the local files in AniDB and add them to your MyList, if they are present in AniDB.\n`weltschmerz anidb lookup-files --folder /anime/by-id/00 --folder /anime/by-id/01 --debug --online --add-to-mylist --mylist-state 4`\n\n## Deduplicate local files\n\nInteractively deduplicate local files, as well as set the modified time of duplicate files to the oldest one.\n`weltschmerz files remove-duplicates --preferred-directory-pattern /anime/by-id`\n\n## Sort local files\n\nSort/Move files, this will put the files into folders according to their anime ids (padded to 6 digits) from AniDB.\ne.g. files for [Seikai no Monshou (anime id 1)](https://anidb.net/anime/1) will be put in `<target_basedir>/by-id/00/00/01`.\n\n`weltschmerz files sort --source-basedir /anime/unsorted --target-basedir /anime`\n\n## Create symlinks for local anime folders\n\nTo be able to look for local anime by name, create symlinks to point to the folders created by \"Sort local files\".\nThis creates a `by-name` folder under the target basedir.\n\n1. Download anime titles dump (XML) from AniDB, see [AniDB Wiki - API/Anime Titles](https://wiki.anidb.net/API#Anime_Titles) for instructions.\n1. Decompress the title dump: `gunzip anime-titles.xml.gz`\n1. Run script to create the symlinks: `./animetitle.py anime-titles.xml /anime/`\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "local anime file database with deduplication and sorting",
    "version": "0.0.1rc1",
    "project_urls": {
        "Homepage": "https://codeberg.org/zeromind/weltschmerz",
        "Issues": "https://codeberg.org/zeromind/weltschmerz/issues"
    },
    "split_keywords": [],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "cacd4b9826b4688abea9c37987c5c1a858c6e077cb8d53e1265a292401423f4a",
                "md5": "bb35596bea5933594903f6538e6db1b6",
                "sha256": "34595284a1cf95a45dcfa0e5ee626006386e779747654c5066d9860f57afa1ab"
            },
            "downloads": -1,
            "filename": "weltschmerz-0.0.1rc1-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "bb35596bea5933594903f6538e6db1b6",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.6",
            "size": 22645,
            "upload_time": "2024-09-29T18:39:09",
            "upload_time_iso_8601": "2024-09-29T18:39:09.214428Z",
            "url": "https://files.pythonhosted.org/packages/ca/cd/4b9826b4688abea9c37987c5c1a858c6e077cb8d53e1265a292401423f4a/weltschmerz-0.0.1rc1-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "2057f874b5c5ae31004caf1e7cc7a827452c871aec75590c28fe2610173d0ff4",
                "md5": "eeb164c29838c14d32989f6f738f692e",
                "sha256": "ac08beddc7e9e89aebd4bbe089ca1203aa44805e349d05d7db9d81f3220b1321"
            },
            "downloads": -1,
            "filename": "weltschmerz-0.0.1rc1.tar.gz",
            "has_sig": false,
            "md5_digest": "eeb164c29838c14d32989f6f738f692e",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.6",
            "size": 18999,
            "upload_time": "2024-09-29T18:39:11",
            "upload_time_iso_8601": "2024-09-29T18:39:11.340757Z",
            "url": "https://files.pythonhosted.org/packages/20/57/f874b5c5ae31004caf1e7cc7a827452c871aec75590c28fe2610173d0ff4/weltschmerz-0.0.1rc1.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-09-29 18:39:11",
    "github": false,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": true,
    "codeberg_user": "zeromind",
    "codeberg_project": "weltschmerz",
    "lcname": "weltschmerz"
}
        
Elapsed time: 0.55182s