示例#1
0
def SetRepoPinned(repoName: str, canUpdate: bool) -> None:
    config = LoadConfig()
    repoFolder = GetRepoFolderPath(repoName)
    folders = config.repositoryPair
    if folders.__contains__(repoName):
        summary = LoadSummary(repoFolder)
        summary.pinned = canUpdate
        StoreSummary(repoFolder, summary)
    else:
        raise RepoNotExistsException(repoName)
示例#2
0
def GetRepoSummaries(self) -> list:
    foldersInfo = []
    repos = self._config.repositoryPair
    for repoName in repos.keys():
        folder = repos[repoName]
        summary = LoadSummary(folder)
        foldersInfo += [summary]
    return foldersInfo
示例#3
0
 def SyncRepository(self, repoName: str):
     summary = LoadSummary(self._GetRepoFolderPath(repoName))
     repoFolder = self._GetRepoFolderPath(repoName)
     if summary is None:
         raise RepoNotExistsException(repoName)
     if summary.pinned is not False:
         return
     summary.recentlySyncedPosts = list()
     while len(summary.downloadQueue) > 0:
         fileName, fileInfo = summary.downloadQueue.popitem()
         fileUrl, fileMd5, postId = fileInfo["url"], fileInfo[
             "md5"], fileInfo["id"]
         # some file needs you login to view it
         # if you are not yet login, same file still be detected during next update
         if fileUrl is None:
             continue
         self._downloader.Download(url=fileUrl,
                                   path=repoFolder + "/" + fileName,
                                   loginId=self._config.loginId,
                                   apiToken=self._config.apiToken)
         summary.recentlySyncedPosts += [fileName],
         summary.fileMetadata[fileName] = {"id": postId, "md5": fileMd5}
         StoreSummary(repoFolder, summary)
示例#4
0
 def _UpdateRepoSummaryFile(self, repoName: str) -> RepoSummary:
     repoFolder = self._GetRepoFolderPath(repoName)
     summary = LoadSummary(repoFolder)
     result = None
     # there is no "do not update" flag or "do not update" flag is set to false
     if summary.pinned is not True:
         if summary.repoType == "pool":
             result = self._UpdatePoolRepoSummaryFile(repoFolder, summary)
         elif summary.repoType == "posts":
             result = self._UpdatePostsRepoSummaryFile(repoFolder, summary)
         StoreSummary(repoFolder, result)
     else:
         result = summary
     return result
示例#5
0
 def info(self, repo: str):
     repos = LoadConfig().repositoryPair
     table = ptt.PrettyTable([
         "Repo Name", "Identifier", "Type", "Local", "Server", "Pinned",
         "Last Update"
     ])
     table.align = "l"
     # assemble all repo information into a table
     if repo in repos.keys():
         summary = LoadSummary(repos[repo])
         # make table output
         table.add_row([
             repo, summary.repoIdentifier, summary.repoType,
             len(summary.fileMetadata),
             len(summary.downloadQueue), "Yes" if summary.pinned else "No",
             ConvertFloatTime(summary.updatedAt)
         ])
     else:
         PrintError("Repo \"%s\" not exists." % repo)
         return
     print(table)
示例#6
0
 def update(self, name: str = ""):
     beginAt = time.time()
     summaries = dict()
     updatedCount = dict()
     pair = LoadConfig().repositoryPair
     print("Updating repository summaries ...")
     # update .summary files
     if name == "":
         # load all repo name
         repos = pair.keys()
     else:
         if name in LoadConfig().repositoryPair.keys():
             repos = [name]
         else:
             PrintError("Repo \"%s\" not exists." % name)
             return
     for repoName in repos:
         try:
             # store original pic count in advance
             origCount = len(LoadSummary(pair[repoName]).downloadQueue)
             summary = manager.UpdateRepoSummaryFile(repoName)
             summaries[repoName] = summary
             updatedCount[repoName] = len(summary.downloadQueue) - origCount
         except RepoNotExistsException:
             PrintError("Repo \"%s\" not exists." % repoName)
     # display result as table
     table = ptt.PrettyTable(["Repo Name", "Type", "Identifier", "New"])
     table.align = "l"
     for repoName in summaries.keys():
         summary = summaries[repoName]
         table.add_row([
             repoName, summary.repoType, summary.repoIdentifier,
             updatedCount[repoName]
         ])
     print(table)
     print("Update complete in %s seconds." % int(time.time() - beginAt))
示例#7
0
def GetRepoSummary(repoName: str) -> RepoSummary:
    folder = GetRepoFolderPath(repoName)
    return LoadSummary(folder)