예제 #1
0
class TestApkParse(unittest.TestCase):
    """ TestApkParse 测试解析apk包信息"""

    def setUp(self):
        self.parser = ApkFileParser()

    def test_parseinfo(self):
        """test_parseinfo 正常解析apk文件信息"""
        fp = os.path.join( cur_dir , "tmp" , "8845970f239f7fbd1c2c6f81861e92a81a43b32e.apk" )
        info = self.parser.parse( fp )
        self.assertIn("pkg_name",info)
        self.assertIsInstance(info.get("pkg_name"), str)
        self.assertIn("version_code",info)
        self.assertIsInstance(info.get("version_code"), int)
        self.assertIn("version_name",info)
        self.assertIsInstance(info.get("version_name"), str)
        self.assertIn("file_size",info)
        self.assertIsInstance(info.get("file_size"), int)
        self.assertIn("file_md5" ,info)
        self.assertIsInstance(info.get("file_md5"), str)
        self.assertEquals(len(info.get("file_md5")), 32)
        self.assertIn("file_name",info)
        self.assertIsInstance(info.get("file_name"), str)

    def test_parseerror(self):
        """test_parseerror 找不到文件、解析包错误测试"""
        import time
        fp = os.path.join( projectpath, "tests/tmp" , str(time.time())+".apk" )
        # no such file or directory
        self.assertRaises(OSError, self.parser.parse , fp ) 

        # apk dump failed error
        fp = os.path.join( projectpath, "tests/tmp" ,"fbaafb5dbf0aa3f6d0ebb40709a52cd8a5104241.apk.bk" )
        self.assertRaises( ApkDumpFailError , self.parser.parse , fp )
예제 #2
0
파일: pipelines.py 프로젝트: amumu/apkcrawl
            "out": item['identifier'] + ".apk",
            "user-agent": settings.USER_AGENT,
            "split": settings.DOWNLOAD_SPLIT,
            "min-split-size": settings.DOWNLOAD_MIN_SPLIT_SIZE,
            "continue": settings.DOWNLOAD_CONTINUE,
            "max-connection-per-server":
            settings.DOWNLOAD_MAX_CONNECTION_PER_SERVER,
            "max-concurrent-downloads": settings.DOWNLOAD_CONCURRENT_DOWNLOADS,
            "log": settings.DOWNLOAD_LOG_FILE,
        }
        arg1 = item['download_url']
        sh.aria2c(arg1, **args)


import os
apkparser = ApkFileParser()


class FileParsePipeline(object):
    """
    FileParsePipeline 获取文件信息
    获取错误记录 资源队列状态3xxx
    """

    con = con

    _update_state = _update_state

    def process_item(self, item, spider=null):
        apkfile = os.path.join(settings.DOWNLOAD_TMP_DIR,
                               item['identifier'] + ".apk")
예제 #3
0
 def setUp(self):
     self.parser = ApkFileParser()