{"id":19648594,"url":"https://github.com/bestpractical/parse-acns","last_synced_at":"2025-07-29T07:36:08.395Z","repository":{"id":1348058,"uuid":"1295104","full_name":"bestpractical/parse-acns","owner":"bestpractical","description":null,"archived":false,"fork":false,"pushed_at":"2014-12-17T21:59:22.000Z","size":195,"stargazers_count":3,"open_issues_count":0,"forks_count":1,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-01-09T22:54:20.925Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"http://search.cpan.org/dist/parse-acns","language":"Perl","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bestpractical.png","metadata":{"files":{"readme":"README","changelog":"Changes","contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2011-01-26T12:39:58.000Z","updated_at":"2024-04-24T19:37:58.000Z","dependencies_parsed_at":"2022-08-16T13:10:47.937Z","dependency_job_id":null,"html_url":"https://github.com/bestpractical/parse-acns","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bestpractical%2Fparse-acns","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bestpractical%2Fparse-acns/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bestpractical%2Fparse-acns/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bestpractical%2Fparse-acns/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bestpractical","download_url":"https://codeload.github.com/bestpractical/parse-acns/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240958343,"owners_count":19884906,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-11T14:49:07.524Z","updated_at":"2025-02-27T00:38:43.104Z","avatar_url":"https://github.com/bestpractical.png","language":"Perl","funding_links":[],"categories":[],"sub_categories":[],"readme":"NAME\n    Parse::ACNS - parser for Automated Copyright Notice System (ACNS) XML\n\nSYNOPSIS\n        use Parse::ACNS;\n        my $data = Parse::ACNS-\u003enew-\u003eparse( XML::LibXML-\u003eload_xml( string =\u003e $xml ) );\n\nDESCRIPTION\n    ACNS stands for Automated Copyright Notice System. It's an open source,\n    royalty free system that universities, ISP's, or anyone that handles\n    large volumes of copyright notices can implement on their network to\n    increase the efficiency and reduce the costs of responding to the\n    notices...\n\n    See \u003chttp://acns.net\u003e for more details.\n\n    This module parses ACNS XML into a perl data structure. Supports 1.2,\n    1.1, 1.0, 0.7 and 0.6 revisions of the spec. Parser strictly follows XML\n    Schemas, so throws errors on malformed data.\n\n    However, it doesn't extract ACNS XML from email messages.\n\nSOME ACNS BACKGROUND\n    NBC Universal and UMG \u003chttp://mpto.unistudios.com/xml/\u003e released two\n    revisions of the spec (0.6 and 0.7).\n\n    Motion Picture Laboratories, Inc. \u003chttp://www.movielabs.com/ACNS\u003e took\n    over and named it ACNS 2.0 and released revisions 1.0, 1.1 and several\n    sub-revisions with letters (1.1f, 1.1j, 1.1p).\n\n    Then it was moved once again to \u003chttp://www.acns.net/spec.html\u003e and\n    revision 1.2 was released.\n\nMETHODS\n  new\n    Constructor, takes list of named arguments.\n\n    version - version of the specification\n\n        compat\n            default value, can parse 1.2 to 0.6 XML. Revision 1.2 is\n            backwards compatible with 0.7. Compat schema makes TimeStamp in\n            Infringement/Content/Item optional to make it compatible with\n            0.6 revision. Everything else new in 1.2 is optional.\n\n        1.2, 1.1, 1.0, 0.7 or 0.6\n            strict parsing of the specified version.\n\n  parse\n        my $data = Parse::ACNS-\u003enew-\u003eparse( XML::LibXML-\u003eload_xml(...) );\n\n    Takes XML::LibXML::Document containing an ACNS XML and returns it as a\n    perl struture. Read XML::LibXML::Parser on parsing from different\n    sources.\n\n    Newer versions of the spec describe more messages besides\n    \"\u003cInfringement\u003e\", for example \"\u003cStatusUpdate\u003e\". Top level element is not\n    returned as part of the result, but you always can get it from XML\n    document:\n\n        $xml_doc-\u003edocumentElement-\u003enodeName;\n\n    To simplify implementation of compat version parsing document can be\n    changed. At this moment XML namespace is adjusted on all elements.\n\n    Returned data structure follows XML and its Schema, for example:\n\n        {\n            'Case' =\u003e {\n                'ID' =\u003e 'A1234567',\n                'Status' =\u003e ...,\n                ...\n            },\n            'Complainant' =\u003e {\n                'Email' =\u003e 'antipiracy@contentowner.com',\n                'Phone' =\u003e ...,\n                ...\n            },\n            'Source' =\u003e {\n                'TimeStamp' =\u003e '2003-08-30T12:34:53Z',\n                'UserName' =\u003e 'guest',\n                'Login' =\u003e { ... },\n                'IP_Address' =\u003e ...,\n                ...\n            }\n            'Service_Provider' =\u003e { ... }\n            'Content' =\u003e {\n                'Item' =\u003e [\n                    {\n                        'TimeStamp' =\u003e '2003-08-30T12:34:53Z',\n                        'FileName' =\u003e '8Mile.mpg',\n                        'Hash' =\u003e {\n                                'Type' =\u003e 'SHA1',\n                                '_' =\u003e 'EKR94KF985873KD930ER4KD94'\n                              },\n                        ...\n                    },\n                    { ... },\n                    ...\n                ]\n            },\n            'History' =\u003e {\n                'Notice' =\u003e [\n                    {\n                        'ID' =\u003e '12321',\n                        'TimeStamp' =\u003e '2003-08-30T10:23:13Z',\n                        '_' =\u003e 'freeform text area'\n                    },\n                    { ... },\n                    ...\n                ]\n            },\n            'Notes' =\u003e '\n                Open area for freeform text notes, filelists, etc...\n            '\n        }\n\nAUTHOR\n    Ruslan Zakirov \u003cruz@bestpractical.com\u003e\n\nLICENSE\n    Under the same terms as perl itself.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbestpractical%2Fparse-acns","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbestpractical%2Fparse-acns","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbestpractical%2Fparse-acns/lists"}