Example #1
0
        /// <summary>
        /// 获取微信文章
        /// </summary>
        /// <param name="mediaId"></param>
        /// <returns></returns>
        public async Task <GetNewsResultJson> GetForeverNewsAsync(string appId, string mediaId)
        {
            var wxRet = await MediaApi.GetForeverNewsAsync(appId, mediaId);

            return(wxRet);
        }
Example #2
0
        public async Task <string> PushMaterialAsync(string accessTokenOrAppId, MaterialType materialType, int materialId)
        {
            string mediaId = null;

            if (materialType == MaterialType.Message)
            {
                var message = await _materialMessageRepository.GetAsync(materialId);

                var newsList = new List <NewsModel>();
                foreach (var item in message.Items)
                {
                    var news = new NewsModel
                    {
                        thumb_media_id        = item.ThumbMediaId,
                        author                = item.Author,
                        title                 = item.Title,
                        content_source_url    = item.ContentSourceUrl,
                        content               = item.Content,
                        digest                = item.Digest,
                        show_cover_pic        = item.ShowCoverPic ? "1" : "0",
                        thumb_url             = item.ThumbUrl,
                        need_open_comment     = item.CommentType == CommentType.Block ? 0 : 1,
                        only_fans_can_comment = item.CommentType == CommentType.OnlyFans ? 1 : 0
                    };
                    newsList.Add(news);
                }

                mediaId = message.MediaId;
                if (string.IsNullOrEmpty(mediaId))
                {
                    var result = await MediaApi.UploadNewsAsync(accessTokenOrAppId, 10000, newsList.ToArray());

                    mediaId = result.media_id;
                    await _materialMessageRepository.UpdateMediaIdAsync(materialId, mediaId);
                }
                else
                {
                    var index = 0;
                    foreach (var news in newsList)
                    {
                        await MediaApi.UpdateForeverNewsAsync(accessTokenOrAppId, message.MediaId, index ++, news);
                    }
                }

                // sync article url
                var media = await MediaApi.GetForeverNewsAsync(accessTokenOrAppId, mediaId);

                for (var i = 0; i < message.Items.Count; i++)
                {
                    var item = media.news_item[i];
                    await _materialArticleRepository.UpdateUrlAsync(message.Items[i].MaterialId, item.url);
                }
            }
            else if (materialType == MaterialType.Image)
            {
                var image = await _materialImageRepository.GetAsync(materialId);

                mediaId = image.MediaId;
                if (string.IsNullOrEmpty(mediaId))
                {
                    var filePath = _pathManager.ParsePath(image.Url);
                    if (FileUtils.IsFileExists(filePath))
                    {
                        var result = await MediaApi.UploadForeverMediaAsync(accessTokenOrAppId, filePath);

                        mediaId = result.media_id;
                        await _materialImageRepository.UpdateMediaIdAsync(materialId, mediaId);
                    }
                }
            }
            else if (materialType == MaterialType.Audio)
            {
                var audio = await _materialAudioRepository.GetAsync(materialId);

                mediaId = audio.MediaId;
                if (string.IsNullOrEmpty(mediaId))
                {
                    var filePath = _pathManager.ParsePath(audio.Url);
                    if (FileUtils.IsFileExists(filePath))
                    {
                        var result = await MediaApi.UploadForeverMediaAsync(accessTokenOrAppId, filePath);

                        mediaId = result.media_id;
                        await _materialAudioRepository.UpdateMediaIdAsync(materialId, mediaId);
                    }
                }
            }
            else if (materialType == MaterialType.Video)
            {
                var video = await _materialVideoRepository.GetAsync(materialId);

                mediaId = video.MediaId;
                if (string.IsNullOrEmpty(mediaId))
                {
                    var filePath = _pathManager.ParsePath(video.Url);
                    if (FileUtils.IsFileExists(filePath))
                    {
                        var result = await MediaApi.UploadForeverMediaAsync(accessTokenOrAppId, filePath);

                        mediaId = result.media_id;
                        await _materialVideoRepository.UpdateMediaIdAsync(materialId, mediaId);
                    }
                }
            }

            return(mediaId);
        }