Exemplo n.º 1
0
    def test_meta_type02(self):
        """Use "site" if it's "marked" and has sitemap.xml"""
        index_file = os.path.join(self.test_input, 'data', '20200101010101',
                                  'index.html')
        sitemap_file = os.path.join(self.test_input, 'data', '20200101010101',
                                    'sitemap.xml')
        os.makedirs(os.path.dirname(sitemap_file))
        with open(index_file, 'w', encoding='UTF-8') as fh:
            pass
        with open(sitemap_file, 'w', encoding='UTF-8') as fh:
            pass

        with open(self.test_input_rdf, 'w', encoding='UTF-8') as fh:
            fh.write("""\
<?xml version="1.0"?>
<RDF:RDF xmlns:NS1="http://amb.vis.ne.jp/mozilla/scrapbook-rdf#"
         xmlns:NC="http://home.netscape.com/NC-rdf#"
         xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
  <RDF:Description RDF:about="urn:scrapbook:item20200101010101"
                   NS1:type="marked" />
</RDF:RDF>
""")

        for info in sb2wsb.run(self.test_input, self.test_output):
            pass

        book = Host(self.test_output).books['']
        book.load_meta_files()

        self.assertEqual(book.meta['20200101010101']['type'], 'site')
        self.assertTrue(book.meta['20200101010101']['marked'])
Exemplo n.º 2
0
    def test_meta_modify02(self):
        """Don't take mtime of index.html if not newer."""
        index_file = os.path.join(self.test_input, 'data', '20200102030405',
                                  'index.html')
        os.makedirs(os.path.dirname(index_file))
        with open(index_file, 'w', encoding='UTF-8') as fh:
            pass
        t = time.mktime((2020, 1, 1, 0, 0, 0, 0, 0, -1))
        os.utime(index_file, (t, t))

        with open(self.test_input_rdf, 'w', encoding='UTF-8') as fh:
            fh.write("""\
<?xml version="1.0"?>
<RDF:RDF xmlns:NS1="http://amb.vis.ne.jp/mozilla/scrapbook-rdf#"
         xmlns:NC="http://home.netscape.com/NC-rdf#"
         xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
  <RDF:Description RDF:about="urn:scrapbook:item20200102030405"
                   NS1:id="20200102030405"
                   NS1:type=""
                   NS1:create="20200102030406"
                   NS1:modify="20200102030407" />
</RDF:RDF>
""")

        for info in sb2wsb.run(self.test_input, self.test_output):
            pass

        book = Host(self.test_output).books['']
        book.load_meta_files()

        self.assertEqual(
            book.meta['20200102030405']['modify'],
            util.datetime_to_id(util.id_to_datetime_legacy('20200102030407')))
    def test_meta_basic03(self):
        """Default value for missing keys.

        - type: ""
        - create: infer from id
        - modify: infer from create (and then id)
        """
        with open(self.test_input_rdf, 'w', encoding='UTF-8') as fh:
            fh.write("""\
<?xml version="1.0"?>
<RDF:RDF xmlns:NS1="http://amb.vis.ne.jp/mozilla/scrapbook-rdf#"
         xmlns:NC="http://home.netscape.com/NC-rdf#"
         xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
  <RDF:Description RDF:about="urn:scrapbook:item20200102030405" />
</RDF:RDF>
""")

        for info in sb2wsb.run(self.test_input, self.test_output):
            pass

        book = Host(self.test_output).books['']
        book.load_meta_files()

        self.assertDictEqual(book.meta['20200102030405'], {
            'index': '20200102030405/index.html',
            'type': '',
            'create': util.datetime_to_id(util.id_to_datetime_legacy('20200102030405')),
            'modify': util.datetime_to_id(util.id_to_datetime_legacy('20200102030405')),
            })
    def test_meta_basic02(self):
        """A typical item sample of legacy ScrapBook."""
        with open(self.test_input_rdf, 'w', encoding='UTF-8') as fh:
            fh.write("""\
<?xml version="1.0"?>
<RDF:RDF xmlns:NS1="http://amb.vis.ne.jp/mozilla/scrapbook-rdf#"
         xmlns:NC="http://home.netscape.com/NC-rdf#"
         xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
  <RDF:Description RDF:about="urn:scrapbook:item20200102030405"
                   NS1:id="20200102030405"
                   NS1:type=""
                   NS1:title="dummy title"
                   NS1:chars=""
                   NS1:comment="dummy comment __BR__ 2nd line"
                   NS1:icon="favicon.ico"
                   NS1:source="http://example.com/foo" />
</RDF:RDF>
""")

        for info in sb2wsb.run(self.test_input, self.test_output):
            pass

        book = Host(self.test_output).books['']
        book.load_meta_files()

        self.assertDictEqual(book.meta['20200102030405'], {
            'index': '20200102030405/index.html',
            'title': 'dummy title',
            'type': '',
            'create': util.datetime_to_id(util.id_to_datetime_legacy('20200102030405')),
            'modify': util.datetime_to_id(util.id_to_datetime_legacy('20200102030405')),
            'source': 'http://example.com/foo',
            'icon': 'favicon.ico',
            'comment': 'dummy comment\n2nd line',
            })
Exemplo n.º 5
0
    def test_path03(self):
        """<input dir>/index.html should be indexed as single html page
        """
        index_file = os.path.join(self.test_input, 'index.html')
        with open(index_file, 'w', encoding='UTF-8') as fh:
            fh.write("""\
<!DOCTYPE html>
<html
    data-scrapbook-create="20200101000000000"
    data-scrapbook-modify="20200101000000000"
    data-scrapbook-source="http://example.com">
<head>
<meta charset="UTF-8">
<title>MyTitle 中文</title>
</head>
<body>
page content
</body>
</html>
""")

        for info in file2wsb.run(self.test_input, self.test_output):
            pass

        book = Host(self.test_output).books['']
        book.load_meta_files()
        book.load_toc_files()

        ids = list(book.meta.keys())
        id_item = ids[0]
        self.assertDictEqual(
            book.meta, {
                id_item: {
                    'title': 'MyTitle 中文',
                    'type': '',
                    'index': f'{id_item}.html',
                    'create': '20200101000000000',
                    'modify': '20200101000000000',
                    'source': 'http://example.com',
                    'icon': '',
                    'comment': '',
                },
            })
        self.assertDictEqual(book.toc, {
            'root': [
                id_item,
            ],
        })
        self.assertEqual(
            set(
                glob.iglob(os.path.join(self.test_output, '**'),
                           recursive=True)),
            {
                os.path.join(self.test_output, ''),
                os.path.join(self.test_output, f'{id_item}.html'),
            })
Exemplo n.º 6
0
    def test_meta_basic04(self):
        """Should work correctly for another NS name

        (seen in some scrapbook.rdf files)
        """
        with open(self.test_input_rdf, 'w', encoding='UTF-8') as fh:
            fh.write("""\
<?xml version="1.0"?>
<RDF:RDF xmlns:NS2="http://amb.vis.ne.jp/mozilla/scrapbook-rdf#"
         xmlns:NC="http://home.netscape.com/NC-rdf#"
         xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
  <RDF:Description RDF:about="urn:scrapbook:item20200102030405"
                   NS2:id="20200102030405"
                   NS2:type=""
                   NS2:title="title"
                   NS2:comment="comment"
                   NS2:icon="favicon.ico"
                   NS2:source="http://example.com" />
</RDF:RDF>
""")

        for info in sb2wsb.run(self.test_input, self.test_output):
            pass

        book = Host(self.test_output).books['']
        book.load_meta_files()

        self.assertDictEqual(
            book.meta['20200102030405'], {
                'index':
                '20200102030405/index.html',
                'type':
                '',
                'create':
                util.datetime_to_id(
                    util.id_to_datetime_legacy('20200102030405')),
                'modify':
                util.datetime_to_id(
                    util.id_to_datetime_legacy('20200102030405')),
                'title':
                'title',
                'comment':
                'comment',
                'icon':
                'favicon.ico',
                'source':
                'http://example.com',
            })
Exemplo n.º 7
0
    def test_meta_icon01(self):
        """Resolve resource://scrapbook/data/<self-id>/..."""
        with open(self.test_input_rdf, 'w', encoding='UTF-8') as fh:
            fh.write("""\
<?xml version="1.0"?>
<RDF:RDF xmlns:NS1="http://amb.vis.ne.jp/mozilla/scrapbook-rdf#"
         xmlns:NC="http://home.netscape.com/NC-rdf#"
         xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
  <RDF:Description RDF:about="urn:scrapbook:item20200102030405"
                   NS1:icon="resource://scrapbook/data/20200102030405/favicon.ico" />
</RDF:RDF>
""")

        for info in sb2wsb.run(self.test_input, self.test_output):
            pass

        book = Host(self.test_output).books['']
        book.load_meta_files()

        self.assertEqual(book.meta['20200102030405']['icon'], 'favicon.ico')
    def test_meta_icon05(self):
        """Handle special chars."""
        with open(self.test_input_rdf, 'w', encoding='UTF-8') as fh:
            fh.write("""\
<?xml version="1.0"?>
<RDF:RDF xmlns:NS1="http://amb.vis.ne.jp/mozilla/scrapbook-rdf#"
         xmlns:NC="http://home.netscape.com/NC-rdf#"
         xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
  <RDF:Description RDF:about="urn:scrapbook:item20200102030405"
                   NS1:icon="resource://scrapbook/%E4%B8%AD%E6%96%87%25%23abc.png" />
</RDF:RDF>
""")

        for info in sb2wsb.run(self.test_input, self.test_output):
            pass

        book = Host(self.test_output).books['']
        book.load_meta_files()

        self.assertEqual(book.meta['20200102030405']['icon'], '../../%E4%B8%AD%E6%96%87%25%23abc.png')
Exemplo n.º 9
0
    def test_meta_type01(self):
        """Translate types."""
        with open(self.test_input_rdf, 'w', encoding='UTF-8') as fh:
            fh.write("""\
<?xml version="1.0"?>
<RDF:RDF xmlns:NS1="http://amb.vis.ne.jp/mozilla/scrapbook-rdf#"
         xmlns:NC="http://home.netscape.com/NC-rdf#"
         xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
  <RDF:Description RDF:about="urn:scrapbook:item20200101010101"
                   NS1:type="" />
  <RDF:Description RDF:about="urn:scrapbook:item20200101010102"
                   NS1:type="combine" />
  <RDF:Description RDF:about="urn:scrapbook:item20200101010103"
                   NS1:type="marked" />
  <RDF:Description RDF:about="urn:scrapbook:item20200101010104"
                   NS1:type="note" />
  <RDF:Description RDF:about="urn:scrapbook:item20200101010105"
                   NS1:type="notex" />
</RDF:RDF>
""")

        for info in sb2wsb.run(self.test_input, self.test_output):
            pass

        book = Host(self.test_output).books['']
        book.load_meta_files()

        self.assertEqual(book.meta['20200101010101']['type'], '')
        self.assertIsNone(book.meta['20200101010101'].get('marked'))
        self.assertEqual(book.meta['20200101010102']['type'], 'combine')
        self.assertIsNone(book.meta['20200101010102'].get('marked'))
        self.assertEqual(book.meta['20200101010103']['type'], '')
        self.assertTrue(book.meta['20200101010103']['marked'])
        self.assertEqual(book.meta['20200101010104']['type'], 'postit')
        self.assertIsNone(book.meta['20200101010104'].get('marked'))
        self.assertEqual(book.meta['20200101010105']['type'], 'note')
        self.assertIsNone(book.meta['20200101010105'].get('marked'))
Exemplo n.º 10
0
    def test_path01(self):
        """Test hierarchical folders for */index.html
        """
        index_file = os.path.join(self.test_input, 'folder1#中文', 'folder2',
                                  'folder_data', 'index.html')
        os.makedirs(os.path.dirname(index_file), exist_ok=True)
        with open(index_file, 'w', encoding='UTF-8') as fh:
            fh.write("""\
<!DOCTYPE html>
<html
    data-scrapbook-create="20200101000000000"
    data-scrapbook-modify="20200101000000000"
    data-scrapbook-source="http://example.com">
<head>
<meta charset="UTF-8">
<title>MyTitle 中文</title>
</head>
<body>
page content
</body>
</html>
""")

        for info in file2wsb.run(self.test_input, self.test_output):
            pass

        book = Host(self.test_output).books['']
        book.load_meta_files()
        book.load_toc_files()

        ids = list(book.meta.keys())
        id_folder1 = ids[0]
        id_folder2 = ids[1]
        id_item = ids[2]
        self.assertDictEqual(
            book.meta, {
                id_folder1: {
                    'title': 'folder1#中文',
                    'type': 'folder',
                    'create': id_folder1,
                    'modify': id_folder1,
                },
                id_folder2: {
                    'title': 'folder2',
                    'type': 'folder',
                    'create': id_folder2,
                    'modify': id_folder2,
                },
                id_item: {
                    'title': 'MyTitle 中文',
                    'type': '',
                    'index': f'{id_item}/index.html',
                    'create': '20200101000000000',
                    'modify': '20200101000000000',
                    'source': 'http://example.com',
                    'icon': '',
                    'comment': '',
                },
            })
        self.assertDictEqual(
            book.toc, {
                'root': [
                    id_folder1,
                ],
                id_folder1: [
                    id_folder2,
                ],
                id_folder2: [
                    id_item,
                ],
            })
        self.assertEqual(
            set(
                glob.iglob(os.path.join(self.test_output, '**'),
                           recursive=True)),
            {
                os.path.join(self.test_output, ''),
                os.path.join(self.test_output, id_item),
                os.path.join(self.test_output, id_item, 'index.html'),
            })
Exemplo n.º 11
0
    def test_supporting_folder02(self):
        """Test for supporting folder *_files
        """
        index_file = os.path.join(self.test_input, 'mypage.html')
        with open(index_file, 'w', encoding='UTF-8') as fh:
            fh.write("""\
<!DOCTYPE html>
<html
    data-scrapbook-create="20200101000000000"
    data-scrapbook-modify="20200101000000000"
    data-scrapbook-source="http://example.com">
<head>
<meta charset="UTF-8">
<title>MyTitle 中文</title>
</head>
<body>
page content
<img src="mypage_files/picture.bmp">
</body>
</html>
""")
        img_file = os.path.join(self.test_input, 'mypage_files', 'picture.bmp')
        os.makedirs(os.path.dirname(img_file), exist_ok=True)
        with open(img_file, 'wb') as fh:
            fh.write(b'dummy')

        for info in file2wsb.run(self.test_input, self.test_output):
            pass

        book = Host(self.test_output).books['']
        book.load_meta_files()
        book.load_toc_files()

        ids = list(book.meta.keys())
        id_item = ids[0]
        self.assertDictEqual(
            book.meta, {
                id_item: {
                    'title': 'MyTitle 中文',
                    'type': '',
                    'index': f'{id_item}/index.html',
                    'create': '20200101000000000',
                    'modify': '20200101000000000',
                    'source': 'http://example.com',
                    'icon': '',
                    'comment': '',
                },
            })
        self.assertDictEqual(book.toc, {
            'root': [
                id_item,
            ],
        })
        self.assertEqual(
            set(
                glob.iglob(os.path.join(self.test_output, '**'),
                           recursive=True)),
            {
                os.path.join(self.test_output, ''),
                os.path.join(self.test_output, id_item),
                os.path.join(self.test_output, id_item, 'index.html'),
                os.path.join(self.test_output, id_item, 'mypage.html'),
                os.path.join(self.test_output, id_item, 'mypage_files'),
                os.path.join(self.test_output, id_item, 'mypage_files',
                             'picture.bmp'),
            })