コード例 #1
0
    def do_all(self):
        log = self.api.logger
        tempfilename = os.path.splitext(os.path.basename(sys.argv[0]))[0]
        cache = os.path.join(gettempdir(), tempfilename + "." + self.mid + ".p")
        members = []
        if os.path.exists(cache) and not self.clean:
            log.info("Reusing from " + cache)
            members = pickle.load(open(cache, "rb"))
        else:
            if not self.clean:
                log.info("Not found " + cache)

            MU.descendants(self.api, self.mid, batch=200, target=members, segments=self.segments, episodes=self.episodes,
                           log_progress=True)
            pickle.dump(members, open(cache, "wb"))

        log.info("Found " + str(len(members)) + " objects")
        count = 0

        for idx, member in enumerate(MU.iterate_objects(members)):
            member_mid = member.mid
            # noinspection PyUnusedLocal
            main_title = MU.title(member, "MAIN")
            # noinspection PyUnusedLocal
            short_title = MU.title(member, "SHORT")
            member_type = MU.mediatype(member)
            string = "%s %s (%s)" % (member_type, member_mid, main_title)

            if self.filter:
                try :
                    result = self.filter(member, idx)
                    log.debug("%s Execed %s result %s", str(idx), self.filter_description, str(result))
                    if not result:
                        log.info("%s Skipping %s because of filter %s", str(idx), string, self.filter_description)
                        continue
                except Exception as e:
                    log.warning("%s %s", str(member.mid), str(e))
                    continue

            needs_post = self.process(member, idx)
            if needs_post is None:
                needs_post = True
            log.debug(" needs post %s", str(needs_post))
            if needs_post:
                if not self.dryrun:
                    log.info("%s Execed %s for %s and posting", str(idx), self.processor_description, string)
                    self.do_one(member, idx)
                else:
                    log.info("%s Execed %s for %s (not posting because of dryrun parameter)", str(idx),
                         self.processor_description, string)
            else:
                log.info("%s Skipping %s for %s", str(idx), self.processor_description, string)

            count += 1

        if self.include_self:
            if not self.dryrun:
                log.info("%s %s", self.description, self.mid)
                object = self.api.get_object(self.mid)
                log.info("Found %s", str(object))
                self.do_one(object, None)
            else:
                log.info("Dry run %s %s", self.description, self.mid)
            count += 1

        log.info("Ready. %s %s object from POMS", self.description, str(count))
        return count
コード例 #2
0
process = args.process[0]
mid = args.mid[0]
filter = args.filter
clean = args.clean

log = api.logger

cache = os.path.join(gettempdir(), "foralldescendants." + mid + ".p")
members = []
if os.path.exists(cache) and not clean:
    log.info("Reusing from " + cache)
    members = pickle.load(open(cache, "rb"))
else:
    if not clean:
        log.info("Not found " + cache)
    MU.descendants(api, mid, batch=200, target=members, segments=False, episodes=False, log_progress=True)
    pickle.dump(members, open(cache, "wb"))

log.info("Found " + str(len(members)) + " objects")
posts = 0

if os.path.exists(process):
    log.info("%s is a file.", str(process))
    process = open(process).read()

for idx, member in enumerate(MU.iterate_objects(members)):
    member_mid = member.mid
    main_title = MU.title(member, "MAIN")
    short_title = MU.title(member, "SHORT")
    if filter:
        result = eval(filter)
コード例 #3
0
ファイル: addImage.py プロジェクト: npo-poms/scripts
        if not only_if_none or len(mediaUpdate.images.image) == 0:
            if title is None:
                title = mediaUpdate.title[0].value()
            api.logger.info("Adding image %s to %s", images[count % len(images)], mid)
            api.add_image(mid, MU.create_image(images[count % len(images)], title=title))
            count += 1

    if not args.to_object_only:
        mediaType = type(mediaUpdate)
        members = []

        MU.descendants(
            api,
            mid,
            batch=200,
            target=members,
            log_progress=True,
            episodes=(mediaType == npoapi.xml.mediaupdate.groupUpdateType),
            segments=args.segments,
            limit=args.max_query,
        )
        api.logger.info("Found %s members in %s", len(members), mid)
        for idx, member in enumerate(MU.iterate_objects(members)):
            member_mid = member.mid
            memberType = type(member)
            if filter:
                result = eval(filter)
                api.logger.debug("Execed %s result %s", str(filter), str(result))
                if not result:
                    api.logger.info(
                        "Skipping %s, %s %s because of filter %s", str(memberType), str(member.type), member_mid, filter
                    )
コード例 #4
0
import time

api = MediaBackend().command_line_client()
api.add_argument('mid', type=str, nargs=1, help='The mid  of the object to handle')

args = api.parse_args()


filename = "/tmp/members.pkl"

if os.path.isfile(filename):
    with open(filename, 'rb') as input:
        members = pickle.load(input)
else:
    members = []
    MU.descendants(api, args.mid[0], batch=200, target=members, log_progress=True)
    with open(filename, 'wb') as output:
        pickle.dump(members, output, pickle.HIGHEST_PROTOCOL)
        api.logger.info("Wrote %s", filename)
count_new = 0
count_done = 0
count_404 = 0

for member in MU.iterate_objects(members):
    print("%s %s %s " % (member.mid, member.locations.location[0].programUrl, str(list(member.crid))), end="")
    has_mp4 = False
    if len(member.locations.location) >= 1:
        for location in member.locations.location:
            if location.avAttributes.avFileFormat == 'MP4' and not location.avAttributes.bitrate is None:
                has_mp4 = True
        for location in member.locations.location: