Пример #1
0
        // new for more like this

        private IEnumerator ExecuteQueryMoreLikeThis(MoreLikeThisQuery query)
        {
            // === SIMILAR ===
            // Initial SimilarQuery
            yield return(similarRequest =
                             CineastUtils.BuildMoreLikeThisRequest(CineastUtils.Configuration.FindSimilarSegmentsUrl(), query));


            // Parse response
            earlyBreak = !Parse(similarRequest.text, out similarResult);
            yield return(similarResult);

            if (earlyBreak)
            {
                yield break;
            }
            //Debug.Log(similarResult.results[0].content[0].key);
            //Debug.Log(similarResult.results[0].content[0].value);
            //Debug.Log(similarResult.results[0].content[1].value);
            //Debug.Log(similarResult.results[0].content[2].value);

            // Check if empty
            if (similarResult.IsEmpty())
            {
                earlyBreak = true;
                yield break; // Stop and
            }

            // === SEGMENTS ===
            // segments
            yield return(segmentRequest =
                             CineastUtils.BuildSegmentRequest(CineastUtils.Configuration.FindSegmentsByIdUrl(),
                                                              CineastUtils.ExtractIdArray(CineastUtils.ExtractContentObjects(similarResult))));

            // parse response
            earlyBreak = !Parse(segmentRequest.text, out segmentResult);
            yield return(segmentResult);

            if (earlyBreak)
            {
                yield break;
            }

            Debug.Log("SegmentsRes:" + segmentResult.content[0].objectId);


            // === METAS ===

            /*yield return metaRequest =
             *  CineastUtils.BuildMetadataRequest(CineastUtils.Configuration.FindMetadataUrl(),
             *      CineastUtils.ExtractIdArray(segmentResult.content));
             * earlyBreak = !Parse(metaRequest.text, out metaResult);
             * yield return metaResult;
             * if (earlyBreak) {
             *  yield break;
             * }*/

            //Debug.Log(metaResult.content.Length);
            // Debug.Log("MetaRes:" + metaResult.content[0].objectId);


            // meta->mmo

            //objectList = CineastUtils.Convert(metaResult.content);

            /*
             * object list List<MultimediaObject>
             * einzigs anderi List<multimediaobject> wär result
             *
             * was gits sunscht was isch de unterschied?
             *
             * CineasObject kame zu MMO s macher mit utils.Convertto... gits das?
             *
             * Mit probiere Objectresult.conten == cineastobject zu objectlist mache... nid für hanzi arrays gmacht
             * */



            //tryin objeclist without meta


            //objectList = segmentResult.content;


            // === OBJECTS ===

            /*
             * yield return objectRequest =
             *  CineastUtils.BuildObjectsRequest(CineastUtils.Configuration.FindObjectsUrl(),
             *      CineastUtils.ExtractIdArray(objectList.ToArray()));
             *
             * yield return objectsResult = JsonUtility.FromJson<ObjectsResult>(objectRequest.text);
             */

            yield return(objectRequest =
                             CineastUtils.BuildObjectsRequest(CineastUtils.Configuration.FindObjectsUrl(),
                                                              CineastUtils.ExtractIdArray(segmentResult.content)));

            yield return(objectsResult = JsonUtility.FromJson <ObjectsResult>(objectRequest.text));

            Debug.Log("ObjectRes:" + objectsResult.content[0].path);


// new trsy
            objectList = CineastUtils.Convert(objectsResult.content);
            Debug.Log("New Test 474" + objectList[0].id);


            // merge results
            List <MultimediaObject> objects = CineastUtils.Convert(objectsResult.content);

            foreach (MultimediaObject mmo in objects)
            {
                if (objectList.Contains(mmo))
                {
                    objectList.Find(o => o.Equals(mmo)).Merge(mmo);
                }
            }

            Debug.Log("Object id 487" + objectList[0].id);

            results = new List <MultimediaObject>(objectList);

            // === WRAPUP ===
            foreach (MultimediaObject mmo in objectList)
            {
                mmo.resultIndex = CineastUtils.GetIndexOf(mmo, similarResult) + 1;
            }


            // === SORT LIST ===
            objectList.Sort(
                Comparison);

            List <MultimediaObject> transferList;

            if (filterEngine != null)
            {
                transferList = filterEngine.ApplyFilters(objectList);
            }
            else
            {
                transferList = objectList;
            }


            Debug.Log("Object id 513" + objectList[0].id);
            Debug.Log("Object id 514" + transferList[0].id);


            // cleanup
            finished = true;
            if (queryFinishedCallback != null)
            {
                queryFinishedCallback.Invoke(transferList);
            }

            yield return(true);
        }
Пример #2
0
        // new for more like this

        private IEnumerator ExecuteQueryMoreLikeThis(MoreLikeThisQuery query)
        {
            // Since api is used several times it has to be set false on call
            finished = false;


            // === SIMILAR ===
            // Initial SimilarQuery
            yield return(similarRequest =
                             CineastUtils.BuildMoreLikeThisRequest(CineastUtils.Configuration.FindSimilarSegmentsUrl(), query));


            // Parse response
            earlyBreak = !Parse(similarRequest.text, out similarResult);
            yield return(similarResult);

            if (earlyBreak)
            {
                yield break;
            }


            // Check if empty
            if (similarResult.IsEmpty())
            {
                earlyBreak = true;
                yield break; // Stop and
            }

            // === SEGMENTS ===
            // segments
            yield return(segmentRequest =
                             CineastUtils.BuildSegmentRequest(CineastUtils.Configuration.FindSegmentsByIdUrl(),
                                                              CineastUtils.ExtractIdArray(CineastUtils.ExtractContentObjects(similarResult))));

            // parse response
            earlyBreak = !Parse(segmentRequest.text, out segmentResult);
            yield return(segmentResult);

            if (earlyBreak)
            {
                yield break;
            }


            yield return(objectRequest =
                             CineastUtils.BuildObjectsRequest(CineastUtils.Configuration.FindObjectsUrl(),
                                                              CineastUtils.ExtractIdArray(segmentResult.content)));

            yield return(objectsResult = JsonUtility.FromJson <ObjectsResult>(objectRequest.text));

            //Debug.Log("ObjectRes:" + objectsResult.content[0].path);


// new trsy
            objectList = CineastUtils.Convert(objectsResult.content);
            //Debug.Log("New Test 474" + objectList[0].id);


            // merge results
            var objects = CineastUtils.Convert(objectsResult.content);

            foreach (var mmo in objects)
            {
                if (objectList.Contains(mmo))
                {
                    objectList.Find(o => o.Equals(mmo)).Merge(mmo);
                }
            }

            //Debug.Log("Object id 487" + objectList[0].id);

            results = new List <MultimediaObject>(objectList);

            // === WRAPUP ===
            foreach (var mmo in objectList)
            {
                mmo.resultIndex = CineastUtils.GetIndexOf(mmo, similarResult) + 1;
            }


            // === SORT LIST ===
            objectList.Sort(
                Comparison);

            List <MultimediaObject> transferList;

            if (filterEngine != null)
            {
                transferList = filterEngine.ApplyFilters(objectList);
            }
            else
            {
                transferList = objectList;
            }


            //Debug.Log("Object id 513" + objectList[0].id);
            //Debug.Log("Object id 514" + transferList[0].id);


            // cleanup
            finished = true;
            if (queryFinishedCallback != null)
            {
                queryFinishedCallback.Invoke(transferList);
            }

            yield return(true);
        }